Launch a campaign's calls
campaigns.launch(id, **kwargs) -> CampaignLaunchResponse { launched, skipped, session }
POST/campaigns/{id}/launch-calls
Send the campaign’s calls matching a selection. In ai_first mode each call is handed to the admission scheduler at the requested time and follows the retry configuration from there. In speed_dial mode a live operator session dials them, and any call waiting on an AI retry is un-scheduled first so the same contact is never dialed twice. Calls the AI is already dialing are skipped, as are calls whose attempt budget is spent.
Launch a campaign's calls
require "revox"
revox = Revox::Client.new(api_key: "My API Key")
response = revox.campaigns.launch(
"id",
mode: :ai_first,
selection: {
filters: {
assignee_ids: ["string"],
directions: [:inbound],
outcomes: [:not_interested],
results: [:IVR],
statuses: [:initializing]
},
rows: {call_ids: ["string"], mode: :all_except}
}
)
puts(response){
"launched": 0,
"skipped": {
"active": 0,
"attempts_exhausted": 0,
"cancelled": 0
},
"session": {
"id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"campaign_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"connected_count": 0,
"created_at": "2019-12-27T18:11:19.117Z",
"current_call_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"dialed_count": 0,
"ended_at": "2019-12-27T18:11:19.117Z",
"in_flight_calls": [
{
"id": "id",
"assignee": {
"id": "id",
"email": "email",
"first_name": "first_name",
"last_name": "last_name"
},
"assistant": {
"id": "id",
"after_call_sms_outcomes": [
"not_interested"
],
"after_call_sms_prompt": "after_call_sms_prompt",
"background_sound": "audio/office.ogg",
"background_sound_volume": 0,
"calendly": {
"connection_id": "connection_id",
"event_type_id": "event_type_id"
},
"call_retry_config": {
"allowed_days": [
"monday"
],
"call_twice_in_a_row": true,
"calling_windows": [
{
"calling_window_end_time": "calling_window_end_time",
"calling_window_start_time": "calling_window_start_time",
"retry_delay_seconds": 0
}
],
"max_retry_attempts": 1,
"timezone": "timezone"
},
"cartesia_dictionary_pronunciation_id": "cartesia_dictionary_pronunciation_id",
"created_at": {},
"custom_tools": [
{
"body_template": "body_template",
"description": "x",
"headers": [
{
"key": "x",
"value": "value"
}
],
"input_schema": [
{
"name": "x",
"required": true,
"type": "string",
"description": "description",
"enum_options": [
"string"
]
}
],
"method": "GET",
"name": "name",
"query_params": [
{
"key": "x",
"value": "value"
}
],
"url": "x"
}
],
"email_notification_address": "email_notification_address",
"email_notification_outcomes": [
"not_interested"
],
"end_of_call_sentence": "end_of_call_sentence",
"first_sentence": "first_sentence",
"first_sentence_delay_ms": -9007199254740991,
"first_sentence_mode": "generated",
"from_phone_number": "from_phone_number",
"hubspot": {
"connection_id": "connection_id",
"meeting_links": [
{
"booking_url": "booking_url",
"duration_ms": 1,
"is_fallback": true,
"label": "x",
"slug": "x"
}
],
"precall_lookup_enabled": true
},
"human_transfer_mode": "warm",
"ivr_navigation_enabled": true,
"llm_model": {
"name": "gpt-4.1",
"type": "dedicated-instance"
},
"logo_url": "logo_url",
"max_call_duration_secs": 0,
"max_duration_end_message": "max_duration_end_message",
"name": "name",
"organization_id": "organization_id",
"position": {
"x": 0,
"y": 0
},
"precall_lookup_url": "precall_lookup_url",
"prompt": "prompt",
"prompt_flow": {
"edges": [
{
"id": "id",
"source": "source",
"target": "target"
}
],
"nodes": [
{
"id": "id",
"data": {
"body": "body",
"title": "title"
},
"position": {
"x": 0,
"y": 0
},
"type": "promptBlock"
}
]
},
"slack": {
"channels": [
{
"id": "id",
"name": "name"
}
],
"connection_id": "connection_id",
"outcomes": [
"not_interested"
],
"template": "template"
},
"sms_enabled": true,
"sms_template": "sms_template",
"structured_output_config": [
{
"name": "x",
"required": true,
"type": "string",
"description": "description",
"enum_options": [
"string"
]
}
],
"structured_output_prompt": "structured_output_prompt",
"stt_context": {
"general": [
{
"key": "x",
"value": "x"
}
],
"terms": [
"x"
]
},
"stt_model": "stt-rt-v4",
"thinking_sound": "city-ambience.ogg",
"thinking_sound_probability": 0,
"thinking_sound_volume": 0,
"transfer_destinations": [
{
"label": "x",
"phone_number": "phone_number"
}
],
"type": "standalone",
"updated_at": {},
"voice": {
"id": "x",
"provider": "cartesia",
"model": "sonic-3",
"speed": 0.6,
"volume": 0.5
},
"voicemail_message": "voicemail_message",
"voicemail_sms_prompt": "voicemail_sms_prompt",
"warm_transfer_summary_instructions": "warm_transfer_summary_instructions",
"webhook_url": "webhook_url",
"zoho": {
"connection_id": "connection_id",
"field_mapping": [
{
"source": "x",
"zoho_field": "x"
}
],
"log_call_activity": true,
"module": "x",
"outcomes": [
"not_interested"
],
"template": "template"
},
"created_by": {
"id": "id",
"email": "email",
"first_name": "first_name",
"last_name": "last_name"
},
"faq_items": [
{
"answer": "answer",
"question": "question",
"id": "id",
"needs_human_answer": true,
"source": "human"
}
],
"is_inbound_receptionist": true,
"is_realestate_assistant": true,
"pending_faq_count": 0
},
"call_attempts": [
{
"id": "id",
"answered_at": {},
"dial_error": "number_non_attributed",
"ended_at": {},
"handled_by_ai": true,
"handled_by_human": true,
"handled_by_user": {
"id": "id",
"email": "email",
"first_name": "first_name",
"last_name": "last_name"
},
"phone_number": "phone_number",
"recording_url": "recording_url",
"result": "IVR",
"started_at": {},
"status": "queued",
"assistants_used": [
"string"
],
"email_log": [
{
"id": "id",
"created_at": {},
"from_address": "from_address",
"resend_message_id": "resend_message_id",
"subject": "subject",
"to_emails": [
"string"
]
}
],
"end_reason": "client_initiated",
"ended_by": "agent",
"post_call_transcript": [
{
"content": "content",
"role": "user",
"tool_arguments": {
"foo": "bar"
},
"tool_is_error": true,
"tool_name": "tool_name",
"tool_output": "tool_output"
}
],
"sms_log": [
{
"id": "id",
"created_at": {},
"message_body": "message_body",
"provider": "twilio",
"provider_error_code": "provider_error_code",
"provider_message_id": "provider_message_id",
"provider_status": "provider_status",
"to_phone_number": "to_phone_number",
"type": "in_call"
}
],
"speech_events": [
{
"id": "id",
"is_real_turn": true,
"llm_system_prompt": "llm_system_prompt",
"llm_ttft_ms": 0,
"llm_winner_model": "llm_winner_model",
"speaker": "user",
"started_speaking_at_ms": 0,
"stopped_speaking_at_ms": 0,
"stt_transcription_delay_ms": 0,
"transcript": "transcript",
"tts_ttfb_ms": 0,
"was_cut": true
}
],
"structured_output": {
"foo": "bar"
},
"transcript": [
{
"content": "content",
"role": "user",
"tool_arguments": {
"foo": "bar"
},
"tool_is_error": true,
"tool_name": "tool_name",
"tool_output": "tool_output"
}
]
}
],
"call_retry_config": {
"allowed_days": [
"monday"
],
"call_twice_in_a_row": true,
"calling_windows": [
{
"calling_window_end_time": "calling_window_end_time",
"calling_window_start_time": "calling_window_start_time",
"retry_delay_seconds": 0
}
],
"max_retry_attempts": 1,
"timezone": "timezone"
},
"calls_count": 0,
"campaign": {
"id": "id",
"name": "name"
},
"contact": {
"company": "company",
"email": "email",
"first_name": "first_name",
"job_title": "job_title",
"last_name": "last_name"
},
"created_at": {},
"direction": "inbound",
"first_sentence_delay_ms": -9007199254740991,
"from_phone_number": "from_phone_number",
"is_cancelled": true,
"is_completed": true,
"last_call_attempt": {
"id": "id",
"answered_at": {},
"dial_error": "number_non_attributed",
"ended_at": {},
"handled_by_ai": true,
"handled_by_human": true,
"handled_by_user": {
"id": "id",
"email": "email",
"first_name": "first_name",
"last_name": "last_name"
},
"phone_number": "phone_number",
"recording_url": "recording_url",
"result": "IVR",
"started_at": {},
"status": "queued",
"assistants_used": [
"string"
],
"email_log": [
{
"id": "id",
"created_at": {},
"from_address": "from_address",
"resend_message_id": "resend_message_id",
"subject": "subject",
"to_emails": [
"string"
]
}
],
"end_reason": "client_initiated",
"ended_by": "agent",
"post_call_transcript": [
{
"content": "content",
"role": "user",
"tool_arguments": {
"foo": "bar"
},
"tool_is_error": true,
"tool_name": "tool_name",
"tool_output": "tool_output"
}
],
"sms_log": [
{
"id": "id",
"created_at": {},
"message_body": "message_body",
"provider": "twilio",
"provider_error_code": "provider_error_code",
"provider_message_id": "provider_message_id",
"provider_status": "provider_status",
"to_phone_number": "to_phone_number",
"type": "in_call"
}
],
"speech_events": [
{
"id": "id",
"is_real_turn": true,
"llm_system_prompt": "llm_system_prompt",
"llm_ttft_ms": 0,
"llm_winner_model": "llm_winner_model",
"speaker": "user",
"started_speaking_at_ms": 0,
"stopped_speaking_at_ms": 0,
"stt_transcription_delay_ms": 0,
"transcript": "transcript",
"tts_ttfb_ms": 0,
"was_cut": true
}
],
"structured_output": {
"foo": "bar"
},
"transcript": [
{
"content": "content",
"role": "user",
"tool_arguments": {
"foo": "bar"
},
"tool_is_error": true,
"tool_name": "tool_name",
"tool_output": "tool_output"
}
]
},
"llm_model": {
"name": "gpt-4.1",
"type": "dedicated-instance"
},
"metadata": {
"foo": "string"
},
"organization_id": "organization_id",
"prompt_variables": {
"foo": "string"
},
"scheduled_at": {},
"status": "initializing",
"to_phone_number": "to_phone_number",
"updated_at": {},
"callback_from": {
"call_id": "call_id",
"created_at": {}
},
"cancel_reason": "prospect_called_back",
"follow_up_emails": [
"string"
],
"outcome": "not_interested",
"outcome_summary": "outcome_summary",
"slack_channel_ids": [
"string"
],
"visual_number": -9007199254740991
}
],
"outcome_filter": [
"not_interested"
],
"status": "dialing",
"total_targets": 0
}
}Returns Examples
{
"launched": 0,
"skipped": {
"active": 0,
"attempts_exhausted": 0,
"cancelled": 0
},
"session": {
"id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"campaign_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"connected_count": 0,
"created_at": "2019-12-27T18:11:19.117Z",
"current_call_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"dialed_count": 0,
"ended_at": "2019-12-27T18:11:19.117Z",
"in_flight_calls": [
{
"id": "id",
"assignee": {
"id": "id",
"email": "email",
"first_name": "first_name",
"last_name": "last_name"
},
"assistant": {
"id": "id",
"after_call_sms_outcomes": [
"not_interested"
],
"after_call_sms_prompt": "after_call_sms_prompt",
"background_sound": "audio/office.ogg",
"background_sound_volume": 0,
"calendly": {
"connection_id": "connection_id",
"event_type_id": "event_type_id"
},
"call_retry_config": {
"allowed_days": [
"monday"
],
"call_twice_in_a_row": true,
"calling_windows": [
{
"calling_window_end_time": "calling_window_end_time",
"calling_window_start_time": "calling_window_start_time",
"retry_delay_seconds": 0
}
],
"max_retry_attempts": 1,
"timezone": "timezone"
},
"cartesia_dictionary_pronunciation_id": "cartesia_dictionary_pronunciation_id",
"created_at": {},
"custom_tools": [
{
"body_template": "body_template",
"description": "x",
"headers": [
{
"key": "x",
"value": "value"
}
],
"input_schema": [
{
"name": "x",
"required": true,
"type": "string",
"description": "description",
"enum_options": [
"string"
]
}
],
"method": "GET",
"name": "name",
"query_params": [
{
"key": "x",
"value": "value"
}
],
"url": "x"
}
],
"email_notification_address": "email_notification_address",
"email_notification_outcomes": [
"not_interested"
],
"end_of_call_sentence": "end_of_call_sentence",
"first_sentence": "first_sentence",
"first_sentence_delay_ms": -9007199254740991,
"first_sentence_mode": "generated",
"from_phone_number": "from_phone_number",
"hubspot": {
"connection_id": "connection_id",
"meeting_links": [
{
"booking_url": "booking_url",
"duration_ms": 1,
"is_fallback": true,
"label": "x",
"slug": "x"
}
],
"precall_lookup_enabled": true
},
"human_transfer_mode": "warm",
"ivr_navigation_enabled": true,
"llm_model": {
"name": "gpt-4.1",
"type": "dedicated-instance"
},
"logo_url": "logo_url",
"max_call_duration_secs": 0,
"max_duration_end_message": "max_duration_end_message",
"name": "name",
"organization_id": "organization_id",
"position": {
"x": 0,
"y": 0
},
"precall_lookup_url": "precall_lookup_url",
"prompt": "prompt",
"prompt_flow": {
"edges": [
{
"id": "id",
"source": "source",
"target": "target"
}
],
"nodes": [
{
"id": "id",
"data": {
"body": "body",
"title": "title"
},
"position": {
"x": 0,
"y": 0
},
"type": "promptBlock"
}
]
},
"slack": {
"channels": [
{
"id": "id",
"name": "name"
}
],
"connection_id": "connection_id",
"outcomes": [
"not_interested"
],
"template": "template"
},
"sms_enabled": true,
"sms_template": "sms_template",
"structured_output_config": [
{
"name": "x",
"required": true,
"type": "string",
"description": "description",
"enum_options": [
"string"
]
}
],
"structured_output_prompt": "structured_output_prompt",
"stt_context": {
"general": [
{
"key": "x",
"value": "x"
}
],
"terms": [
"x"
]
},
"stt_model": "stt-rt-v4",
"thinking_sound": "city-ambience.ogg",
"thinking_sound_probability": 0,
"thinking_sound_volume": 0,
"transfer_destinations": [
{
"label": "x",
"phone_number": "phone_number"
}
],
"type": "standalone",
"updated_at": {},
"voice": {
"id": "x",
"provider": "cartesia",
"model": "sonic-3",
"speed": 0.6,
"volume": 0.5
},
"voicemail_message": "voicemail_message",
"voicemail_sms_prompt": "voicemail_sms_prompt",
"warm_transfer_summary_instructions": "warm_transfer_summary_instructions",
"webhook_url": "webhook_url",
"zoho": {
"connection_id": "connection_id",
"field_mapping": [
{
"source": "x",
"zoho_field": "x"
}
],
"log_call_activity": true,
"module": "x",
"outcomes": [
"not_interested"
],
"template": "template"
},
"created_by": {
"id": "id",
"email": "email",
"first_name": "first_name",
"last_name": "last_name"
},
"faq_items": [
{
"answer": "answer",
"question": "question",
"id": "id",
"needs_human_answer": true,
"source": "human"
}
],
"is_inbound_receptionist": true,
"is_realestate_assistant": true,
"pending_faq_count": 0
},
"call_attempts": [
{
"id": "id",
"answered_at": {},
"dial_error": "number_non_attributed",
"ended_at": {},
"handled_by_ai": true,
"handled_by_human": true,
"handled_by_user": {
"id": "id",
"email": "email",
"first_name": "first_name",
"last_name": "last_name"
},
"phone_number": "phone_number",
"recording_url": "recording_url",
"result": "IVR",
"started_at": {},
"status": "queued",
"assistants_used": [
"string"
],
"email_log": [
{
"id": "id",
"created_at": {},
"from_address": "from_address",
"resend_message_id": "resend_message_id",
"subject": "subject",
"to_emails": [
"string"
]
}
],
"end_reason": "client_initiated",
"ended_by": "agent",
"post_call_transcript": [
{
"content": "content",
"role": "user",
"tool_arguments": {
"foo": "bar"
},
"tool_is_error": true,
"tool_name": "tool_name",
"tool_output": "tool_output"
}
],
"sms_log": [
{
"id": "id",
"created_at": {},
"message_body": "message_body",
"provider": "twilio",
"provider_error_code": "provider_error_code",
"provider_message_id": "provider_message_id",
"provider_status": "provider_status",
"to_phone_number": "to_phone_number",
"type": "in_call"
}
],
"speech_events": [
{
"id": "id",
"is_real_turn": true,
"llm_system_prompt": "llm_system_prompt",
"llm_ttft_ms": 0,
"llm_winner_model": "llm_winner_model",
"speaker": "user",
"started_speaking_at_ms": 0,
"stopped_speaking_at_ms": 0,
"stt_transcription_delay_ms": 0,
"transcript": "transcript",
"tts_ttfb_ms": 0,
"was_cut": true
}
],
"structured_output": {
"foo": "bar"
},
"transcript": [
{
"content": "content",
"role": "user",
"tool_arguments": {
"foo": "bar"
},
"tool_is_error": true,
"tool_name": "tool_name",
"tool_output": "tool_output"
}
]
}
],
"call_retry_config": {
"allowed_days": [
"monday"
],
"call_twice_in_a_row": true,
"calling_windows": [
{
"calling_window_end_time": "calling_window_end_time",
"calling_window_start_time": "calling_window_start_time",
"retry_delay_seconds": 0
}
],
"max_retry_attempts": 1,
"timezone": "timezone"
},
"calls_count": 0,
"campaign": {
"id": "id",
"name": "name"
},
"contact": {
"company": "company",
"email": "email",
"first_name": "first_name",
"job_title": "job_title",
"last_name": "last_name"
},
"created_at": {},
"direction": "inbound",
"first_sentence_delay_ms": -9007199254740991,
"from_phone_number": "from_phone_number",
"is_cancelled": true,
"is_completed": true,
"last_call_attempt": {
"id": "id",
"answered_at": {},
"dial_error": "number_non_attributed",
"ended_at": {},
"handled_by_ai": true,
"handled_by_human": true,
"handled_by_user": {
"id": "id",
"email": "email",
"first_name": "first_name",
"last_name": "last_name"
},
"phone_number": "phone_number",
"recording_url": "recording_url",
"result": "IVR",
"started_at": {},
"status": "queued",
"assistants_used": [
"string"
],
"email_log": [
{
"id": "id",
"created_at": {},
"from_address": "from_address",
"resend_message_id": "resend_message_id",
"subject": "subject",
"to_emails": [
"string"
]
}
],
"end_reason": "client_initiated",
"ended_by": "agent",
"post_call_transcript": [
{
"content": "content",
"role": "user",
"tool_arguments": {
"foo": "bar"
},
"tool_is_error": true,
"tool_name": "tool_name",
"tool_output": "tool_output"
}
],
"sms_log": [
{
"id": "id",
"created_at": {},
"message_body": "message_body",
"provider": "twilio",
"provider_error_code": "provider_error_code",
"provider_message_id": "provider_message_id",
"provider_status": "provider_status",
"to_phone_number": "to_phone_number",
"type": "in_call"
}
],
"speech_events": [
{
"id": "id",
"is_real_turn": true,
"llm_system_prompt": "llm_system_prompt",
"llm_ttft_ms": 0,
"llm_winner_model": "llm_winner_model",
"speaker": "user",
"started_speaking_at_ms": 0,
"stopped_speaking_at_ms": 0,
"stt_transcription_delay_ms": 0,
"transcript": "transcript",
"tts_ttfb_ms": 0,
"was_cut": true
}
],
"structured_output": {
"foo": "bar"
},
"transcript": [
{
"content": "content",
"role": "user",
"tool_arguments": {
"foo": "bar"
},
"tool_is_error": true,
"tool_name": "tool_name",
"tool_output": "tool_output"
}
]
},
"llm_model": {
"name": "gpt-4.1",
"type": "dedicated-instance"
},
"metadata": {
"foo": "string"
},
"organization_id": "organization_id",
"prompt_variables": {
"foo": "string"
},
"scheduled_at": {},
"status": "initializing",
"to_phone_number": "to_phone_number",
"updated_at": {},
"callback_from": {
"call_id": "call_id",
"created_at": {}
},
"cancel_reason": "prospect_called_back",
"follow_up_emails": [
"string"
],
"outcome": "not_interested",
"outcome_summary": "outcome_summary",
"slack_channel_ids": [
"string"
],
"visual_number": -9007199254740991
}
],
"outcome_filter": [
"not_interested"
],
"status": "dialing",
"total_targets": 0
}
}