| 400 | invalid_json | The body is not valid JSON. | Check the Content-Type and the body. |
| 400 | invalid_body | Missing fields or fields with the wrong type. | The message tells you which field. Fix it and send it again. |
| 400 | invalid_idempotency_key | Idempotency-Key with forbidden characters or over 255 chars. | Use printable ASCII only. UUID v4 is the safest option. |
| 400 | invalid_confirmation | MCP only: the confirmation_token expired, was already used, belongs to another key or tool, or the arguments changed. | Call the tool again without the token to get a new one. |
| 401 | unauthorized | Missing, malformed, invalid or revoked API key. | Check the Authorization header. If the key was revoked, create a new one. |
| 402 | payment_required | Empty wallet or inactive subscription. | Top up the wallet or bring the subscription current. Check the primary_reason field. |
| 402 | key_budget_exhausted | This API key’s credit budget for the month does not cover the call or batch. Calls in progress hold part of it until they are billed. | Wait for calls in progress to finish, raise the limit in Settings > API keys, or wait for next month. |
| 403 | agent_not_found | The agent_id does not exist, or it exists but does not belong to your account. | Check that the ID is right and that the key belongs to the same customer as the agent. |
| 409 | idempotency_conflict | Idempotency-Key reused with a different body. | Generate a new key or reuse exactly the same body as the first request. |
| 409 | idempotency_in_progress | A request with the same Idempotency-Key is still running. | Retry in a few seconds with the same key: you will get the original response. |
| 422 | agent_disabled | The agent is paused (manually or by the system). | Reactivate the agent from the portal. |
| 429 | rate_limit_exceeded | Too many requests per minute, from your IP or from your account (by plan). | Wait the seconds in Retry-After and use exponential backoff. Read Rate limits. |
| 500 | internal_error | Unexpected error on our side. | Retry after a few seconds. If it persists, contact us with the request_id. |
| 502 | upstream_unreachable | We could not reach the telephony provider. | Retry with backoff. If it persists, write to us. |
| 502 | upstream_error | The provider rejected the call (for example, a number that account cannot use). | Check the number and the agent’s permissions. The message may give more context. |
| 503 | rate_limit_unavailable | We could not check your rate limit right now. It is not your quota running out. | Retry after the seconds in Retry-After (5). Read Rate limits. |
| 503 | service_unavailable | Missing configuration or temporary degradation. | Retry. If it persists, contact us. |
| 503 | confirmation_unavailable | MCP only: we could not check that a confirmation_token is used once, so nothing ran. | Retry shortly: call the tool again without the token to get a new one. |