Skip to navigation

Error codes

Every code this API returns, from the public error registry.

Each code has one HTTP status and one retry class. details holds only the fields listed here for the code. The spec’s x-error-catalog is the public list; the status, retry class and message come from the public error registry locked by CONTRACT.lock. How to act on a code is described on Errors.

The catalog has 50 codes.

CodeHTTPRetryPublic detailsMessageDeclared byNote
invalid_request400nofield, fields, allowedThe request is not valid.Every operation
unauthenticated401nononeAuthentication is required.Every operation
forbidden403norequired_role, required_capabilitiesThis action is not permitted.Every operationThe key lacks a capability. details.required_capabilities lists every missing capability, including conditional ones.
not_found404nononeThe resource was not found.85 operations
agent_archived409noagent_idThe agent has been archived.28 operationsThe agent is archived. Edits, validation, publication and rollback are refused. Call start uses agent_not_live with details.state=archived.
agent_name_taken409noagent_id, nameAn agent already uses this name.createAgent, updateAgent
agent_not_assigned409noagent_idThe agent has no assigned checkpoint.createCall
agent_not_live409noagent_id, stateThe agent is not live.addPhoneNumberOutboundAgent, createCall, setPhoneNumberInboundAgent
agent_not_published409nononeThe agent has not been published.13 operations
already_terminal409nononeThe operation has already ended.admitCampaign, cancelCampaign, createCampaign, pauseCampaign, planCampaign, resumeCampaign, retryCampaign, startCampaign, suppressCampaignDestination, uploadCampaignThe operation has already ended.
call_not_admittable409noreasonsThe call cannot be admitted.createCall
carrier_action_required409nocarrier, capabilityThe carrier needs a setup step.provisionPhoneNumber, removePhoneNumberInboundAgent, setPhoneNumberInboundAgent
carrier_capability_unsupported409nocarrier, capabilityThe carrier does not support this.provisionPhoneNumber, setPhoneNumberInboundAgent
conflict409noreason, current_live_version_idThe request conflicts with the current state.38 operationsState conflict. details.reason (open vocabulary, listed per operation in x-conflict-reasons) says which recovery applies.
credential_unavailable409nononeThe credential is unavailable.15 operations
deletion_blocked409noreasonThe item cannot be deleted while work is running or a hold applies.archiveKnowledgeSource, deleteKnowledgeSource, deleteSecretDeletion or removal is refused while a current reference or retention hold applies. details.reason is an open vocabulary listed per operation in x-deletion-reasons. For Knowledge, snapshot_reference and published_reference require retained content; archive the source instead. Legacy draft knowledge fields do not block Knowledge removal. Secret deletion remains refused while its draft or retained publication references exist, where draft_reference still applies.
draft_conflict409noexpected_etag, current_etag, changed_atThe draft has changed since it was read.13 operationsStale revision on an agent, draft, variable, tool, MCP server or publication token. Re-read, re-apply your intended change and retry with the new ETag. Never blindly retry with a fresh ETag. details.expected_etag is the If-Match you sent and details.current_etag is the current ETag, both opaque strings. A publication-token mismatch uses the same shape, even when only a bound tool, MCP server, secret version or direct-library source changed.
idempotency_in_progress409retry_afternoneThe same request is still in progress.52 operationsThe same intent is still running. Wait for Retry-After, then resend the identical request with the same key and original If-Match.
idempotency_key_expired409noidempotency_keyThe idempotency key has expired.52 operations
idempotency_key_reused409noidempotency_key, operation, original_result_kind, original_stateThe idempotency key was used for a different request.52 operationsThis key was used for a different request. Fix the caller; never retry a changed intent with the old key.
idempotency_result_gone409noidempotency_key, operation, result_kind, result_refThe original result is no longer available.52 operations
inbound_claimed_elsewhere409nononeThis number already answers inbound calls in another workspace.Not declared by a single operation
knowledge_snapshot_unavailable409nosnapshot_idThe knowledge index is not available.publishAgent, updateAgentDraft, validateAgentDraft
mcp_auth_mode_unsupported409nomode, supportedThis authentication mode is not supported.createMcpServer, discoverMcpTools, replaceMcpServer
mcp_schema_drift409notool, kindThe remote server no longer matches the published tools.createAgentTool, publishAgent, replaceAgentTool, validateAgentTool
mcp_tool_not_allowed409notoolThe tool is not on the allowlist.createAgentTool, replaceAgentTool, validateAgentTool
no_ready_placement409nomodality, fallback_modeThere is no ready placement.createCall
no_recipients409nononeThere are no recipients.admitCampaign, cancelCampaign, createCampaign, pauseCampaign, planCampaign, resumeCampaign, retryCampaign, startCampaign, suppressCampaignDestination, uploadCampaignThere are no recipients.
not_dialing409nononeThe campaign is not dialing.admitCampaign, cancelCampaign, createCampaign, pauseCampaign, planCampaign, resumeCampaign, retryCampaign, startCampaign, suppressCampaignDestination, uploadCampaignThe campaign is not dialing.
not_draft409nononeThe resource is not a draft.admitCampaign, cancelCampaign, createCampaign, pauseCampaign, planCampaign, resumeCampaign, retryCampaign, startCampaign, suppressCampaignDestination, uploadCampaignThe resource is not a draft.
not_paused409nostateThe campaign is not paused.admitCampaign, cancelCampaign, createCampaign, pauseCampaign, planCampaign, resumeCampaign, retryCampaign, startCampaign, suppressCampaignDestination, uploadCampaignThe campaign is not paused.
not_planned409nononeThe operation has not been planned.admitCampaign, cancelCampaign, createCampaign, pauseCampaign, planCampaign, resumeCampaign, retryCampaign, startCampaign, suppressCampaignDestination, uploadCampaignThe operation has not been planned.
number_in_use409noreasonThe number is still in use.removeImportedPhoneNumber
number_not_outbound409nononeThe number does not support outbound calls.addPhoneNumberOutboundAgent, admitCampaign, cancelCampaign, createCall, createCampaign, pauseCampaign, planCampaign, resumeCampaign, retryCampaign, startCampaign, suppressCampaignDestination, uploadCampaign
provider_account_exists409nononeThe provider account already exists.createTelephonyConnection, deleteTelephonyConnection, importPhoneNumbers, removeImportedPhoneNumber, replaceTelephonyConnection
resource_key_conflict409noexisting_id, resource_typeA resource with this resource key already exists.createAgent, createAgentKnowledgeSource, createAgentTool, createKnowledgeSource, createMcpServer, createSecret, replaceAgentTool, replaceMcpServer, uploadAgentKnowledgeSource, uploadKnowledgeSourceA resource of this type already has this resource_key. details.existing_id identifies it; read it and reconcile. details.resource_type is one of agent, mcp_server, knowledge_source or secret (open vocabulary).
telephony_not_connected409nomodeTelephony is not connected.16 operations
tool_name_conflict409noname, countTwo tools use the same name.createAgentTool, replaceAgentTool, validateAgentTool
workspace_unavailable409nononeThe workspace is unavailable.55 operations
payload_too_large413nobytes, limit_bytesThe payload exceeds the size limit.37 operations
unsupported_media_type415nocontent_type, expectedThe media type is not supported.admitCampaign, cancelCampaign, createCampaign, pauseCampaign, planCampaign, resumeCampaign, retryCampaign, startCampaign, suppressCampaignDestination, uploadAgentKnowledgeSource, uploadCampaign, uploadKnowledgeSource
outbound_destination_refused422nononeThe destination is not permitted.18 operations
revision_required428noheaderThe request requires a revision.34 operations
quota_exceeded429retry_aftermeter, period, period_end, limit, used, requested, available, unitThe quota has been exceeded.Every operation
rate_limited429retry_afterlimit, scope, window_sThe request rate limit has been reached.Every operation
internal_error500yesrequest_idThe request could not be completed.Every operationFor an operation that takes an Idempotency-Key, a client retry with the same key is safe: the server replays the stored outcome if the first attempt took effect; if the first attempt had no effect, the retry performs the operation once. Never retry with a new key.
provider_unavailable502nononeThe provider is unavailable.createCall, createTelephonyConnection, deleteTelephonyConnection, endCall, importPhoneNumbers, listAvailablePhoneNumbers, provisionPhoneNumber, removeImportedPhoneNumber, removePhoneNumberInboundAgent, replaceTelephonyConnection, setPhoneNumberInboundAgentFor an operation that takes an Idempotency-Key, a client retry with the same key is safe: the server replays the stored outcome if the first attempt took effect; if the first attempt had no effect, the retry performs the operation once. Never retry with a new key.
at_capacity503retry_afterclass, limitThere is no capacity available.Every operationFor an operation that takes an Idempotency-Key, a client retry with the same key is safe: the server replays the stored outcome if the first attempt took effect; if the first attempt had no effect, the retry performs the operation once. Never retry with a new key.
call_orchestrator_unavailable503retry_afternoneNo orchestrator answers.Every operationFor an operation that takes an Idempotency-Key, a client retry with the same key is safe: the server replays the stored outcome if the first attempt took effect; if the first attempt had no effect, the retry performs the operation once. Never retry with a new key.
unavailable503retry_afterdependencyThe service is unavailable.Every operationFor an operation that takes an Idempotency-Key, a client retry with the same key is safe: the server replays the stored outcome if the first attempt took effect; if the first attempt had no effect, the retry performs the operation once. Never retry with a new key.