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

# Error Reference

> Complete list of error codes with descriptions and recommended actions.

When a job fails, the error message includes an error code that tells you what went wrong and whether retrying will help.

## Error types

* **Permanent errors** — The problem won't resolve by retrying. You need to fix the underlying issue. Credits are automatically refunded.
* **Temporary errors** — A transient issue that usually resolves by clicking **Retry**. If the error persists after 2–3 retries, contact support.

<Tabs>
  <Tab title="Permanent errors">
    These errors indicate a problem with the input. Credits are automatically refunded.

    | Code                   | Title                  | Description                                       | Action                                               |
    | ---------------------- | ---------------------- | ------------------------------------------------- | ---------------------------------------------------- |
    | `video_private`        | Video not accessible   | The video is private or restricted                | Make the video public or unlisted on YouTube         |
    | `video_deleted`        | Video not found        | The video has been deleted or removed             | Re-upload the video                                  |
    | `video_unavailable`    | Video unavailable      | The video is currently unavailable                | Check the source and try again later                 |
    | `video_age_restricted` | Age-restricted video   | Requires age verification                         | Use a non-age-restricted video                       |
    | `video_blocked`        | Video blocked          | Blocked due to copyright or regional restrictions | Use a different video or check regional availability |
    | `no_audio`             | No audio track         | No audio track found in the video                 | Upload a video that contains an audio track          |
    | `no_speech`            | No speech detected     | No speech detected in the audio                   | Ensure the video contains spoken content             |
    | `audio_too_short`      | Audio too short        | Audio is too short to generate captions           | Use a video with longer spoken content               |
    | `invalid_url`          | Invalid URL            | Not a valid YouTube video URL                     | Check the URL format and try again                   |
    | `unsupported_format`   | Unsupported format     | Video format not supported                        | Convert to MP4 (H.264) and re-upload                 |
    | `invalid_input`        | Invalid input          | Input data is invalid or incomplete               | Check your settings and try again                    |
    | `music_detected`       | Music content detected | Primarily music, not supported for dubbing        | Voice dubbing requires spoken content                |
    | `missing_api_key`      | Configuration error    | Required service not configured                   | Contact support                                      |
    | `invalid_api_key`      | Configuration error    | Required service misconfigured                    | Contact support                                      |
    | `config_error`         | Configuration error    | Internal configuration error                      | Contact support                                      |
  </Tab>

  <Tab title="Temporary errors">
    These errors are transient. Click **Retry** — the job resumes from the last checkpoint.

    | Code                  | Title                           | Description                             | Action                                |
    | --------------------- | ------------------------------- | --------------------------------------- | ------------------------------------- |
    | `rate_limited`        | Service temporarily busy        | Processing capacity at limit            | Wait a few minutes and retry          |
    | `quota_exceeded`      | Service temporarily busy        | Service capacity at limit               | Wait a few minutes and retry          |
    | `server_error`        | Service temporarily unavailable | Processing servers experienced an issue | Retry                                 |
    | `service_unavailable` | Service temporarily unavailable | Processing servers temporarily down     | Retry                                 |
    | `gateway_error`       | Connection issue                | Couldn't reach processing servers       | Retry                                 |
    | `timeout`             | Request timed out               | Processing took too long                | Retry — resumes from checkpoint       |
    | `connection_error`    | Connection issue                | Couldn't establish connection           | Check connection and retry            |
    | `network_error`       | Network issue                   | Network error occurred                  | Check connection and retry            |
    | `circuit_open`        | Service recovering              | Recovering from high load               | Wait a few minutes and retry          |
    | `tts_service_error`   | Audio generation failed         | Text-to-speech service error            | Retry                                 |
    | `storage_error`       | Storage upload failed           | File upload failed                      | Retry                                 |
    | `unknown`             | Something went wrong            | Unexpected error                        | Retry — contact support if persistent |
  </Tab>
</Tabs>

## Automatic refunds

All failed jobs — whether permanent or temporary errors — are automatically refunded. You don't need to contact support. Refunds appear immediately in your credit history.

## Checkpoint-based retry

When you retry a job, Neolli resumes from the last checkpoint rather than starting over. This means:

* **Faster retries** — Completed work is preserved
* **Lower cost** — You're only charged for work that actually completes
* **Better success rate** — Transient issues typically don't recur on retry

See [A Job Failed](/troubleshooting/job-failed) for more details on the retry process.
