Skip to content

Start building

Jump toWhat every error looks like

Developer docs

Errors

Every error the API can send, grouped by what went wrong. Each error’s type link opens its own page here, with what it means and what to do.

What every error looks like

Every error is a JSON object with the same fields, sent as application/problem+json with the HTTP status:

FieldWhat it holds
typeA link to the code’s page in this reference.
titleThe code’s meaning in a short sentence, for people. Its wording can change.
statusThe HTTP status, repeated in the body.
codeThe stable name to branch on. It never changes its meaning.
request_idOur ID for this request. Quote it when you contact us.
detailSometimes: more about this occurrence, for people.
errorsWith validation_failed: each wrong field’s path, code and message.
retry_afterWith some 429 and 503 answers: how many seconds to wait first.

How errors work in the API guide

An error answer
JSON
{
  "type": "https://docs.mydeepagents.com/errors/not_found",
  "title": "The resource was not found.",
  "status": 404,
  "code": "not_found",
  "request_id": "req_01jb8m4s2v7q9x3k5n6p8r0t2w"
}

The request

Something about the request itself: its shape, its body, its headers or what it points to.

CodeStatusTitle
bad_request400The request is malformed.
not_found404The resource was not found.
method_not_allowed405The method is not allowed on this resource.
not_acceptable406No acceptable representation is available.
unsupported_media_type415The content type is not supported.
payload_too_large413The request body is too large.
validation_failed422The request is not valid.
idempotency_key_reuse422The idempotency key was used with a different request.
request_in_progress409A request with this idempotency key is in progress.
precondition_failed412The resource has changed since you read it.

Signing in

The credential is missing or too old, or a person’s own sign-in needs another step.

CodeStatusTitle
unauthenticated401Authentication is required.
token_expired401The access token has expired.
step_up_required401A fresh multi-factor sign-in is required.
reauth_required401Confirm it is you first.
invalid_credentials401The email or password is not right.
invalid_code401The code is not right, or it has expired.
account_unconfirmed401This account's email address is not confirmed yet.
password_reset_required401This account needs a new password.
signin_expired410This sign-in has expired. Start again.
weak_password422The password does not meet the rules.
passkey_unavailable422A passkey cannot be used here.
account_exists409An account with this email already exists.
password_changed409The password was changed. Sign in with it.

Access

The caller is known, but may not do this here.

CodeStatusTitle
permission_denied403You do not have permission to do this.
scope_insufficient403The credential's scope does not allow this.
policy_denied403A compliance rule does not allow this.
ip_not_allowed403Requests from this address are not allowed.
task_content_not_visible403You cannot see what this task asks you to approve.
tenant_suspended451The tenant is suspended.
key_unavailable423The tenant's encryption key is unavailable.
chat_disabled403Chat is turned off for this organization.

Conflicts and state

The request is fine, but the thing it acts on is not in a state that allows it.

CodeStatusTitle
already_exists409The resource already exists.
alias_in_use409The alias is in use.
has_children409The tenant still has child tenants.
run_in_progress409A run is already in progress.
task_already_decided409Someone has already decided this task.
export_in_progress409An export of this organization is already running.
stream_expired410The stream is no longer available.
version_archived410The version has been archived.
slot_unbound422A connection slot is not bound.
publish_blocked422The definition cannot be published.
tool_unavailable422A chosen tool cannot be used.
thread_full409The conversation has reached its message limit.

AI models

The model provider, its key or the model itself could not do what was asked.

CodeStatusTitle
llm_key_invalid422The model provider rejected the key.
llm_key_billing422The model provider account has a billing problem.
model_unavailable422The model is not available here.
model_param_unsupported422The model does not support this parameter.
model_refused422The model declined the request.
context_overflow422The conversation is too long for the model.
model_retired410The model has been retired.
llm_busy429The model capacity is busy.
llm_request_invalid502The model provider rejected the request.
llm_unavailable503The model provider is temporarily unavailable.
llm_timeout504The model provider did not answer in time.

Limits

A rate, concurrency or spending limit was reached.

CodeStatusTitle
rate_limited429Too many requests.
concurrency_limited429Too many concurrent operations.
budget_exceeded429The budget has been exceeded.

Website widgets

Answers of the widget gateway, which the chat on a customer’s website talks to.

CodeStatusTitle
widget_key_invalid404The widget key does not exist.
widget_key_revoked403The widget key has been revoked.
widget_disabled403The widget is turned off.
origin_not_allowed403This site may not show the widget.
consent_required403The visitor has not agreed to the consent text yet.
identity_required401The visitor must be signed in.
identity_token_invalid401The visitor's identity token is not valid.
session_expired401The chat session has expired.
message_too_large413The message is too long.
spend_cap_reached429The widget's daily spending limit is reached.
uploads_off403This widget does not accept files.
upload_too_large413The file is too large.
upload_type_not_allowed415This kind of file can't be attached here.
upload_unreadable422The file can't be used.
voice_off403This widget does not take voice.
speech_empty422No speech was heard.
speech_unsupported422This recording or voice can't be used.
speech_failed502Speech could not be processed right now.

Our side

Something on the platform failed or is briefly unavailable.

CodeStatusTitle
internal_error500Something went wrong on our side.
unavailable503The service is temporarily unavailable.
authz_unavailable503Authorization is temporarily unavailable.

Build with us

Ready for your first call?

Early access is open. Tell us what you want your agents to do, and we will help you get your first key.