Dial Result
The outbound SIP leg was never answered (busy, no answer, rejected, failed). Ends a queued or ringing call with that status and adds ``call_completed`` (0 seconds, disposition ``sip_<code>``) to the timeline; the dial attempt keeps counting toward the calling frequency caps. Idempotent (``recorded: false`` once the call has ended); 409 for a call in progress. ``voicemail`` (RO-043): an answering machine picked up (also for a call in progress); ``message_left`` says whether the agent left its message (disposition ``voicemail_message_left`` or ``voicemail_hung_up``).
API key access
/api/v1/calls/{call_id}/dial-resultPer-call token issued when the call was created (job metadata api_token).
In: header
Path Parameters
uuidHeader Parameters
Workspace of the call (must match the token).
uuidHow an unanswered outbound call ended (voicemail, RO-043: an answering machine picked up).
"no_answer" | "busy" | "failed" | "voicemail"The SIP final response code, e.g. 486 (busy) or 480 (unavailable).
int32100 <= value <= 699RO-043, voicemail only: the agent left its pre-approved message.
Response Body
curl -X POST "http://localhost:8000/api/v1/calls/497f6eca-6276-4993-bfeb-53cbbbba6f08/dial-result" \ -H "X-Workspace-Id: string" \ -H "Content-Type: application/json" \ -d '{ "lead_id": "9bddab70-98e6-43a9-8f32-c9788b9de0c0", "status": "no_answer" }'{
"status": "queued",
"recorded": true
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}Complete
Final outcome, summary and answers; adds ``call_completed`` to the timeline. Idempotent. The first completion also stores the transcript and queues the post-call AI analysis (summary + extracted fields, shown on ``GET /calls/{call_id}``).
End Test Call
Hang up a browser test call (admin+): deletes its LiveKit room, which disconnects the browser and the agent; the agent then completes the call (outcome and transcript). `ended: false` when the room was already gone.