Reference

Error codes reference

Every AudD API error code, grouped by category, with the typed SDK exception family each maps to and whether it is safe to retry.

view .md audderror codeserror handlingretry

When a request fails, AudD returns status: "error" and an error object with a numeric error_code and a human-readable error_message. This page lists the codes, groups them by category, and maps each category to the typed exception family the SDKs raise and whether the call is safe to retry.

A failed request is not the same as a no-match result. A successful request that recognized nothing returns status: "success" with result: null (or an empty array on the enterprise endpoint) — never an error. Reserve error handling for the codes below.

{
  "status": "error",
  "error": {
    "error_code": 901,
    "error_message": "No api_token passed, and the limit was reached. Please obtain an api_token."
  }
}

Authentication

The token is missing, wrong, or disabled. None of these are retryable — retrying with the same token produces the same error. Fix the credential.

CodeMeaningRetryable
900Invalid API token. Check the api_token parameter.No
901No api_token was passed and the free limit was reached. Obtain a token.No
903The token has been disabled.No

Quota

The token is valid but a usage limit has been reached. Not retryable on the same window — raise the plan or wait for the quota to reset.

CodeMeaningRetryable
902Token quota exceeded.No

Subscription

The token is valid but the requested endpoint, method, or feature is not enabled for it (for example, calling the enterprise or streams endpoints with a token that lacks that access). Not retryable; enable the feature on the account.

CodeMeaningRetryable
904The endpoint or feature is not available with this token, or the referenced user/radio does not exist.No
905The method is not allowed for this token.No

Invalid request

The request reached the server but a parameter was malformed or rejected. Not retryable without changing the request.

CodeMeaningRetryable
600Incorrect audio URL, a local file path where an upload was expected, or a file sent in the wrong form.No
601Incorrect stream URL (streams endpoints).No
602Incorrect callback URL (streams endpoints).No

Missing file or parameter

A required input was not received. Not retryable until you include it. For 700, the most common cause on POST is a wrong Content-Type (it must be multipart/form-data) or a redirect from an http:// URL that drops the request body — send to https:// directly.

CodeMeaningRetryable
700No file or URL was sent for recognition (or the server did not receive it).No
701No stream URL was sent (streams endpoints).No
702No callback URL was sent (streams endpoints).No

Invalid audio

The input arrived but could not be used as audio. Not retryable with the same bytes — the file is the problem, not the call.

CodeMeaningRetryable
300Fingerprinting error. Network inference failed; most often the audio clip is too small.No
400Audio file too large for the standard endpoint (10 MB cap). Use the enterprise endpoint for longer audio.No
500Invalid audio file. The data could not be decoded as audio.No

Stream

The streams subscription’s limits were hit. Not retryable without a plan change.

CodeMeaningRetryable
610Streams limit reached for the subscription.No

Rate limit

A per-stream daily request limit was exceeded. Retryable only after the limit window resets — back off rather than retrying immediately.

CodeMeaningRetryable
611Per-stream daily rate limit exceeded.After reset

Server and internal

The request was well-formed but the server could not complete it. Internal errors (19) cover transient server faults and scheduled maintenance, and are the only category worth an automatic retry with backoff. The others indicate the request was blocked or the method is unknown — not retryable.

CodeMeaningRetryable
19Internal error, scheduled maintenance, or a request blocked for security/policy reasons.If transient (backoff)
100Unknown error.No
1000Unknown API method called.No

How the SDKs surface these

Every official SDK reads error_code off the response and raises a typed exception rather than returning a raw error blob. The categories above map to these exception families (names follow each language’s conventions; the shape is consistent across SDKs):

CategoryCodesException family
Authentication900, 901, 903authentication error
Quota902quota error
Subscription904, 905subscription error
Invalid request600, 601, 602invalid-request error
Missing file / parameter700, 701, 702invalid-request error
Invalid audio300, 400, 500invalid-audio error
Stream / rate limit610, 611quota error (rate-limited)
Server / internal19, 100, 1000server error

Two more exception families do not correspond to a server error_code because they happen before or after the wire response:

  • Connection error — the request never reached the server or the response never arrived (DNS, TLS, timeout, dropped socket). Transient; retry with backoff for idempotent calls.
  • Serialization error — a 200 OK arrived but the body could not be parsed into the expected shape. Not retryable; the payload is the problem.

Each typed exception carries the original error_code and error_message so you can branch on the specific code when you need to, while still being able to catch an entire category.

Notes

  • No-match is not an error. result: null (standard) or an empty array (enterprise) means the request succeeded and matched nothing. Do not route it through error handling.
  • Retry only what is transient. Connection errors and internal server errors (19) are the retryable cases; use exponential backoff. The authentication, quota, subscription, invalid-request, missing-file, and invalid-audio categories will return the same error on retry — fix the input or the account instead.
  • Do not auto-retry metered uploads on an ambiguous 5xx. Once an upload has completed, the server may already have done metered work; an automatic retry can double-bill. The SDKs do not retry the enterprise upload or a custom-catalog upload automatically for this reason.
  • 611 needs backoff, not an immediate retry. It is a rate limit, so the retry only succeeds once the daily window resets.
  • The server reports roughly 40 codes in total; the codes above are the ones an integration encounters in practice. Any code not listed here is handled by the SDKs as a server error.

Related

Reading this as an AI agent? The raw Markdown is at reference/errors.md, and the full index is /resources/llms.txt.