Skip to content
Start free

Developers · API

v1

Errors & limits

Every failure response has the same shape.

{
  "error": "A human-readable reason",
  "code": "MACHINE_READABLE_CODE"
}

error is always present; code is added only to failures your program needs to branch on. Branch on code; log and display error.

HTTP status codes

StatusMeaningWhat to do
400The request is malformedRead error and fix the request. Retrying gives the same result
401The key is missing, malformed or no longer validCheck the header and key; if it persists, email support@livespeech.ai
402Quota exceededAsk support@livespeech.ai to raise it
403Missing scope, or an agent that belongs to another accountAsk for the scope, or check the agent identifier
404No webhook registeredRegister one first
409Conflicts with the current stateHandle by code, below
422The value itself breaks a policy (webhook URL or events)Fix the value and send again
429Too many requestsWait a moment and retry
502Termination held — a number is still attachedEmail support@livespeech.ai with the agentId to release the number, then retry
5xxA temporary server problemRetry with a delay

Error codes

codeStatusWhenWhat to do
EXTERNAL_ID_EXISTS409An agent with this externalId already existsFind it in the list and use it
AGENT_QUOTA_EXCEEDED402The agent quota is exceededAsk support@livespeech.ai to raise it
IDEMPOTENCY_KEY_MISMATCH409The same idempotency key was reused with a different bodyUse a new key
IDEMPOTENCY_IN_PROGRESS409The first request with this key is still runningRetry shortly with the same key
ALREADY_TERMINATED409A termination was recorded but its delegation release had not finished; this retry ran the release againNothing to do. Once termination is complete, a repeat DELETE answers 403 instead
CARRIER_RELEASE_FAILED502Termination held because a number is attachedEmail support@livespeech.ai with the agentId to release the number, then retry
AGENT_TERMINATED409Changing settings on a terminated agentCreate a new agent
AGENT_REGION_UNRESOLVED409The agent's record could not be found, so nothing was savedCheck the agent identifier; if it persists, email support@livespeech.ai
INVALID_CURSOR400The cursor is invalid or has expiredRead again from the start without a cursor
SUMMARY_NO_RECIPIENTS400An empty recipient list would reach nobodyKeep at least one recipient
SUMMARY_OWNER_LOOKUP_FAILED503Looking up the recipient failed temporarilyRetry shortly (nothing was saved)
WEBHOOK_URL_INVALID422The webhook URL breaks the rulesUse https, a public host and no credentials
UNKNOWN_EVENT422An unsupported event nameSend only call.completed
WEBHOOK_NOT_CONFIGURED404No webhook registeredRegister one with PUT /v1/webhooks first
NUMBER_NOT_REQUESTED404Number endpoint (opens with early access): reading status before any request was madeRequest a number first (Phone numbers)
NUMBER_ALREADY_CONNECTED409Number endpoint: requesting a number for an agent that already has oneNothing to do — the response carries the current number
REGION_UNSUPPORTED422Number endpoint: no numbers in the agent's region yetkr and ca are available during early access
persona.empty400The persona is emptyFill it in
persona.too_long400The persona is over 8,000 charactersShorten it
persona.tool_name400The persona contains an internal feature nameRemove that word
persona.tool_signature400The persona contains code-like notationRewrite it as plain sentences

For persona.* codes, error is a Korean sentence you can show to the operator as is.

Limits

ItemValue
Rate limitPer sending server IP + path, 30 requests per 5 minutes
AgentsAccounts may have a quota (402 tells you)
List page size1–200, default 50
Idempotency keysKept at least 24 hours; may be deleted after that
Webhook delivery attempts8 in total including the first; retries start at 1 minute and double up to 1 hour
Webhook response timeout10 seconds

Retry rules

This responseRetry
429, 5xx, no responseRetry with a delay
400, 403, 422Same result until you fix the request (a 403 on an agent you terminated means the termination is complete)
409 IDEMPOTENCY_IN_PROGRESSRetry shortly with the same idempotency key
Any other 409Check the state, then send a different request

Agent creation needs an Idempotency-Key for retries to be safe — see the API reference.

Contact

Send questions to support@livespeech.ai. If you are stuck mid-integration, including the following speeds things up:

  • The method and path you called (for example POST /v1/agents)
  • The response status and its error and code
  • The agent's agentId (for call issues, the callId and the time of the call)
  • When you sent the request, with the time zone

Never put keys or secrets in a message. The key prefix (keyPrefix) is all that is needed.

About these docs

These docs are written from the API specification, and the example responses are taken from it. The API reference is generated from the specification on every deploy, so where a field differs, the reference is right.