> ## 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.

# Operation table

> Every operation of the Rask API v3 with its scopes, plan features, idempotency, ETag and estimate.

Generated from the contract, version `3.0.0-alpha.0`. Each row is what the operation's `x-rask-operation`
declares, so code can read the same facts from `GET /v3/operations`.

## Plan features

`GET /v3/plan` says which of these the workspace has. "Operations" lists those that declare the feature for the whole
call or for a request field. A feature can also apply to one field of a request, as the table below says under "Plan".

| Feature | What it allows | Operations |
| - | - | - |
| `api_access` | use the API at all (checked on every request) | |
| `auto_dub` | dub automatically after processing (needs an active subscription) | |
| `dubbing_model_choice` | choose the dubbing model; otherwise it is overridden (estimate notice) | |
| `free_languages` | free\_dubbing language variants | |
| `glossary` | attach and manage glossaries | [createGlossary](https://docs.api.rask.ai/operations/createGlossary.md), [updateGlossary](https://docs.api.rask.ai/operations/updateGlossary.md), [deleteGlossary](https://docs.api.rask.ai/operations/deleteGlossary.md) |
| `translation_instructions` | custom translation instructions | |
| `subtitle_import` | import SRT subtitles when creating a project | |
| `subtitle_reimport` | replace a project's transcript from SRT (importTranscript) | [importTranscript](https://docs.api.rask.ai/operations/importTranscript.md) |
| `subtitle_download` | download subtitles (getProjectSubtitles, subtitle outputs) | [getProjectSubtitles](https://docs.api.rask.ai/operations/getProjectSubtitles.md) |
| `burned_subtitles` | export and download videos with burned-in subtitles | [createExport](https://docs.api.rask.ai/operations/createExport.md) |
| `audio_download` | download dubbed audio and the voice track | [generateSegments](https://docs.api.rask.ai/operations/generateSegments.md) |
| `multilanguage` | several target languages per media (copies) | [createProjectCopies](https://docs.api.rask.ai/operations/createProjectCopies.md) |
| `lipsync` | lip-sync | [resumeJob](https://docs.api.rask.ai/operations/resumeJob.md), [createProject](https://docs.api.rask.ai/operations/createProject.md), [createLipsync](https://docs.api.rask.ai/operations/createLipsync.md), [createLocalization](https://docs.api.rask.ai/operations/createLocalization.md) |
| `lipsync_paid` | paid lip-sync runs (otherwise only the free run) | [resumeJob](https://docs.api.rask.ai/operations/resumeJob.md), [createProject](https://docs.api.rask.ai/operations/createProject.md), [createLocalization](https://docs.api.rask.ai/operations/createLocalization.md) |
| `lipsync_enhanced` | the Enhanced lip-sync model | [resumeJob](https://docs.api.rask.ai/operations/resumeJob.md), [createProject](https://docs.api.rask.ai/operations/createProject.md), [createLocalization](https://docs.api.rask.ai/operations/createLocalization.md) |
| `lipsync_download` | download lip-synced video | |
| `onscreen` | on-screen text translation and download of its video | [resumeJob](https://docs.api.rask.ai/operations/resumeJob.md), [createProject](https://docs.api.rask.ai/operations/createProject.md), [createLocalization](https://docs.api.rask.ai/operations/createLocalization.md), [createOnscreen](https://docs.api.rask.ai/operations/createOnscreen.md) |
| `voice_clones` | workspace voice clones | [createVoiceClone](https://docs.api.rask.ai/operations/createVoiceClone.md) |
| `instant_voice_clone` | a speaker's own cloned voice | |
| `share_links` | revocable project share links | |

## Operations

"Key" is the `Idempotency-Key` header. "ETag" is the ETag condition: the `If-Match` header, or a field of the body where it
says so, as [ETags](https://docs.api.rask.ai/v3/concepts/etags.md) explains. "Estimate" names the free call that prices a spending operation. "Text"
marks the operations closed until a dub is charged: [Paid text](https://docs.api.rask.ai/v3/concepts/paid-text.md).

| Operation | Request | Scopes | Key | ETag | Estimate | Text | Plan |
| - | - | - | - | - | - | - | - |
| [getBalance](https://docs.api.rask.ai/operations/getBalance.md) | `GET /balance` | `account:read` | | | | | |
| [getMe](https://docs.api.rask.ai/operations/getMe.md) | `GET /me` | `account:read` | | | | | |
| [getPlan](https://docs.api.rask.ai/operations/getPlan.md) | `GET /plan` | `account:read` | | | | | |
| [listLanguages](https://docs.api.rask.ai/operations/listLanguages.md) | `GET /languages` | any valid key | | | | | |
| [createDub](https://docs.api.rask.ai/operations/createDub.md) | `POST /projects/{project_id}/dub` | `dubbing:write`, `credits:spend` | required | | [estimateDub](https://docs.api.rask.ai/operations/estimateDub.md) | | |
| [createLocalization](https://docs.api.rask.ai/operations/createLocalization.md) | `POST /projects/{project_id}/localizations` | `dubbing:write`, `credits:spend`; by request `lipsync:write`, `onscreen:write` | required | | [estimateLocalization](https://docs.api.rask.ai/operations/estimateLocalization.md) | | per `conditional` |
| [estimateDub](https://docs.api.rask.ai/operations/estimateDub.md) | `POST /projects/{project_id}/dub/estimate` | `dubbing:write` | optional | | | | |
| [estimateLocalization](https://docs.api.rask.ai/operations/estimateLocalization.md) | `POST /projects/{project_id}/localizations/estimate` | `dubbing:write` | optional | | | | |
| [estimateSegmentGeneration](https://docs.api.rask.ai/operations/estimateSegmentGeneration.md) | `POST /projects/{project_id}/segments/generate/estimate` | `dubbing:write` | optional | | | | |
| [generateSegments](https://docs.api.rask.ai/operations/generateSegments.md) | `POST /projects/{project_id}/segments/generate` | `dubbing:write`, `credits:spend` | required | | [estimateSegmentGeneration](https://docs.api.rask.ai/operations/estimateSegmentGeneration.md) | | audio\_download |
| [createExport](https://docs.api.rask.ai/operations/createExport.md) | `POST /projects/{project_id}/exports` | `projects:write` | required | | | | burned\_subtitles |
| [createFileRestore](https://docs.api.rask.ai/operations/createFileRestore.md) | `POST /projects/{project_id}/file-restores` | `projects:write` | required | | | | |
| [getProjectSubtitles](https://docs.api.rask.ai/operations/getProjectSubtitles.md) | `GET /projects/{project_id}/subtitles` | `projects:read` | | | | yes | subtitle\_download |
| [listProjectOutputs](https://docs.api.rask.ai/operations/listProjectOutputs.md) | `GET /projects/{project_id}/outputs` | `projects:read` | | | | | `dubbed_audio` and `voice_track` need audio\_download; subtitles need subtitle\_download; `burned_subtitles_video` and `lipsync_burned_subtitles_video` need burned\_subtitles; `lipsync_video` needs lipsync and lipsync\_download; `onscreen_video` needs onscreen; `localized_video` needs onscreen when on-screen is its last stage, else lipsync and lipsync\_download. Withheld outputs report `not_in_plan` |
| [createGlossary](https://docs.api.rask.ai/operations/createGlossary.md) | `POST /glossaries` | `glossaries:write` | optional | | | | glossary |
| [deleteGlossary](https://docs.api.rask.ai/operations/deleteGlossary.md) | `DELETE /glossaries/{glossary_id}` | `glossaries:write` | | | | | glossary |
| [getGlossary](https://docs.api.rask.ai/operations/getGlossary.md) | `GET /glossaries/{glossary_id}` | `glossaries:read` | | | | | |
| [listGlossaries](https://docs.api.rask.ai/operations/listGlossaries.md) | `GET /glossaries` | `glossaries:read` | | | | | |
| [updateGlossary](https://docs.api.rask.ai/operations/updateGlossary.md) | `PATCH /glossaries/{glossary_id}` | `glossaries:write` | optional | | | | glossary |
| [cancelJob](https://docs.api.rask.ai/operations/cancelJob.md) | `POST /jobs/{job_id}/cancel` | `jobs:write` | optional | | | | |
| [getJob](https://docs.api.rask.ai/operations/getJob.md) | `GET /jobs/{job_id}` | `jobs:read` | | | | | |
| [listJobs](https://docs.api.rask.ai/operations/listJobs.md) | `GET /jobs` | `jobs:read` | | | | | |
| [resumeJob](https://docs.api.rask.ai/operations/resumeJob.md) | `POST /jobs/{job_id}/resume` | `jobs:write`, `dubbing:write`, `credits:spend`; by request `lipsync:write`, `onscreen:write` | required | | [estimateLocalization](https://docs.api.rask.ai/operations/estimateLocalization.md) | | per `conditional` |
| [createLipsync](https://docs.api.rask.ai/operations/createLipsync.md) | `POST /projects/{project_id}/lipsync` | `lipsync:write`, `credits:spend` | required | | [estimateLipsync](https://docs.api.rask.ai/operations/estimateLipsync.md) | | lipsync; paid runs need lipsync\_paid; `enhanced` needs lipsync\_enhanced; downloads need lipsync\_download |
| [estimateLipsync](https://docs.api.rask.ai/operations/estimateLipsync.md) | `POST /projects/{project_id}/lipsync/estimate` | `lipsync:write` | optional | | | | |
| [getLipsyncState](https://docs.api.rask.ai/operations/getLipsyncState.md) | `GET /projects/{project_id}/lipsync` | `projects:read` | | | | | |
| [deleteMedia](https://docs.api.rask.ai/operations/deleteMedia.md) | `DELETE /media/{media_id}` | `media:write` | | | | | |
| [getMedia](https://docs.api.rask.ai/operations/getMedia.md) | `GET /media/{media_id}` | `media:read` | | | | | |
| [importMedia](https://docs.api.rask.ai/operations/importMedia.md) | `POST /media/import` | `media:write` | required | | | | |
| [listMedia](https://docs.api.rask.ai/operations/listMedia.md) | `GET /media` | `media:read` | | | | | |
| [createOnscreen](https://docs.api.rask.ai/operations/createOnscreen.md) | `POST /projects/{project_id}/onscreen` | `onscreen:write`, `credits:spend` | required | | [estimateOnscreen](https://docs.api.rask.ai/operations/estimateOnscreen.md) | | onscreen |
| [estimateOnscreen](https://docs.api.rask.ai/operations/estimateOnscreen.md) | `POST /projects/{project_id}/onscreen/estimate` | `onscreen:write` | optional | | | | |
| [getOnscreenState](https://docs.api.rask.ai/operations/getOnscreenState.md) | `GET /projects/{project_id}/onscreen` | `projects:read` | | | | | |
| [createFolder](https://docs.api.rask.ai/operations/createFolder.md) | `POST /folders` | `projects:write` | optional | | | | |
| [createProject](https://docs.api.rask.ai/operations/createProject.md) | `POST /projects` | `projects:write`, `credits:spend`; by request `lipsync:write`, `onscreen:write` | required | | [estimateProject](https://docs.api.rask.ai/operations/estimateProject.md) | | `free_dubbing` -> free\_languages; `glossary_id`; `translation_instructions`; `subtitles` -> subtitle\_import; `auto_dub`; `onscreen`; `localization` (`conditional`) |
| [createProjectCopies](https://docs.api.rask.ai/operations/createProjectCopies.md) | `POST /projects/{project_id}/copies` | `projects:write`, `credits:spend` | required | | [estimateProjectCopies](https://docs.api.rask.ai/operations/estimateProjectCopies.md) | | multilanguage; `glossary_id` -> glossary; `auto_dub` -> an active subscription |
| [deleteFolder](https://docs.api.rask.ai/operations/deleteFolder.md) | `DELETE /folders/{folder_id}` | `projects:write` | | | | | |
| [deleteProject](https://docs.api.rask.ai/operations/deleteProject.md) | `DELETE /projects/{project_id}` | `projects:write` | | | | | |
| [deleteProjectBatch](https://docs.api.rask.ai/operations/deleteProjectBatch.md) | `DELETE /projects` | `projects:write` | | | | | |
| [estimateProject](https://docs.api.rask.ai/operations/estimateProject.md) | `POST /projects/estimate` | `projects:write` | optional | | | | |
| [estimateProjectCopies](https://docs.api.rask.ai/operations/estimateProjectCopies.md) | `POST /projects/{project_id}/copies/estimate` | `projects:write` | optional | | | | |
| [getFolder](https://docs.api.rask.ai/operations/getFolder.md) | `GET /folders/{folder_id}` | `projects:read` | | | | | |
| [getProject](https://docs.api.rask.ai/operations/getProject.md) | `GET /projects/{project_id}` | `projects:read` | | | | | |
| [listFolders](https://docs.api.rask.ai/operations/listFolders.md) | `GET /folders` | `projects:read` | | | | | |
| [listProjects](https://docs.api.rask.ai/operations/listProjects.md) | `GET /projects` | `projects:read` | | | | | |
| [updateFolder](https://docs.api.rask.ai/operations/updateFolder.md) | `PATCH /folders/{folder_id}` | `projects:write` | optional | | | | |
| [updateProject](https://docs.api.rask.ai/operations/updateProject.md) | `PATCH /projects/{project_id}` | `projects:write` | optional | | | | |
| [createSegment](https://docs.api.rask.ai/operations/createSegment.md) | `POST /projects/{project_id}/segments` | `transcripts:write` | required | | | yes | |
| [deleteSegment](https://docs.api.rask.ai/operations/deleteSegment.md) | `DELETE /projects/{project_id}/segments/{segment_id}` | `transcripts:write` | optional | required | | yes | |
| [getSegment](https://docs.api.rask.ai/operations/getSegment.md) | `GET /projects/{project_id}/segments/{segment_id}` | `transcripts:read` | | | | yes | |
| [listSegments](https://docs.api.rask.ai/operations/listSegments.md) | `GET /projects/{project_id}/segments` | `transcripts:read` | | | | yes | |
| [mergeSegments](https://docs.api.rask.ai/operations/mergeSegments.md) | `POST /projects/{project_id}/segments/merge` | `transcripts:write` | optional | required, in the body | | yes | |
| [selectTranslationVariant](https://docs.api.rask.ai/operations/selectTranslationVariant.md) | `POST /projects/{project_id}/segments/{segment_id}/select-variant` | `transcripts:write` | optional | required | | yes | |
| [splitSegment](https://docs.api.rask.ai/operations/splitSegment.md) | `POST /projects/{project_id}/segments/{segment_id}/split` | `transcripts:write` | optional | required | | yes | |
| [updateSegment](https://docs.api.rask.ai/operations/updateSegment.md) | `PATCH /projects/{project_id}/segments/{segment_id}` | `transcripts:write` | optional | required | | yes | |
| [getSpeaker](https://docs.api.rask.ai/operations/getSpeaker.md) | `GET /projects/{project_id}/speakers/{speaker_id}` | `voices:read` | | | | | |
| [listSpeakers](https://docs.api.rask.ai/operations/listSpeakers.md) | `GET /projects/{project_id}/speakers` | `voices:read` | | | | | |
| [updateSpeakerVoice](https://docs.api.rask.ai/operations/updateSpeakerVoice.md) | `PUT /projects/{project_id}/speakers/{speaker_id}/voice` | `voices:write` | optional | required | | | an instant\_clone voice -> instant\_voice\_clone |
| [getTranscript](https://docs.api.rask.ai/operations/getTranscript.md) | `GET /projects/{project_id}/transcript` | `transcripts:read` | | | | yes | |
| [getTranslationSettings](https://docs.api.rask.ai/operations/getTranslationSettings.md) | `GET /projects/{project_id}/translation-settings` | `transcripts:read` | | | | | |
| [importTranscript](https://docs.api.rask.ai/operations/importTranscript.md) | `POST /projects/{project_id}/transcript/import` | `transcripts:write` | required | | | yes | subtitle\_reimport |
| [retranslateSegments](https://docs.api.rask.ai/operations/retranslateSegments.md) | `POST /projects/{project_id}/retranslation` | `transcripts:write` | required | | | yes | |
| [updateTranslationSettings](https://docs.api.rask.ai/operations/updateTranslationSettings.md) | `PATCH /projects/{project_id}/translation-settings` | `transcripts:write` | optional | optional | | | non-empty `translation_instructions` -> translation\_instructions; non-empty `glossary_id` -> glossary |
| [completeUpload](https://docs.api.rask.ai/operations/completeUpload.md) | `POST /uploads/{upload_id}/complete` | `media:write` | required | | | | |
| [createUpload](https://docs.api.rask.ai/operations/createUpload.md) | `POST /uploads` | `media:write` | optional | | | | |
| [deleteUpload](https://docs.api.rask.ai/operations/deleteUpload.md) | `DELETE /uploads/{upload_id}` | `media:write` | | | | | |
| [getUpload](https://docs.api.rask.ai/operations/getUpload.md) | `GET /uploads/{upload_id}` | `media:read` | | | | | |
| [getUsage](https://docs.api.rask.ai/operations/getUsage.md) | `GET /usage` | `account:read` | | | | | |
| [listUsageEvents](https://docs.api.rask.ai/operations/listUsageEvents.md) | `GET /usage/events` | `account:read` | | | | | |
| [createTranscriptVersion](https://docs.api.rask.ai/operations/createTranscriptVersion.md) | `POST /projects/{project_id}/transcript/versions` | `transcripts:write` | optional | | | yes | |
| [getTranscriptVersion](https://docs.api.rask.ai/operations/getTranscriptVersion.md) | `GET /projects/{project_id}/transcript/versions/{version_number}` | `transcripts:read` | | | | yes | |
| [listTranscriptVersionSegments](https://docs.api.rask.ai/operations/listTranscriptVersionSegments.md) | `GET /projects/{project_id}/transcript/versions/{version_number}/segments` | `transcripts:read` | | | | yes | |
| [listTranscriptVersions](https://docs.api.rask.ai/operations/listTranscriptVersions.md) | `GET /projects/{project_id}/transcript/versions` | `transcripts:read` | | | | yes | |
| [restoreTranscriptVersion](https://docs.api.rask.ai/operations/restoreTranscriptVersion.md) | `POST /projects/{project_id}/transcript/versions/{version_number}/restore` | `transcripts:write` | required | | | yes | |
| [createVoiceClone](https://docs.api.rask.ai/operations/createVoiceClone.md) | `POST /voice-clones` | `voices:write` | required | | | | voice\_clones (quota `voice_clone_limit`) |
| [deleteVoiceClone](https://docs.api.rask.ai/operations/deleteVoiceClone.md) | `DELETE /voice-clones/{voice_clone_id}` | `voices:write` | | | | | |
| [getVoiceClone](https://docs.api.rask.ai/operations/getVoiceClone.md) | `GET /voice-clones/{voice_clone_id}` | `voices:read` | | | | | |
| [getVoiceCloneQuota](https://docs.api.rask.ai/operations/getVoiceCloneQuota.md) | `GET /voice-clones/quota` | `voices:read` | | | | | |
| [listVoiceClones](https://docs.api.rask.ai/operations/listVoiceClones.md) | `GET /voice-clones` | `voices:read` | | | | | |
| [updateVoiceClone](https://docs.api.rask.ai/operations/updateVoiceClone.md) | `PATCH /voice-clones/{voice_clone_id}` | `voices:write` | optional | | | | |
| [listProjectVoices](https://docs.api.rask.ai/operations/listProjectVoices.md) | `GET /projects/{project_id}/voices` | `voices:read` | | | | | |
| [listVoices](https://docs.api.rask.ai/operations/listVoices.md) | `GET /voices` | `voices:read` | | | | | |


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