Skip to content
cleo.Developers
Build reliably/Errors & troubleshooting
Cleo documentation

Errors & troubleshooting

Understand API errors and choose a safe next step.

Content reviewed · Maintained by Cleo Powered · Report a documentation issue · Verification basis

Error format

Errors handled by the call API use application/problem+json. Edge/proxy failures and unmatched routes or methods can use a different JSON shape or HTML; do not assume every failed response contains code. Inspect both the HTTP status and the machine-readable code; use detail for the explanation.

JSON
{
  "type": "about:blank",
  "title": "Live calls disabled",
  "status": 403,
  "detail": "This agent gateway does not permit live calls.",
  "code": "live_calls_disabled"
}

Status codes

HTTP
400
Code
missing_idempotency_key
Next step
Provide a non-empty Idempotency-Key header.
HTTP
401
Code
invalid_api_key, api_key_revoked, api_key_expired
Next step
Check the key or create a replacement in Settings.
HTTP
402
Code
insufficient_credits, insufficient_credits_for_call
Next step
Ask the user to log in and recharge at action_url. The rejected request did not dial or charge call credits. Stop automatic retries; retryable is false.
HTTP
403
Code
live_calls_disabled, agent_project_inactive
Next step
Calling is disabled for the service or project. Resolve the permission first.
HTTP
404
Code
call_not_found
Next step
Check the call ID and use a key from the project that created it.
HTTP
405
Code
May have no code field
Next step
Check the HTTP method. Creation is POST /v1/calls; GET /v1/calls is not a list endpoint.
HTTP
409
Code
idempotency_conflict
Next step
Replay the original payload, or intentionally start a separate call with a new key.
HTTP
409
Code
managed_agent_unavailable
Next step
Check that assistant setup is complete and the workspace assistant is active.
HTTP
422
Code
invalid_call
Next step
Check required fields, phone format, result schema, task length, and limits.
HTTP
429
Code
rate_limit_exceeded
Next step
Honor Retry-After and reduce request frequency.
HTTP
502
Code
control_plane_error, invalid_control_plane_response
Next step
Read detail. This can represent policy, workspace, or calling-service failures, not only a temporary outage.
HTTP
503
Code
control_plane_unavailable
Next step
The service could not be reached. Treat a create request as uncertain and retain its idempotency key.

Client signature blocked

A Cloudflare 403 with error 1010 or browser_signature_banned happens before the request reaches the call API. It is not an LLM safety decision.

Use a descriptive client header such as User-Agent: CleoDocs/1.0. The downloadable Python script already does this. If access is still blocked, give your operator the returned Cloudflare Ray ID.

Live calls disabled

403 live_calls_disabled means the public API’s live-call permission is off. It stops before LLM evaluation and does not create a call. Your operator must enable public API calling; repeatedly submitting the request will not change that setting.

An uncertain submission

For connection failures, timeouts, and ambiguous server errors, a call may already exist. Follow the idempotency recovery steps. If you already have a call ID, read or sync it instead of creating another. reconciling with submission_unconfirmed is an ongoing recovery state. cancel_requested with cancellation_unconfirmed requires confirmation of that existing call. For reconciliation_required, keep the ID and contact the operator; do not redial.

Documentation
Get an API key

Explore the docs

IntroductionSubmit a phone errand, follow the call, and inspect its outcome.Bot account onboardingRegister from Muse or another bot, verify your phone, receive an API key, and set your dashboard password by email.API overviewWhich endpoints are available, how they authenticate, and what is supported today.Make your first callCall your own phone, refresh its status, and inspect the returned call data.AuthenticationCreate a key in Cleo and authenticate requests with a bearer token.Create a callQueue one bounded phone task and receive durable task and call IDs.Get a callRead the most recently saved state of a call.Sync a callRefresh a call from the calling service and retrieve its latest saved state.Cancel a callCancel queued work or request a stop, then follow confirmation.The call objectThe shared response returned by create, get, sync, and cancel.Health checksCheck API liveness and readiness without an API key or placing a call.Results & schemasUnderstand result_schema, returned metadata, and what result_schema_valid does and does not establish.Task and call lifecycleFollow a call from acceptance to its final outcome.Idempotency & retriesRecover from an interrupted request without accidentally placing a second call.Safety & permissionsHow Cleo evaluates a call task before it can dial.Errors & troubleshootingUnderstand API errors and choose a safe next step.LimitsKeep call tasks bounded and leave room for API rate limits.Verification & limitationsReproduce our public health and schema checks and understand what has not been tested.Bot integrationsChoose a route for connecting your assistant to Cleo's public API.ChatGPTConfigure a private GPT Action with Cleo OpenAPI and bearer authentication.ClaudeConnect Claude client tools or a Claude Code shell workflow.Grok & Grok BotConnect xAI function tools and check Grok Bot execution requirements.OpenClawInstall a local skill for an approved Cleo calling workflow.GeminiMap Gemini function declarations to Cleo REST operations.Copilot StudioAdd Cleo through a REST API tool, custom connector, or flow.n8nBuild an authenticated HTTP workflow with durable call recovery.ZapierBuild a private Zapier integration for approved Cleo calls.