Call statuses
Every call moves through these statuses:| Status | What it means |
|---|---|
queued | Created, waiting to go out |
initiated | Sent to the telephony provider |
ringing | Phone is ringing |
in_progress | Someone answered, conversation is live |
completed | Call finished normally, results being processed |
no_answer | Nobody picked up |
busy | Line was busy |
canceled | Canceled before connecting |
failed | Something went wrong |
Terminal statuses
Once a call hits one of these, it’s done:completed— call succeededno_answer— nobody picked upbusy— line was busycanceled— canceled before connectingfailed— error
Result statuses
After a call completes, extraction runs if you set areturns schema:
| Status | What it means |
|---|---|
pending | Still extracting |
completed | Done; data is in result |
failed | Extraction broke; reason is in result_error |
Webhook statuses
If you set awebhook_url:
| Status | What it means |
|---|---|
pending | Not sent yet |
delivered | Your server returned 2xx |
failed | All retries failed; see webhook_error |
HTTP error codes
| Code | When | What it means |
|---|---|---|
201 | POST /v1/calls | Call created |
200 | GET /v1/calls, GET /v1/calls/{id} | OK |
400 | Any | Bad request body or params |
401 | Any | Bad or missing API key |
404 | GET /v1/calls/{id} | Call not found (wrong ID or wrong org) |
502 | POST /v1/calls | Telephony provider couldn’t place the call |
Error response format
Errors come back as JSON:Handling failures
Call status is failed
Call status is failed
Look at
error_code, error_message, and hangup_cause on the call object. Common reasons: invalid phone number, telephony provider issue, not enough credits.Extraction failed
Extraction failed
Check
result_status and result_error. This usually happens when the transcript is empty (call ended before any conversation) or the model couldn’t parse what you asked for. Return fields come back as null in either case.Webhook delivery failed
Webhook delivery failed
Check
webhook_status and webhook_error. Common causes: your server returned a non-2xx code, the request timed out (10s limit), or the URL resolved to a private IP. You can always poll GET /v1/calls/{id} as a fallback.