Skip to main content
Every API v1 failure has an HTTP status that says what kind of failure it is, and the same JSON body. Branch on the status and the code, retry only what’s safe to retry, and include the request_id when you contact support.

The error body

Each details entry has the field as you sent it, an issue and a message. The issue is one of:

Status codes

New codes can be added. Treat an unknown code by its HTTP status.

Rate limits

Limits are counted per minute, for each API key and for its whole organization. A request must be within both. Each minute starts on the minute. Over a limit, the API answers 429 with a Retry-After header: the number of seconds until the next minute starts. A refused request doesn’t count against either limit.

Retry safely

Whether a request is safe to repeat depends on what it does:
  • Reads are always safe to repeat.
  • Updates (PATCH) set fields to the values you send, so repeating one leaves the same result. To make sure a repeat can’t overwrite someone else’s change, send If-Match. A call’s outcome update is saved again each time it’s sent. See Updates and concurrency.
  • Blocking or unblocking a phone number is safe to repeat: blocking a number that’s already blocked, or unblocking one that isn’t, changes nothing.
  • Deleting a knowledge source is safe to repeat. Once it’s gone, a repeat answers 404.
  • Adding knowledge isn’t safe to repeat. These requests don’t support idempotency keys, so if a request times out and you send it again, the agent can end up with two copies. Before you retry, list the agent’s knowledge sources to see whether the first request went through.
Last modified on November 11, 2026