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

# Errors

> Every error code of the Rask API v3: how to read an error response and how to act on it.

Every 4xx and 5xx answer is `application/problem+json` (RFC 9457). The same shape appears inside a job as `Job.error`.

| Member | What it is for |
| - | - |
| `code` | Stable identifier. Branch on this, never on text. |
| `status` | The HTTP status. In a job, the status the same failure would have had as a request. |
| `title`, `detail` | For people. `detail` may name ids and never holds user text. |
| `hint` | One sentence that names the next call or field. |
| `recommendation` | What has to happen first: `fix_request`, `wait`, `top_up`, `retry_later` or `contact_support`. |
| `retry`, `retryable` | How to send it again: `same_key`, `new_key` or `none`. `retryable` is true when `retry` is not `none`. |
| `errors` | The failing fields as JSON Pointers, or `query:`, `header:` and `path:` names. Empty when no field is at fault. |
| `instance` | `urn:uuid:<request id>`, the same id as `X-Request-Id`, or `/v3/jobs/{id}` in a job. Quote it to support. |
| `type` | The link to this code's page on this site. |

Some codes add members of their own, such as `required_scopes` or `current_etag`. Each page shows them in its example.
[Spend, balance and errors](https://docs.api.rask.ai/v3/recipes/spend-balance-errors.md) has a handler to copy.

## What `recommendation` asks for

* `fix_request`: change the request or its inputs; sent unchanged it fails again
* `wait`: work in progress blocks the request; wait for it to end, then retry
* `top_up`: the workspace owner adds minutes or changes the plan in the web app
* `retry_later`: a temporary failure; retry after a pause (after `Retry-After` when given)
* `contact_support`: Rask has to act; contact support with the `instance` value

## How `retry` works

* `same_key`: resend the same request with the same Idempotency-Key (after `Retry-After` when given)
* `new_key`: start again with a new Idempotency-Key (a failed job)
* `none`: do not retry the request unchanged

## Every code

| Code | Status | `retry` | `recommendation` | Where |
| - | - | - | - | - |
| [`idempotency_key_required`](https://docs.api.rask.ai/errors/idempotency_key_required) | 400 | `none` | `fix_request` | request |
| [`invalid_cursor`](https://docs.api.rask.ai/errors/invalid_cursor) | 400 | `none` | `fix_request` | request |
| [`token_in_query`](https://docs.api.rask.ai/errors/token_in_query) | 400 | `none` | `fix_request` | request |
| [`authentication_required`](https://docs.api.rask.ai/errors/authentication_required) | 401 | `none` | `fix_request` | request |
| [`invalid_token`](https://docs.api.rask.ai/errors/invalid_token) | 401 | `none` | `fix_request` | request |
| [`token_expired`](https://docs.api.rask.ai/errors/token_expired) | 401 | `none` | `fix_request` | request |
| [`token_revoked`](https://docs.api.rask.ai/errors/token_revoked) | 401 | `none` | `fix_request` | request |
| [`token_wrong_environment`](https://docs.api.rask.ai/errors/token_wrong_environment) | 401 | `none` | `fix_request` | request |
| [`insufficient_balance`](https://docs.api.rask.ai/errors/insufficient_balance) | 402 | `none` | `top_up` | request and job |
| [`localization_stage_skipped`](https://docs.api.rask.ai/errors/localization_stage_skipped) | 402 | `new_key` | `top_up` | job |
| [`account_disabled`](https://docs.api.rask.ai/errors/account_disabled) | 403 | `none` | `contact_support` | request |
| [`demo_project_read_only`](https://docs.api.rask.ai/errors/demo_project_read_only) | 403 | `none` | `fix_request` | request |
| [`feature_not_in_plan`](https://docs.api.rask.ai/errors/feature_not_in_plan) | 403 | `none` | `top_up` | request |
| [`forbidden`](https://docs.api.rask.ai/errors/forbidden) | 403 | `none` | `fix_request` | request |
| [`insufficient_scope`](https://docs.api.rask.ai/errors/insufficient_scope) | 403 | `none` | `fix_request` | request |
| [`prepare_mode_not_enabled`](https://docs.api.rask.ai/errors/prepare_mode_not_enabled) | 403 | `none` | `fix_request` | request |
| [`token_spend_limit_exceeded`](https://docs.api.rask.ai/errors/token_spend_limit_exceeded) | 403 | `none` | `fix_request` | request and job |
| [`trial_project_dub_not_allowed`](https://docs.api.rask.ai/errors/trial_project_dub_not_allowed) | 403 | `none` | `top_up` | request |
| [`voice_clone_limit_reached`](https://docs.api.rask.ai/errors/voice_clone_limit_reached) | 403 | `none` | `fix_request` | request |
| [`workspace_access_suspended`](https://docs.api.rask.ai/errors/workspace_access_suspended) | 403 | `none` | `top_up` | request |
| [`folder_not_found`](https://docs.api.rask.ai/errors/folder_not_found) | 404 | `none` | `fix_request` | request |
| [`glossary_not_found`](https://docs.api.rask.ai/errors/glossary_not_found) | 404 | `none` | `fix_request` | request |
| [`job_not_found`](https://docs.api.rask.ai/errors/job_not_found) | 404 | `none` | `fix_request` | request |
| [`media_not_found`](https://docs.api.rask.ai/errors/media_not_found) | 404 | `none` | `fix_request` | request |
| [`not_found`](https://docs.api.rask.ai/errors/not_found) | 404 | `none` | `fix_request` | request |
| [`project_not_found`](https://docs.api.rask.ai/errors/project_not_found) | 404 | `none` | `fix_request` | request |
| [`segment_not_found`](https://docs.api.rask.ai/errors/segment_not_found) | 404 | `none` | `fix_request` | request |
| [`speaker_not_found`](https://docs.api.rask.ai/errors/speaker_not_found) | 404 | `none` | `fix_request` | request |
| [`transcript_version_not_found`](https://docs.api.rask.ai/errors/transcript_version_not_found) | 404 | `none` | `fix_request` | request |
| [`upload_not_found`](https://docs.api.rask.ai/errors/upload_not_found) | 404 | `none` | `fix_request` | request |
| [`voice_clone_not_found`](https://docs.api.rask.ai/errors/voice_clone_not_found) | 404 | `none` | `fix_request` | request |
| [`method_not_allowed`](https://docs.api.rask.ai/errors/method_not_allowed) | 405 | `none` | `fix_request` | request |
| [`cost_changed`](https://docs.api.rask.ai/errors/cost_changed) | 409 | `none` | `fix_request` | request and job |
| [`dub_in_progress`](https://docs.api.rask.ai/errors/dub_in_progress) | 409 | `same_key` | `wait` | request |
| [`dub_payment_required`](https://docs.api.rask.ai/errors/dub_payment_required) | 409 | `none` | `fix_request` | request |
| [`dub_up_to_date`](https://docs.api.rask.ai/errors/dub_up_to_date) | 409 | `none` | `fix_request` | request |
| [`export_in_progress`](https://docs.api.rask.ai/errors/export_in_progress) | 409 | `same_key` | `wait` | request |
| [`folder_not_empty`](https://docs.api.rask.ai/errors/folder_not_empty) | 409 | `none` | `fix_request` | request |
| [`free_lipsync_already_used`](https://docs.api.rask.ai/errors/free_lipsync_already_used) | 409 | `none` | `fix_request` | request |
| [`idempotency_key_in_use`](https://docs.api.rask.ai/errors/idempotency_key_in_use) | 409 | `same_key` | `wait` | request |
| [`job_already_finished`](https://docs.api.rask.ai/errors/job_already_finished) | 409 | `none` | `fix_request` | request |
| [`job_not_cancelable`](https://docs.api.rask.ai/errors/job_not_cancelable) | 409 | `none` | `fix_request` | request |
| [`job_not_resumable`](https://docs.api.rask.ai/errors/job_not_resumable) | 409 | `none` | `fix_request` | request |
| [`lipsync_already_done`](https://docs.api.rask.ai/errors/lipsync_already_done) | 409 | `none` | `fix_request` | request |
| [`lipsync_in_progress`](https://docs.api.rask.ai/errors/lipsync_in_progress) | 409 | `same_key` | `wait` | request |
| [`lipsync_rejected`](https://docs.api.rask.ai/errors/lipsync_rejected) | 409 | `new_key` | `fix_request` | job |
| [`media_in_use`](https://docs.api.rask.ai/errors/media_in_use) | 409 | `same_key` | `wait` | request |
| [`media_not_ready`](https://docs.api.rask.ai/errors/media_not_ready) | 409 | `same_key` | `wait` | request |
| [`no_face_detected`](https://docs.api.rask.ai/errors/no_face_detected) | 409 | `none` | `fix_request` | request and job |
| [`no_previous_dub`](https://docs.api.rask.ai/errors/no_previous_dub) | 409 | `none` | `fix_request` | request |
| [`onscreen_in_progress`](https://docs.api.rask.ai/errors/onscreen_in_progress) | 409 | `same_key` | `wait` | request |
| [`onscreen_source_unavailable`](https://docs.api.rask.ai/errors/onscreen_source_unavailable) | 409 | `new_key` | `fix_request` | job |
| [`project_busy`](https://docs.api.rask.ai/errors/project_busy) | 409 | `same_key` | `wait` | request |
| [`project_media_restoring`](https://docs.api.rask.ai/errors/project_media_restoring) | 409 | `same_key` | `wait` | request |
| [`project_not_dubbed`](https://docs.api.rask.ai/errors/project_not_dubbed) | 409 | `none` | `fix_request` | request |
| [`project_not_ready`](https://docs.api.rask.ai/errors/project_not_ready) | 409 | `same_key` | `wait` | request |
| [`restore_in_progress`](https://docs.api.rask.ai/errors/restore_in_progress) | 409 | `same_key` | `wait` | request |
| [`segment_busy`](https://docs.api.rask.ai/errors/segment_busy) | 409 | `same_key` | `wait` | request |
| [`subtitle_import_in_progress`](https://docs.api.rask.ai/errors/subtitle_import_in_progress) | 409 | `same_key` | `wait` | request |
| [`transcript_busy`](https://docs.api.rask.ai/errors/transcript_busy) | 409 | `same_key` | `wait` | request |
| [`transcript_not_ready`](https://docs.api.rask.ai/errors/transcript_not_ready) | 409 | `same_key` | `wait` | request |
| [`transcript_replaced`](https://docs.api.rask.ai/errors/transcript_replaced) | 409 | `none` | `fix_request` | request |
| [`upload_incomplete`](https://docs.api.rask.ai/errors/upload_incomplete) | 409 | `same_key` | `fix_request` | request |
| [`upload_not_pending`](https://docs.api.rask.ai/errors/upload_not_pending) | 409 | `none` | `fix_request` | request |
| [`voice_clone_in_use`](https://docs.api.rask.ai/errors/voice_clone_in_use) | 409 | `same_key` | `wait` | request |
| [`voice_clone_not_ready`](https://docs.api.rask.ai/errors/voice_clone_not_ready) | 409 | `same_key` | `wait` | request |
| [`voices_not_assigned`](https://docs.api.rask.ai/errors/voices_not_assigned) | 409 | `same_key` | `wait` | request |
| [`project_deleted`](https://docs.api.rask.ai/errors/project_deleted) | 410 | `none` | `fix_request` | job |
| [`upload_expired`](https://docs.api.rask.ai/errors/upload_expired) | 410 | `none` | `fix_request` | request |
| [`precondition_failed`](https://docs.api.rask.ai/errors/precondition_failed) | 412 | `none` | `fix_request` | request |
| [`media_too_large`](https://docs.api.rask.ai/errors/media_too_large) | 413 | `none` | `fix_request` | request and job |
| [`media_too_long`](https://docs.api.rask.ai/errors/media_too_long) | 413 | `none` | `fix_request` | request |
| [`request_too_large`](https://docs.api.rask.ai/errors/request_too_large) | 413 | `none` | `fix_request` | request |
| [`unsupported_media_type`](https://docs.api.rask.ai/errors/unsupported_media_type) | 415 | `none` | `fix_request` | request and job |
| [`auto_dub_required`](https://docs.api.rask.ai/errors/auto_dub_required) | 422 | `none` | `fix_request` | request |
| [`field_not_updatable`](https://docs.api.rask.ai/errors/field_not_updatable) | 422 | `none` | `fix_request` | request |
| [`glossary_entries_invalid`](https://docs.api.rask.ai/errors/glossary_entries_invalid) | 422 | `none` | `fix_request` | request |
| [`glossary_language_mismatch`](https://docs.api.rask.ai/errors/glossary_language_mismatch) | 422 | `none` | `fix_request` | request |
| [`glossary_language_pair_not_supported`](https://docs.api.rask.ai/errors/glossary_language_pair_not_supported) | 422 | `none` | `fix_request` | request |
| [`idempotency_key_reused`](https://docs.api.rask.ai/errors/idempotency_key_reused) | 422 | `none` | `fix_request` | request |
| [`instant_clone_not_available`](https://docs.api.rask.ai/errors/instant_clone_not_available) | 422 | `none` | `fix_request` | request |
| [`invalid_date_range`](https://docs.api.rask.ai/errors/invalid_date_range) | 422 | `none` | `fix_request` | request |
| [`localization_combination_not_supported`](https://docs.api.rask.ai/errors/localization_combination_not_supported) | 422 | `none` | `fix_request` | request and job |
| [`media_corrupt`](https://docs.api.rask.ai/errors/media_corrupt) | 422 | `none` | `fix_request` | job |
| [`media_processing_failed`](https://docs.api.rask.ai/errors/media_processing_failed) | 422 | `none` | `fix_request` | request and job |
| [`media_purpose_mismatch`](https://docs.api.rask.ai/errors/media_purpose_mismatch) | 422 | `none` | `fix_request` | request |
| [`no_audio_track`](https://docs.api.rask.ai/errors/no_audio_track) | 422 | `none` | `fix_request` | job |
| [`no_speech_detected`](https://docs.api.rask.ai/errors/no_speech_detected) | 422 | `none` | `fix_request` | job |
| [`onscreen_language_not_supported`](https://docs.api.rask.ai/errors/onscreen_language_not_supported) | 422 | `none` | `fix_request` | request |
| [`onscreen_video_too_long`](https://docs.api.rask.ai/errors/onscreen_video_too_long) | 422 | `none` | `fix_request` | request |
| [`segments_missing_translation`](https://docs.api.rask.ai/errors/segments_missing_translation) | 422 | `none` | `fix_request` | request |
| [`source_download_failed`](https://docs.api.rask.ai/errors/source_download_failed) | 422 | `new_key` | `fix_request` | job |
| [`source_language_not_supported`](https://docs.api.rask.ai/errors/source_language_not_supported) | 422 | `none` | `fix_request` | request |
| [`source_unavailable`](https://docs.api.rask.ai/errors/source_unavailable) | 422 | `none` | `fix_request` | job |
| [`source_url_not_allowed`](https://docs.api.rask.ai/errors/source_url_not_allowed) | 422 | `none` | `fix_request` | request |
| [`speaker_has_no_speech`](https://docs.api.rask.ai/errors/speaker_has_no_speech) | 422 | `none` | `fix_request` | request |
| [`subtitles_invalid`](https://docs.api.rask.ai/errors/subtitles_invalid) | 422 | `none` | `fix_request` | request |
| [`target_language_not_supported`](https://docs.api.rask.ai/errors/target_language_not_supported) | 422 | `none` | `fix_request` | request |
| [`translation_batch_too_large`](https://docs.api.rask.ai/errors/translation_batch_too_large) | 422 | `none` | `fix_request` | request |
| [`upload_size_mismatch`](https://docs.api.rask.ai/errors/upload_size_mismatch) | 422 | `none` | `fix_request` | request |
| [`validation_failed`](https://docs.api.rask.ai/errors/validation_failed) | 422 | `none` | `fix_request` | request |
| [`voice_not_in_pool`](https://docs.api.rask.ai/errors/voice_not_in_pool) | 422 | `none` | `fix_request` | request |
| [`precondition_required`](https://docs.api.rask.ai/errors/precondition_required) | 428 | `none` | `fix_request` | request |
| [`rate_limited`](https://docs.api.rask.ai/errors/rate_limited) | 429 | `same_key` | `retry_later` | request |
| [`too_many_concurrent_jobs`](https://docs.api.rask.ai/errors/too_many_concurrent_jobs) | 429 | `same_key` | `wait` | request |
| [`too_many_waiters`](https://docs.api.rask.ai/errors/too_many_waiters) | 429 | `same_key` | `retry_later` | request |
| [`audio_separation_failed`](https://docs.api.rask.ai/errors/audio_separation_failed) | 500 | `new_key` | `retry_later` | job |
| [`dub_failed`](https://docs.api.rask.ai/errors/dub_failed) | 500 | `new_key` | `retry_later` | job |
| [`dub_merge_failed`](https://docs.api.rask.ai/errors/dub_merge_failed) | 500 | `new_key` | `retry_later` | job |
| [`dub_timeout`](https://docs.api.rask.ai/errors/dub_timeout) | 500 | `new_key` | `retry_later` | job |
| [`dub_voiceover_failed`](https://docs.api.rask.ai/errors/dub_voiceover_failed) | 500 | `new_key` | `retry_later` | job |
| [`export_failed`](https://docs.api.rask.ai/errors/export_failed) | 500 | `new_key` | `retry_later` | job |
| [`face_check_failed`](https://docs.api.rask.ai/errors/face_check_failed) | 500 | `new_key` | `retry_later` | job |
| [`internal_error`](https://docs.api.rask.ai/errors/internal_error) | 500 | `same_key` | `retry_later` | request and job |
| [`lipsync_failed`](https://docs.api.rask.ai/errors/lipsync_failed) | 500 | `new_key` | `retry_later` | job |
| [`lipsync_timeout`](https://docs.api.rask.ai/errors/lipsync_timeout) | 500 | `new_key` | `retry_later` | job |
| [`localization_stage_failed`](https://docs.api.rask.ai/errors/localization_stage_failed) | 500 | `new_key` | `retry_later` | job |
| [`onscreen_charge_failed`](https://docs.api.rask.ai/errors/onscreen_charge_failed) | 500 | `new_key` | `retry_later` | job |
| [`onscreen_finalize_timeout`](https://docs.api.rask.ai/errors/onscreen_finalize_timeout) | 500 | `new_key` | `retry_later` | job |
| [`onscreen_invalid_result`](https://docs.api.rask.ai/errors/onscreen_invalid_result) | 500 | `new_key` | `retry_later` | job |
| [`onscreen_publish_failed`](https://docs.api.rask.ai/errors/onscreen_publish_failed) | 500 | `new_key` | `retry_later` | job |
| [`onscreen_runner_failed`](https://docs.api.rask.ai/errors/onscreen_runner_failed) | 500 | `new_key` | `retry_later` | job |
| [`onscreen_runner_lost`](https://docs.api.rask.ai/errors/onscreen_runner_lost) | 500 | `new_key` | `retry_later` | job |
| [`plan_configuration_error`](https://docs.api.rask.ai/errors/plan_configuration_error) | 500 | `none` | `contact_support` | request |
| [`project_processing_timeout`](https://docs.api.rask.ai/errors/project_processing_timeout) | 500 | `new_key` | `retry_later` | job |
| [`restore_failed`](https://docs.api.rask.ai/errors/restore_failed) | 500 | `new_key` | `retry_later` | job |
| [`segment_generation_failed`](https://docs.api.rask.ai/errors/segment_generation_failed) | 500 | `new_key` | `retry_later` | job |
| [`segment_generation_timeout`](https://docs.api.rask.ai/errors/segment_generation_timeout) | 500 | `new_key` | `retry_later` | job |
| [`speaker_detection_failed`](https://docs.api.rask.ai/errors/speaker_detection_failed) | 500 | `new_key` | `retry_later` | job |
| [`subtitle_import_rolled_back`](https://docs.api.rask.ai/errors/subtitle_import_rolled_back) | 500 | `new_key` | `retry_later` | job |
| [`transcription_failed`](https://docs.api.rask.ai/errors/transcription_failed) | 500 | `new_key` | `retry_later` | job |
| [`translation_failed`](https://docs.api.rask.ai/errors/translation_failed) | 500 | `new_key` | `retry_later` | job |
| [`translation_timeout`](https://docs.api.rask.ai/errors/translation_timeout) | 500 | `new_key` | `retry_later` | job |
| [`voice_clone_failed`](https://docs.api.rask.ai/errors/voice_clone_failed) | 500 | `new_key` | `retry_later` | job |
| [`voice_clone_timeout`](https://docs.api.rask.ai/errors/voice_clone_timeout) | 500 | `new_key` | `retry_later` | job |
| [`api_unavailable`](https://docs.api.rask.ai/errors/api_unavailable) | 503 | `same_key` | `retry_later` | request |
| [`auth_unavailable`](https://docs.api.rask.ai/errors/auth_unavailable) | 503 | `same_key` | `retry_later` | request |
| [`feature_temporarily_disabled`](https://docs.api.rask.ai/errors/feature_temporarily_disabled) | 503 | `same_key` | `retry_later` | request |
| [`onscreen_provider_unavailable`](https://docs.api.rask.ai/errors/onscreen_provider_unavailable) | 503 | `new_key` | `retry_later` | job |
| [`onscreen_queue_timeout`](https://docs.api.rask.ai/errors/onscreen_queue_timeout) | 503 | `new_key` | `retry_later` | job |
| [`spending_paused`](https://docs.api.rask.ai/errors/spending_paused) | 503 | `same_key` | `retry_later` | request |
| [`temporarily_unavailable`](https://docs.api.rask.ai/errors/temporarily_unavailable) | 503 | `same_key` | `retry_later` | request |
| [`translation_dispatch_failed`](https://docs.api.rask.ai/errors/translation_dispatch_failed) | 503 | `new_key` | `retry_later` | job |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.