Error codes
Authentication
| Status | Error code | Where | Meaning |
|---|---|---|---|
| 401 | missing_api_key | REST API | No Authorization: Bearer header |
| 401 | invalid_api_key_format | REST API | Header present, not a valid sprio_live_... key |
| 401 | invalid_api_key | REST API | Key not recognized |
| 401 | revoked_api_key | REST API | Key exists but has been revoked |
| 401 | unauthorized | Webhooks | Webhook token missing or incorrect |
Calls API (/v1/calls/*)
| Status | Error code | Meaning |
|---|---|---|
| 400 | invalid_phone_number | phone_number isn't valid E.164 |
| 400 | assistant_id_required | Missing assistant_id on an outbound call request |
| 404 | assistant_not_found | No such assistant |
| 404 | call_not_found | No such call, or it belongs to a different organization |
| 403 | assistant_wrong_org | Assistant exists but belongs to another organization |
| 403 | insufficient_credits | Organization credit balance too low — response includes required/available |
| 429 | rate_limit_exceeded | Per-key outbound-call limit hit — see Rate limits |
Assistants API (/v1/assistants/*)
| Status | Error code | Meaning |
|---|---|---|
| 404 | (assistant not found) | No such assistant ID |
| 400 | No files uploaded | Knowledge-base upload request had no files field |
Webhooks
| Status | Error code | Meaning |
|---|---|---|
| 404 | unknown connection / unknown config | Connection ID in the URL doesn't exist |
General
| Status | Error code | Meaning |
|---|---|---|
| 429 | (see Rate limits) | Global /v1 request rate exceeded |
| 500 | internal / auth_error | Unexpected server error — retry, then contact support if persistent |