> ## Documentation Index
> Fetch the complete documentation index at: https://docs.adskull.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Errors

> AdSkull API error envelope and common error codes.

All errors use this envelope:

```json theme={"theme":"github-dark"}
{
  "error": {
    "code": "rate_limited",
    "message": "Too many requests. Please retry later.",
    "request_id": "req_01HX...",
    "details": {
      "retry_after_seconds": 30
    }
  }
}
```

## Common Codes

| HTTP | Code                       | Meaning                                                                                                       |
| ---: | -------------------------- | ------------------------------------------------------------------------------------------------------------- |
|  400 | `invalid_request`          | Missing or invalid input.                                                                                     |
|  400 | `unsupported_option`       | Model, duration, ratio, language, or mode is not supported.                                                   |
|  401 | `unauthorized`             | Missing, invalid, or expired API key.                                                                         |
|  403 | `forbidden`                | Key lacks scope or account lacks access.                                                                      |
|  403 | `plan_required`            | API access requires Creator or higher.                                                                        |
|  403 | `billing_issue`            | The account's paid access is paused, expired, canceled, disputed, or otherwise not usable for API generation. |
|  402 | `insufficient_credits`     | Not enough credits for the request.                                                                           |
|  404 | `not_found`                | Resource does not exist or is not owned by the caller.                                                        |
|  409 | `idempotency_conflict`     | Same idempotency key was reused with a different body.                                                        |
|  409 | `quota_exhausted`          | Monthly custom voice creation quota is exhausted.                                                             |
|  409 | `voice_limit_reached`      | Account already has the maximum simultaneous custom voices.                                                   |
|  415 | `unsupported_media_type`   | Uploaded file type is not accepted.                                                                           |
|  422 | `content_policy_violation` | Prompt, URL, image, audio, or requested output is not allowed.                                                |
|  429 | `active_job_limit_reached` | Too many active generation jobs are queued or processing for the account.                                     |
|  429 | `rate_limited`             | Rate limit exceeded.                                                                                          |
|  500 | `generation_failed`        | A generation job failed after being accepted. Refundable credits were reconciled.                             |
|  500 | `internal_error`           | Unexpected AdSkull-side issue.                                                                                |
|  503 | `temporarily_unavailable`  | Generation capacity is temporarily unavailable.                                                               |
