Create a call
Authentication
Request
Destination in E.164 (Must be E.164 format otherwise). When omitted, the contact’s number is used. When it differs from the contact’s number, the call is filed under the contact that owns this number instead.
File the call under this campaign of the workspace (its name, product context and target audience are passed to the agent, and its max_concurrent_calls applies). If phoneNumber overrides the contact’s number, the destination must be one of the campaign’s contacts.
Contact to call. Its name and earlier conversations on any channel are given to the agent. Ignored when it does not exist and phoneNumber is present.
A/B test prompt variant this call belongs to; stored on the call as prompt_variant_id for reporting.
Replaces the agent’s prompt for this call only. Rejected when it contains prompt-injection patterns (Prompt contains disallowed injection patterns), e.g. “ignore previous instructions”, “actúa como”, sistema: or zero-width characters. Its use is logged.
Replaces the agent’s opening line for this call. Same injection check as promptOverride. A legally required recording notice is still prepended when the destination needs one.
Response
The provider accepted the call and it is ringing. The body is the stored row without the derived analysis, has_recording, agent_name, campaign_name and contact_name.
A call as the API serializes it. Field names are snake_case (raw database columns); timestamps are ISO-8601 strings. Vendor identifiers (carrier call SID, voice-provider conversation id) are never returned.
Which fields are present depends on the endpoint:
GET /api/calls/{callId}returns every field below.GET /api/calls(list) returns a slimmer row: it omitstranscript,first_response_ms,transfer_call_sid,transferred_at,transferred_to,kpi_data,llm_cost_usd,llm_input_tokens,llm_output_tokens,sentiment_timeline,telemetry_fetched_at,tool_call_count,mcp_call_count,rag_lookup_count,tool_result_bytesanddnc_scanned_at.POST /api/callsreturns the stored row without the derived fields (analysis,has_recording,agent_name,campaign_name,contact_name).
Telemetry fields are null when not measured, which is not the same as 0. Every field is server-generated; calls cannot be edited through the API.

