Create Call
Ingest a completed call for analysis.
Accepts the transcript and metadata for a call that has already finished on your platform. Tuner queues it for evaluation; scores, outcomes, and red flags appear on the call record shortly after.
call_id must be unique. Re-sending a call that’s already been ingested
returns a conflict rather than replacing it.
Supplying recording_file_extension opts a newly-created call into a presigned upload
flow: the response’s recording_upload carries an S3 POST target the caller can upload
the recording audio to directly, valid for 24 hours. This is a deployment-level opt-in,
not just a per-request one — an environment with no upload signer configured rejects the
request outright (503) rather than silently omitting the upload target, so a caller relying
on it finds out immediately rather than discovering a null recording_upload later.
If the audio uploaded via recording_file_extension has the caller and the agent on
separate channels, set recording_s3_multi_channel: true; if the caller isn’t on channel 0,
also set recording_s3_caller_channel to the caller’s channel index.
Authorizations
Use Tuner API key (tr_api_...) or user session token. Find your API key in Workspace Settings > API Keys.
Query Parameters
Workspace ID. Find this in Workspace > General Settings.
Your Agent ID configured in Tuner. Get this value from Agent Settings > Agent Connection > Agent ID.
Body
Request schema for public call creation.
Unique call identifier from your provider (used for idempotency).
1 - 200Call channel/type from your provider (e.g., 'phone_call', 'web_call').
1 - 100The call timeline in chronological order. Each item is a user turn, an agent turn, a tool call or its result, or a workflow node transition.
User and agent turns must carry timing — as words, as start_ms and end_ms, or as start_ms and duration_ms. Latency and voice metrics are computed from it.
1Call start time as Unix epoch. Accepts either seconds or milliseconds.
Call end time as Unix epoch. Accepts either seconds or milliseconds. Must be greater than or equal to start_timestamp.
Publicly reachable recording URL (audio file or provider recording link).
1 - 1024Optional SIP call identifier. When provided, it is used as provider_call_id for persistence and idempotency.
1 - 200Recipient phone number (E.164) or SIP URL for outbound calls.
1 - 500The version of the agent that handled this call (e.g. 3).
x >= 0Diarized plain-text transcript (fallback for display/search). If omitted, we derive it from transcript_with_tool_calls when possible.
Call duration in milliseconds. If omitted, we compute it from start_timestamp and end_timestamp.
Provider call status at ingest time. Preferred values: 'call_ended'.
100Why the call ended (e.g. user_hangup, agent_hangup).
100Caller phone number in E.164 format when available (e.g., '+14155550123').
50Whether the call was successful
User sentiment label. Must be one of [positive, neutral, negative, unknown]
50Whether the call reached voicemail
Dynamic variables collected during the call (free-form JSON)
Total call cost in cents (e.g. 125 for $1.25). Client sends cents; frontend converts from dollars for UX.
Provider-native analysis payload (free-form JSON; stored as-is)
Call-level metadata (e.g. context, custom attributes). Supports structured ai_models and usage_token fields; extra keys are also accepted. Merged into general_meta_data_raw for storage. If both are sent, keys are merged; general_meta_data_raw keys win on collision.
Use to store any extra metadata payload as a JSON object
Multi-channel recording URL (separate speaker channels), if available.
1024Supplying this opts the call into receiving a presigned upload target (recording_upload in the response) so you can upload the call's audio directly to Tuner's storage. Provide the file extension without a leading dot (e.g. 'wav', 'mp3'). Omit this field entirely if you are not uploading audio.
Whether the audio being uploaded has the caller and the agent on separate channels rather than mixed into a single channel. Only applies to audio uploaded via recording_file_extension. Omit this field if the recording is a mono mix -- it is treated as a mono mix by default.
The 0-based index of the channel carrying the caller's voice, for audio uploaded via recording_file_extension. Defaults to 0 and is only meaningful when recording_s3_multi_channel is true.
x >= 0Response
Successful Response
Response schema for public call creation.
Internal Tuner call ID
Echo of the persisted provider call ID (sip_call_id when provided, else call_id).
Whether the call was newly created (false means it already existed)
Present only when the request set recording_file_extension and the upload target could be prepared. Null if the extension was omitted, if the call already had a recording uploaded, or if preparing the target failed after the call was otherwise saved successfully.