Its translation variants come back only through restoreTranscriptVersion or a new retranslateSegments; createSegment cannot write variants.When to use: to remove a segment.Side effects: Commits atomically: the project’s pipeline_status becomes transcript_edited, segment ETags change, affected segments become outdated (listed in the response’s effects) and their audio may be dropped. The dub no longer matches (effects.project_needs_redub).Cost: Free.Idempotency:Idempotency-Key accepted (SDKs send one): a same-key retry within 24 h replays the first response (Idempotent-Replayed: true); a repeat without a key answers 404 segment_not_found (hard delete).Concurrency:If-Match with the current segment ETag is required (428 if missing or *, 412 with current_etag if stale). On 412 re-read, re-apply once and retry. Refused during processing (409 project_not_ready) and while a dub runs, from its start until its merge ends or it fails (409 dub_in_progress); 409 transcript_busy means concurrent writes kept conflicting: retry after Retry-After.Paid text: on a project created through v3, 409 dub_payment_required until a dub of that project is charged.Required scopes:transcripts:writeErrors:transcript_not_ready (409), segment_busy (409), project_not_ready (409), dub_in_progress (409), transcript_busy (409), dub_payment_required (409)
API key from Settings -> API keys, sent as Authorization: Bearer <key> (SDK environment variable RASK_API_KEY). Bound to one workspace and one acting user. Operations list the scopes they need (OpenAPI 3.1 scopes on a bearer scheme).
Optional. A unique key per logical request (SDKs send a bare UUIDv4; an RFC 9651 quoted string is accepted and unquoted); reuse it unchanged on retries to replay the first response.
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Rask AI API","colors":{"primary":"#0B0BCF","light":"#5D5DFF","dark":"#5D5DFF"},"favicon":"https://mintcdn.com/brask/hT_Hdq5wOpSqsld0/logo/favicon.png?fit=max\u0026auto=format\u0026n=hT_Hdq5wOpSqsld0\u0026q=85\u0026s=c711c46d0a11441ed308ce4e040a556e","logo":{"light":"https://mintcdn.com/brask/hT_Hdq5wOpSqsld0/logo/black.svg?fit=max\u0026auto=format\u0026n=hT_Hdq5wOpSqsld0\u0026q=85\u0026s=89737eaceb0bbdbadb10eeb2e0537eee","dark":"https://mintcdn.com/brask/hT_Hdq5wOpSqsld0/logo/white.svg?fit=max\u0026auto=format\u0026n=hT_Hdq5wOpSqsld0\u0026q=85\u0026s=534b5bab02df626978cebe76c20020bc"},"api":{"openapi":["openapi.yml","openapi.v3.json"]},"background":{"decoration":null,"color":{"light":null,"dark":"#090014"}},"navbar":{"links":[{"label":"api@rask.ai","href":"mailto:api@rask.ai"}],"primary":{"type":"button","label":"Sign Up","href":"https://app.rask.ai/"}},"footer":{"socials":{"twitter":"https://twitter.com/rask_ai","instagram":"https://www.instagram.com/rask.ai_official","linkedin":"https://www.linkedin.com/company/rask-ai"}},"integrations":{"gtm":{"tagId":"GTM-N9ZZHZV"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Blog","href":"https://www.rask.ai/blog","icon":"newspaper"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"brask","hasAudioNarration":false,"actualSubdomain":"brask","customDomains":["docs.api.rask.ai"],"gitSource":{"type":"github","owner":"braskai","repo":"rask-api-documentation","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af5cf7072ca9fe26a3617ef","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"Documentation","count":287},{"language":"default","tag":"Errors","count":144},{"language":"default","tag":"Inside a job","count":39},{"language":"default","tag":"409 Conflict","count":33},{"language":"default","tag":"413, 415 and 422 Input","count":27},{"language":"default","tag":"401 and 403 Access","count":15},{"language":"default","tag":"Projects","count":14},{"language":"default","tag":"404 and 410 Missing","count":13},{"language":"default","tag":"Concepts","count":10},{"language":"default","tag":"Recipes","count":9}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"operations/deleteSegment","slug":"/operations/deleteSegment","pageMetadata":{"title":"Delete a segment","sidebarTitle":"deleteSegment","description":"Deletes a segment of the live transcript.","openapi":"openapi.v3.json DELETE /projects/{project_id}/segments/{segment_id}","href":"/operations/deleteSegment"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Deletes a segment of the live transcript.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,strong:`strong`,..._provideComponents(),...props.components};return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Its translation variants come back only through restoreTranscriptVersion or a new retranslateSegments; createSegment cannot write variants.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`When to use:`}),` to remove a segment.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Side effects:`}),` Commits atomically: the project’s `,_jsx(_components.code,{children:`pipeline_status`}),` becomes `,_jsx(_components.code,{children:`transcript_edited`}),`, segment ETags change, affected segments become `,_jsx(_components.code,{children:`outdated`}),` (listed in the response’s `,_jsx(_components.code,{children:`effects`}),`) and their audio may be dropped. The dub no longer matches (`,_jsx(_components.code,{children:`effects.project_needs_redub`}),`).`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Cost:`}),` Free.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Idempotency:`}),` `,_jsx(_components.code,{children:`Idempotency-Key`}),` accepted (SDKs send one): a same-key retry within 24 h replays the first response (`,_jsx(_components.code,{children:`Idempotent-Replayed: true`}),`); a repeat without a key answers 404 `,_jsx(_components.code,{children:`segment_not_found`}),` (hard delete).`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Concurrency:`}),` `,_jsx(_components.code,{children:`If-Match`}),` with the current segment ETag is required (428 if missing or `,_jsx(_components.code,{children:`*`}),`, 412 with `,_jsx(_components.code,{children:`current_etag`}),` if stale). On 412 re-read, re-apply once and retry. Refused during processing (409 `,_jsx(_components.code,{children:`project_not_ready`}),`) and while a dub runs, from its start until its merge ends or it fails (409 `,_jsx(_components.code,{children:`dub_in_progress`}),`); 409 `,_jsx(_components.code,{children:`transcript_busy`}),` means concurrent writes kept conflicting: retry after `,_jsx(_components.code,{children:`Retry-After`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Paid text:`}),` on a project created through v3, 409 `,_jsx(_components.code,{children:`dub_payment_required`}),` until a dub of that project is charged.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Required scopes:`}),` `,_jsx(_components.code,{children:`transcripts:write`})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Errors:`}),` `,_jsx(_components.code,{children:`transcript_not_ready`}),` (409), `,_jsx(_components.code,{children:`segment_busy`}),` (409), `,_jsx(_components.code,{children:`project_not_ready`}),` (409), `,_jsx(_components.code,{children:`dub_in_progress`}),` (409), `,_jsx(_components.code,{children:`transcript_busy`}),` (409), `,_jsx(_components.code,{children:`dub_payment_required`}),` (409)`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Delete a segment","sidebarTitle":"deleteSegment","description":"Deletes a segment of the live transcript.","openapi":"openapi.v3.json DELETE /projects/{project_id}/segments/{segment_id}","href":"/operations/deleteSegment"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"deleteSegment","tags":["Segments"],"summary":"Delete a segment","description":"Deletes a segment of the live transcript.","security":["e65ebc6e-4226-470f-911b-d1299e6747f4"],"parameters":["877a409a-16ef-427f-97d0-fb36bc025554","8956f378-bed7-4258-9152-fa1e0fdf73de","72bef1e5-39eb-4aca-935b-3f817264f5d0","8ee1d3ec-a963-4748-af77-49a1419736c0"],"responses":{"200":"d7e8c534-0a1c-42cf-ae1b-dedabb9fce4b","400":"30c7fbba-a88b-4ddb-8063-3a281c12839c","401":"4eaed667-9224-4445-a70e-282d205a81f3","403":"0a989c2c-f045-4c33-a601-31d187108e10","404":"0e9e0ab0-5e84-4bc7-a070-e8865a8ab80b","409":"c2645135-2adb-4470-b773-8e5d0a4d3e84","412":"d2b8e616-4220-4776-bca1-aa4f00ad28bd","422":"56ca6398-88d3-4cb8-baa1-0a36e4449673","428":"c70f3854-c49c-483c-9442-e215a4e1a842","429":"527f5b4c-c9b0-483c-b265-2085aa4abfbf","500":"ff604e61-0a70-45c3-9f31-0f88f15aaa43","503":"6f263e76-0611-498b-a95a-b3590eb2faa2"},"x-rask-operation":{"effect":"delete","async":"none","job_type":null,"idempotency_key":"optional","etag":"required","pagination":"none","estimate_operation":null,"plan_feature":null,"dub_payment_gate":true,"scopes":["transcripts:write"],"errors":["transcript_not_ready","segment_busy","project_not_ready","dub_in_progress","transcript_busy","dub_payment_required"],"stability":"alpha"},"x-rask-release":"ga","x-stability-level":"alpha","method":"delete","type":"path","servers":["61053d33-b3c1-45e9-9029-d55a58076416"],"path":"/projects/{project_id}/segments/{segment_id}","baseUrlOptions":["https://api.rask.ai/v3"],"title":"Delete a segment","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"877a409a-16ef-427f-97d0-fb36bc025554":{"name":"project_id","in":"path","description":"Project id (from createProject or listProjects).","required":true,"schema":{"type":"string","maxLength":64,"isRequired":true,"description":"Project id (from createProject or listProjects).","uniqueKey":"","typeLabel":"string"},"x-rask-id-type":"project","example":"6f1c2b7e-8a4d-4e3f-9b5c-1d0a7e2f3c58"},"8956f378-bed7-4258-9152-fa1e0fdf73de":{"name":"segment_id","in":"path","description":"Segment id of the live transcript.","required":true,"schema":{"type":"string","maxLength":64,"isRequired":true,"description":"Segment id of the live transcript.","uniqueKey":"","typeLabel":"string"},"x-rask-id-type":"segment","example":"8b3d1e9f-6a2c-4d7e-b5f1-3c9e7a1d5b22"},"72bef1e5-39eb-4aca-935b-3f817264f5d0":{"name":"Idempotency-Key","in":"header","description":"Optional. A unique key per logical request (SDKs send a bare UUIDv4; an RFC 9651 quoted string is accepted and unquoted); reuse it unchanged on retries to replay the first response.","required":false,"schema":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[\\x20-\\x7E]+$","isRequired":false,"description":"Optional. A unique key per logical request (SDKs send a bare UUIDv4; an RFC 9651 quoted string is accepted and unquoted); reuse it unchanged on retries to replay the first response.","uniqueKey":"","typeLabel":"string"},"example":"8e03978e-40d5-43e8-bc93-6894a57f9324"},"8ee1d3ec-a963-4748-af77-49a1419736c0":{"name":"If-Match","in":"header","description":"Required: the segment's current ETag (`etag` of getSegment or listSegments); the write commits only if the segment still matches it.","required":true,"schema":{"type":"string","maxLength":128,"isRequired":true,"description":"Required: the segment's current ETag (`etag` of getSegment or listSegments); the write commits only if the segment still matches it.","uniqueKey":"","typeLabel":"string"},"example":"\"s-a197265875140819\""}},"responses":{"d7e8c534-0a1c-42cf-ae1b-dedabb9fce4b":{"description":"OK: `TranscriptEditResult`.","headers":{"X-Request-Id":{"description":"Request id (UUID); also the problem `instance` (`urn:uuid:\u003cid>`). Quote it to support.","schema":{"type":"string"},"example":"7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93"},"RateLimit":{"description":"Remaining quota of the most constrained policy (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";r=597;t=42"},"RateLimit-Policy":{"description":"Rate-limit policies that apply to the key (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";q=600;w=60, \"account-minute\";q=1800;w=60"},"Idempotent-Replayed":{"description":"`true` when the response is a replay of a stored response for the same Idempotency-Key.","schema":{"type":"boolean"},"example":true}},"content":{"application/json":{"schema":{"type":"object","description":"Result of a segment or transcript mutation. Transient (no id).","required":["object","segments","deleted_segment_ids","operations","effects","warnings"],"properties":{"object":{"type":"string","enum":["transcript_edit_result"],"description":"Always `transcript_edit_result`.","isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"segments":{"type":"array","items":{"type":"object","description":"A transcript segment.","required":["object","id","project_id","start_seconds","end_seconds","speaker_id","speaker_label","source","translation","words","needs_attention","status","dub_state","audio","selected_variant_id","translation_variants","processing_started_at","etag"],"properties":{"object":{"type":"string","enum":["segment"],"description":"Always `segment`.","isRequired":true,"uniqueKey":"segments.items.[INDEX].object","typeLabel":"enum\u003cstring>"},"id":{"type":"string","description":"Segment id (re-minted by restore).","isRequired":true,"uniqueKey":"segments.items.[INDEX].id","typeLabel":"string"},"project_id":{"type":"string","description":"Project.","isRequired":true,"uniqueKey":"segments.items.[INDEX].project_id","typeLabel":"string"},"start_seconds":{"type":"number","description":"Start (millisecond precision).","format":"double","isRequired":true,"uniqueKey":"segments.items.[INDEX].start_seconds","typeLabel":"number\u003cdouble>"},"end_seconds":{"type":"number","description":"End (millisecond precision).","format":"double","isRequired":true,"uniqueKey":"segments.items.[INDEX].end_seconds","typeLabel":"number\u003cdouble>"},"speaker_id":{"oneOf":[{"type":"string","description":"Speaker (`SPEAKER_NN`).","x-rask-untrusted":true,"isRequired":true,"uniqueKey":"segments.items.[INDEX].speaker_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Speaker (`SPEAKER_NN`).","x-rask-untrusted":true,"isRequired":true,"uniqueKey":"segments.items.[INDEX].speaker_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"segments.items.[INDEX].speaker_id","typeLabel":"string | null"},"speaker_label":{"oneOf":[{"type":"string","description":"Display name of the speaker (\"Speaker N\" for `SPEAKER_{N-1}`); null without a speaker.","x-rask-untrusted":true,"isRequired":true,"uniqueKey":"segments.items.[INDEX].speaker_label.oneOf.0","typeLabel":"string"},{"type":"null","description":"Display name of the speaker (\"Speaker N\" for `SPEAKER_{N-1}`); null without a speaker.","x-rask-untrusted":true,"isRequired":true,"uniqueKey":"segments.items.[INDEX].speaker_label.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"segments.items.[INDEX].speaker_label","typeLabel":"string | null"},"source":{"type":"object","description":"Text of one side of a segment.","required":["text","language"],"properties":{"text":{"type":"string","description":"Text.","x-rask-untrusted":true,"isRequired":true,"uniqueKey":"segments.items.[INDEX].source.text","typeLabel":"string"},"language":{"oneOf":[{"type":"string","description":"Language.","isRequired":true,"uniqueKey":"segments.items.[INDEX].source.language.oneOf.0","typeLabel":"string"},{"type":"null","description":"Language.","isRequired":true,"uniqueKey":"segments.items.[INDEX].source.language.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"segments.items.[INDEX].source.language","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"segments.items.[INDEX].source","typeLabel":"object"},"translation":{"type":"object","description":"Text of one side of a segment.","required":["text","language"],"properties":{"text":{"type":"string","description":"Text.","x-rask-untrusted":true,"isRequired":true,"uniqueKey":"segments.items.[INDEX].translation.text","typeLabel":"string"},"language":{"oneOf":[{"type":"string","description":"Language.","isRequired":true,"uniqueKey":"segments.items.[INDEX].translation.language.oneOf.0","typeLabel":"string"},{"type":"null","description":"Language.","isRequired":true,"uniqueKey":"segments.items.[INDEX].translation.language.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"segments.items.[INDEX].translation.language","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"segments.items.[INDEX].translation","typeLabel":"object"},"words":{"oneOf":[{"type":"object","description":"With include=words; otherwise null.","required":["source","translation"],"properties":{"source":{"type":"array","items":{"type":"object","description":"A timed word.","required":["text","start_seconds","end_seconds"],"properties":{"text":{"type":"string","description":"Word.","x-rask-untrusted":true,"isRequired":true,"uniqueKey":"segments.items.[INDEX].words.oneOf.0.source.items.[INDEX].text","typeLabel":"string"},"start_seconds":{"type":"number","description":"Start.","format":"double","isRequired":true,"uniqueKey":"segments.items.[INDEX].words.oneOf.0.source.items.[INDEX].start_seconds","typeLabel":"number\u003cdouble>"},"end_seconds":{"type":"number","description":"End.","format":"double","isRequired":true,"uniqueKey":"segments.items.[INDEX].words.oneOf.0.source.items.[INDEX].end_seconds","typeLabel":"number\u003cdouble>"}},"uniqueKey":"segments.items.[INDEX].words.oneOf.0.source.items.[INDEX]","typeLabel":"object"},"description":"Source words.","isRequired":true,"uniqueKey":"segments.items.[INDEX].words.oneOf.0.source","typeLabel":"object[]"},"translation":{"type":"array","items":{"type":"object","description":"A timed word.","required":["text","start_seconds","end_seconds"],"properties":{"text":{"type":"string","description":"Word.","x-rask-untrusted":true,"isRequired":true,"uniqueKey":"segments.items.[INDEX].words.oneOf.0.translation.items.[INDEX].text","typeLabel":"string"},"start_seconds":{"type":"number","description":"Start.","format":"double","isRequired":true,"uniqueKey":"segments.items.[INDEX].words.oneOf.0.translation.items.[INDEX].start_seconds","typeLabel":"number\u003cdouble>"},"end_seconds":{"type":"number","description":"End.","format":"double","isRequired":true,"uniqueKey":"segments.items.[INDEX].words.oneOf.0.translation.items.[INDEX].end_seconds","typeLabel":"number\u003cdouble>"}},"uniqueKey":"segments.items.[INDEX].words.oneOf.0.translation.items.[INDEX]","typeLabel":"object"},"description":"Translation words.","isRequired":true,"uniqueKey":"segments.items.[INDEX].words.oneOf.0.translation","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"segments.items.[INDEX].words.oneOf.0","typeLabel":"object"},{"type":"null","description":"With include=words; otherwise null.","isRequired":true,"uniqueKey":"segments.items.[INDEX].words.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"segments.items.[INDEX].words","typeLabel":"object | null"},"needs_attention":{"type":"boolean","description":"User review flag.","isRequired":true,"uniqueKey":"segments.items.[INDEX].needs_attention","typeLabel":"boolean"},"status":{"type":"string","description":"Segment processing status.\n\n- `ready`: editable\n- `translating`: a translation is running\n- `voicing`: a segment generation is voicing it\n- `translation_failed`: the last translation failed","enum":["ready","translating","voicing","translation_failed"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"segments.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"dub_state":{"type":"string","description":"Dub state of a segment.\n\n- `not_dubbed`: the project has no dub of this segment\n- `current`: the dub matches the segment\n- `outdated`: the next changed_segments dub includes it: voiced, or merged from its current clip","enum":["not_dubbed","current","outdated"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"segments.items.[INDEX].dub_state","typeLabel":"enum\u003cstring>"},"audio":{"oneOf":[{"type":"object","description":"Latest clip of the current translation (segment generation or dub), overwritten by each new take; null without the plan feature `audio_download`. A stable take is a `SegmentClip` in the job result.","required":["url","expires_at","duration_seconds"],"properties":{"url":{"type":"string","description":"Absolute presigned `https://` URL; valid until `expires_at`.","format":"uri","isRequired":true,"uniqueKey":"segments.items.[INDEX].audio.oneOf.0.url","typeLabel":"string\u003curi>"},"expires_at":{"oneOf":[{"type":"string","description":"When the URL stops working (1 hour after the read); null only for provider-hosted public samples.","format":"date-time","isRequired":true,"uniqueKey":"segments.items.[INDEX].audio.oneOf.0.expires_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the URL stops working (1 hour after the read); null only for provider-hosted public samples.","format":"date-time","isRequired":true,"uniqueKey":"segments.items.[INDEX].audio.oneOf.0.expires_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"segments.items.[INDEX].audio.oneOf.0.expires_at","typeLabel":"string\u003cdate-time> | null"},"duration_seconds":{"oneOf":[{"type":"number","description":"Clip duration; null when it was not measured.","format":"double","isRequired":true,"uniqueKey":"segments.items.[INDEX].audio.oneOf.0.duration_seconds.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"Clip duration; null when it was not measured.","format":"double","isRequired":true,"uniqueKey":"segments.items.[INDEX].audio.oneOf.0.duration_seconds.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"segments.items.[INDEX].audio.oneOf.0.duration_seconds","typeLabel":"number\u003cdouble> | null"}},"isRequired":true,"uniqueKey":"segments.items.[INDEX].audio.oneOf.0","typeLabel":"object"},{"type":"null","description":"Latest clip of the current translation (segment generation or dub), overwritten by each new take; null without the plan feature `audio_download`. A stable take is a `SegmentClip` in the job result.","isRequired":true,"uniqueKey":"segments.items.[INDEX].audio.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"segments.items.[INDEX].audio","typeLabel":"object | null"},"selected_variant_id":{"oneOf":[{"type":"string","description":"Variant whose text equals the translation.","isRequired":true,"uniqueKey":"segments.items.[INDEX].selected_variant_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Variant whose text equals the translation.","isRequired":true,"uniqueKey":"segments.items.[INDEX].selected_variant_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"segments.items.[INDEX].selected_variant_id","typeLabel":"string | null"},"translation_variants":{"oneOf":[{"type":"array","items":{"type":"object","description":"An alternative translation.","required":["id","text","recommended","speed_ratio","predicted_duration_seconds"],"properties":{"id":{"type":"string","description":"Variant id.","isRequired":true,"uniqueKey":"segments.items.[INDEX].translation_variants.oneOf.0.items.[INDEX].id","typeLabel":"string"},"text":{"type":"string","description":"Variant text.","x-rask-untrusted":true,"isRequired":true,"uniqueKey":"segments.items.[INDEX].translation_variants.oneOf.0.items.[INDEX].text","typeLabel":"string"},"recommended":{"type":"boolean","description":"Recommended variant.","isRequired":true,"uniqueKey":"segments.items.[INDEX].translation_variants.oneOf.0.items.[INDEX].recommended","typeLabel":"boolean"},"speed_ratio":{"oneOf":[{"type":"number","description":"Predicted speech speed ratio.","format":"double","isRequired":true,"uniqueKey":"segments.items.[INDEX].translation_variants.oneOf.0.items.[INDEX].speed_ratio.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"Predicted speech speed ratio.","format":"double","isRequired":true,"uniqueKey":"segments.items.[INDEX].translation_variants.oneOf.0.items.[INDEX].speed_ratio.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"segments.items.[INDEX].translation_variants.oneOf.0.items.[INDEX].speed_ratio","typeLabel":"number\u003cdouble> | null"},"predicted_duration_seconds":{"oneOf":[{"type":"number","description":"Predicted duration.","format":"double","isRequired":true,"uniqueKey":"segments.items.[INDEX].translation_variants.oneOf.0.items.[INDEX].predicted_duration_seconds.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"Predicted duration.","format":"double","isRequired":true,"uniqueKey":"segments.items.[INDEX].translation_variants.oneOf.0.items.[INDEX].predicted_duration_seconds.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"segments.items.[INDEX].translation_variants.oneOf.0.items.[INDEX].predicted_duration_seconds","typeLabel":"number\u003cdouble> | null"}},"uniqueKey":"segments.items.[INDEX].translation_variants.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"With include=variants; otherwise null.","isRequired":true,"uniqueKey":"segments.items.[INDEX].translation_variants.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","description":"An alternative translation.","required":["id","text","recommended","speed_ratio","predicted_duration_seconds"],"properties":{"id":{"type":"string","description":"Variant id."},"text":{"type":"string","description":"Variant text.","x-rask-untrusted":true},"recommended":{"type":"boolean","description":"Recommended variant."},"speed_ratio":{"oneOf":[{"type":"number","description":"Predicted speech speed ratio.","format":"double"},{"type":"null","description":"Predicted speech speed ratio.","format":"double"}]},"predicted_duration_seconds":{"oneOf":[{"type":"number","description":"Predicted duration.","format":"double"},{"type":"null","description":"Predicted duration.","format":"double"}]}}},"description":"With include=variants; otherwise null.","isRequired":true,"uniqueKey":"segments.items.[INDEX].translation_variants.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"segments.items.[INDEX].translation_variants","typeLabel":"object[] | null"},"processing_started_at":{"oneOf":[{"type":"string","description":"When the running translation or segment generation started.","format":"date-time","isRequired":true,"uniqueKey":"segments.items.[INDEX].processing_started_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the running translation or segment generation started.","format":"date-time","isRequired":true,"uniqueKey":"segments.items.[INDEX].processing_started_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"segments.items.[INDEX].processing_started_at","typeLabel":"string\u003cdate-time> | null"},"etag":{"type":"string","description":"Opaque hash of the editable content (times, speaker, texts, review flag, selected variant, audio marker); send it in If-Match on segment edits (mergeSegments: in `segments[].etag`).","isRequired":true,"uniqueKey":"segments.items.[INDEX].etag","typeLabel":"string"}},"uniqueKey":"segments.items.[INDEX]","typeLabel":"object"},"description":"Every created or changed segment, read back consistently, in time order.","isRequired":true,"uniqueKey":"segments","typeLabel":"object[]"},"deleted_segment_ids":{"type":"array","items":{"type":"string","uniqueKey":"deleted_segment_ids.items.[INDEX]","typeLabel":"string"},"description":"Deleted segments.","isRequired":true,"uniqueKey":"deleted_segment_ids","typeLabel":"string[]"},"operations":{"type":"array","items":{"type":"object","description":"Segments touched by one operation.","required":["index","segment_ids"],"properties":{"index":{"type":"integer","description":"Index of the operation in the plan (0 for single-segment operations).","format":"int32","isRequired":true,"uniqueKey":"operations.items.[INDEX].index","typeLabel":"integer\u003cint32>"},"segment_ids":{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"operations.items.[INDEX].segment_ids.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"operations.items.[INDEX].segment_ids.items.[INDEX].oneOf.1","typeLabel":"null"}],"uniqueKey":"operations.items.[INDEX].segment_ids.items.[INDEX]","typeLabel":"string | null"},"description":"Segments the operation produced or touched; null for ids a validation result cannot know yet.","isRequired":true,"uniqueKey":"operations.items.[INDEX].segment_ids","typeLabel":"(string | null)[]"}},"uniqueKey":"operations.items.[INDEX]","typeLabel":"object"},"description":"Segments per operation.","isRequired":true,"uniqueKey":"operations","typeLabel":"object[]"},"effects":{"type":"object","description":"Effects of a committed write.","required":["needs_redub_segment_ids","audio_dropped_segment_ids","retranslation","speakers_pending_voice","instant_clone_settings_reset","restore_point_version","project_needs_redub"],"properties":{"needs_redub_segment_ids":{"type":"array","items":{"type":"string","uniqueKey":"effects.needs_redub_segment_ids.items.[INDEX]","typeLabel":"string"},"description":"Segments the next changed_segments dub will voice.","isRequired":true,"uniqueKey":"effects.needs_redub_segment_ids","typeLabel":"string[]"},"audio_dropped_segment_ids":{"type":"array","items":{"type":"string","uniqueKey":"effects.audio_dropped_segment_ids.items.[INDEX]","typeLabel":"string"},"description":"Segments whose clip was removed.","isRequired":true,"uniqueKey":"effects.audio_dropped_segment_ids","typeLabel":"string[]"},"retranslation":{"oneOf":[{"type":"object","description":"Translation started by this write.","required":["job_id","segment_ids"],"properties":{"job_id":{"oneOf":[{"type":"string","description":"The translation job; null in a validation result.","isRequired":true,"uniqueKey":"effects.retranslation.oneOf.0.job_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The translation job; null in a validation result.","isRequired":true,"uniqueKey":"effects.retranslation.oneOf.0.job_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"effects.retranslation.oneOf.0.job_id","typeLabel":"string | null"},"segment_ids":{"type":"array","items":{"type":"string","uniqueKey":"effects.retranslation.oneOf.0.segment_ids.items.[INDEX]","typeLabel":"string"},"description":"Segments being retranslated.","isRequired":true,"uniqueKey":"effects.retranslation.oneOf.0.segment_ids","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"effects.retranslation.oneOf.0","typeLabel":"object"},{"type":"null","description":"Translation started by this write.","isRequired":true,"uniqueKey":"effects.retranslation.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"effects.retranslation","typeLabel":"object | null"},"speakers_pending_voice":{"type":"array","items":{"type":"string","uniqueKey":"effects.speakers_pending_voice.items.[INDEX]","typeLabel":"string"},"description":"New speakers queued for voice suggestion.","isRequired":true,"uniqueKey":"effects.speakers_pending_voice","typeLabel":"string[]"},"instant_clone_settings_reset":{"type":"array","items":{"type":"string","uniqueKey":"effects.instant_clone_settings_reset.items.[INDEX]","typeLabel":"string"},"description":"Speakers whose instant-clone settings were reset.","isRequired":true,"uniqueKey":"effects.instant_clone_settings_reset","typeLabel":"string[]"},"restore_point_version":{"oneOf":[{"type":"integer","description":"Version saved before the write.","format":"int32","isRequired":true,"uniqueKey":"effects.restore_point_version.oneOf.0","typeLabel":"integer\u003cint32>"},{"type":"null","description":"Version saved before the write.","format":"int32","isRequired":true,"uniqueKey":"effects.restore_point_version.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"effects.restore_point_version","typeLabel":"integer\u003cint32> | null"},"project_needs_redub":{"type":"boolean","description":"The dub no longer matches the transcript.","isRequired":true,"uniqueKey":"effects.project_needs_redub","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"effects","typeLabel":"object"},"warnings":{"type":"array","items":{"type":"object","description":"A non-blocking warning.","required":["code","detail","segment_id","related_segment_id"],"properties":{"code":{"type":"string","description":"Non-blocking warning code.\n\n- `overlaps_segment`: the segment overlaps another one\n- `translation_empty`: the segment has no translation\n- `long_segment`: the segment is longer than 30 s\n- `meaning_first_disabled`: a voice with `meaning_first_compatible: false` moves the project to the legacy engine","enum":["overlaps_segment","translation_empty","long_segment","meaning_first_disabled"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"warnings.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"detail":{"type":"string","description":"Explanation.","isRequired":true,"uniqueKey":"warnings.items.[INDEX].detail","typeLabel":"string"},"segment_id":{"oneOf":[{"type":"string","description":"Segment.","isRequired":true,"uniqueKey":"warnings.items.[INDEX].segment_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Segment.","isRequired":true,"uniqueKey":"warnings.items.[INDEX].segment_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"warnings.items.[INDEX].segment_id","typeLabel":"string | null"},"related_segment_id":{"oneOf":[{"type":"string","description":"Other segment (overlaps).","isRequired":true,"uniqueKey":"warnings.items.[INDEX].related_segment_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Other segment (overlaps).","isRequired":true,"uniqueKey":"warnings.items.[INDEX].related_segment_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"warnings.items.[INDEX].related_segment_id","typeLabel":"string | null"}},"uniqueKey":"warnings.items.[INDEX]","typeLabel":"object"},"description":"Warnings.","isRequired":true,"uniqueKey":"warnings","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"deleted":{"title":"deleted","value":{"object":"transcript_edit_result","segments":[],"deleted_segment_ids":["2c7e9a4f-3d1b-4f8e-a6c2-9b5d1f3e7a33"],"operations":[{"index":0,"segment_ids":["2c7e9a4f-3d1b-4f8e-a6c2-9b5d1f3e7a33"]}],"effects":{"needs_redub_segment_ids":[],"audio_dropped_segment_ids":[],"retranslation":null,"speakers_pending_voice":[],"instant_clone_settings_reset":[],"restore_point_version":null,"project_needs_redub":true},"warnings":[]}}},"exampleType":"examples"}},"exampleType":"examples"},"30c7fbba-a88b-4ddb-8063-3a281c12839c":{"description":"Bad request. Codes: `token_in_query`.","headers":{"X-Request-Id":{"description":"Request id (UUID); also the problem `instance` (`urn:uuid:\u003cid>`). Quote it to support.","schema":{"type":"string"},"example":"7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93"},"RateLimit":{"description":"Remaining quota of the most constrained policy (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";r=597;t=42"},"RateLimit-Policy":{"description":"Rate-limit policies that apply to the key (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";q=600;w=60, \"account-minute\";q=1800;w=60"}},"content":{"application/problem+json":{"schema":{"type":"object","required":["type","title","status","detail","instance","code","retryable","retry","recommendation","hint","errors"],"properties":{"type":{"type":"string","description":"`https://docs.api.rask.ai/errors/{code}`: one documentation page per code.","format":"uri","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short summary of the problem type.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"HTTP status (for a job's error: the status the same failure would have synchronously).","format":"int32","minimum":400,"maximum":599,"isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"detail":{"type":"string","description":"Explanation of this occurrence. May name ids, never user text.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"`urn:uuid:\u003crequest_id>` (also in `X-Request-Id`); for a job's error, `/v3/jobs/{job_id}`.","format":"uri-reference","isRequired":true,"uniqueKey":"instance","typeLabel":"string\u003curi-reference>"},"code":{"type":"string","description":"Stable snake_case code from the problem registry. Branch on this value, never on text.","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"retryable":{"type":"boolean","description":"True when a retry can succeed; `retry` says how.","isRequired":true,"uniqueKey":"retryable","typeLabel":"boolean"},"retry":{"type":"string","description":"How to retry: `same_key` for request problems that may succeed later, `new_key` for job errors worth a new attempt, `none` otherwise. `retryable` is true exactly when this is not `none`.","enum":["same_key","new_key","none"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"retry","typeLabel":"enum\u003cstring>"},"recommendation":{"type":"string","description":"What has to happen before a retry can succeed; set per code, and per `cause_code` for dub and generation failures (`components.x-rask-job-errors`). `cause_code: unknown`: `retry_later`, or `contact_support` when the same project's previous job of that type also failed with `unknown`.","enum":["fix_request","wait","top_up","retry_later","contact_support"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"recommendation","typeLabel":"enum\u003cstring>"},"hint":{"oneOf":[{"type":"string","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.0","typeLabel":"string"},{"type":"null","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"hint","typeLabel":"string | null"},"errors":{"type":"array","items":{"type":"object","description":"One failing field of a request.","required":["pointer","code","detail"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body (`/operations/3/start_seconds`), or a `query:`, `header:` or `path:` prefixed parameter name.","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"code":{"type":"string","description":"Stable snake_case code of this field error. Segment writes: `invalid_time`, `start_not_before_end`, `beyond_media_duration`, `segment_too_short`, `segment_too_long`, `invalid_speaker_id`, `too_many_speakers`, `text_too_long`, `invalid_text`, `transcript_too_large`, `split_point_outside_segment`, `segments_not_adjacent`, `too_many_segments`, `segment_targeted_twice`, `unknown_segment`, `variant_not_found`; spending requests: `expected_cost_required`; uploads: `part_missing`; generic schema failures use JSON Schema keyword names (`required`, `maxLength`, ...).","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation. Never contains user text.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"Failing fields; empty when the problem is not about fields.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"credit_type":{"type":"string","description":"insufficient_balance, token_spend_limit_exceeded: the pool concerned.","enum":["minutes","lipsync_free_minutes","projects"],"x-rask-open-enum":true,"uniqueKey":"credit_type","typeLabel":"enum\u003cstring>"},"required_minutes":{"type":"integer","description":"insufficient_balance, token_spend_limit_exceeded: minutes the request needs.","format":"int32","uniqueKey":"required_minutes","typeLabel":"integer\u003cint32>"},"balance_minutes":{"type":"integer","description":"insufficient_balance: minutes available in the pool.","format":"int32","uniqueKey":"balance_minutes","typeLabel":"integer\u003cint32>"},"required_projects":{"type":"integer","description":"insufficient_balance (projects pool), token_spend_limit_exceeded (projects cap): project credits needed.","format":"int32","uniqueKey":"required_projects","typeLabel":"integer\u003cint32>"},"balance_projects":{"type":"integer","description":"insufficient_balance (projects pool): project credits available.","format":"int32","uniqueKey":"balance_projects","typeLabel":"integer\u003cint32>"},"expected_cost_minutes":{"type":"integer","description":"cost_changed: the cap the request sent.","format":"int32","uniqueKey":"expected_cost_minutes","typeLabel":"integer\u003cint32>"},"current_cost_minutes":{"type":"integer","description":"cost_changed: the current price.","format":"int32","uniqueKey":"current_cost_minutes","typeLabel":"integer\u003cint32>"},"current_etag":{"type":"string","description":"precondition_failed: the resource's current ETag.","uniqueKey":"current_etag","typeLabel":"string"},"required_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"required_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: every scope the request needs, including those of `x-rask-operation.conditional`.","uniqueKey":"required_scopes","typeLabel":"enum\u003cstring>[]"},"granted_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"granted_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: the key's scopes.","uniqueKey":"granted_scopes","typeLabel":"enum\u003cstring>[]"},"feature":{"type":"string","description":"A plan feature checked server-side on the payer's plan (403 `feature_not_in_plan`).\n\n- `api_access`: use the API at all (checked on every request)\n- `auto_dub`: dub automatically after processing (needs an active subscription)\n- `dubbing_model_choice`: choose the dubbing model; otherwise it is overridden (estimate notice)\n- `free_languages`: free_dubbing language variants\n- `glossary`: attach and manage glossaries\n- `translation_instructions`: custom translation instructions\n- `subtitle_import`: import SRT subtitles when creating a project\n- `subtitle_reimport`: replace a project's transcript from SRT (importTranscript)\n- `subtitle_download`: download subtitles (getProjectSubtitles, subtitle outputs)\n- `burned_subtitles`: export and download videos with burned-in subtitles\n- `audio_download`: download dubbed audio and the voice track\n- `multilanguage`: several target languages per media (copies)\n- `lipsync`: lip-sync\n- `lipsync_paid`: paid lip-sync runs (otherwise only the free run)\n- `lipsync_enhanced`: the Enhanced lip-sync model\n- `lipsync_download`: download lip-synced video\n- `onscreen`: on-screen text translation and download of its video\n- `voice_clones`: workspace voice clones\n- `instant_voice_clone`: a speaker's own cloned voice\n- `share_links`: revocable project share links","enum":["api_access","auto_dub","dubbing_model_choice","free_languages","glossary","translation_instructions","subtitle_import","subtitle_reimport","subtitle_download","burned_subtitles","audio_download","multilanguage","lipsync","lipsync_paid","lipsync_enhanced","lipsync_download","onscreen","voice_clones","instant_voice_clone","share_links"],"x-rask-open-enum":true,"uniqueKey":"feature","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","description":"workspace_access_suspended, source_url_not_allowed, webhook_url_not_allowed, instant_clone_not_available, job_not_resumable, localization_combination_not_supported: machine-readable reason. workspace_access_suspended: `subscription_inactive` (the owner's subscription is not active), `space_limit_exceeded` (the owner has more workspaces than the plan allows), `seat_limit_exceeded` (the key's user is beyond the plan's seats). job_not_resumable: `not_failed_localization`, `already_resumed`, `project_deleted`, `stage_result_gone`. localization_combination_not_supported: `nothing_ordered`, `audio_project`, `plan_trims_lipsync`.","uniqueKey":"reason","typeLabel":"string"},"limit":{"type":"integer","description":"limit_reached, voice_clone_limit_reached, rate_limited, too_many_waiters, too_many_concurrent_jobs, translation_batch_too_large: the limit.","format":"int32","uniqueKey":"limit","typeLabel":"integer\u003cint32>"},"used":{"type":"integer","description":"voice_clone_limit_reached: clones counted against the quota.","format":"int32","uniqueKey":"used","typeLabel":"integer\u003cint32>"},"limit_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): the key's monthly cap on the minutes pool.","format":"int32","uniqueKey":"limit_minutes","typeLabel":"integer\u003cint32>"},"spent_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): minutes spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_minutes","typeLabel":"integer\u003cint32>"},"limit_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): the key's monthly cap on project credits.","format":"int32","uniqueKey":"limit_projects","typeLabel":"integer\u003cint32>"},"spent_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): project credits spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_projects","typeLabel":"integer\u003cint32>"},"resets_at":{"type":"string","description":"token_spend_limit_exceeded: start of the next UTC month.","format":"date-time","uniqueKey":"resets_at","typeLabel":"string\u003cdate-time>"},"policy":{"type":"string","description":"rate_limited, too_many_waiters, too_many_concurrent_jobs: the exceeded policy or quota. rate_limited: credential-minute, account-minute, spend-minute, upload-hour, auth-fail-ip, translation-hour, clone-create-day, voice-settings-hour, upload-open, upload-bytes-day; too_many_waiters: long-poll (per key and per payer); too_many_concurrent_jobs: payer-concurrency, global-concurrency.","uniqueKey":"policy","typeLabel":"string"},"window_seconds":{"type":"integer","description":"rate_limited: the policy window.","format":"int32","uniqueKey":"window_seconds","typeLabel":"integer\u003cint32>"},"active_job_count":{"type":"integer","description":"too_many_concurrent_jobs: active API and MCP jobs of this type (the payer's, or all of Rask's for global-concurrency).","format":"int32","uniqueKey":"active_job_count","typeLabel":"integer\u003cint32>"},"active_jobs":{"type":"array","items":{"type":"object","description":"A non-terminal job of a project.","required":["id","type","status"],"properties":{"id":{"type":"string","description":"Job id.","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].id","typeLabel":"string"},"type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Job type. Open enum: new types are added over time.\n\n- `media_import`: registering uploaded or imported media (poll hint 3 s; cancelable)\n- `project_processing`: the project pipeline up to translation (poll hint 10 s)\n- `translation`: retranslating segments (poll hint 5 s)\n- `segment_generation`: paid voicing of chosen segments into downloadable clips (poll hint 5 s)\n- `dub`: dubbing or redubbing (poll hint 10 s)\n- `lipsync`: lip-sync (poll hint 30 s)\n- `onscreen`: on-screen text translation (poll hint 15 s; cancelable while queued)\n- `localization`: dub, lip-sync and on-screen as one run with child jobs (poll hint 15 s)\n- `voice_clone`: creating a voice clone (poll hint 10 s)\n- `export`: rendering an export (poll hint 15 s)\n- `file_restore`: restoring archived files (poll hint 300 s)","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"Job status. Monotonic: never goes backwards and never leaves a terminal state.\n\n- `queued`: accepted, not started\n- `running`: in progress\n- `succeeded`: finished; see result\n- `failed`: finished; see error\n- `canceled`: canceled, or its project was deleted (`error.code = project_deleted`)","enum":["queued","running","succeeded","failed","canceled"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].status","typeLabel":"enum\u003cstring>"}},"uniqueKey":"active_jobs.items.[INDEX]","typeLabel":"object"},"description":"project_busy: the project's active spending jobs.","uniqueKey":"active_jobs","typeLabel":"object[]"},"active_job_ids":{"type":"array","items":{"type":"string","uniqueKey":"active_job_ids.items.[INDEX]","typeLabel":"string"},"description":"transcript_busy: the active jobs that block a whole-transcript request; absent when concurrent writes kept conflicting.","uniqueKey":"active_job_ids","typeLabel":"string[]"},"segment_ids":{"type":"array","items":{"type":"string","uniqueKey":"segment_ids.items.[INDEX]","typeLabel":"string"},"description":"segment_busy: the busy segments.","uniqueKey":"segment_ids","typeLabel":"string[]"},"job_id":{"oneOf":[{"type":"string","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"job_id","typeLabel":"string | null"},"job_type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Type of `job_id` (single-flight conflicts), of the job that cannot be canceled or resumed (job_not_cancelable, job_not_resumable), or whose concurrency limit was reached (too_many_concurrent_jobs).","uniqueKey":"job_type","typeLabel":"enum\u003cstring>"},"import_job_id":{"type":"string","description":"media_not_ready: the media_import job to wait for.","uniqueKey":"import_job_id","typeLabel":"string"},"max_seconds":{"type":"integer","description":"onscreen_video_too_long: the plan's limit (`onscreen_max_video_seconds`).","format":"int32","uniqueKey":"max_seconds","typeLabel":"integer\u003cint32>"},"expired_at":{"type":"string","description":"token_expired, upload_expired: when it expired.","format":"date-time","uniqueKey":"expired_at","typeLabel":"string\u003cdate-time>"},"revoked_reason":{"type":"string","description":"token_revoked: why the key was revoked.","uniqueKey":"revoked_reason","typeLabel":"string"},"token_env":{"type":"string","description":"token_wrong_environment: the key's environment (`live` or `test`).","uniqueKey":"token_env","typeLabel":"string"},"server_env":{"type":"string","description":"token_wrong_environment: this server's environment.","uniqueKey":"server_env","typeLabel":"string"},"parameter":{"type":"string","description":"token_in_query: the query parameter that carried a credential.","uniqueKey":"parameter","typeLabel":"string"},"max_upload_bytes":{"type":"integer","description":"media_too_large: the limit in bytes (the plan's upload limit, or a voice-sample limit: 11000000 for audio and stored samples, 500000000 for video).","format":"int64","uniqueKey":"max_upload_bytes","typeLabel":"integer\u003cint64>"},"size_bytes":{"type":"integer","description":"media_too_large: the file size in bytes.","format":"int64","uniqueKey":"size_bytes","typeLabel":"integer\u003cint64>"},"max_source_duration_seconds":{"type":"number","description":"media_too_long: the plan's limit.","format":"double","uniqueKey":"max_source_duration_seconds","typeLabel":"number\u003cdouble>"},"duration_seconds":{"type":"number","description":"media_too_long: the media duration.","format":"double","uniqueKey":"duration_seconds","typeLabel":"number\u003cdouble>"},"declared_size_bytes":{"type":"integer","description":"upload_size_mismatch: size_bytes of the upload.","format":"int64","uniqueKey":"declared_size_bytes","typeLabel":"integer\u003cint64>"},"actual_size_bytes":{"type":"integer","description":"upload_size_mismatch: size of the stored object.","format":"int64","uniqueKey":"actual_size_bytes","typeLabel":"integer\u003cint64>"},"project_count":{"type":"integer","description":"folder_not_empty: live projects in the folder.","format":"int32","uniqueKey":"project_count","typeLabel":"integer\u003cint32>"},"content_type":{"type":"string","description":"unsupported_media_type: the rejected content type.","uniqueKey":"content_type","typeLabel":"string"},"cause_code":{"type":"string","description":"Job errors. lipsync_rejected: the code that rejected the automatic start. dub_voiceover_failed, dub_merge_failed, dub_failed, dub_timeout, segment_generation_failed, segment_generation_timeout (always `unknown` on a timeout): the failure class, one of `segment_changed`, `insufficient_speech`, `voice_configuration`, `missing_translation`, `tts_provider_failed`, `merge_failed`, `unknown` (the default when the class cannot be told). localization_stage_failed, localization_stage_skipped: the code of the stage's own error; `localization_combination_not_supported` when a plan change during the run trimmed the lip-sync, so on-screen was skipped.","uniqueKey":"cause_code","typeLabel":"string"},"failed_stage":{"type":"string","description":"localization_stage_failed, localization_stage_skipped (job error): the stage that ended the run.","enum":["dub","lipsync","onscreen"],"x-rask-open-enum":true,"uniqueKey":"failed_stage","typeLabel":"enum\u003cstring>"}},"description":"RFC 9457 problem details (`application/problem+json`), used for every 4xx/5xx response and for `Job.error`. Branch on `code`; follow `hint`; act as `recommendation` says; retry as `retry` says. An extension member has one type across all codes and never reuses an RFC 9457 or Problem member name (hence `job_type`, and `active_job_count` for a count beside `active_jobs` for a list). Extension members appear only with the codes that define them (see each property). The problem registry and one documentation page per code live at https://docs.api.rask.ai/errors.","additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"token_in_query":{"title":"token_in_query","value":{"type":"https://docs.api.rask.ai/errors/token_in_query","title":"Token in query","status":400,"detail":"A credential was sent in the query string parameter 'api_key'.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"token_in_query","retryable":false,"retry":"none","recommendation":"fix_request","hint":"Send the key in the Authorization header as 'Bearer \u003ckey>' and revoke the exposed key in the web app.","errors":[],"parameter":"api_key"}}},"exampleType":"examples"}},"exampleType":"examples"},"4eaed667-9224-4445-a70e-282d205a81f3":{"description":"Unauthorized. Codes: `authentication_required`, `invalid_token`, `token_expired`, `token_revoked`, `token_wrong_environment`.","headers":{"X-Request-Id":{"description":"Request id (UUID); also the problem `instance` (`urn:uuid:\u003cid>`). Quote it to support.","schema":{"type":"string"},"example":"7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93"},"WWW-Authenticate":{"description":"Bearer challenge, e.g. `Bearer realm=\"api.rask.ai\", error=\"invalid_token\"`; for insufficient_scope it names the required scopes.","schema":{"type":"string"},"example":"Bearer realm=\"api.rask.ai\", error=\"insufficient_scope\", scope=\"dubbing:write credits:spend\""}},"content":{"application/problem+json":{"schema":{"type":"object","required":["type","title","status","detail","instance","code","retryable","retry","recommendation","hint","errors"],"properties":{"type":{"type":"string","description":"`https://docs.api.rask.ai/errors/{code}`: one documentation page per code.","format":"uri","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short summary of the problem type.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"HTTP status (for a job's error: the status the same failure would have synchronously).","format":"int32","minimum":400,"maximum":599,"isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"detail":{"type":"string","description":"Explanation of this occurrence. May name ids, never user text.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"`urn:uuid:\u003crequest_id>` (also in `X-Request-Id`); for a job's error, `/v3/jobs/{job_id}`.","format":"uri-reference","isRequired":true,"uniqueKey":"instance","typeLabel":"string\u003curi-reference>"},"code":{"type":"string","description":"Stable snake_case code from the problem registry. Branch on this value, never on text.","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"retryable":{"type":"boolean","description":"True when a retry can succeed; `retry` says how.","isRequired":true,"uniqueKey":"retryable","typeLabel":"boolean"},"retry":{"type":"string","description":"How to retry: `same_key` for request problems that may succeed later, `new_key` for job errors worth a new attempt, `none` otherwise. `retryable` is true exactly when this is not `none`.","enum":["same_key","new_key","none"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"retry","typeLabel":"enum\u003cstring>"},"recommendation":{"type":"string","description":"What has to happen before a retry can succeed; set per code, and per `cause_code` for dub and generation failures (`components.x-rask-job-errors`). `cause_code: unknown`: `retry_later`, or `contact_support` when the same project's previous job of that type also failed with `unknown`.","enum":["fix_request","wait","top_up","retry_later","contact_support"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"recommendation","typeLabel":"enum\u003cstring>"},"hint":{"oneOf":[{"type":"string","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.0","typeLabel":"string"},{"type":"null","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"hint","typeLabel":"string | null"},"errors":{"type":"array","items":{"type":"object","description":"One failing field of a request.","required":["pointer","code","detail"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body (`/operations/3/start_seconds`), or a `query:`, `header:` or `path:` prefixed parameter name.","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"code":{"type":"string","description":"Stable snake_case code of this field error. Segment writes: `invalid_time`, `start_not_before_end`, `beyond_media_duration`, `segment_too_short`, `segment_too_long`, `invalid_speaker_id`, `too_many_speakers`, `text_too_long`, `invalid_text`, `transcript_too_large`, `split_point_outside_segment`, `segments_not_adjacent`, `too_many_segments`, `segment_targeted_twice`, `unknown_segment`, `variant_not_found`; spending requests: `expected_cost_required`; uploads: `part_missing`; generic schema failures use JSON Schema keyword names (`required`, `maxLength`, ...).","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation. Never contains user text.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"Failing fields; empty when the problem is not about fields.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"credit_type":{"type":"string","description":"insufficient_balance, token_spend_limit_exceeded: the pool concerned.","enum":["minutes","lipsync_free_minutes","projects"],"x-rask-open-enum":true,"uniqueKey":"credit_type","typeLabel":"enum\u003cstring>"},"required_minutes":{"type":"integer","description":"insufficient_balance, token_spend_limit_exceeded: minutes the request needs.","format":"int32","uniqueKey":"required_minutes","typeLabel":"integer\u003cint32>"},"balance_minutes":{"type":"integer","description":"insufficient_balance: minutes available in the pool.","format":"int32","uniqueKey":"balance_minutes","typeLabel":"integer\u003cint32>"},"required_projects":{"type":"integer","description":"insufficient_balance (projects pool), token_spend_limit_exceeded (projects cap): project credits needed.","format":"int32","uniqueKey":"required_projects","typeLabel":"integer\u003cint32>"},"balance_projects":{"type":"integer","description":"insufficient_balance (projects pool): project credits available.","format":"int32","uniqueKey":"balance_projects","typeLabel":"integer\u003cint32>"},"expected_cost_minutes":{"type":"integer","description":"cost_changed: the cap the request sent.","format":"int32","uniqueKey":"expected_cost_minutes","typeLabel":"integer\u003cint32>"},"current_cost_minutes":{"type":"integer","description":"cost_changed: the current price.","format":"int32","uniqueKey":"current_cost_minutes","typeLabel":"integer\u003cint32>"},"current_etag":{"type":"string","description":"precondition_failed: the resource's current ETag.","uniqueKey":"current_etag","typeLabel":"string"},"required_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"required_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: every scope the request needs, including those of `x-rask-operation.conditional`.","uniqueKey":"required_scopes","typeLabel":"enum\u003cstring>[]"},"granted_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"granted_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: the key's scopes.","uniqueKey":"granted_scopes","typeLabel":"enum\u003cstring>[]"},"feature":{"type":"string","description":"A plan feature checked server-side on the payer's plan (403 `feature_not_in_plan`).\n\n- `api_access`: use the API at all (checked on every request)\n- `auto_dub`: dub automatically after processing (needs an active subscription)\n- `dubbing_model_choice`: choose the dubbing model; otherwise it is overridden (estimate notice)\n- `free_languages`: free_dubbing language variants\n- `glossary`: attach and manage glossaries\n- `translation_instructions`: custom translation instructions\n- `subtitle_import`: import SRT subtitles when creating a project\n- `subtitle_reimport`: replace a project's transcript from SRT (importTranscript)\n- `subtitle_download`: download subtitles (getProjectSubtitles, subtitle outputs)\n- `burned_subtitles`: export and download videos with burned-in subtitles\n- `audio_download`: download dubbed audio and the voice track\n- `multilanguage`: several target languages per media (copies)\n- `lipsync`: lip-sync\n- `lipsync_paid`: paid lip-sync runs (otherwise only the free run)\n- `lipsync_enhanced`: the Enhanced lip-sync model\n- `lipsync_download`: download lip-synced video\n- `onscreen`: on-screen text translation and download of its video\n- `voice_clones`: workspace voice clones\n- `instant_voice_clone`: a speaker's own cloned voice\n- `share_links`: revocable project share links","enum":["api_access","auto_dub","dubbing_model_choice","free_languages","glossary","translation_instructions","subtitle_import","subtitle_reimport","subtitle_download","burned_subtitles","audio_download","multilanguage","lipsync","lipsync_paid","lipsync_enhanced","lipsync_download","onscreen","voice_clones","instant_voice_clone","share_links"],"x-rask-open-enum":true,"uniqueKey":"feature","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","description":"workspace_access_suspended, source_url_not_allowed, webhook_url_not_allowed, instant_clone_not_available, job_not_resumable, localization_combination_not_supported: machine-readable reason. workspace_access_suspended: `subscription_inactive` (the owner's subscription is not active), `space_limit_exceeded` (the owner has more workspaces than the plan allows), `seat_limit_exceeded` (the key's user is beyond the plan's seats). job_not_resumable: `not_failed_localization`, `already_resumed`, `project_deleted`, `stage_result_gone`. localization_combination_not_supported: `nothing_ordered`, `audio_project`, `plan_trims_lipsync`.","uniqueKey":"reason","typeLabel":"string"},"limit":{"type":"integer","description":"limit_reached, voice_clone_limit_reached, rate_limited, too_many_waiters, too_many_concurrent_jobs, translation_batch_too_large: the limit.","format":"int32","uniqueKey":"limit","typeLabel":"integer\u003cint32>"},"used":{"type":"integer","description":"voice_clone_limit_reached: clones counted against the quota.","format":"int32","uniqueKey":"used","typeLabel":"integer\u003cint32>"},"limit_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): the key's monthly cap on the minutes pool.","format":"int32","uniqueKey":"limit_minutes","typeLabel":"integer\u003cint32>"},"spent_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): minutes spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_minutes","typeLabel":"integer\u003cint32>"},"limit_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): the key's monthly cap on project credits.","format":"int32","uniqueKey":"limit_projects","typeLabel":"integer\u003cint32>"},"spent_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): project credits spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_projects","typeLabel":"integer\u003cint32>"},"resets_at":{"type":"string","description":"token_spend_limit_exceeded: start of the next UTC month.","format":"date-time","uniqueKey":"resets_at","typeLabel":"string\u003cdate-time>"},"policy":{"type":"string","description":"rate_limited, too_many_waiters, too_many_concurrent_jobs: the exceeded policy or quota. rate_limited: credential-minute, account-minute, spend-minute, upload-hour, auth-fail-ip, translation-hour, clone-create-day, voice-settings-hour, upload-open, upload-bytes-day; too_many_waiters: long-poll (per key and per payer); too_many_concurrent_jobs: payer-concurrency, global-concurrency.","uniqueKey":"policy","typeLabel":"string"},"window_seconds":{"type":"integer","description":"rate_limited: the policy window.","format":"int32","uniqueKey":"window_seconds","typeLabel":"integer\u003cint32>"},"active_job_count":{"type":"integer","description":"too_many_concurrent_jobs: active API and MCP jobs of this type (the payer's, or all of Rask's for global-concurrency).","format":"int32","uniqueKey":"active_job_count","typeLabel":"integer\u003cint32>"},"active_jobs":{"type":"array","items":{"type":"object","description":"A non-terminal job of a project.","required":["id","type","status"],"properties":{"id":{"type":"string","description":"Job id.","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].id","typeLabel":"string"},"type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Job type. Open enum: new types are added over time.\n\n- `media_import`: registering uploaded or imported media (poll hint 3 s; cancelable)\n- `project_processing`: the project pipeline up to translation (poll hint 10 s)\n- `translation`: retranslating segments (poll hint 5 s)\n- `segment_generation`: paid voicing of chosen segments into downloadable clips (poll hint 5 s)\n- `dub`: dubbing or redubbing (poll hint 10 s)\n- `lipsync`: lip-sync (poll hint 30 s)\n- `onscreen`: on-screen text translation (poll hint 15 s; cancelable while queued)\n- `localization`: dub, lip-sync and on-screen as one run with child jobs (poll hint 15 s)\n- `voice_clone`: creating a voice clone (poll hint 10 s)\n- `export`: rendering an export (poll hint 15 s)\n- `file_restore`: restoring archived files (poll hint 300 s)","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"Job status. Monotonic: never goes backwards and never leaves a terminal state.\n\n- `queued`: accepted, not started\n- `running`: in progress\n- `succeeded`: finished; see result\n- `failed`: finished; see error\n- `canceled`: canceled, or its project was deleted (`error.code = project_deleted`)","enum":["queued","running","succeeded","failed","canceled"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].status","typeLabel":"enum\u003cstring>"}},"uniqueKey":"active_jobs.items.[INDEX]","typeLabel":"object"},"description":"project_busy: the project's active spending jobs.","uniqueKey":"active_jobs","typeLabel":"object[]"},"active_job_ids":{"type":"array","items":{"type":"string","uniqueKey":"active_job_ids.items.[INDEX]","typeLabel":"string"},"description":"transcript_busy: the active jobs that block a whole-transcript request; absent when concurrent writes kept conflicting.","uniqueKey":"active_job_ids","typeLabel":"string[]"},"segment_ids":{"type":"array","items":{"type":"string","uniqueKey":"segment_ids.items.[INDEX]","typeLabel":"string"},"description":"segment_busy: the busy segments.","uniqueKey":"segment_ids","typeLabel":"string[]"},"job_id":{"oneOf":[{"type":"string","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"job_id","typeLabel":"string | null"},"job_type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Type of `job_id` (single-flight conflicts), of the job that cannot be canceled or resumed (job_not_cancelable, job_not_resumable), or whose concurrency limit was reached (too_many_concurrent_jobs).","uniqueKey":"job_type","typeLabel":"enum\u003cstring>"},"import_job_id":{"type":"string","description":"media_not_ready: the media_import job to wait for.","uniqueKey":"import_job_id","typeLabel":"string"},"max_seconds":{"type":"integer","description":"onscreen_video_too_long: the plan's limit (`onscreen_max_video_seconds`).","format":"int32","uniqueKey":"max_seconds","typeLabel":"integer\u003cint32>"},"expired_at":{"type":"string","description":"token_expired, upload_expired: when it expired.","format":"date-time","uniqueKey":"expired_at","typeLabel":"string\u003cdate-time>"},"revoked_reason":{"type":"string","description":"token_revoked: why the key was revoked.","uniqueKey":"revoked_reason","typeLabel":"string"},"token_env":{"type":"string","description":"token_wrong_environment: the key's environment (`live` or `test`).","uniqueKey":"token_env","typeLabel":"string"},"server_env":{"type":"string","description":"token_wrong_environment: this server's environment.","uniqueKey":"server_env","typeLabel":"string"},"parameter":{"type":"string","description":"token_in_query: the query parameter that carried a credential.","uniqueKey":"parameter","typeLabel":"string"},"max_upload_bytes":{"type":"integer","description":"media_too_large: the limit in bytes (the plan's upload limit, or a voice-sample limit: 11000000 for audio and stored samples, 500000000 for video).","format":"int64","uniqueKey":"max_upload_bytes","typeLabel":"integer\u003cint64>"},"size_bytes":{"type":"integer","description":"media_too_large: the file size in bytes.","format":"int64","uniqueKey":"size_bytes","typeLabel":"integer\u003cint64>"},"max_source_duration_seconds":{"type":"number","description":"media_too_long: the plan's limit.","format":"double","uniqueKey":"max_source_duration_seconds","typeLabel":"number\u003cdouble>"},"duration_seconds":{"type":"number","description":"media_too_long: the media duration.","format":"double","uniqueKey":"duration_seconds","typeLabel":"number\u003cdouble>"},"declared_size_bytes":{"type":"integer","description":"upload_size_mismatch: size_bytes of the upload.","format":"int64","uniqueKey":"declared_size_bytes","typeLabel":"integer\u003cint64>"},"actual_size_bytes":{"type":"integer","description":"upload_size_mismatch: size of the stored object.","format":"int64","uniqueKey":"actual_size_bytes","typeLabel":"integer\u003cint64>"},"project_count":{"type":"integer","description":"folder_not_empty: live projects in the folder.","format":"int32","uniqueKey":"project_count","typeLabel":"integer\u003cint32>"},"content_type":{"type":"string","description":"unsupported_media_type: the rejected content type.","uniqueKey":"content_type","typeLabel":"string"},"cause_code":{"type":"string","description":"Job errors. lipsync_rejected: the code that rejected the automatic start. dub_voiceover_failed, dub_merge_failed, dub_failed, dub_timeout, segment_generation_failed, segment_generation_timeout (always `unknown` on a timeout): the failure class, one of `segment_changed`, `insufficient_speech`, `voice_configuration`, `missing_translation`, `tts_provider_failed`, `merge_failed`, `unknown` (the default when the class cannot be told). localization_stage_failed, localization_stage_skipped: the code of the stage's own error; `localization_combination_not_supported` when a plan change during the run trimmed the lip-sync, so on-screen was skipped.","uniqueKey":"cause_code","typeLabel":"string"},"failed_stage":{"type":"string","description":"localization_stage_failed, localization_stage_skipped (job error): the stage that ended the run.","enum":["dub","lipsync","onscreen"],"x-rask-open-enum":true,"uniqueKey":"failed_stage","typeLabel":"enum\u003cstring>"}},"description":"RFC 9457 problem details (`application/problem+json`), used for every 4xx/5xx response and for `Job.error`. Branch on `code`; follow `hint`; act as `recommendation` says; retry as `retry` says. An extension member has one type across all codes and never reuses an RFC 9457 or Problem member name (hence `job_type`, and `active_job_count` for a count beside `active_jobs` for a list). Extension members appear only with the codes that define them (see each property). The problem registry and one documentation page per code live at https://docs.api.rask.ai/errors.","additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"authentication_required":{"title":"authentication_required","value":{"type":"https://docs.api.rask.ai/errors/authentication_required","title":"Authentication required","status":401,"detail":"No bearer credential was sent.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"authentication_required","retryable":false,"retry":"none","recommendation":"fix_request","hint":"Send 'Authorization: Bearer \u003cAPI key>'; SDKs read RASK_API_KEY.","errors":[]}},"invalid_token":{"title":"invalid_token","value":{"type":"https://docs.api.rask.ai/errors/invalid_token","title":"Invalid token","status":401,"detail":"The credential is malformed or unknown.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"invalid_token","retryable":false,"retry":"none","recommendation":"fix_request","hint":"Check that RASK_API_KEY holds a complete key created in Settings -> API keys.","errors":[]}},"token_expired":{"title":"token_expired","value":{"type":"https://docs.api.rask.ai/errors/token_expired","title":"Token expired","status":401,"detail":"The API key expired.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"token_expired","retryable":false,"retry":"none","recommendation":"fix_request","hint":"Create a new key in Settings -> API keys and update RASK_API_KEY.","errors":[],"expired_at":"2026-10-31T00:00:00Z"}},"token_revoked":{"title":"token_revoked","value":{"type":"https://docs.api.rask.ai/errors/token_revoked","title":"Token revoked","status":401,"detail":"The API key was revoked.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"token_revoked","retryable":false,"retry":"none","recommendation":"fix_request","hint":"Create a new key in Settings -> API keys; the old key cannot be restored.","errors":[],"revoked_reason":"revoked_by_user"}},"token_wrong_environment":{"title":"token_wrong_environment","value":{"type":"https://docs.api.rask.ai/errors/token_wrong_environment","title":"Token wrong environment","status":401,"detail":"A test key was sent to the production API.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"token_wrong_environment","retryable":false,"retry":"none","recommendation":"fix_request","hint":"Use a raskai_live_ key with api.rask.ai and a raskai_test_ key with a test environment.","errors":[],"token_env":"test","server_env":"live"}}},"exampleType":"examples"}},"exampleType":"examples"},"0a989c2c-f045-4c33-a601-31d187108e10":{"description":"Forbidden. Codes: `insufficient_scope`, `account_disabled`, `feature_not_in_plan`, `workspace_access_suspended`, `forbidden`.","headers":{"X-Request-Id":{"description":"Request id (UUID); also the problem `instance` (`urn:uuid:\u003cid>`). Quote it to support.","schema":{"type":"string"},"example":"7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93"},"RateLimit":{"description":"Remaining quota of the most constrained policy (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";r=597;t=42"},"RateLimit-Policy":{"description":"Rate-limit policies that apply to the key (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";q=600;w=60, \"account-minute\";q=1800;w=60"},"WWW-Authenticate":{"description":"Bearer challenge, e.g. `Bearer realm=\"api.rask.ai\", error=\"invalid_token\"`; for insufficient_scope it names the required scopes.","schema":{"type":"string"},"example":"Bearer realm=\"api.rask.ai\", error=\"insufficient_scope\", scope=\"dubbing:write credits:spend\""}},"content":{"application/problem+json":{"schema":{"type":"object","required":["type","title","status","detail","instance","code","retryable","retry","recommendation","hint","errors"],"properties":{"type":{"type":"string","description":"`https://docs.api.rask.ai/errors/{code}`: one documentation page per code.","format":"uri","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short summary of the problem type.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"HTTP status (for a job's error: the status the same failure would have synchronously).","format":"int32","minimum":400,"maximum":599,"isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"detail":{"type":"string","description":"Explanation of this occurrence. May name ids, never user text.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"`urn:uuid:\u003crequest_id>` (also in `X-Request-Id`); for a job's error, `/v3/jobs/{job_id}`.","format":"uri-reference","isRequired":true,"uniqueKey":"instance","typeLabel":"string\u003curi-reference>"},"code":{"type":"string","description":"Stable snake_case code from the problem registry. Branch on this value, never on text.","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"retryable":{"type":"boolean","description":"True when a retry can succeed; `retry` says how.","isRequired":true,"uniqueKey":"retryable","typeLabel":"boolean"},"retry":{"type":"string","description":"How to retry: `same_key` for request problems that may succeed later, `new_key` for job errors worth a new attempt, `none` otherwise. `retryable` is true exactly when this is not `none`.","enum":["same_key","new_key","none"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"retry","typeLabel":"enum\u003cstring>"},"recommendation":{"type":"string","description":"What has to happen before a retry can succeed; set per code, and per `cause_code` for dub and generation failures (`components.x-rask-job-errors`). `cause_code: unknown`: `retry_later`, or `contact_support` when the same project's previous job of that type also failed with `unknown`.","enum":["fix_request","wait","top_up","retry_later","contact_support"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"recommendation","typeLabel":"enum\u003cstring>"},"hint":{"oneOf":[{"type":"string","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.0","typeLabel":"string"},{"type":"null","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"hint","typeLabel":"string | null"},"errors":{"type":"array","items":{"type":"object","description":"One failing field of a request.","required":["pointer","code","detail"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body (`/operations/3/start_seconds`), or a `query:`, `header:` or `path:` prefixed parameter name.","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"code":{"type":"string","description":"Stable snake_case code of this field error. Segment writes: `invalid_time`, `start_not_before_end`, `beyond_media_duration`, `segment_too_short`, `segment_too_long`, `invalid_speaker_id`, `too_many_speakers`, `text_too_long`, `invalid_text`, `transcript_too_large`, `split_point_outside_segment`, `segments_not_adjacent`, `too_many_segments`, `segment_targeted_twice`, `unknown_segment`, `variant_not_found`; spending requests: `expected_cost_required`; uploads: `part_missing`; generic schema failures use JSON Schema keyword names (`required`, `maxLength`, ...).","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation. Never contains user text.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"Failing fields; empty when the problem is not about fields.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"credit_type":{"type":"string","description":"insufficient_balance, token_spend_limit_exceeded: the pool concerned.","enum":["minutes","lipsync_free_minutes","projects"],"x-rask-open-enum":true,"uniqueKey":"credit_type","typeLabel":"enum\u003cstring>"},"required_minutes":{"type":"integer","description":"insufficient_balance, token_spend_limit_exceeded: minutes the request needs.","format":"int32","uniqueKey":"required_minutes","typeLabel":"integer\u003cint32>"},"balance_minutes":{"type":"integer","description":"insufficient_balance: minutes available in the pool.","format":"int32","uniqueKey":"balance_minutes","typeLabel":"integer\u003cint32>"},"required_projects":{"type":"integer","description":"insufficient_balance (projects pool), token_spend_limit_exceeded (projects cap): project credits needed.","format":"int32","uniqueKey":"required_projects","typeLabel":"integer\u003cint32>"},"balance_projects":{"type":"integer","description":"insufficient_balance (projects pool): project credits available.","format":"int32","uniqueKey":"balance_projects","typeLabel":"integer\u003cint32>"},"expected_cost_minutes":{"type":"integer","description":"cost_changed: the cap the request sent.","format":"int32","uniqueKey":"expected_cost_minutes","typeLabel":"integer\u003cint32>"},"current_cost_minutes":{"type":"integer","description":"cost_changed: the current price.","format":"int32","uniqueKey":"current_cost_minutes","typeLabel":"integer\u003cint32>"},"current_etag":{"type":"string","description":"precondition_failed: the resource's current ETag.","uniqueKey":"current_etag","typeLabel":"string"},"required_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"required_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: every scope the request needs, including those of `x-rask-operation.conditional`.","uniqueKey":"required_scopes","typeLabel":"enum\u003cstring>[]"},"granted_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"granted_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: the key's scopes.","uniqueKey":"granted_scopes","typeLabel":"enum\u003cstring>[]"},"feature":{"type":"string","description":"A plan feature checked server-side on the payer's plan (403 `feature_not_in_plan`).\n\n- `api_access`: use the API at all (checked on every request)\n- `auto_dub`: dub automatically after processing (needs an active subscription)\n- `dubbing_model_choice`: choose the dubbing model; otherwise it is overridden (estimate notice)\n- `free_languages`: free_dubbing language variants\n- `glossary`: attach and manage glossaries\n- `translation_instructions`: custom translation instructions\n- `subtitle_import`: import SRT subtitles when creating a project\n- `subtitle_reimport`: replace a project's transcript from SRT (importTranscript)\n- `subtitle_download`: download subtitles (getProjectSubtitles, subtitle outputs)\n- `burned_subtitles`: export and download videos with burned-in subtitles\n- `audio_download`: download dubbed audio and the voice track\n- `multilanguage`: several target languages per media (copies)\n- `lipsync`: lip-sync\n- `lipsync_paid`: paid lip-sync runs (otherwise only the free run)\n- `lipsync_enhanced`: the Enhanced lip-sync model\n- `lipsync_download`: download lip-synced video\n- `onscreen`: on-screen text translation and download of its video\n- `voice_clones`: workspace voice clones\n- `instant_voice_clone`: a speaker's own cloned voice\n- `share_links`: revocable project share links","enum":["api_access","auto_dub","dubbing_model_choice","free_languages","glossary","translation_instructions","subtitle_import","subtitle_reimport","subtitle_download","burned_subtitles","audio_download","multilanguage","lipsync","lipsync_paid","lipsync_enhanced","lipsync_download","onscreen","voice_clones","instant_voice_clone","share_links"],"x-rask-open-enum":true,"uniqueKey":"feature","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","description":"workspace_access_suspended, source_url_not_allowed, webhook_url_not_allowed, instant_clone_not_available, job_not_resumable, localization_combination_not_supported: machine-readable reason. workspace_access_suspended: `subscription_inactive` (the owner's subscription is not active), `space_limit_exceeded` (the owner has more workspaces than the plan allows), `seat_limit_exceeded` (the key's user is beyond the plan's seats). job_not_resumable: `not_failed_localization`, `already_resumed`, `project_deleted`, `stage_result_gone`. localization_combination_not_supported: `nothing_ordered`, `audio_project`, `plan_trims_lipsync`.","uniqueKey":"reason","typeLabel":"string"},"limit":{"type":"integer","description":"limit_reached, voice_clone_limit_reached, rate_limited, too_many_waiters, too_many_concurrent_jobs, translation_batch_too_large: the limit.","format":"int32","uniqueKey":"limit","typeLabel":"integer\u003cint32>"},"used":{"type":"integer","description":"voice_clone_limit_reached: clones counted against the quota.","format":"int32","uniqueKey":"used","typeLabel":"integer\u003cint32>"},"limit_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): the key's monthly cap on the minutes pool.","format":"int32","uniqueKey":"limit_minutes","typeLabel":"integer\u003cint32>"},"spent_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): minutes spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_minutes","typeLabel":"integer\u003cint32>"},"limit_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): the key's monthly cap on project credits.","format":"int32","uniqueKey":"limit_projects","typeLabel":"integer\u003cint32>"},"spent_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): project credits spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_projects","typeLabel":"integer\u003cint32>"},"resets_at":{"type":"string","description":"token_spend_limit_exceeded: start of the next UTC month.","format":"date-time","uniqueKey":"resets_at","typeLabel":"string\u003cdate-time>"},"policy":{"type":"string","description":"rate_limited, too_many_waiters, too_many_concurrent_jobs: the exceeded policy or quota. rate_limited: credential-minute, account-minute, spend-minute, upload-hour, auth-fail-ip, translation-hour, clone-create-day, voice-settings-hour, upload-open, upload-bytes-day; too_many_waiters: long-poll (per key and per payer); too_many_concurrent_jobs: payer-concurrency, global-concurrency.","uniqueKey":"policy","typeLabel":"string"},"window_seconds":{"type":"integer","description":"rate_limited: the policy window.","format":"int32","uniqueKey":"window_seconds","typeLabel":"integer\u003cint32>"},"active_job_count":{"type":"integer","description":"too_many_concurrent_jobs: active API and MCP jobs of this type (the payer's, or all of Rask's for global-concurrency).","format":"int32","uniqueKey":"active_job_count","typeLabel":"integer\u003cint32>"},"active_jobs":{"type":"array","items":{"type":"object","description":"A non-terminal job of a project.","required":["id","type","status"],"properties":{"id":{"type":"string","description":"Job id.","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].id","typeLabel":"string"},"type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Job type. Open enum: new types are added over time.\n\n- `media_import`: registering uploaded or imported media (poll hint 3 s; cancelable)\n- `project_processing`: the project pipeline up to translation (poll hint 10 s)\n- `translation`: retranslating segments (poll hint 5 s)\n- `segment_generation`: paid voicing of chosen segments into downloadable clips (poll hint 5 s)\n- `dub`: dubbing or redubbing (poll hint 10 s)\n- `lipsync`: lip-sync (poll hint 30 s)\n- `onscreen`: on-screen text translation (poll hint 15 s; cancelable while queued)\n- `localization`: dub, lip-sync and on-screen as one run with child jobs (poll hint 15 s)\n- `voice_clone`: creating a voice clone (poll hint 10 s)\n- `export`: rendering an export (poll hint 15 s)\n- `file_restore`: restoring archived files (poll hint 300 s)","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"Job status. Monotonic: never goes backwards and never leaves a terminal state.\n\n- `queued`: accepted, not started\n- `running`: in progress\n- `succeeded`: finished; see result\n- `failed`: finished; see error\n- `canceled`: canceled, or its project was deleted (`error.code = project_deleted`)","enum":["queued","running","succeeded","failed","canceled"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].status","typeLabel":"enum\u003cstring>"}},"uniqueKey":"active_jobs.items.[INDEX]","typeLabel":"object"},"description":"project_busy: the project's active spending jobs.","uniqueKey":"active_jobs","typeLabel":"object[]"},"active_job_ids":{"type":"array","items":{"type":"string","uniqueKey":"active_job_ids.items.[INDEX]","typeLabel":"string"},"description":"transcript_busy: the active jobs that block a whole-transcript request; absent when concurrent writes kept conflicting.","uniqueKey":"active_job_ids","typeLabel":"string[]"},"segment_ids":{"type":"array","items":{"type":"string","uniqueKey":"segment_ids.items.[INDEX]","typeLabel":"string"},"description":"segment_busy: the busy segments.","uniqueKey":"segment_ids","typeLabel":"string[]"},"job_id":{"oneOf":[{"type":"string","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"job_id","typeLabel":"string | null"},"job_type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Type of `job_id` (single-flight conflicts), of the job that cannot be canceled or resumed (job_not_cancelable, job_not_resumable), or whose concurrency limit was reached (too_many_concurrent_jobs).","uniqueKey":"job_type","typeLabel":"enum\u003cstring>"},"import_job_id":{"type":"string","description":"media_not_ready: the media_import job to wait for.","uniqueKey":"import_job_id","typeLabel":"string"},"max_seconds":{"type":"integer","description":"onscreen_video_too_long: the plan's limit (`onscreen_max_video_seconds`).","format":"int32","uniqueKey":"max_seconds","typeLabel":"integer\u003cint32>"},"expired_at":{"type":"string","description":"token_expired, upload_expired: when it expired.","format":"date-time","uniqueKey":"expired_at","typeLabel":"string\u003cdate-time>"},"revoked_reason":{"type":"string","description":"token_revoked: why the key was revoked.","uniqueKey":"revoked_reason","typeLabel":"string"},"token_env":{"type":"string","description":"token_wrong_environment: the key's environment (`live` or `test`).","uniqueKey":"token_env","typeLabel":"string"},"server_env":{"type":"string","description":"token_wrong_environment: this server's environment.","uniqueKey":"server_env","typeLabel":"string"},"parameter":{"type":"string","description":"token_in_query: the query parameter that carried a credential.","uniqueKey":"parameter","typeLabel":"string"},"max_upload_bytes":{"type":"integer","description":"media_too_large: the limit in bytes (the plan's upload limit, or a voice-sample limit: 11000000 for audio and stored samples, 500000000 for video).","format":"int64","uniqueKey":"max_upload_bytes","typeLabel":"integer\u003cint64>"},"size_bytes":{"type":"integer","description":"media_too_large: the file size in bytes.","format":"int64","uniqueKey":"size_bytes","typeLabel":"integer\u003cint64>"},"max_source_duration_seconds":{"type":"number","description":"media_too_long: the plan's limit.","format":"double","uniqueKey":"max_source_duration_seconds","typeLabel":"number\u003cdouble>"},"duration_seconds":{"type":"number","description":"media_too_long: the media duration.","format":"double","uniqueKey":"duration_seconds","typeLabel":"number\u003cdouble>"},"declared_size_bytes":{"type":"integer","description":"upload_size_mismatch: size_bytes of the upload.","format":"int64","uniqueKey":"declared_size_bytes","typeLabel":"integer\u003cint64>"},"actual_size_bytes":{"type":"integer","description":"upload_size_mismatch: size of the stored object.","format":"int64","uniqueKey":"actual_size_bytes","typeLabel":"integer\u003cint64>"},"project_count":{"type":"integer","description":"folder_not_empty: live projects in the folder.","format":"int32","uniqueKey":"project_count","typeLabel":"integer\u003cint32>"},"content_type":{"type":"string","description":"unsupported_media_type: the rejected content type.","uniqueKey":"content_type","typeLabel":"string"},"cause_code":{"type":"string","description":"Job errors. lipsync_rejected: the code that rejected the automatic start. dub_voiceover_failed, dub_merge_failed, dub_failed, dub_timeout, segment_generation_failed, segment_generation_timeout (always `unknown` on a timeout): the failure class, one of `segment_changed`, `insufficient_speech`, `voice_configuration`, `missing_translation`, `tts_provider_failed`, `merge_failed`, `unknown` (the default when the class cannot be told). localization_stage_failed, localization_stage_skipped: the code of the stage's own error; `localization_combination_not_supported` when a plan change during the run trimmed the lip-sync, so on-screen was skipped.","uniqueKey":"cause_code","typeLabel":"string"},"failed_stage":{"type":"string","description":"localization_stage_failed, localization_stage_skipped (job error): the stage that ended the run.","enum":["dub","lipsync","onscreen"],"x-rask-open-enum":true,"uniqueKey":"failed_stage","typeLabel":"enum\u003cstring>"}},"description":"RFC 9457 problem details (`application/problem+json`), used for every 4xx/5xx response and for `Job.error`. Branch on `code`; follow `hint`; act as `recommendation` says; retry as `retry` says. An extension member has one type across all codes and never reuses an RFC 9457 or Problem member name (hence `job_type`, and `active_job_count` for a count beside `active_jobs` for a list). Extension members appear only with the codes that define them (see each property). The problem registry and one documentation page per code live at https://docs.api.rask.ai/errors.","additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"insufficient_scope":{"title":"insufficient_scope","value":{"type":"https://docs.api.rask.ai/errors/insufficient_scope","title":"Insufficient scope","status":403,"detail":"This operation needs scopes the key does not have.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"insufficient_scope","retryable":false,"retry":"none","recommendation":"fix_request","hint":"Use a key that has the scopes in required_scopes; scopes cannot be added to an existing key.","errors":[],"required_scopes":["dubbing:write","credits:spend"],"granted_scopes":["dubbing:write","projects:read","jobs:read"]}},"feature_not_in_plan":{"title":"feature_not_in_plan","value":{"type":"https://docs.api.rask.ai/errors/feature_not_in_plan","title":"Feature not in plan","status":403,"detail":"The payer's plan does not include lipsync_enhanced.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"feature_not_in_plan","retryable":false,"retry":"none","recommendation":"top_up","hint":"Stop and tell the user the plan does not include this feature; GET /v3/plan lists entitlements.","errors":[],"feature":"lipsync_enhanced"}},"workspace_access_suspended":{"title":"workspace_access_suspended","value":{"type":"https://docs.api.rask.ai/errors/workspace_access_suspended","title":"Workspace access suspended","status":403,"detail":"The workspace is not accessible: the owner's subscription is inactive.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"workspace_access_suspended","retryable":false,"retry":"none","recommendation":"top_up","hint":"Stop and tell the user to restore access to the workspace in the web app.","errors":[],"reason":"subscription_inactive"}},"account_disabled":{"title":"account_disabled","value":{"type":"https://docs.api.rask.ai/errors/account_disabled","title":"Account disabled","status":403,"detail":"The user this key acts as is deactivated.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"account_disabled","retryable":false,"retry":"none","recommendation":"contact_support","hint":"Stop and contact Rask support; the acting user is deactivated.","errors":[]}},"forbidden":{"title":"forbidden","value":{"type":"https://docs.api.rask.ai/errors/forbidden","title":"Forbidden","status":403,"detail":"Requests from the documentation playground may call only GET and estimate operations.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"forbidden","retryable":false,"retry":"none","recommendation":"fix_request","hint":"Call this operation from your own code, not from the docs playground.","errors":[]}}},"exampleType":"examples"}},"exampleType":"examples"},"0e9e0ab0-5e84-4bc7-a070-e8865a8ab80b":{"description":"Not found. Codes: `project_not_found`, `segment_not_found`.","headers":{"X-Request-Id":{"description":"Request id (UUID); also the problem `instance` (`urn:uuid:\u003cid>`). Quote it to support.","schema":{"type":"string"},"example":"7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93"},"RateLimit":{"description":"Remaining quota of the most constrained policy (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";r=597;t=42"},"RateLimit-Policy":{"description":"Rate-limit policies that apply to the key (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";q=600;w=60, \"account-minute\";q=1800;w=60"}},"content":{"application/problem+json":{"schema":{"type":"object","required":["type","title","status","detail","instance","code","retryable","retry","recommendation","hint","errors"],"properties":{"type":{"type":"string","description":"`https://docs.api.rask.ai/errors/{code}`: one documentation page per code.","format":"uri","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short summary of the problem type.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"HTTP status (for a job's error: the status the same failure would have synchronously).","format":"int32","minimum":400,"maximum":599,"isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"detail":{"type":"string","description":"Explanation of this occurrence. May name ids, never user text.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"`urn:uuid:\u003crequest_id>` (also in `X-Request-Id`); for a job's error, `/v3/jobs/{job_id}`.","format":"uri-reference","isRequired":true,"uniqueKey":"instance","typeLabel":"string\u003curi-reference>"},"code":{"type":"string","description":"Stable snake_case code from the problem registry. Branch on this value, never on text.","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"retryable":{"type":"boolean","description":"True when a retry can succeed; `retry` says how.","isRequired":true,"uniqueKey":"retryable","typeLabel":"boolean"},"retry":{"type":"string","description":"How to retry: `same_key` for request problems that may succeed later, `new_key` for job errors worth a new attempt, `none` otherwise. `retryable` is true exactly when this is not `none`.","enum":["same_key","new_key","none"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"retry","typeLabel":"enum\u003cstring>"},"recommendation":{"type":"string","description":"What has to happen before a retry can succeed; set per code, and per `cause_code` for dub and generation failures (`components.x-rask-job-errors`). `cause_code: unknown`: `retry_later`, or `contact_support` when the same project's previous job of that type also failed with `unknown`.","enum":["fix_request","wait","top_up","retry_later","contact_support"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"recommendation","typeLabel":"enum\u003cstring>"},"hint":{"oneOf":[{"type":"string","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.0","typeLabel":"string"},{"type":"null","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"hint","typeLabel":"string | null"},"errors":{"type":"array","items":{"type":"object","description":"One failing field of a request.","required":["pointer","code","detail"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body (`/operations/3/start_seconds`), or a `query:`, `header:` or `path:` prefixed parameter name.","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"code":{"type":"string","description":"Stable snake_case code of this field error. Segment writes: `invalid_time`, `start_not_before_end`, `beyond_media_duration`, `segment_too_short`, `segment_too_long`, `invalid_speaker_id`, `too_many_speakers`, `text_too_long`, `invalid_text`, `transcript_too_large`, `split_point_outside_segment`, `segments_not_adjacent`, `too_many_segments`, `segment_targeted_twice`, `unknown_segment`, `variant_not_found`; spending requests: `expected_cost_required`; uploads: `part_missing`; generic schema failures use JSON Schema keyword names (`required`, `maxLength`, ...).","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation. Never contains user text.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"Failing fields; empty when the problem is not about fields.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"credit_type":{"type":"string","description":"insufficient_balance, token_spend_limit_exceeded: the pool concerned.","enum":["minutes","lipsync_free_minutes","projects"],"x-rask-open-enum":true,"uniqueKey":"credit_type","typeLabel":"enum\u003cstring>"},"required_minutes":{"type":"integer","description":"insufficient_balance, token_spend_limit_exceeded: minutes the request needs.","format":"int32","uniqueKey":"required_minutes","typeLabel":"integer\u003cint32>"},"balance_minutes":{"type":"integer","description":"insufficient_balance: minutes available in the pool.","format":"int32","uniqueKey":"balance_minutes","typeLabel":"integer\u003cint32>"},"required_projects":{"type":"integer","description":"insufficient_balance (projects pool), token_spend_limit_exceeded (projects cap): project credits needed.","format":"int32","uniqueKey":"required_projects","typeLabel":"integer\u003cint32>"},"balance_projects":{"type":"integer","description":"insufficient_balance (projects pool): project credits available.","format":"int32","uniqueKey":"balance_projects","typeLabel":"integer\u003cint32>"},"expected_cost_minutes":{"type":"integer","description":"cost_changed: the cap the request sent.","format":"int32","uniqueKey":"expected_cost_minutes","typeLabel":"integer\u003cint32>"},"current_cost_minutes":{"type":"integer","description":"cost_changed: the current price.","format":"int32","uniqueKey":"current_cost_minutes","typeLabel":"integer\u003cint32>"},"current_etag":{"type":"string","description":"precondition_failed: the resource's current ETag.","uniqueKey":"current_etag","typeLabel":"string"},"required_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"required_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: every scope the request needs, including those of `x-rask-operation.conditional`.","uniqueKey":"required_scopes","typeLabel":"enum\u003cstring>[]"},"granted_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"granted_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: the key's scopes.","uniqueKey":"granted_scopes","typeLabel":"enum\u003cstring>[]"},"feature":{"type":"string","description":"A plan feature checked server-side on the payer's plan (403 `feature_not_in_plan`).\n\n- `api_access`: use the API at all (checked on every request)\n- `auto_dub`: dub automatically after processing (needs an active subscription)\n- `dubbing_model_choice`: choose the dubbing model; otherwise it is overridden (estimate notice)\n- `free_languages`: free_dubbing language variants\n- `glossary`: attach and manage glossaries\n- `translation_instructions`: custom translation instructions\n- `subtitle_import`: import SRT subtitles when creating a project\n- `subtitle_reimport`: replace a project's transcript from SRT (importTranscript)\n- `subtitle_download`: download subtitles (getProjectSubtitles, subtitle outputs)\n- `burned_subtitles`: export and download videos with burned-in subtitles\n- `audio_download`: download dubbed audio and the voice track\n- `multilanguage`: several target languages per media (copies)\n- `lipsync`: lip-sync\n- `lipsync_paid`: paid lip-sync runs (otherwise only the free run)\n- `lipsync_enhanced`: the Enhanced lip-sync model\n- `lipsync_download`: download lip-synced video\n- `onscreen`: on-screen text translation and download of its video\n- `voice_clones`: workspace voice clones\n- `instant_voice_clone`: a speaker's own cloned voice\n- `share_links`: revocable project share links","enum":["api_access","auto_dub","dubbing_model_choice","free_languages","glossary","translation_instructions","subtitle_import","subtitle_reimport","subtitle_download","burned_subtitles","audio_download","multilanguage","lipsync","lipsync_paid","lipsync_enhanced","lipsync_download","onscreen","voice_clones","instant_voice_clone","share_links"],"x-rask-open-enum":true,"uniqueKey":"feature","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","description":"workspace_access_suspended, source_url_not_allowed, webhook_url_not_allowed, instant_clone_not_available, job_not_resumable, localization_combination_not_supported: machine-readable reason. workspace_access_suspended: `subscription_inactive` (the owner's subscription is not active), `space_limit_exceeded` (the owner has more workspaces than the plan allows), `seat_limit_exceeded` (the key's user is beyond the plan's seats). job_not_resumable: `not_failed_localization`, `already_resumed`, `project_deleted`, `stage_result_gone`. localization_combination_not_supported: `nothing_ordered`, `audio_project`, `plan_trims_lipsync`.","uniqueKey":"reason","typeLabel":"string"},"limit":{"type":"integer","description":"limit_reached, voice_clone_limit_reached, rate_limited, too_many_waiters, too_many_concurrent_jobs, translation_batch_too_large: the limit.","format":"int32","uniqueKey":"limit","typeLabel":"integer\u003cint32>"},"used":{"type":"integer","description":"voice_clone_limit_reached: clones counted against the quota.","format":"int32","uniqueKey":"used","typeLabel":"integer\u003cint32>"},"limit_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): the key's monthly cap on the minutes pool.","format":"int32","uniqueKey":"limit_minutes","typeLabel":"integer\u003cint32>"},"spent_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): minutes spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_minutes","typeLabel":"integer\u003cint32>"},"limit_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): the key's monthly cap on project credits.","format":"int32","uniqueKey":"limit_projects","typeLabel":"integer\u003cint32>"},"spent_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): project credits spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_projects","typeLabel":"integer\u003cint32>"},"resets_at":{"type":"string","description":"token_spend_limit_exceeded: start of the next UTC month.","format":"date-time","uniqueKey":"resets_at","typeLabel":"string\u003cdate-time>"},"policy":{"type":"string","description":"rate_limited, too_many_waiters, too_many_concurrent_jobs: the exceeded policy or quota. rate_limited: credential-minute, account-minute, spend-minute, upload-hour, auth-fail-ip, translation-hour, clone-create-day, voice-settings-hour, upload-open, upload-bytes-day; too_many_waiters: long-poll (per key and per payer); too_many_concurrent_jobs: payer-concurrency, global-concurrency.","uniqueKey":"policy","typeLabel":"string"},"window_seconds":{"type":"integer","description":"rate_limited: the policy window.","format":"int32","uniqueKey":"window_seconds","typeLabel":"integer\u003cint32>"},"active_job_count":{"type":"integer","description":"too_many_concurrent_jobs: active API and MCP jobs of this type (the payer's, or all of Rask's for global-concurrency).","format":"int32","uniqueKey":"active_job_count","typeLabel":"integer\u003cint32>"},"active_jobs":{"type":"array","items":{"type":"object","description":"A non-terminal job of a project.","required":["id","type","status"],"properties":{"id":{"type":"string","description":"Job id.","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].id","typeLabel":"string"},"type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Job type. Open enum: new types are added over time.\n\n- `media_import`: registering uploaded or imported media (poll hint 3 s; cancelable)\n- `project_processing`: the project pipeline up to translation (poll hint 10 s)\n- `translation`: retranslating segments (poll hint 5 s)\n- `segment_generation`: paid voicing of chosen segments into downloadable clips (poll hint 5 s)\n- `dub`: dubbing or redubbing (poll hint 10 s)\n- `lipsync`: lip-sync (poll hint 30 s)\n- `onscreen`: on-screen text translation (poll hint 15 s; cancelable while queued)\n- `localization`: dub, lip-sync and on-screen as one run with child jobs (poll hint 15 s)\n- `voice_clone`: creating a voice clone (poll hint 10 s)\n- `export`: rendering an export (poll hint 15 s)\n- `file_restore`: restoring archived files (poll hint 300 s)","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"Job status. Monotonic: never goes backwards and never leaves a terminal state.\n\n- `queued`: accepted, not started\n- `running`: in progress\n- `succeeded`: finished; see result\n- `failed`: finished; see error\n- `canceled`: canceled, or its project was deleted (`error.code = project_deleted`)","enum":["queued","running","succeeded","failed","canceled"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].status","typeLabel":"enum\u003cstring>"}},"uniqueKey":"active_jobs.items.[INDEX]","typeLabel":"object"},"description":"project_busy: the project's active spending jobs.","uniqueKey":"active_jobs","typeLabel":"object[]"},"active_job_ids":{"type":"array","items":{"type":"string","uniqueKey":"active_job_ids.items.[INDEX]","typeLabel":"string"},"description":"transcript_busy: the active jobs that block a whole-transcript request; absent when concurrent writes kept conflicting.","uniqueKey":"active_job_ids","typeLabel":"string[]"},"segment_ids":{"type":"array","items":{"type":"string","uniqueKey":"segment_ids.items.[INDEX]","typeLabel":"string"},"description":"segment_busy: the busy segments.","uniqueKey":"segment_ids","typeLabel":"string[]"},"job_id":{"oneOf":[{"type":"string","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"job_id","typeLabel":"string | null"},"job_type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Type of `job_id` (single-flight conflicts), of the job that cannot be canceled or resumed (job_not_cancelable, job_not_resumable), or whose concurrency limit was reached (too_many_concurrent_jobs).","uniqueKey":"job_type","typeLabel":"enum\u003cstring>"},"import_job_id":{"type":"string","description":"media_not_ready: the media_import job to wait for.","uniqueKey":"import_job_id","typeLabel":"string"},"max_seconds":{"type":"integer","description":"onscreen_video_too_long: the plan's limit (`onscreen_max_video_seconds`).","format":"int32","uniqueKey":"max_seconds","typeLabel":"integer\u003cint32>"},"expired_at":{"type":"string","description":"token_expired, upload_expired: when it expired.","format":"date-time","uniqueKey":"expired_at","typeLabel":"string\u003cdate-time>"},"revoked_reason":{"type":"string","description":"token_revoked: why the key was revoked.","uniqueKey":"revoked_reason","typeLabel":"string"},"token_env":{"type":"string","description":"token_wrong_environment: the key's environment (`live` or `test`).","uniqueKey":"token_env","typeLabel":"string"},"server_env":{"type":"string","description":"token_wrong_environment: this server's environment.","uniqueKey":"server_env","typeLabel":"string"},"parameter":{"type":"string","description":"token_in_query: the query parameter that carried a credential.","uniqueKey":"parameter","typeLabel":"string"},"max_upload_bytes":{"type":"integer","description":"media_too_large: the limit in bytes (the plan's upload limit, or a voice-sample limit: 11000000 for audio and stored samples, 500000000 for video).","format":"int64","uniqueKey":"max_upload_bytes","typeLabel":"integer\u003cint64>"},"size_bytes":{"type":"integer","description":"media_too_large: the file size in bytes.","format":"int64","uniqueKey":"size_bytes","typeLabel":"integer\u003cint64>"},"max_source_duration_seconds":{"type":"number","description":"media_too_long: the plan's limit.","format":"double","uniqueKey":"max_source_duration_seconds","typeLabel":"number\u003cdouble>"},"duration_seconds":{"type":"number","description":"media_too_long: the media duration.","format":"double","uniqueKey":"duration_seconds","typeLabel":"number\u003cdouble>"},"declared_size_bytes":{"type":"integer","description":"upload_size_mismatch: size_bytes of the upload.","format":"int64","uniqueKey":"declared_size_bytes","typeLabel":"integer\u003cint64>"},"actual_size_bytes":{"type":"integer","description":"upload_size_mismatch: size of the stored object.","format":"int64","uniqueKey":"actual_size_bytes","typeLabel":"integer\u003cint64>"},"project_count":{"type":"integer","description":"folder_not_empty: live projects in the folder.","format":"int32","uniqueKey":"project_count","typeLabel":"integer\u003cint32>"},"content_type":{"type":"string","description":"unsupported_media_type: the rejected content type.","uniqueKey":"content_type","typeLabel":"string"},"cause_code":{"type":"string","description":"Job errors. lipsync_rejected: the code that rejected the automatic start. dub_voiceover_failed, dub_merge_failed, dub_failed, dub_timeout, segment_generation_failed, segment_generation_timeout (always `unknown` on a timeout): the failure class, one of `segment_changed`, `insufficient_speech`, `voice_configuration`, `missing_translation`, `tts_provider_failed`, `merge_failed`, `unknown` (the default when the class cannot be told). localization_stage_failed, localization_stage_skipped: the code of the stage's own error; `localization_combination_not_supported` when a plan change during the run trimmed the lip-sync, so on-screen was skipped.","uniqueKey":"cause_code","typeLabel":"string"},"failed_stage":{"type":"string","description":"localization_stage_failed, localization_stage_skipped (job error): the stage that ended the run.","enum":["dub","lipsync","onscreen"],"x-rask-open-enum":true,"uniqueKey":"failed_stage","typeLabel":"enum\u003cstring>"}},"description":"RFC 9457 problem details (`application/problem+json`), used for every 4xx/5xx response and for `Job.error`. Branch on `code`; follow `hint`; act as `recommendation` says; retry as `retry` says. An extension member has one type across all codes and never reuses an RFC 9457 or Problem member name (hence `job_type`, and `active_job_count` for a count beside `active_jobs` for a list). Extension members appear only with the codes that define them (see each property). The problem registry and one documentation page per code live at https://docs.api.rask.ai/errors.","additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"project_not_found":{"title":"project_not_found","value":{"type":"https://docs.api.rask.ai/errors/project_not_found","title":"Project not found","status":404,"detail":"No project with this id exists in the key's workspace.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"project_not_found","retryable":false,"retry":"none","recommendation":"fix_request","hint":"Use an id returned by listProjects for this workspace.","errors":[]}},"segment_not_found":{"title":"segment_not_found","value":{"type":"https://docs.api.rask.ai/errors/segment_not_found","title":"Segment not found","status":404,"detail":"No segment with this id exists in the key's workspace.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"segment_not_found","retryable":false,"retry":"none","recommendation":"fix_request","hint":"Use an id returned by listSegments for this workspace.","errors":[]}}},"exampleType":"examples"}},"exampleType":"examples"},"c2645135-2adb-4470-b773-8e5d0a4d3e84":{"description":"Conflict. Codes: `idempotency_key_in_use`, `transcript_not_ready`, `segment_busy`, `project_not_ready`, `dub_in_progress`, `transcript_busy`, `dub_payment_required`.","headers":{"X-Request-Id":{"description":"Request id (UUID); also the problem `instance` (`urn:uuid:\u003cid>`). Quote it to support.","schema":{"type":"string"},"example":"7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93"},"RateLimit":{"description":"Remaining quota of the most constrained policy (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";r=597;t=42"},"RateLimit-Policy":{"description":"Rate-limit policies that apply to the key (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";q=600;w=60, \"account-minute\";q=1800;w=60"},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","format":"int32","minimum":0},"example":30}},"content":{"application/problem+json":{"schema":{"type":"object","required":["type","title","status","detail","instance","code","retryable","retry","recommendation","hint","errors"],"properties":{"type":{"type":"string","description":"`https://docs.api.rask.ai/errors/{code}`: one documentation page per code.","format":"uri","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short summary of the problem type.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"HTTP status (for a job's error: the status the same failure would have synchronously).","format":"int32","minimum":400,"maximum":599,"isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"detail":{"type":"string","description":"Explanation of this occurrence. May name ids, never user text.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"`urn:uuid:\u003crequest_id>` (also in `X-Request-Id`); for a job's error, `/v3/jobs/{job_id}`.","format":"uri-reference","isRequired":true,"uniqueKey":"instance","typeLabel":"string\u003curi-reference>"},"code":{"type":"string","description":"Stable snake_case code from the problem registry. Branch on this value, never on text.","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"retryable":{"type":"boolean","description":"True when a retry can succeed; `retry` says how.","isRequired":true,"uniqueKey":"retryable","typeLabel":"boolean"},"retry":{"type":"string","description":"How to retry: `same_key` for request problems that may succeed later, `new_key` for job errors worth a new attempt, `none` otherwise. `retryable` is true exactly when this is not `none`.","enum":["same_key","new_key","none"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"retry","typeLabel":"enum\u003cstring>"},"recommendation":{"type":"string","description":"What has to happen before a retry can succeed; set per code, and per `cause_code` for dub and generation failures (`components.x-rask-job-errors`). `cause_code: unknown`: `retry_later`, or `contact_support` when the same project's previous job of that type also failed with `unknown`.","enum":["fix_request","wait","top_up","retry_later","contact_support"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"recommendation","typeLabel":"enum\u003cstring>"},"hint":{"oneOf":[{"type":"string","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.0","typeLabel":"string"},{"type":"null","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"hint","typeLabel":"string | null"},"errors":{"type":"array","items":{"type":"object","description":"One failing field of a request.","required":["pointer","code","detail"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body (`/operations/3/start_seconds`), or a `query:`, `header:` or `path:` prefixed parameter name.","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"code":{"type":"string","description":"Stable snake_case code of this field error. Segment writes: `invalid_time`, `start_not_before_end`, `beyond_media_duration`, `segment_too_short`, `segment_too_long`, `invalid_speaker_id`, `too_many_speakers`, `text_too_long`, `invalid_text`, `transcript_too_large`, `split_point_outside_segment`, `segments_not_adjacent`, `too_many_segments`, `segment_targeted_twice`, `unknown_segment`, `variant_not_found`; spending requests: `expected_cost_required`; uploads: `part_missing`; generic schema failures use JSON Schema keyword names (`required`, `maxLength`, ...).","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation. Never contains user text.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"Failing fields; empty when the problem is not about fields.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"credit_type":{"type":"string","description":"insufficient_balance, token_spend_limit_exceeded: the pool concerned.","enum":["minutes","lipsync_free_minutes","projects"],"x-rask-open-enum":true,"uniqueKey":"credit_type","typeLabel":"enum\u003cstring>"},"required_minutes":{"type":"integer","description":"insufficient_balance, token_spend_limit_exceeded: minutes the request needs.","format":"int32","uniqueKey":"required_minutes","typeLabel":"integer\u003cint32>"},"balance_minutes":{"type":"integer","description":"insufficient_balance: minutes available in the pool.","format":"int32","uniqueKey":"balance_minutes","typeLabel":"integer\u003cint32>"},"required_projects":{"type":"integer","description":"insufficient_balance (projects pool), token_spend_limit_exceeded (projects cap): project credits needed.","format":"int32","uniqueKey":"required_projects","typeLabel":"integer\u003cint32>"},"balance_projects":{"type":"integer","description":"insufficient_balance (projects pool): project credits available.","format":"int32","uniqueKey":"balance_projects","typeLabel":"integer\u003cint32>"},"expected_cost_minutes":{"type":"integer","description":"cost_changed: the cap the request sent.","format":"int32","uniqueKey":"expected_cost_minutes","typeLabel":"integer\u003cint32>"},"current_cost_minutes":{"type":"integer","description":"cost_changed: the current price.","format":"int32","uniqueKey":"current_cost_minutes","typeLabel":"integer\u003cint32>"},"current_etag":{"type":"string","description":"precondition_failed: the resource's current ETag.","uniqueKey":"current_etag","typeLabel":"string"},"required_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"required_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: every scope the request needs, including those of `x-rask-operation.conditional`.","uniqueKey":"required_scopes","typeLabel":"enum\u003cstring>[]"},"granted_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"granted_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: the key's scopes.","uniqueKey":"granted_scopes","typeLabel":"enum\u003cstring>[]"},"feature":{"type":"string","description":"A plan feature checked server-side on the payer's plan (403 `feature_not_in_plan`).\n\n- `api_access`: use the API at all (checked on every request)\n- `auto_dub`: dub automatically after processing (needs an active subscription)\n- `dubbing_model_choice`: choose the dubbing model; otherwise it is overridden (estimate notice)\n- `free_languages`: free_dubbing language variants\n- `glossary`: attach and manage glossaries\n- `translation_instructions`: custom translation instructions\n- `subtitle_import`: import SRT subtitles when creating a project\n- `subtitle_reimport`: replace a project's transcript from SRT (importTranscript)\n- `subtitle_download`: download subtitles (getProjectSubtitles, subtitle outputs)\n- `burned_subtitles`: export and download videos with burned-in subtitles\n- `audio_download`: download dubbed audio and the voice track\n- `multilanguage`: several target languages per media (copies)\n- `lipsync`: lip-sync\n- `lipsync_paid`: paid lip-sync runs (otherwise only the free run)\n- `lipsync_enhanced`: the Enhanced lip-sync model\n- `lipsync_download`: download lip-synced video\n- `onscreen`: on-screen text translation and download of its video\n- `voice_clones`: workspace voice clones\n- `instant_voice_clone`: a speaker's own cloned voice\n- `share_links`: revocable project share links","enum":["api_access","auto_dub","dubbing_model_choice","free_languages","glossary","translation_instructions","subtitle_import","subtitle_reimport","subtitle_download","burned_subtitles","audio_download","multilanguage","lipsync","lipsync_paid","lipsync_enhanced","lipsync_download","onscreen","voice_clones","instant_voice_clone","share_links"],"x-rask-open-enum":true,"uniqueKey":"feature","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","description":"workspace_access_suspended, source_url_not_allowed, webhook_url_not_allowed, instant_clone_not_available, job_not_resumable, localization_combination_not_supported: machine-readable reason. workspace_access_suspended: `subscription_inactive` (the owner's subscription is not active), `space_limit_exceeded` (the owner has more workspaces than the plan allows), `seat_limit_exceeded` (the key's user is beyond the plan's seats). job_not_resumable: `not_failed_localization`, `already_resumed`, `project_deleted`, `stage_result_gone`. localization_combination_not_supported: `nothing_ordered`, `audio_project`, `plan_trims_lipsync`.","uniqueKey":"reason","typeLabel":"string"},"limit":{"type":"integer","description":"limit_reached, voice_clone_limit_reached, rate_limited, too_many_waiters, too_many_concurrent_jobs, translation_batch_too_large: the limit.","format":"int32","uniqueKey":"limit","typeLabel":"integer\u003cint32>"},"used":{"type":"integer","description":"voice_clone_limit_reached: clones counted against the quota.","format":"int32","uniqueKey":"used","typeLabel":"integer\u003cint32>"},"limit_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): the key's monthly cap on the minutes pool.","format":"int32","uniqueKey":"limit_minutes","typeLabel":"integer\u003cint32>"},"spent_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): minutes spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_minutes","typeLabel":"integer\u003cint32>"},"limit_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): the key's monthly cap on project credits.","format":"int32","uniqueKey":"limit_projects","typeLabel":"integer\u003cint32>"},"spent_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): project credits spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_projects","typeLabel":"integer\u003cint32>"},"resets_at":{"type":"string","description":"token_spend_limit_exceeded: start of the next UTC month.","format":"date-time","uniqueKey":"resets_at","typeLabel":"string\u003cdate-time>"},"policy":{"type":"string","description":"rate_limited, too_many_waiters, too_many_concurrent_jobs: the exceeded policy or quota. rate_limited: credential-minute, account-minute, spend-minute, upload-hour, auth-fail-ip, translation-hour, clone-create-day, voice-settings-hour, upload-open, upload-bytes-day; too_many_waiters: long-poll (per key and per payer); too_many_concurrent_jobs: payer-concurrency, global-concurrency.","uniqueKey":"policy","typeLabel":"string"},"window_seconds":{"type":"integer","description":"rate_limited: the policy window.","format":"int32","uniqueKey":"window_seconds","typeLabel":"integer\u003cint32>"},"active_job_count":{"type":"integer","description":"too_many_concurrent_jobs: active API and MCP jobs of this type (the payer's, or all of Rask's for global-concurrency).","format":"int32","uniqueKey":"active_job_count","typeLabel":"integer\u003cint32>"},"active_jobs":{"type":"array","items":{"type":"object","description":"A non-terminal job of a project.","required":["id","type","status"],"properties":{"id":{"type":"string","description":"Job id.","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].id","typeLabel":"string"},"type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Job type. Open enum: new types are added over time.\n\n- `media_import`: registering uploaded or imported media (poll hint 3 s; cancelable)\n- `project_processing`: the project pipeline up to translation (poll hint 10 s)\n- `translation`: retranslating segments (poll hint 5 s)\n- `segment_generation`: paid voicing of chosen segments into downloadable clips (poll hint 5 s)\n- `dub`: dubbing or redubbing (poll hint 10 s)\n- `lipsync`: lip-sync (poll hint 30 s)\n- `onscreen`: on-screen text translation (poll hint 15 s; cancelable while queued)\n- `localization`: dub, lip-sync and on-screen as one run with child jobs (poll hint 15 s)\n- `voice_clone`: creating a voice clone (poll hint 10 s)\n- `export`: rendering an export (poll hint 15 s)\n- `file_restore`: restoring archived files (poll hint 300 s)","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"Job status. Monotonic: never goes backwards and never leaves a terminal state.\n\n- `queued`: accepted, not started\n- `running`: in progress\n- `succeeded`: finished; see result\n- `failed`: finished; see error\n- `canceled`: canceled, or its project was deleted (`error.code = project_deleted`)","enum":["queued","running","succeeded","failed","canceled"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].status","typeLabel":"enum\u003cstring>"}},"uniqueKey":"active_jobs.items.[INDEX]","typeLabel":"object"},"description":"project_busy: the project's active spending jobs.","uniqueKey":"active_jobs","typeLabel":"object[]"},"active_job_ids":{"type":"array","items":{"type":"string","uniqueKey":"active_job_ids.items.[INDEX]","typeLabel":"string"},"description":"transcript_busy: the active jobs that block a whole-transcript request; absent when concurrent writes kept conflicting.","uniqueKey":"active_job_ids","typeLabel":"string[]"},"segment_ids":{"type":"array","items":{"type":"string","uniqueKey":"segment_ids.items.[INDEX]","typeLabel":"string"},"description":"segment_busy: the busy segments.","uniqueKey":"segment_ids","typeLabel":"string[]"},"job_id":{"oneOf":[{"type":"string","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"job_id","typeLabel":"string | null"},"job_type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Type of `job_id` (single-flight conflicts), of the job that cannot be canceled or resumed (job_not_cancelable, job_not_resumable), or whose concurrency limit was reached (too_many_concurrent_jobs).","uniqueKey":"job_type","typeLabel":"enum\u003cstring>"},"import_job_id":{"type":"string","description":"media_not_ready: the media_import job to wait for.","uniqueKey":"import_job_id","typeLabel":"string"},"max_seconds":{"type":"integer","description":"onscreen_video_too_long: the plan's limit (`onscreen_max_video_seconds`).","format":"int32","uniqueKey":"max_seconds","typeLabel":"integer\u003cint32>"},"expired_at":{"type":"string","description":"token_expired, upload_expired: when it expired.","format":"date-time","uniqueKey":"expired_at","typeLabel":"string\u003cdate-time>"},"revoked_reason":{"type":"string","description":"token_revoked: why the key was revoked.","uniqueKey":"revoked_reason","typeLabel":"string"},"token_env":{"type":"string","description":"token_wrong_environment: the key's environment (`live` or `test`).","uniqueKey":"token_env","typeLabel":"string"},"server_env":{"type":"string","description":"token_wrong_environment: this server's environment.","uniqueKey":"server_env","typeLabel":"string"},"parameter":{"type":"string","description":"token_in_query: the query parameter that carried a credential.","uniqueKey":"parameter","typeLabel":"string"},"max_upload_bytes":{"type":"integer","description":"media_too_large: the limit in bytes (the plan's upload limit, or a voice-sample limit: 11000000 for audio and stored samples, 500000000 for video).","format":"int64","uniqueKey":"max_upload_bytes","typeLabel":"integer\u003cint64>"},"size_bytes":{"type":"integer","description":"media_too_large: the file size in bytes.","format":"int64","uniqueKey":"size_bytes","typeLabel":"integer\u003cint64>"},"max_source_duration_seconds":{"type":"number","description":"media_too_long: the plan's limit.","format":"double","uniqueKey":"max_source_duration_seconds","typeLabel":"number\u003cdouble>"},"duration_seconds":{"type":"number","description":"media_too_long: the media duration.","format":"double","uniqueKey":"duration_seconds","typeLabel":"number\u003cdouble>"},"declared_size_bytes":{"type":"integer","description":"upload_size_mismatch: size_bytes of the upload.","format":"int64","uniqueKey":"declared_size_bytes","typeLabel":"integer\u003cint64>"},"actual_size_bytes":{"type":"integer","description":"upload_size_mismatch: size of the stored object.","format":"int64","uniqueKey":"actual_size_bytes","typeLabel":"integer\u003cint64>"},"project_count":{"type":"integer","description":"folder_not_empty: live projects in the folder.","format":"int32","uniqueKey":"project_count","typeLabel":"integer\u003cint32>"},"content_type":{"type":"string","description":"unsupported_media_type: the rejected content type.","uniqueKey":"content_type","typeLabel":"string"},"cause_code":{"type":"string","description":"Job errors. lipsync_rejected: the code that rejected the automatic start. dub_voiceover_failed, dub_merge_failed, dub_failed, dub_timeout, segment_generation_failed, segment_generation_timeout (always `unknown` on a timeout): the failure class, one of `segment_changed`, `insufficient_speech`, `voice_configuration`, `missing_translation`, `tts_provider_failed`, `merge_failed`, `unknown` (the default when the class cannot be told). localization_stage_failed, localization_stage_skipped: the code of the stage's own error; `localization_combination_not_supported` when a plan change during the run trimmed the lip-sync, so on-screen was skipped.","uniqueKey":"cause_code","typeLabel":"string"},"failed_stage":{"type":"string","description":"localization_stage_failed, localization_stage_skipped (job error): the stage that ended the run.","enum":["dub","lipsync","onscreen"],"x-rask-open-enum":true,"uniqueKey":"failed_stage","typeLabel":"enum\u003cstring>"}},"description":"RFC 9457 problem details (`application/problem+json`), used for every 4xx/5xx response and for `Job.error`. Branch on `code`; follow `hint`; act as `recommendation` says; retry as `retry` says. An extension member has one type across all codes and never reuses an RFC 9457 or Problem member name (hence `job_type`, and `active_job_count` for a count beside `active_jobs` for a list). Extension members appear only with the codes that define them (see each property). The problem registry and one documentation page per code live at https://docs.api.rask.ai/errors.","additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"idempotency_key_in_use":{"title":"idempotency_key_in_use","value":{"type":"https://docs.api.rask.ai/errors/idempotency_key_in_use","title":"Idempotency key in use","status":409,"detail":"A request with this Idempotency-Key is still in flight.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"idempotency_key_in_use","retryable":true,"retry":"same_key","recommendation":"wait","hint":"Wait Retry-After seconds and retry with the same Idempotency-Key.","errors":[]}},"transcript_not_ready":{"title":"transcript_not_ready","value":{"type":"https://docs.api.rask.ai/errors/transcript_not_ready","title":"Transcript not ready","status":409,"detail":"Project 6f1c2b7e has no transcript yet.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"transcript_not_ready","retryable":true,"retry":"same_key","recommendation":"wait","hint":"Wait for the project_processing job, then retry.","errors":[]}},"segment_busy":{"title":"segment_busy","value":{"type":"https://docs.api.rask.ai/errors/segment_busy","title":"Segment busy","status":409,"detail":"Segments are translating or voicing.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"segment_busy","retryable":true,"retry":"same_key","recommendation":"wait","hint":"Wait for the translation or segment generation job on these segments, then re-read and retry.","errors":[],"segment_ids":["8b3d1e9f-6a2c-4d7e-b5f1-3c9e7a1d5b22"]}},"project_not_ready":{"title":"project_not_ready","value":{"type":"https://docs.api.rask.ai/errors/project_not_ready","title":"Project not ready","status":409,"detail":"Project 6f1c2b7e is still processing.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"project_not_ready","retryable":true,"retry":"same_key","recommendation":"wait","hint":"Wait until processing_state.terminal is true (getProject or the project_processing job).","errors":[],"job_id":"e4a1c9f3-2d7b-4f5e-8a6c-0b3d9e1f7a52","job_type":"project_processing"}},"dub_in_progress":{"title":"dub_in_progress","value":{"type":"https://docs.api.rask.ai/errors/dub_in_progress","title":"Dub in progress","status":409,"detail":"Project 6f1c2b7e has an active dub job.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"dub_in_progress","retryable":true,"retry":"same_key","recommendation":"wait","hint":"Wait for the job in job_id (getJob with wait_seconds), then retry.","errors":[],"job_id":"91c3e7b2-4f8a-4d6e-9b1c-7a3e5f2d8c60","job_type":"dub"}},"transcript_busy":{"title":"transcript_busy","value":{"type":"https://docs.api.rask.ai/errors/transcript_busy","title":"Transcript busy","status":409,"detail":"Concurrent work on project 6f1c2b7e kept conflicting with this request.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"transcript_busy","retryable":true,"retry":"same_key","recommendation":"wait","hint":"Retry after Retry-After seconds; when active_job_ids is set, wait for those jobs first (getJob).","errors":[],"active_job_ids":["5a9c2e7f-3b6d-4a1e-8c4f-7e0b3d6a9c21"],"job_id":"5a9c2e7f-3b6d-4a1e-8c4f-7e0b3d6a9c21","job_type":"translation"}},"dub_payment_required":{"title":"dub_payment_required","value":{"type":"https://docs.api.rask.ai/errors/dub_payment_required","title":"Dub payment required","status":409,"detail":"Project 6f1c2b7e has no charged dub yet, so its transcript and translations are closed.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"dub_payment_required","retryable":false,"retry":"none","recommendation":"fix_request","hint":"Wait for the auto-dub (getProject, `auto_dub.state`), or call estimateDub, then createDub; the text opens once a dub is charged.","errors":[]}}},"exampleType":"examples"}},"exampleType":"examples"},"d2b8e616-4220-4776-bca1-aa4f00ad28bd":{"description":"Precondition failed. Codes: `precondition_failed`.","headers":{"X-Request-Id":{"description":"Request id (UUID); also the problem `instance` (`urn:uuid:\u003cid>`). Quote it to support.","schema":{"type":"string"},"example":"7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93"},"RateLimit":{"description":"Remaining quota of the most constrained policy (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";r=597;t=42"},"RateLimit-Policy":{"description":"Rate-limit policies that apply to the key (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";q=600;w=60, \"account-minute\";q=1800;w=60"}},"content":{"application/problem+json":{"schema":{"type":"object","required":["type","title","status","detail","instance","code","retryable","retry","recommendation","hint","errors"],"properties":{"type":{"type":"string","description":"`https://docs.api.rask.ai/errors/{code}`: one documentation page per code.","format":"uri","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short summary of the problem type.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"HTTP status (for a job's error: the status the same failure would have synchronously).","format":"int32","minimum":400,"maximum":599,"isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"detail":{"type":"string","description":"Explanation of this occurrence. May name ids, never user text.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"`urn:uuid:\u003crequest_id>` (also in `X-Request-Id`); for a job's error, `/v3/jobs/{job_id}`.","format":"uri-reference","isRequired":true,"uniqueKey":"instance","typeLabel":"string\u003curi-reference>"},"code":{"type":"string","description":"Stable snake_case code from the problem registry. Branch on this value, never on text.","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"retryable":{"type":"boolean","description":"True when a retry can succeed; `retry` says how.","isRequired":true,"uniqueKey":"retryable","typeLabel":"boolean"},"retry":{"type":"string","description":"How to retry: `same_key` for request problems that may succeed later, `new_key` for job errors worth a new attempt, `none` otherwise. `retryable` is true exactly when this is not `none`.","enum":["same_key","new_key","none"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"retry","typeLabel":"enum\u003cstring>"},"recommendation":{"type":"string","description":"What has to happen before a retry can succeed; set per code, and per `cause_code` for dub and generation failures (`components.x-rask-job-errors`). `cause_code: unknown`: `retry_later`, or `contact_support` when the same project's previous job of that type also failed with `unknown`.","enum":["fix_request","wait","top_up","retry_later","contact_support"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"recommendation","typeLabel":"enum\u003cstring>"},"hint":{"oneOf":[{"type":"string","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.0","typeLabel":"string"},{"type":"null","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"hint","typeLabel":"string | null"},"errors":{"type":"array","items":{"type":"object","description":"One failing field of a request.","required":["pointer","code","detail"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body (`/operations/3/start_seconds`), or a `query:`, `header:` or `path:` prefixed parameter name.","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"code":{"type":"string","description":"Stable snake_case code of this field error. Segment writes: `invalid_time`, `start_not_before_end`, `beyond_media_duration`, `segment_too_short`, `segment_too_long`, `invalid_speaker_id`, `too_many_speakers`, `text_too_long`, `invalid_text`, `transcript_too_large`, `split_point_outside_segment`, `segments_not_adjacent`, `too_many_segments`, `segment_targeted_twice`, `unknown_segment`, `variant_not_found`; spending requests: `expected_cost_required`; uploads: `part_missing`; generic schema failures use JSON Schema keyword names (`required`, `maxLength`, ...).","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation. Never contains user text.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"Failing fields; empty when the problem is not about fields.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"credit_type":{"type":"string","description":"insufficient_balance, token_spend_limit_exceeded: the pool concerned.","enum":["minutes","lipsync_free_minutes","projects"],"x-rask-open-enum":true,"uniqueKey":"credit_type","typeLabel":"enum\u003cstring>"},"required_minutes":{"type":"integer","description":"insufficient_balance, token_spend_limit_exceeded: minutes the request needs.","format":"int32","uniqueKey":"required_minutes","typeLabel":"integer\u003cint32>"},"balance_minutes":{"type":"integer","description":"insufficient_balance: minutes available in the pool.","format":"int32","uniqueKey":"balance_minutes","typeLabel":"integer\u003cint32>"},"required_projects":{"type":"integer","description":"insufficient_balance (projects pool), token_spend_limit_exceeded (projects cap): project credits needed.","format":"int32","uniqueKey":"required_projects","typeLabel":"integer\u003cint32>"},"balance_projects":{"type":"integer","description":"insufficient_balance (projects pool): project credits available.","format":"int32","uniqueKey":"balance_projects","typeLabel":"integer\u003cint32>"},"expected_cost_minutes":{"type":"integer","description":"cost_changed: the cap the request sent.","format":"int32","uniqueKey":"expected_cost_minutes","typeLabel":"integer\u003cint32>"},"current_cost_minutes":{"type":"integer","description":"cost_changed: the current price.","format":"int32","uniqueKey":"current_cost_minutes","typeLabel":"integer\u003cint32>"},"current_etag":{"type":"string","description":"precondition_failed: the resource's current ETag.","uniqueKey":"current_etag","typeLabel":"string"},"required_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"required_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: every scope the request needs, including those of `x-rask-operation.conditional`.","uniqueKey":"required_scopes","typeLabel":"enum\u003cstring>[]"},"granted_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"granted_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: the key's scopes.","uniqueKey":"granted_scopes","typeLabel":"enum\u003cstring>[]"},"feature":{"type":"string","description":"A plan feature checked server-side on the payer's plan (403 `feature_not_in_plan`).\n\n- `api_access`: use the API at all (checked on every request)\n- `auto_dub`: dub automatically after processing (needs an active subscription)\n- `dubbing_model_choice`: choose the dubbing model; otherwise it is overridden (estimate notice)\n- `free_languages`: free_dubbing language variants\n- `glossary`: attach and manage glossaries\n- `translation_instructions`: custom translation instructions\n- `subtitle_import`: import SRT subtitles when creating a project\n- `subtitle_reimport`: replace a project's transcript from SRT (importTranscript)\n- `subtitle_download`: download subtitles (getProjectSubtitles, subtitle outputs)\n- `burned_subtitles`: export and download videos with burned-in subtitles\n- `audio_download`: download dubbed audio and the voice track\n- `multilanguage`: several target languages per media (copies)\n- `lipsync`: lip-sync\n- `lipsync_paid`: paid lip-sync runs (otherwise only the free run)\n- `lipsync_enhanced`: the Enhanced lip-sync model\n- `lipsync_download`: download lip-synced video\n- `onscreen`: on-screen text translation and download of its video\n- `voice_clones`: workspace voice clones\n- `instant_voice_clone`: a speaker's own cloned voice\n- `share_links`: revocable project share links","enum":["api_access","auto_dub","dubbing_model_choice","free_languages","glossary","translation_instructions","subtitle_import","subtitle_reimport","subtitle_download","burned_subtitles","audio_download","multilanguage","lipsync","lipsync_paid","lipsync_enhanced","lipsync_download","onscreen","voice_clones","instant_voice_clone","share_links"],"x-rask-open-enum":true,"uniqueKey":"feature","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","description":"workspace_access_suspended, source_url_not_allowed, webhook_url_not_allowed, instant_clone_not_available, job_not_resumable, localization_combination_not_supported: machine-readable reason. workspace_access_suspended: `subscription_inactive` (the owner's subscription is not active), `space_limit_exceeded` (the owner has more workspaces than the plan allows), `seat_limit_exceeded` (the key's user is beyond the plan's seats). job_not_resumable: `not_failed_localization`, `already_resumed`, `project_deleted`, `stage_result_gone`. localization_combination_not_supported: `nothing_ordered`, `audio_project`, `plan_trims_lipsync`.","uniqueKey":"reason","typeLabel":"string"},"limit":{"type":"integer","description":"limit_reached, voice_clone_limit_reached, rate_limited, too_many_waiters, too_many_concurrent_jobs, translation_batch_too_large: the limit.","format":"int32","uniqueKey":"limit","typeLabel":"integer\u003cint32>"},"used":{"type":"integer","description":"voice_clone_limit_reached: clones counted against the quota.","format":"int32","uniqueKey":"used","typeLabel":"integer\u003cint32>"},"limit_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): the key's monthly cap on the minutes pool.","format":"int32","uniqueKey":"limit_minutes","typeLabel":"integer\u003cint32>"},"spent_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): minutes spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_minutes","typeLabel":"integer\u003cint32>"},"limit_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): the key's monthly cap on project credits.","format":"int32","uniqueKey":"limit_projects","typeLabel":"integer\u003cint32>"},"spent_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): project credits spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_projects","typeLabel":"integer\u003cint32>"},"resets_at":{"type":"string","description":"token_spend_limit_exceeded: start of the next UTC month.","format":"date-time","uniqueKey":"resets_at","typeLabel":"string\u003cdate-time>"},"policy":{"type":"string","description":"rate_limited, too_many_waiters, too_many_concurrent_jobs: the exceeded policy or quota. rate_limited: credential-minute, account-minute, spend-minute, upload-hour, auth-fail-ip, translation-hour, clone-create-day, voice-settings-hour, upload-open, upload-bytes-day; too_many_waiters: long-poll (per key and per payer); too_many_concurrent_jobs: payer-concurrency, global-concurrency.","uniqueKey":"policy","typeLabel":"string"},"window_seconds":{"type":"integer","description":"rate_limited: the policy window.","format":"int32","uniqueKey":"window_seconds","typeLabel":"integer\u003cint32>"},"active_job_count":{"type":"integer","description":"too_many_concurrent_jobs: active API and MCP jobs of this type (the payer's, or all of Rask's for global-concurrency).","format":"int32","uniqueKey":"active_job_count","typeLabel":"integer\u003cint32>"},"active_jobs":{"type":"array","items":{"type":"object","description":"A non-terminal job of a project.","required":["id","type","status"],"properties":{"id":{"type":"string","description":"Job id.","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].id","typeLabel":"string"},"type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Job type. Open enum: new types are added over time.\n\n- `media_import`: registering uploaded or imported media (poll hint 3 s; cancelable)\n- `project_processing`: the project pipeline up to translation (poll hint 10 s)\n- `translation`: retranslating segments (poll hint 5 s)\n- `segment_generation`: paid voicing of chosen segments into downloadable clips (poll hint 5 s)\n- `dub`: dubbing or redubbing (poll hint 10 s)\n- `lipsync`: lip-sync (poll hint 30 s)\n- `onscreen`: on-screen text translation (poll hint 15 s; cancelable while queued)\n- `localization`: dub, lip-sync and on-screen as one run with child jobs (poll hint 15 s)\n- `voice_clone`: creating a voice clone (poll hint 10 s)\n- `export`: rendering an export (poll hint 15 s)\n- `file_restore`: restoring archived files (poll hint 300 s)","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"Job status. Monotonic: never goes backwards and never leaves a terminal state.\n\n- `queued`: accepted, not started\n- `running`: in progress\n- `succeeded`: finished; see result\n- `failed`: finished; see error\n- `canceled`: canceled, or its project was deleted (`error.code = project_deleted`)","enum":["queued","running","succeeded","failed","canceled"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].status","typeLabel":"enum\u003cstring>"}},"uniqueKey":"active_jobs.items.[INDEX]","typeLabel":"object"},"description":"project_busy: the project's active spending jobs.","uniqueKey":"active_jobs","typeLabel":"object[]"},"active_job_ids":{"type":"array","items":{"type":"string","uniqueKey":"active_job_ids.items.[INDEX]","typeLabel":"string"},"description":"transcript_busy: the active jobs that block a whole-transcript request; absent when concurrent writes kept conflicting.","uniqueKey":"active_job_ids","typeLabel":"string[]"},"segment_ids":{"type":"array","items":{"type":"string","uniqueKey":"segment_ids.items.[INDEX]","typeLabel":"string"},"description":"segment_busy: the busy segments.","uniqueKey":"segment_ids","typeLabel":"string[]"},"job_id":{"oneOf":[{"type":"string","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"job_id","typeLabel":"string | null"},"job_type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Type of `job_id` (single-flight conflicts), of the job that cannot be canceled or resumed (job_not_cancelable, job_not_resumable), or whose concurrency limit was reached (too_many_concurrent_jobs).","uniqueKey":"job_type","typeLabel":"enum\u003cstring>"},"import_job_id":{"type":"string","description":"media_not_ready: the media_import job to wait for.","uniqueKey":"import_job_id","typeLabel":"string"},"max_seconds":{"type":"integer","description":"onscreen_video_too_long: the plan's limit (`onscreen_max_video_seconds`).","format":"int32","uniqueKey":"max_seconds","typeLabel":"integer\u003cint32>"},"expired_at":{"type":"string","description":"token_expired, upload_expired: when it expired.","format":"date-time","uniqueKey":"expired_at","typeLabel":"string\u003cdate-time>"},"revoked_reason":{"type":"string","description":"token_revoked: why the key was revoked.","uniqueKey":"revoked_reason","typeLabel":"string"},"token_env":{"type":"string","description":"token_wrong_environment: the key's environment (`live` or `test`).","uniqueKey":"token_env","typeLabel":"string"},"server_env":{"type":"string","description":"token_wrong_environment: this server's environment.","uniqueKey":"server_env","typeLabel":"string"},"parameter":{"type":"string","description":"token_in_query: the query parameter that carried a credential.","uniqueKey":"parameter","typeLabel":"string"},"max_upload_bytes":{"type":"integer","description":"media_too_large: the limit in bytes (the plan's upload limit, or a voice-sample limit: 11000000 for audio and stored samples, 500000000 for video).","format":"int64","uniqueKey":"max_upload_bytes","typeLabel":"integer\u003cint64>"},"size_bytes":{"type":"integer","description":"media_too_large: the file size in bytes.","format":"int64","uniqueKey":"size_bytes","typeLabel":"integer\u003cint64>"},"max_source_duration_seconds":{"type":"number","description":"media_too_long: the plan's limit.","format":"double","uniqueKey":"max_source_duration_seconds","typeLabel":"number\u003cdouble>"},"duration_seconds":{"type":"number","description":"media_too_long: the media duration.","format":"double","uniqueKey":"duration_seconds","typeLabel":"number\u003cdouble>"},"declared_size_bytes":{"type":"integer","description":"upload_size_mismatch: size_bytes of the upload.","format":"int64","uniqueKey":"declared_size_bytes","typeLabel":"integer\u003cint64>"},"actual_size_bytes":{"type":"integer","description":"upload_size_mismatch: size of the stored object.","format":"int64","uniqueKey":"actual_size_bytes","typeLabel":"integer\u003cint64>"},"project_count":{"type":"integer","description":"folder_not_empty: live projects in the folder.","format":"int32","uniqueKey":"project_count","typeLabel":"integer\u003cint32>"},"content_type":{"type":"string","description":"unsupported_media_type: the rejected content type.","uniqueKey":"content_type","typeLabel":"string"},"cause_code":{"type":"string","description":"Job errors. lipsync_rejected: the code that rejected the automatic start. dub_voiceover_failed, dub_merge_failed, dub_failed, dub_timeout, segment_generation_failed, segment_generation_timeout (always `unknown` on a timeout): the failure class, one of `segment_changed`, `insufficient_speech`, `voice_configuration`, `missing_translation`, `tts_provider_failed`, `merge_failed`, `unknown` (the default when the class cannot be told). localization_stage_failed, localization_stage_skipped: the code of the stage's own error; `localization_combination_not_supported` when a plan change during the run trimmed the lip-sync, so on-screen was skipped.","uniqueKey":"cause_code","typeLabel":"string"},"failed_stage":{"type":"string","description":"localization_stage_failed, localization_stage_skipped (job error): the stage that ended the run.","enum":["dub","lipsync","onscreen"],"x-rask-open-enum":true,"uniqueKey":"failed_stage","typeLabel":"enum\u003cstring>"}},"description":"RFC 9457 problem details (`application/problem+json`), used for every 4xx/5xx response and for `Job.error`. Branch on `code`; follow `hint`; act as `recommendation` says; retry as `retry` says. An extension member has one type across all codes and never reuses an RFC 9457 or Problem member name (hence `job_type`, and `active_job_count` for a count beside `active_jobs` for a list). Extension members appear only with the codes that define them (see each property). The problem registry and one documentation page per code live at https://docs.api.rask.ai/errors.","additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"precondition_failed":{"title":"precondition_failed","value":{"type":"https://docs.api.rask.ai/errors/precondition_failed","title":"Precondition failed","status":412,"detail":"The ETag sent with the request (If-Match, or an etag in the mergeSegments body) is stale.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"precondition_failed","retryable":false,"retry":"none","recommendation":"fix_request","hint":"Re-read the resource, re-apply your change to it and retry with its current ETag.","errors":[],"current_etag":"\"s-a417e9824d09b346\""}}},"exampleType":"examples"}},"exampleType":"examples"},"56ca6398-88d3-4cb8-baa1-0a36e4449673":{"description":"Unprocessable request. Codes: `idempotency_key_reused`, `validation_failed`.","headers":{"X-Request-Id":{"description":"Request id (UUID); also the problem `instance` (`urn:uuid:\u003cid>`). Quote it to support.","schema":{"type":"string"},"example":"7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93"},"RateLimit":{"description":"Remaining quota of the most constrained policy (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";r=597;t=42"},"RateLimit-Policy":{"description":"Rate-limit policies that apply to the key (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";q=600;w=60, \"account-minute\";q=1800;w=60"}},"content":{"application/problem+json":{"schema":{"type":"object","required":["type","title","status","detail","instance","code","retryable","retry","recommendation","hint","errors"],"properties":{"type":{"type":"string","description":"`https://docs.api.rask.ai/errors/{code}`: one documentation page per code.","format":"uri","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short summary of the problem type.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"HTTP status (for a job's error: the status the same failure would have synchronously).","format":"int32","minimum":400,"maximum":599,"isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"detail":{"type":"string","description":"Explanation of this occurrence. May name ids, never user text.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"`urn:uuid:\u003crequest_id>` (also in `X-Request-Id`); for a job's error, `/v3/jobs/{job_id}`.","format":"uri-reference","isRequired":true,"uniqueKey":"instance","typeLabel":"string\u003curi-reference>"},"code":{"type":"string","description":"Stable snake_case code from the problem registry. Branch on this value, never on text.","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"retryable":{"type":"boolean","description":"True when a retry can succeed; `retry` says how.","isRequired":true,"uniqueKey":"retryable","typeLabel":"boolean"},"retry":{"type":"string","description":"How to retry: `same_key` for request problems that may succeed later, `new_key` for job errors worth a new attempt, `none` otherwise. `retryable` is true exactly when this is not `none`.","enum":["same_key","new_key","none"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"retry","typeLabel":"enum\u003cstring>"},"recommendation":{"type":"string","description":"What has to happen before a retry can succeed; set per code, and per `cause_code` for dub and generation failures (`components.x-rask-job-errors`). `cause_code: unknown`: `retry_later`, or `contact_support` when the same project's previous job of that type also failed with `unknown`.","enum":["fix_request","wait","top_up","retry_later","contact_support"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"recommendation","typeLabel":"enum\u003cstring>"},"hint":{"oneOf":[{"type":"string","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.0","typeLabel":"string"},{"type":"null","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"hint","typeLabel":"string | null"},"errors":{"type":"array","items":{"type":"object","description":"One failing field of a request.","required":["pointer","code","detail"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body (`/operations/3/start_seconds`), or a `query:`, `header:` or `path:` prefixed parameter name.","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"code":{"type":"string","description":"Stable snake_case code of this field error. Segment writes: `invalid_time`, `start_not_before_end`, `beyond_media_duration`, `segment_too_short`, `segment_too_long`, `invalid_speaker_id`, `too_many_speakers`, `text_too_long`, `invalid_text`, `transcript_too_large`, `split_point_outside_segment`, `segments_not_adjacent`, `too_many_segments`, `segment_targeted_twice`, `unknown_segment`, `variant_not_found`; spending requests: `expected_cost_required`; uploads: `part_missing`; generic schema failures use JSON Schema keyword names (`required`, `maxLength`, ...).","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation. Never contains user text.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"Failing fields; empty when the problem is not about fields.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"credit_type":{"type":"string","description":"insufficient_balance, token_spend_limit_exceeded: the pool concerned.","enum":["minutes","lipsync_free_minutes","projects"],"x-rask-open-enum":true,"uniqueKey":"credit_type","typeLabel":"enum\u003cstring>"},"required_minutes":{"type":"integer","description":"insufficient_balance, token_spend_limit_exceeded: minutes the request needs.","format":"int32","uniqueKey":"required_minutes","typeLabel":"integer\u003cint32>"},"balance_minutes":{"type":"integer","description":"insufficient_balance: minutes available in the pool.","format":"int32","uniqueKey":"balance_minutes","typeLabel":"integer\u003cint32>"},"required_projects":{"type":"integer","description":"insufficient_balance (projects pool), token_spend_limit_exceeded (projects cap): project credits needed.","format":"int32","uniqueKey":"required_projects","typeLabel":"integer\u003cint32>"},"balance_projects":{"type":"integer","description":"insufficient_balance (projects pool): project credits available.","format":"int32","uniqueKey":"balance_projects","typeLabel":"integer\u003cint32>"},"expected_cost_minutes":{"type":"integer","description":"cost_changed: the cap the request sent.","format":"int32","uniqueKey":"expected_cost_minutes","typeLabel":"integer\u003cint32>"},"current_cost_minutes":{"type":"integer","description":"cost_changed: the current price.","format":"int32","uniqueKey":"current_cost_minutes","typeLabel":"integer\u003cint32>"},"current_etag":{"type":"string","description":"precondition_failed: the resource's current ETag.","uniqueKey":"current_etag","typeLabel":"string"},"required_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"required_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: every scope the request needs, including those of `x-rask-operation.conditional`.","uniqueKey":"required_scopes","typeLabel":"enum\u003cstring>[]"},"granted_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"granted_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: the key's scopes.","uniqueKey":"granted_scopes","typeLabel":"enum\u003cstring>[]"},"feature":{"type":"string","description":"A plan feature checked server-side on the payer's plan (403 `feature_not_in_plan`).\n\n- `api_access`: use the API at all (checked on every request)\n- `auto_dub`: dub automatically after processing (needs an active subscription)\n- `dubbing_model_choice`: choose the dubbing model; otherwise it is overridden (estimate notice)\n- `free_languages`: free_dubbing language variants\n- `glossary`: attach and manage glossaries\n- `translation_instructions`: custom translation instructions\n- `subtitle_import`: import SRT subtitles when creating a project\n- `subtitle_reimport`: replace a project's transcript from SRT (importTranscript)\n- `subtitle_download`: download subtitles (getProjectSubtitles, subtitle outputs)\n- `burned_subtitles`: export and download videos with burned-in subtitles\n- `audio_download`: download dubbed audio and the voice track\n- `multilanguage`: several target languages per media (copies)\n- `lipsync`: lip-sync\n- `lipsync_paid`: paid lip-sync runs (otherwise only the free run)\n- `lipsync_enhanced`: the Enhanced lip-sync model\n- `lipsync_download`: download lip-synced video\n- `onscreen`: on-screen text translation and download of its video\n- `voice_clones`: workspace voice clones\n- `instant_voice_clone`: a speaker's own cloned voice\n- `share_links`: revocable project share links","enum":["api_access","auto_dub","dubbing_model_choice","free_languages","glossary","translation_instructions","subtitle_import","subtitle_reimport","subtitle_download","burned_subtitles","audio_download","multilanguage","lipsync","lipsync_paid","lipsync_enhanced","lipsync_download","onscreen","voice_clones","instant_voice_clone","share_links"],"x-rask-open-enum":true,"uniqueKey":"feature","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","description":"workspace_access_suspended, source_url_not_allowed, webhook_url_not_allowed, instant_clone_not_available, job_not_resumable, localization_combination_not_supported: machine-readable reason. workspace_access_suspended: `subscription_inactive` (the owner's subscription is not active), `space_limit_exceeded` (the owner has more workspaces than the plan allows), `seat_limit_exceeded` (the key's user is beyond the plan's seats). job_not_resumable: `not_failed_localization`, `already_resumed`, `project_deleted`, `stage_result_gone`. localization_combination_not_supported: `nothing_ordered`, `audio_project`, `plan_trims_lipsync`.","uniqueKey":"reason","typeLabel":"string"},"limit":{"type":"integer","description":"limit_reached, voice_clone_limit_reached, rate_limited, too_many_waiters, too_many_concurrent_jobs, translation_batch_too_large: the limit.","format":"int32","uniqueKey":"limit","typeLabel":"integer\u003cint32>"},"used":{"type":"integer","description":"voice_clone_limit_reached: clones counted against the quota.","format":"int32","uniqueKey":"used","typeLabel":"integer\u003cint32>"},"limit_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): the key's monthly cap on the minutes pool.","format":"int32","uniqueKey":"limit_minutes","typeLabel":"integer\u003cint32>"},"spent_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): minutes spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_minutes","typeLabel":"integer\u003cint32>"},"limit_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): the key's monthly cap on project credits.","format":"int32","uniqueKey":"limit_projects","typeLabel":"integer\u003cint32>"},"spent_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): project credits spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_projects","typeLabel":"integer\u003cint32>"},"resets_at":{"type":"string","description":"token_spend_limit_exceeded: start of the next UTC month.","format":"date-time","uniqueKey":"resets_at","typeLabel":"string\u003cdate-time>"},"policy":{"type":"string","description":"rate_limited, too_many_waiters, too_many_concurrent_jobs: the exceeded policy or quota. rate_limited: credential-minute, account-minute, spend-minute, upload-hour, auth-fail-ip, translation-hour, clone-create-day, voice-settings-hour, upload-open, upload-bytes-day; too_many_waiters: long-poll (per key and per payer); too_many_concurrent_jobs: payer-concurrency, global-concurrency.","uniqueKey":"policy","typeLabel":"string"},"window_seconds":{"type":"integer","description":"rate_limited: the policy window.","format":"int32","uniqueKey":"window_seconds","typeLabel":"integer\u003cint32>"},"active_job_count":{"type":"integer","description":"too_many_concurrent_jobs: active API and MCP jobs of this type (the payer's, or all of Rask's for global-concurrency).","format":"int32","uniqueKey":"active_job_count","typeLabel":"integer\u003cint32>"},"active_jobs":{"type":"array","items":{"type":"object","description":"A non-terminal job of a project.","required":["id","type","status"],"properties":{"id":{"type":"string","description":"Job id.","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].id","typeLabel":"string"},"type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Job type. Open enum: new types are added over time.\n\n- `media_import`: registering uploaded or imported media (poll hint 3 s; cancelable)\n- `project_processing`: the project pipeline up to translation (poll hint 10 s)\n- `translation`: retranslating segments (poll hint 5 s)\n- `segment_generation`: paid voicing of chosen segments into downloadable clips (poll hint 5 s)\n- `dub`: dubbing or redubbing (poll hint 10 s)\n- `lipsync`: lip-sync (poll hint 30 s)\n- `onscreen`: on-screen text translation (poll hint 15 s; cancelable while queued)\n- `localization`: dub, lip-sync and on-screen as one run with child jobs (poll hint 15 s)\n- `voice_clone`: creating a voice clone (poll hint 10 s)\n- `export`: rendering an export (poll hint 15 s)\n- `file_restore`: restoring archived files (poll hint 300 s)","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"Job status. Monotonic: never goes backwards and never leaves a terminal state.\n\n- `queued`: accepted, not started\n- `running`: in progress\n- `succeeded`: finished; see result\n- `failed`: finished; see error\n- `canceled`: canceled, or its project was deleted (`error.code = project_deleted`)","enum":["queued","running","succeeded","failed","canceled"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].status","typeLabel":"enum\u003cstring>"}},"uniqueKey":"active_jobs.items.[INDEX]","typeLabel":"object"},"description":"project_busy: the project's active spending jobs.","uniqueKey":"active_jobs","typeLabel":"object[]"},"active_job_ids":{"type":"array","items":{"type":"string","uniqueKey":"active_job_ids.items.[INDEX]","typeLabel":"string"},"description":"transcript_busy: the active jobs that block a whole-transcript request; absent when concurrent writes kept conflicting.","uniqueKey":"active_job_ids","typeLabel":"string[]"},"segment_ids":{"type":"array","items":{"type":"string","uniqueKey":"segment_ids.items.[INDEX]","typeLabel":"string"},"description":"segment_busy: the busy segments.","uniqueKey":"segment_ids","typeLabel":"string[]"},"job_id":{"oneOf":[{"type":"string","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"job_id","typeLabel":"string | null"},"job_type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Type of `job_id` (single-flight conflicts), of the job that cannot be canceled or resumed (job_not_cancelable, job_not_resumable), or whose concurrency limit was reached (too_many_concurrent_jobs).","uniqueKey":"job_type","typeLabel":"enum\u003cstring>"},"import_job_id":{"type":"string","description":"media_not_ready: the media_import job to wait for.","uniqueKey":"import_job_id","typeLabel":"string"},"max_seconds":{"type":"integer","description":"onscreen_video_too_long: the plan's limit (`onscreen_max_video_seconds`).","format":"int32","uniqueKey":"max_seconds","typeLabel":"integer\u003cint32>"},"expired_at":{"type":"string","description":"token_expired, upload_expired: when it expired.","format":"date-time","uniqueKey":"expired_at","typeLabel":"string\u003cdate-time>"},"revoked_reason":{"type":"string","description":"token_revoked: why the key was revoked.","uniqueKey":"revoked_reason","typeLabel":"string"},"token_env":{"type":"string","description":"token_wrong_environment: the key's environment (`live` or `test`).","uniqueKey":"token_env","typeLabel":"string"},"server_env":{"type":"string","description":"token_wrong_environment: this server's environment.","uniqueKey":"server_env","typeLabel":"string"},"parameter":{"type":"string","description":"token_in_query: the query parameter that carried a credential.","uniqueKey":"parameter","typeLabel":"string"},"max_upload_bytes":{"type":"integer","description":"media_too_large: the limit in bytes (the plan's upload limit, or a voice-sample limit: 11000000 for audio and stored samples, 500000000 for video).","format":"int64","uniqueKey":"max_upload_bytes","typeLabel":"integer\u003cint64>"},"size_bytes":{"type":"integer","description":"media_too_large: the file size in bytes.","format":"int64","uniqueKey":"size_bytes","typeLabel":"integer\u003cint64>"},"max_source_duration_seconds":{"type":"number","description":"media_too_long: the plan's limit.","format":"double","uniqueKey":"max_source_duration_seconds","typeLabel":"number\u003cdouble>"},"duration_seconds":{"type":"number","description":"media_too_long: the media duration.","format":"double","uniqueKey":"duration_seconds","typeLabel":"number\u003cdouble>"},"declared_size_bytes":{"type":"integer","description":"upload_size_mismatch: size_bytes of the upload.","format":"int64","uniqueKey":"declared_size_bytes","typeLabel":"integer\u003cint64>"},"actual_size_bytes":{"type":"integer","description":"upload_size_mismatch: size of the stored object.","format":"int64","uniqueKey":"actual_size_bytes","typeLabel":"integer\u003cint64>"},"project_count":{"type":"integer","description":"folder_not_empty: live projects in the folder.","format":"int32","uniqueKey":"project_count","typeLabel":"integer\u003cint32>"},"content_type":{"type":"string","description":"unsupported_media_type: the rejected content type.","uniqueKey":"content_type","typeLabel":"string"},"cause_code":{"type":"string","description":"Job errors. lipsync_rejected: the code that rejected the automatic start. dub_voiceover_failed, dub_merge_failed, dub_failed, dub_timeout, segment_generation_failed, segment_generation_timeout (always `unknown` on a timeout): the failure class, one of `segment_changed`, `insufficient_speech`, `voice_configuration`, `missing_translation`, `tts_provider_failed`, `merge_failed`, `unknown` (the default when the class cannot be told). localization_stage_failed, localization_stage_skipped: the code of the stage's own error; `localization_combination_not_supported` when a plan change during the run trimmed the lip-sync, so on-screen was skipped.","uniqueKey":"cause_code","typeLabel":"string"},"failed_stage":{"type":"string","description":"localization_stage_failed, localization_stage_skipped (job error): the stage that ended the run.","enum":["dub","lipsync","onscreen"],"x-rask-open-enum":true,"uniqueKey":"failed_stage","typeLabel":"enum\u003cstring>"}},"description":"RFC 9457 problem details (`application/problem+json`), used for every 4xx/5xx response and for `Job.error`. Branch on `code`; follow `hint`; act as `recommendation` says; retry as `retry` says. An extension member has one type across all codes and never reuses an RFC 9457 or Problem member name (hence `job_type`, and `active_job_count` for a count beside `active_jobs` for a list). Extension members appear only with the codes that define them (see each property). The problem registry and one documentation page per code live at https://docs.api.rask.ai/errors.","additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"validation_failed":{"title":"validation_failed","value":{"type":"https://docs.api.rask.ai/errors/validation_failed","title":"Validation failed","status":422,"detail":"The request has 1 invalid field.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"validation_failed","retryable":false,"retry":"none","recommendation":"fix_request","hint":"Fix the fields listed in errors[] and retry.","errors":[{"pointer":"/expected_cost_minutes","code":"expected_cost_required","detail":"expected_cost_minutes is required when auto_dub is true."}]}},"idempotency_key_reused":{"title":"idempotency_key_reused","value":{"type":"https://docs.api.rask.ai/errors/idempotency_key_reused","title":"Idempotency key reused","status":422,"detail":"This Idempotency-Key was used with a different request in the last 24 hours.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"idempotency_key_reused","retryable":false,"retry":"none","recommendation":"fix_request","hint":"Use a new Idempotency-Key for a different request.","errors":[]}}},"exampleType":"examples"}},"exampleType":"examples"},"c70f3854-c49c-483c-9442-e215a4e1a842":{"description":"Precondition required. Codes: `precondition_required`.","headers":{"X-Request-Id":{"description":"Request id (UUID); also the problem `instance` (`urn:uuid:\u003cid>`). Quote it to support.","schema":{"type":"string"},"example":"7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93"},"RateLimit":{"description":"Remaining quota of the most constrained policy (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";r=597;t=42"},"RateLimit-Policy":{"description":"Rate-limit policies that apply to the key (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";q=600;w=60, \"account-minute\";q=1800;w=60"}},"content":{"application/problem+json":{"schema":{"type":"object","required":["type","title","status","detail","instance","code","retryable","retry","recommendation","hint","errors"],"properties":{"type":{"type":"string","description":"`https://docs.api.rask.ai/errors/{code}`: one documentation page per code.","format":"uri","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short summary of the problem type.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"HTTP status (for a job's error: the status the same failure would have synchronously).","format":"int32","minimum":400,"maximum":599,"isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"detail":{"type":"string","description":"Explanation of this occurrence. May name ids, never user text.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"`urn:uuid:\u003crequest_id>` (also in `X-Request-Id`); for a job's error, `/v3/jobs/{job_id}`.","format":"uri-reference","isRequired":true,"uniqueKey":"instance","typeLabel":"string\u003curi-reference>"},"code":{"type":"string","description":"Stable snake_case code from the problem registry. Branch on this value, never on text.","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"retryable":{"type":"boolean","description":"True when a retry can succeed; `retry` says how.","isRequired":true,"uniqueKey":"retryable","typeLabel":"boolean"},"retry":{"type":"string","description":"How to retry: `same_key` for request problems that may succeed later, `new_key` for job errors worth a new attempt, `none` otherwise. `retryable` is true exactly when this is not `none`.","enum":["same_key","new_key","none"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"retry","typeLabel":"enum\u003cstring>"},"recommendation":{"type":"string","description":"What has to happen before a retry can succeed; set per code, and per `cause_code` for dub and generation failures (`components.x-rask-job-errors`). `cause_code: unknown`: `retry_later`, or `contact_support` when the same project's previous job of that type also failed with `unknown`.","enum":["fix_request","wait","top_up","retry_later","contact_support"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"recommendation","typeLabel":"enum\u003cstring>"},"hint":{"oneOf":[{"type":"string","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.0","typeLabel":"string"},{"type":"null","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"hint","typeLabel":"string | null"},"errors":{"type":"array","items":{"type":"object","description":"One failing field of a request.","required":["pointer","code","detail"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body (`/operations/3/start_seconds`), or a `query:`, `header:` or `path:` prefixed parameter name.","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"code":{"type":"string","description":"Stable snake_case code of this field error. Segment writes: `invalid_time`, `start_not_before_end`, `beyond_media_duration`, `segment_too_short`, `segment_too_long`, `invalid_speaker_id`, `too_many_speakers`, `text_too_long`, `invalid_text`, `transcript_too_large`, `split_point_outside_segment`, `segments_not_adjacent`, `too_many_segments`, `segment_targeted_twice`, `unknown_segment`, `variant_not_found`; spending requests: `expected_cost_required`; uploads: `part_missing`; generic schema failures use JSON Schema keyword names (`required`, `maxLength`, ...).","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation. Never contains user text.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"Failing fields; empty when the problem is not about fields.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"credit_type":{"type":"string","description":"insufficient_balance, token_spend_limit_exceeded: the pool concerned.","enum":["minutes","lipsync_free_minutes","projects"],"x-rask-open-enum":true,"uniqueKey":"credit_type","typeLabel":"enum\u003cstring>"},"required_minutes":{"type":"integer","description":"insufficient_balance, token_spend_limit_exceeded: minutes the request needs.","format":"int32","uniqueKey":"required_minutes","typeLabel":"integer\u003cint32>"},"balance_minutes":{"type":"integer","description":"insufficient_balance: minutes available in the pool.","format":"int32","uniqueKey":"balance_minutes","typeLabel":"integer\u003cint32>"},"required_projects":{"type":"integer","description":"insufficient_balance (projects pool), token_spend_limit_exceeded (projects cap): project credits needed.","format":"int32","uniqueKey":"required_projects","typeLabel":"integer\u003cint32>"},"balance_projects":{"type":"integer","description":"insufficient_balance (projects pool): project credits available.","format":"int32","uniqueKey":"balance_projects","typeLabel":"integer\u003cint32>"},"expected_cost_minutes":{"type":"integer","description":"cost_changed: the cap the request sent.","format":"int32","uniqueKey":"expected_cost_minutes","typeLabel":"integer\u003cint32>"},"current_cost_minutes":{"type":"integer","description":"cost_changed: the current price.","format":"int32","uniqueKey":"current_cost_minutes","typeLabel":"integer\u003cint32>"},"current_etag":{"type":"string","description":"precondition_failed: the resource's current ETag.","uniqueKey":"current_etag","typeLabel":"string"},"required_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"required_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: every scope the request needs, including those of `x-rask-operation.conditional`.","uniqueKey":"required_scopes","typeLabel":"enum\u003cstring>[]"},"granted_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"granted_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: the key's scopes.","uniqueKey":"granted_scopes","typeLabel":"enum\u003cstring>[]"},"feature":{"type":"string","description":"A plan feature checked server-side on the payer's plan (403 `feature_not_in_plan`).\n\n- `api_access`: use the API at all (checked on every request)\n- `auto_dub`: dub automatically after processing (needs an active subscription)\n- `dubbing_model_choice`: choose the dubbing model; otherwise it is overridden (estimate notice)\n- `free_languages`: free_dubbing language variants\n- `glossary`: attach and manage glossaries\n- `translation_instructions`: custom translation instructions\n- `subtitle_import`: import SRT subtitles when creating a project\n- `subtitle_reimport`: replace a project's transcript from SRT (importTranscript)\n- `subtitle_download`: download subtitles (getProjectSubtitles, subtitle outputs)\n- `burned_subtitles`: export and download videos with burned-in subtitles\n- `audio_download`: download dubbed audio and the voice track\n- `multilanguage`: several target languages per media (copies)\n- `lipsync`: lip-sync\n- `lipsync_paid`: paid lip-sync runs (otherwise only the free run)\n- `lipsync_enhanced`: the Enhanced lip-sync model\n- `lipsync_download`: download lip-synced video\n- `onscreen`: on-screen text translation and download of its video\n- `voice_clones`: workspace voice clones\n- `instant_voice_clone`: a speaker's own cloned voice\n- `share_links`: revocable project share links","enum":["api_access","auto_dub","dubbing_model_choice","free_languages","glossary","translation_instructions","subtitle_import","subtitle_reimport","subtitle_download","burned_subtitles","audio_download","multilanguage","lipsync","lipsync_paid","lipsync_enhanced","lipsync_download","onscreen","voice_clones","instant_voice_clone","share_links"],"x-rask-open-enum":true,"uniqueKey":"feature","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","description":"workspace_access_suspended, source_url_not_allowed, webhook_url_not_allowed, instant_clone_not_available, job_not_resumable, localization_combination_not_supported: machine-readable reason. workspace_access_suspended: `subscription_inactive` (the owner's subscription is not active), `space_limit_exceeded` (the owner has more workspaces than the plan allows), `seat_limit_exceeded` (the key's user is beyond the plan's seats). job_not_resumable: `not_failed_localization`, `already_resumed`, `project_deleted`, `stage_result_gone`. localization_combination_not_supported: `nothing_ordered`, `audio_project`, `plan_trims_lipsync`.","uniqueKey":"reason","typeLabel":"string"},"limit":{"type":"integer","description":"limit_reached, voice_clone_limit_reached, rate_limited, too_many_waiters, too_many_concurrent_jobs, translation_batch_too_large: the limit.","format":"int32","uniqueKey":"limit","typeLabel":"integer\u003cint32>"},"used":{"type":"integer","description":"voice_clone_limit_reached: clones counted against the quota.","format":"int32","uniqueKey":"used","typeLabel":"integer\u003cint32>"},"limit_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): the key's monthly cap on the minutes pool.","format":"int32","uniqueKey":"limit_minutes","typeLabel":"integer\u003cint32>"},"spent_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): minutes spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_minutes","typeLabel":"integer\u003cint32>"},"limit_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): the key's monthly cap on project credits.","format":"int32","uniqueKey":"limit_projects","typeLabel":"integer\u003cint32>"},"spent_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): project credits spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_projects","typeLabel":"integer\u003cint32>"},"resets_at":{"type":"string","description":"token_spend_limit_exceeded: start of the next UTC month.","format":"date-time","uniqueKey":"resets_at","typeLabel":"string\u003cdate-time>"},"policy":{"type":"string","description":"rate_limited, too_many_waiters, too_many_concurrent_jobs: the exceeded policy or quota. rate_limited: credential-minute, account-minute, spend-minute, upload-hour, auth-fail-ip, translation-hour, clone-create-day, voice-settings-hour, upload-open, upload-bytes-day; too_many_waiters: long-poll (per key and per payer); too_many_concurrent_jobs: payer-concurrency, global-concurrency.","uniqueKey":"policy","typeLabel":"string"},"window_seconds":{"type":"integer","description":"rate_limited: the policy window.","format":"int32","uniqueKey":"window_seconds","typeLabel":"integer\u003cint32>"},"active_job_count":{"type":"integer","description":"too_many_concurrent_jobs: active API and MCP jobs of this type (the payer's, or all of Rask's for global-concurrency).","format":"int32","uniqueKey":"active_job_count","typeLabel":"integer\u003cint32>"},"active_jobs":{"type":"array","items":{"type":"object","description":"A non-terminal job of a project.","required":["id","type","status"],"properties":{"id":{"type":"string","description":"Job id.","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].id","typeLabel":"string"},"type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Job type. Open enum: new types are added over time.\n\n- `media_import`: registering uploaded or imported media (poll hint 3 s; cancelable)\n- `project_processing`: the project pipeline up to translation (poll hint 10 s)\n- `translation`: retranslating segments (poll hint 5 s)\n- `segment_generation`: paid voicing of chosen segments into downloadable clips (poll hint 5 s)\n- `dub`: dubbing or redubbing (poll hint 10 s)\n- `lipsync`: lip-sync (poll hint 30 s)\n- `onscreen`: on-screen text translation (poll hint 15 s; cancelable while queued)\n- `localization`: dub, lip-sync and on-screen as one run with child jobs (poll hint 15 s)\n- `voice_clone`: creating a voice clone (poll hint 10 s)\n- `export`: rendering an export (poll hint 15 s)\n- `file_restore`: restoring archived files (poll hint 300 s)","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"Job status. Monotonic: never goes backwards and never leaves a terminal state.\n\n- `queued`: accepted, not started\n- `running`: in progress\n- `succeeded`: finished; see result\n- `failed`: finished; see error\n- `canceled`: canceled, or its project was deleted (`error.code = project_deleted`)","enum":["queued","running","succeeded","failed","canceled"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].status","typeLabel":"enum\u003cstring>"}},"uniqueKey":"active_jobs.items.[INDEX]","typeLabel":"object"},"description":"project_busy: the project's active spending jobs.","uniqueKey":"active_jobs","typeLabel":"object[]"},"active_job_ids":{"type":"array","items":{"type":"string","uniqueKey":"active_job_ids.items.[INDEX]","typeLabel":"string"},"description":"transcript_busy: the active jobs that block a whole-transcript request; absent when concurrent writes kept conflicting.","uniqueKey":"active_job_ids","typeLabel":"string[]"},"segment_ids":{"type":"array","items":{"type":"string","uniqueKey":"segment_ids.items.[INDEX]","typeLabel":"string"},"description":"segment_busy: the busy segments.","uniqueKey":"segment_ids","typeLabel":"string[]"},"job_id":{"oneOf":[{"type":"string","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"job_id","typeLabel":"string | null"},"job_type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Type of `job_id` (single-flight conflicts), of the job that cannot be canceled or resumed (job_not_cancelable, job_not_resumable), or whose concurrency limit was reached (too_many_concurrent_jobs).","uniqueKey":"job_type","typeLabel":"enum\u003cstring>"},"import_job_id":{"type":"string","description":"media_not_ready: the media_import job to wait for.","uniqueKey":"import_job_id","typeLabel":"string"},"max_seconds":{"type":"integer","description":"onscreen_video_too_long: the plan's limit (`onscreen_max_video_seconds`).","format":"int32","uniqueKey":"max_seconds","typeLabel":"integer\u003cint32>"},"expired_at":{"type":"string","description":"token_expired, upload_expired: when it expired.","format":"date-time","uniqueKey":"expired_at","typeLabel":"string\u003cdate-time>"},"revoked_reason":{"type":"string","description":"token_revoked: why the key was revoked.","uniqueKey":"revoked_reason","typeLabel":"string"},"token_env":{"type":"string","description":"token_wrong_environment: the key's environment (`live` or `test`).","uniqueKey":"token_env","typeLabel":"string"},"server_env":{"type":"string","description":"token_wrong_environment: this server's environment.","uniqueKey":"server_env","typeLabel":"string"},"parameter":{"type":"string","description":"token_in_query: the query parameter that carried a credential.","uniqueKey":"parameter","typeLabel":"string"},"max_upload_bytes":{"type":"integer","description":"media_too_large: the limit in bytes (the plan's upload limit, or a voice-sample limit: 11000000 for audio and stored samples, 500000000 for video).","format":"int64","uniqueKey":"max_upload_bytes","typeLabel":"integer\u003cint64>"},"size_bytes":{"type":"integer","description":"media_too_large: the file size in bytes.","format":"int64","uniqueKey":"size_bytes","typeLabel":"integer\u003cint64>"},"max_source_duration_seconds":{"type":"number","description":"media_too_long: the plan's limit.","format":"double","uniqueKey":"max_source_duration_seconds","typeLabel":"number\u003cdouble>"},"duration_seconds":{"type":"number","description":"media_too_long: the media duration.","format":"double","uniqueKey":"duration_seconds","typeLabel":"number\u003cdouble>"},"declared_size_bytes":{"type":"integer","description":"upload_size_mismatch: size_bytes of the upload.","format":"int64","uniqueKey":"declared_size_bytes","typeLabel":"integer\u003cint64>"},"actual_size_bytes":{"type":"integer","description":"upload_size_mismatch: size of the stored object.","format":"int64","uniqueKey":"actual_size_bytes","typeLabel":"integer\u003cint64>"},"project_count":{"type":"integer","description":"folder_not_empty: live projects in the folder.","format":"int32","uniqueKey":"project_count","typeLabel":"integer\u003cint32>"},"content_type":{"type":"string","description":"unsupported_media_type: the rejected content type.","uniqueKey":"content_type","typeLabel":"string"},"cause_code":{"type":"string","description":"Job errors. lipsync_rejected: the code that rejected the automatic start. dub_voiceover_failed, dub_merge_failed, dub_failed, dub_timeout, segment_generation_failed, segment_generation_timeout (always `unknown` on a timeout): the failure class, one of `segment_changed`, `insufficient_speech`, `voice_configuration`, `missing_translation`, `tts_provider_failed`, `merge_failed`, `unknown` (the default when the class cannot be told). localization_stage_failed, localization_stage_skipped: the code of the stage's own error; `localization_combination_not_supported` when a plan change during the run trimmed the lip-sync, so on-screen was skipped.","uniqueKey":"cause_code","typeLabel":"string"},"failed_stage":{"type":"string","description":"localization_stage_failed, localization_stage_skipped (job error): the stage that ended the run.","enum":["dub","lipsync","onscreen"],"x-rask-open-enum":true,"uniqueKey":"failed_stage","typeLabel":"enum\u003cstring>"}},"description":"RFC 9457 problem details (`application/problem+json`), used for every 4xx/5xx response and for `Job.error`. Branch on `code`; follow `hint`; act as `recommendation` says; retry as `retry` says. An extension member has one type across all codes and never reuses an RFC 9457 or Problem member name (hence `job_type`, and `active_job_count` for a count beside `active_jobs` for a list). Extension members appear only with the codes that define them (see each property). The problem registry and one documentation page per code live at https://docs.api.rask.ai/errors.","additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"precondition_required":{"title":"precondition_required","value":{"type":"https://docs.api.rask.ai/errors/precondition_required","title":"Precondition required","status":428,"detail":"This edit needs an If-Match header with the current ETag.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"precondition_required","retryable":false,"retry":"none","recommendation":"fix_request","hint":"Read the resource and send its ETag in If-Match.","errors":[]}}},"exampleType":"examples"}},"exampleType":"examples"},"527f5b4c-c9b0-483c-b265-2085aa4abfbf":{"description":"Too many requests. Codes: `rate_limited`.","headers":{"X-Request-Id":{"description":"Request id (UUID); also the problem `instance` (`urn:uuid:\u003cid>`). Quote it to support.","schema":{"type":"string"},"example":"7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93"},"RateLimit":{"description":"Remaining quota of the most constrained policy (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";r=597;t=42"},"RateLimit-Policy":{"description":"Rate-limit policies that apply to the key (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";q=600;w=60, \"account-minute\";q=1800;w=60"},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","format":"int32","minimum":0},"example":30}},"content":{"application/problem+json":{"schema":{"type":"object","required":["type","title","status","detail","instance","code","retryable","retry","recommendation","hint","errors"],"properties":{"type":{"type":"string","description":"`https://docs.api.rask.ai/errors/{code}`: one documentation page per code.","format":"uri","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short summary of the problem type.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"HTTP status (for a job's error: the status the same failure would have synchronously).","format":"int32","minimum":400,"maximum":599,"isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"detail":{"type":"string","description":"Explanation of this occurrence. May name ids, never user text.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"`urn:uuid:\u003crequest_id>` (also in `X-Request-Id`); for a job's error, `/v3/jobs/{job_id}`.","format":"uri-reference","isRequired":true,"uniqueKey":"instance","typeLabel":"string\u003curi-reference>"},"code":{"type":"string","description":"Stable snake_case code from the problem registry. Branch on this value, never on text.","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"retryable":{"type":"boolean","description":"True when a retry can succeed; `retry` says how.","isRequired":true,"uniqueKey":"retryable","typeLabel":"boolean"},"retry":{"type":"string","description":"How to retry: `same_key` for request problems that may succeed later, `new_key` for job errors worth a new attempt, `none` otherwise. `retryable` is true exactly when this is not `none`.","enum":["same_key","new_key","none"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"retry","typeLabel":"enum\u003cstring>"},"recommendation":{"type":"string","description":"What has to happen before a retry can succeed; set per code, and per `cause_code` for dub and generation failures (`components.x-rask-job-errors`). `cause_code: unknown`: `retry_later`, or `contact_support` when the same project's previous job of that type also failed with `unknown`.","enum":["fix_request","wait","top_up","retry_later","contact_support"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"recommendation","typeLabel":"enum\u003cstring>"},"hint":{"oneOf":[{"type":"string","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.0","typeLabel":"string"},{"type":"null","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"hint","typeLabel":"string | null"},"errors":{"type":"array","items":{"type":"object","description":"One failing field of a request.","required":["pointer","code","detail"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body (`/operations/3/start_seconds`), or a `query:`, `header:` or `path:` prefixed parameter name.","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"code":{"type":"string","description":"Stable snake_case code of this field error. Segment writes: `invalid_time`, `start_not_before_end`, `beyond_media_duration`, `segment_too_short`, `segment_too_long`, `invalid_speaker_id`, `too_many_speakers`, `text_too_long`, `invalid_text`, `transcript_too_large`, `split_point_outside_segment`, `segments_not_adjacent`, `too_many_segments`, `segment_targeted_twice`, `unknown_segment`, `variant_not_found`; spending requests: `expected_cost_required`; uploads: `part_missing`; generic schema failures use JSON Schema keyword names (`required`, `maxLength`, ...).","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation. Never contains user text.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"Failing fields; empty when the problem is not about fields.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"credit_type":{"type":"string","description":"insufficient_balance, token_spend_limit_exceeded: the pool concerned.","enum":["minutes","lipsync_free_minutes","projects"],"x-rask-open-enum":true,"uniqueKey":"credit_type","typeLabel":"enum\u003cstring>"},"required_minutes":{"type":"integer","description":"insufficient_balance, token_spend_limit_exceeded: minutes the request needs.","format":"int32","uniqueKey":"required_minutes","typeLabel":"integer\u003cint32>"},"balance_minutes":{"type":"integer","description":"insufficient_balance: minutes available in the pool.","format":"int32","uniqueKey":"balance_minutes","typeLabel":"integer\u003cint32>"},"required_projects":{"type":"integer","description":"insufficient_balance (projects pool), token_spend_limit_exceeded (projects cap): project credits needed.","format":"int32","uniqueKey":"required_projects","typeLabel":"integer\u003cint32>"},"balance_projects":{"type":"integer","description":"insufficient_balance (projects pool): project credits available.","format":"int32","uniqueKey":"balance_projects","typeLabel":"integer\u003cint32>"},"expected_cost_minutes":{"type":"integer","description":"cost_changed: the cap the request sent.","format":"int32","uniqueKey":"expected_cost_minutes","typeLabel":"integer\u003cint32>"},"current_cost_minutes":{"type":"integer","description":"cost_changed: the current price.","format":"int32","uniqueKey":"current_cost_minutes","typeLabel":"integer\u003cint32>"},"current_etag":{"type":"string","description":"precondition_failed: the resource's current ETag.","uniqueKey":"current_etag","typeLabel":"string"},"required_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"required_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: every scope the request needs, including those of `x-rask-operation.conditional`.","uniqueKey":"required_scopes","typeLabel":"enum\u003cstring>[]"},"granted_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"granted_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: the key's scopes.","uniqueKey":"granted_scopes","typeLabel":"enum\u003cstring>[]"},"feature":{"type":"string","description":"A plan feature checked server-side on the payer's plan (403 `feature_not_in_plan`).\n\n- `api_access`: use the API at all (checked on every request)\n- `auto_dub`: dub automatically after processing (needs an active subscription)\n- `dubbing_model_choice`: choose the dubbing model; otherwise it is overridden (estimate notice)\n- `free_languages`: free_dubbing language variants\n- `glossary`: attach and manage glossaries\n- `translation_instructions`: custom translation instructions\n- `subtitle_import`: import SRT subtitles when creating a project\n- `subtitle_reimport`: replace a project's transcript from SRT (importTranscript)\n- `subtitle_download`: download subtitles (getProjectSubtitles, subtitle outputs)\n- `burned_subtitles`: export and download videos with burned-in subtitles\n- `audio_download`: download dubbed audio and the voice track\n- `multilanguage`: several target languages per media (copies)\n- `lipsync`: lip-sync\n- `lipsync_paid`: paid lip-sync runs (otherwise only the free run)\n- `lipsync_enhanced`: the Enhanced lip-sync model\n- `lipsync_download`: download lip-synced video\n- `onscreen`: on-screen text translation and download of its video\n- `voice_clones`: workspace voice clones\n- `instant_voice_clone`: a speaker's own cloned voice\n- `share_links`: revocable project share links","enum":["api_access","auto_dub","dubbing_model_choice","free_languages","glossary","translation_instructions","subtitle_import","subtitle_reimport","subtitle_download","burned_subtitles","audio_download","multilanguage","lipsync","lipsync_paid","lipsync_enhanced","lipsync_download","onscreen","voice_clones","instant_voice_clone","share_links"],"x-rask-open-enum":true,"uniqueKey":"feature","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","description":"workspace_access_suspended, source_url_not_allowed, webhook_url_not_allowed, instant_clone_not_available, job_not_resumable, localization_combination_not_supported: machine-readable reason. workspace_access_suspended: `subscription_inactive` (the owner's subscription is not active), `space_limit_exceeded` (the owner has more workspaces than the plan allows), `seat_limit_exceeded` (the key's user is beyond the plan's seats). job_not_resumable: `not_failed_localization`, `already_resumed`, `project_deleted`, `stage_result_gone`. localization_combination_not_supported: `nothing_ordered`, `audio_project`, `plan_trims_lipsync`.","uniqueKey":"reason","typeLabel":"string"},"limit":{"type":"integer","description":"limit_reached, voice_clone_limit_reached, rate_limited, too_many_waiters, too_many_concurrent_jobs, translation_batch_too_large: the limit.","format":"int32","uniqueKey":"limit","typeLabel":"integer\u003cint32>"},"used":{"type":"integer","description":"voice_clone_limit_reached: clones counted against the quota.","format":"int32","uniqueKey":"used","typeLabel":"integer\u003cint32>"},"limit_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): the key's monthly cap on the minutes pool.","format":"int32","uniqueKey":"limit_minutes","typeLabel":"integer\u003cint32>"},"spent_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): minutes spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_minutes","typeLabel":"integer\u003cint32>"},"limit_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): the key's monthly cap on project credits.","format":"int32","uniqueKey":"limit_projects","typeLabel":"integer\u003cint32>"},"spent_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): project credits spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_projects","typeLabel":"integer\u003cint32>"},"resets_at":{"type":"string","description":"token_spend_limit_exceeded: start of the next UTC month.","format":"date-time","uniqueKey":"resets_at","typeLabel":"string\u003cdate-time>"},"policy":{"type":"string","description":"rate_limited, too_many_waiters, too_many_concurrent_jobs: the exceeded policy or quota. rate_limited: credential-minute, account-minute, spend-minute, upload-hour, auth-fail-ip, translation-hour, clone-create-day, voice-settings-hour, upload-open, upload-bytes-day; too_many_waiters: long-poll (per key and per payer); too_many_concurrent_jobs: payer-concurrency, global-concurrency.","uniqueKey":"policy","typeLabel":"string"},"window_seconds":{"type":"integer","description":"rate_limited: the policy window.","format":"int32","uniqueKey":"window_seconds","typeLabel":"integer\u003cint32>"},"active_job_count":{"type":"integer","description":"too_many_concurrent_jobs: active API and MCP jobs of this type (the payer's, or all of Rask's for global-concurrency).","format":"int32","uniqueKey":"active_job_count","typeLabel":"integer\u003cint32>"},"active_jobs":{"type":"array","items":{"type":"object","description":"A non-terminal job of a project.","required":["id","type","status"],"properties":{"id":{"type":"string","description":"Job id.","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].id","typeLabel":"string"},"type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Job type. Open enum: new types are added over time.\n\n- `media_import`: registering uploaded or imported media (poll hint 3 s; cancelable)\n- `project_processing`: the project pipeline up to translation (poll hint 10 s)\n- `translation`: retranslating segments (poll hint 5 s)\n- `segment_generation`: paid voicing of chosen segments into downloadable clips (poll hint 5 s)\n- `dub`: dubbing or redubbing (poll hint 10 s)\n- `lipsync`: lip-sync (poll hint 30 s)\n- `onscreen`: on-screen text translation (poll hint 15 s; cancelable while queued)\n- `localization`: dub, lip-sync and on-screen as one run with child jobs (poll hint 15 s)\n- `voice_clone`: creating a voice clone (poll hint 10 s)\n- `export`: rendering an export (poll hint 15 s)\n- `file_restore`: restoring archived files (poll hint 300 s)","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"Job status. Monotonic: never goes backwards and never leaves a terminal state.\n\n- `queued`: accepted, not started\n- `running`: in progress\n- `succeeded`: finished; see result\n- `failed`: finished; see error\n- `canceled`: canceled, or its project was deleted (`error.code = project_deleted`)","enum":["queued","running","succeeded","failed","canceled"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].status","typeLabel":"enum\u003cstring>"}},"uniqueKey":"active_jobs.items.[INDEX]","typeLabel":"object"},"description":"project_busy: the project's active spending jobs.","uniqueKey":"active_jobs","typeLabel":"object[]"},"active_job_ids":{"type":"array","items":{"type":"string","uniqueKey":"active_job_ids.items.[INDEX]","typeLabel":"string"},"description":"transcript_busy: the active jobs that block a whole-transcript request; absent when concurrent writes kept conflicting.","uniqueKey":"active_job_ids","typeLabel":"string[]"},"segment_ids":{"type":"array","items":{"type":"string","uniqueKey":"segment_ids.items.[INDEX]","typeLabel":"string"},"description":"segment_busy: the busy segments.","uniqueKey":"segment_ids","typeLabel":"string[]"},"job_id":{"oneOf":[{"type":"string","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"job_id","typeLabel":"string | null"},"job_type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Type of `job_id` (single-flight conflicts), of the job that cannot be canceled or resumed (job_not_cancelable, job_not_resumable), or whose concurrency limit was reached (too_many_concurrent_jobs).","uniqueKey":"job_type","typeLabel":"enum\u003cstring>"},"import_job_id":{"type":"string","description":"media_not_ready: the media_import job to wait for.","uniqueKey":"import_job_id","typeLabel":"string"},"max_seconds":{"type":"integer","description":"onscreen_video_too_long: the plan's limit (`onscreen_max_video_seconds`).","format":"int32","uniqueKey":"max_seconds","typeLabel":"integer\u003cint32>"},"expired_at":{"type":"string","description":"token_expired, upload_expired: when it expired.","format":"date-time","uniqueKey":"expired_at","typeLabel":"string\u003cdate-time>"},"revoked_reason":{"type":"string","description":"token_revoked: why the key was revoked.","uniqueKey":"revoked_reason","typeLabel":"string"},"token_env":{"type":"string","description":"token_wrong_environment: the key's environment (`live` or `test`).","uniqueKey":"token_env","typeLabel":"string"},"server_env":{"type":"string","description":"token_wrong_environment: this server's environment.","uniqueKey":"server_env","typeLabel":"string"},"parameter":{"type":"string","description":"token_in_query: the query parameter that carried a credential.","uniqueKey":"parameter","typeLabel":"string"},"max_upload_bytes":{"type":"integer","description":"media_too_large: the limit in bytes (the plan's upload limit, or a voice-sample limit: 11000000 for audio and stored samples, 500000000 for video).","format":"int64","uniqueKey":"max_upload_bytes","typeLabel":"integer\u003cint64>"},"size_bytes":{"type":"integer","description":"media_too_large: the file size in bytes.","format":"int64","uniqueKey":"size_bytes","typeLabel":"integer\u003cint64>"},"max_source_duration_seconds":{"type":"number","description":"media_too_long: the plan's limit.","format":"double","uniqueKey":"max_source_duration_seconds","typeLabel":"number\u003cdouble>"},"duration_seconds":{"type":"number","description":"media_too_long: the media duration.","format":"double","uniqueKey":"duration_seconds","typeLabel":"number\u003cdouble>"},"declared_size_bytes":{"type":"integer","description":"upload_size_mismatch: size_bytes of the upload.","format":"int64","uniqueKey":"declared_size_bytes","typeLabel":"integer\u003cint64>"},"actual_size_bytes":{"type":"integer","description":"upload_size_mismatch: size of the stored object.","format":"int64","uniqueKey":"actual_size_bytes","typeLabel":"integer\u003cint64>"},"project_count":{"type":"integer","description":"folder_not_empty: live projects in the folder.","format":"int32","uniqueKey":"project_count","typeLabel":"integer\u003cint32>"},"content_type":{"type":"string","description":"unsupported_media_type: the rejected content type.","uniqueKey":"content_type","typeLabel":"string"},"cause_code":{"type":"string","description":"Job errors. lipsync_rejected: the code that rejected the automatic start. dub_voiceover_failed, dub_merge_failed, dub_failed, dub_timeout, segment_generation_failed, segment_generation_timeout (always `unknown` on a timeout): the failure class, one of `segment_changed`, `insufficient_speech`, `voice_configuration`, `missing_translation`, `tts_provider_failed`, `merge_failed`, `unknown` (the default when the class cannot be told). localization_stage_failed, localization_stage_skipped: the code of the stage's own error; `localization_combination_not_supported` when a plan change during the run trimmed the lip-sync, so on-screen was skipped.","uniqueKey":"cause_code","typeLabel":"string"},"failed_stage":{"type":"string","description":"localization_stage_failed, localization_stage_skipped (job error): the stage that ended the run.","enum":["dub","lipsync","onscreen"],"x-rask-open-enum":true,"uniqueKey":"failed_stage","typeLabel":"enum\u003cstring>"}},"description":"RFC 9457 problem details (`application/problem+json`), used for every 4xx/5xx response and for `Job.error`. Branch on `code`; follow `hint`; act as `recommendation` says; retry as `retry` says. An extension member has one type across all codes and never reuses an RFC 9457 or Problem member name (hence `job_type`, and `active_job_count` for a count beside `active_jobs` for a list). Extension members appear only with the codes that define them (see each property). The problem registry and one documentation page per code live at https://docs.api.rask.ai/errors.","additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"rate_limited":{"title":"rate_limited","value":{"type":"https://docs.api.rask.ai/errors/rate_limited","title":"Rate limited","status":429,"detail":"The credential-minute limit was exceeded.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"rate_limited","retryable":true,"retry":"same_key","recommendation":"retry_later","hint":"Wait Retry-After seconds, then retry; policy and limit name the limit that was reached.","errors":[],"policy":"credential-minute","limit":600,"window_seconds":60}}},"exampleType":"examples"}},"exampleType":"examples"},"ff604e61-0a70-45c3-9f31-0f88f15aaa43":{"description":"Internal error. Codes: `internal_error`.","headers":{"X-Request-Id":{"description":"Request id (UUID); also the problem `instance` (`urn:uuid:\u003cid>`). Quote it to support.","schema":{"type":"string"},"example":"7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93"},"RateLimit":{"description":"Remaining quota of the most constrained policy (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";r=597;t=42"},"RateLimit-Policy":{"description":"Rate-limit policies that apply to the key (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";q=600;w=60, \"account-minute\";q=1800;w=60"}},"content":{"application/problem+json":{"schema":{"type":"object","required":["type","title","status","detail","instance","code","retryable","retry","recommendation","hint","errors"],"properties":{"type":{"type":"string","description":"`https://docs.api.rask.ai/errors/{code}`: one documentation page per code.","format":"uri","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short summary of the problem type.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"HTTP status (for a job's error: the status the same failure would have synchronously).","format":"int32","minimum":400,"maximum":599,"isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"detail":{"type":"string","description":"Explanation of this occurrence. May name ids, never user text.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"`urn:uuid:\u003crequest_id>` (also in `X-Request-Id`); for a job's error, `/v3/jobs/{job_id}`.","format":"uri-reference","isRequired":true,"uniqueKey":"instance","typeLabel":"string\u003curi-reference>"},"code":{"type":"string","description":"Stable snake_case code from the problem registry. Branch on this value, never on text.","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"retryable":{"type":"boolean","description":"True when a retry can succeed; `retry` says how.","isRequired":true,"uniqueKey":"retryable","typeLabel":"boolean"},"retry":{"type":"string","description":"How to retry: `same_key` for request problems that may succeed later, `new_key` for job errors worth a new attempt, `none` otherwise. `retryable` is true exactly when this is not `none`.","enum":["same_key","new_key","none"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"retry","typeLabel":"enum\u003cstring>"},"recommendation":{"type":"string","description":"What has to happen before a retry can succeed; set per code, and per `cause_code` for dub and generation failures (`components.x-rask-job-errors`). `cause_code: unknown`: `retry_later`, or `contact_support` when the same project's previous job of that type also failed with `unknown`.","enum":["fix_request","wait","top_up","retry_later","contact_support"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"recommendation","typeLabel":"enum\u003cstring>"},"hint":{"oneOf":[{"type":"string","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.0","typeLabel":"string"},{"type":"null","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"hint","typeLabel":"string | null"},"errors":{"type":"array","items":{"type":"object","description":"One failing field of a request.","required":["pointer","code","detail"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body (`/operations/3/start_seconds`), or a `query:`, `header:` or `path:` prefixed parameter name.","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"code":{"type":"string","description":"Stable snake_case code of this field error. Segment writes: `invalid_time`, `start_not_before_end`, `beyond_media_duration`, `segment_too_short`, `segment_too_long`, `invalid_speaker_id`, `too_many_speakers`, `text_too_long`, `invalid_text`, `transcript_too_large`, `split_point_outside_segment`, `segments_not_adjacent`, `too_many_segments`, `segment_targeted_twice`, `unknown_segment`, `variant_not_found`; spending requests: `expected_cost_required`; uploads: `part_missing`; generic schema failures use JSON Schema keyword names (`required`, `maxLength`, ...).","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation. Never contains user text.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"Failing fields; empty when the problem is not about fields.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"credit_type":{"type":"string","description":"insufficient_balance, token_spend_limit_exceeded: the pool concerned.","enum":["minutes","lipsync_free_minutes","projects"],"x-rask-open-enum":true,"uniqueKey":"credit_type","typeLabel":"enum\u003cstring>"},"required_minutes":{"type":"integer","description":"insufficient_balance, token_spend_limit_exceeded: minutes the request needs.","format":"int32","uniqueKey":"required_minutes","typeLabel":"integer\u003cint32>"},"balance_minutes":{"type":"integer","description":"insufficient_balance: minutes available in the pool.","format":"int32","uniqueKey":"balance_minutes","typeLabel":"integer\u003cint32>"},"required_projects":{"type":"integer","description":"insufficient_balance (projects pool), token_spend_limit_exceeded (projects cap): project credits needed.","format":"int32","uniqueKey":"required_projects","typeLabel":"integer\u003cint32>"},"balance_projects":{"type":"integer","description":"insufficient_balance (projects pool): project credits available.","format":"int32","uniqueKey":"balance_projects","typeLabel":"integer\u003cint32>"},"expected_cost_minutes":{"type":"integer","description":"cost_changed: the cap the request sent.","format":"int32","uniqueKey":"expected_cost_minutes","typeLabel":"integer\u003cint32>"},"current_cost_minutes":{"type":"integer","description":"cost_changed: the current price.","format":"int32","uniqueKey":"current_cost_minutes","typeLabel":"integer\u003cint32>"},"current_etag":{"type":"string","description":"precondition_failed: the resource's current ETag.","uniqueKey":"current_etag","typeLabel":"string"},"required_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"required_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: every scope the request needs, including those of `x-rask-operation.conditional`.","uniqueKey":"required_scopes","typeLabel":"enum\u003cstring>[]"},"granted_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"granted_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: the key's scopes.","uniqueKey":"granted_scopes","typeLabel":"enum\u003cstring>[]"},"feature":{"type":"string","description":"A plan feature checked server-side on the payer's plan (403 `feature_not_in_plan`).\n\n- `api_access`: use the API at all (checked on every request)\n- `auto_dub`: dub automatically after processing (needs an active subscription)\n- `dubbing_model_choice`: choose the dubbing model; otherwise it is overridden (estimate notice)\n- `free_languages`: free_dubbing language variants\n- `glossary`: attach and manage glossaries\n- `translation_instructions`: custom translation instructions\n- `subtitle_import`: import SRT subtitles when creating a project\n- `subtitle_reimport`: replace a project's transcript from SRT (importTranscript)\n- `subtitle_download`: download subtitles (getProjectSubtitles, subtitle outputs)\n- `burned_subtitles`: export and download videos with burned-in subtitles\n- `audio_download`: download dubbed audio and the voice track\n- `multilanguage`: several target languages per media (copies)\n- `lipsync`: lip-sync\n- `lipsync_paid`: paid lip-sync runs (otherwise only the free run)\n- `lipsync_enhanced`: the Enhanced lip-sync model\n- `lipsync_download`: download lip-synced video\n- `onscreen`: on-screen text translation and download of its video\n- `voice_clones`: workspace voice clones\n- `instant_voice_clone`: a speaker's own cloned voice\n- `share_links`: revocable project share links","enum":["api_access","auto_dub","dubbing_model_choice","free_languages","glossary","translation_instructions","subtitle_import","subtitle_reimport","subtitle_download","burned_subtitles","audio_download","multilanguage","lipsync","lipsync_paid","lipsync_enhanced","lipsync_download","onscreen","voice_clones","instant_voice_clone","share_links"],"x-rask-open-enum":true,"uniqueKey":"feature","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","description":"workspace_access_suspended, source_url_not_allowed, webhook_url_not_allowed, instant_clone_not_available, job_not_resumable, localization_combination_not_supported: machine-readable reason. workspace_access_suspended: `subscription_inactive` (the owner's subscription is not active), `space_limit_exceeded` (the owner has more workspaces than the plan allows), `seat_limit_exceeded` (the key's user is beyond the plan's seats). job_not_resumable: `not_failed_localization`, `already_resumed`, `project_deleted`, `stage_result_gone`. localization_combination_not_supported: `nothing_ordered`, `audio_project`, `plan_trims_lipsync`.","uniqueKey":"reason","typeLabel":"string"},"limit":{"type":"integer","description":"limit_reached, voice_clone_limit_reached, rate_limited, too_many_waiters, too_many_concurrent_jobs, translation_batch_too_large: the limit.","format":"int32","uniqueKey":"limit","typeLabel":"integer\u003cint32>"},"used":{"type":"integer","description":"voice_clone_limit_reached: clones counted against the quota.","format":"int32","uniqueKey":"used","typeLabel":"integer\u003cint32>"},"limit_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): the key's monthly cap on the minutes pool.","format":"int32","uniqueKey":"limit_minutes","typeLabel":"integer\u003cint32>"},"spent_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): minutes spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_minutes","typeLabel":"integer\u003cint32>"},"limit_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): the key's monthly cap on project credits.","format":"int32","uniqueKey":"limit_projects","typeLabel":"integer\u003cint32>"},"spent_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): project credits spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_projects","typeLabel":"integer\u003cint32>"},"resets_at":{"type":"string","description":"token_spend_limit_exceeded: start of the next UTC month.","format":"date-time","uniqueKey":"resets_at","typeLabel":"string\u003cdate-time>"},"policy":{"type":"string","description":"rate_limited, too_many_waiters, too_many_concurrent_jobs: the exceeded policy or quota. rate_limited: credential-minute, account-minute, spend-minute, upload-hour, auth-fail-ip, translation-hour, clone-create-day, voice-settings-hour, upload-open, upload-bytes-day; too_many_waiters: long-poll (per key and per payer); too_many_concurrent_jobs: payer-concurrency, global-concurrency.","uniqueKey":"policy","typeLabel":"string"},"window_seconds":{"type":"integer","description":"rate_limited: the policy window.","format":"int32","uniqueKey":"window_seconds","typeLabel":"integer\u003cint32>"},"active_job_count":{"type":"integer","description":"too_many_concurrent_jobs: active API and MCP jobs of this type (the payer's, or all of Rask's for global-concurrency).","format":"int32","uniqueKey":"active_job_count","typeLabel":"integer\u003cint32>"},"active_jobs":{"type":"array","items":{"type":"object","description":"A non-terminal job of a project.","required":["id","type","status"],"properties":{"id":{"type":"string","description":"Job id.","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].id","typeLabel":"string"},"type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Job type. Open enum: new types are added over time.\n\n- `media_import`: registering uploaded or imported media (poll hint 3 s; cancelable)\n- `project_processing`: the project pipeline up to translation (poll hint 10 s)\n- `translation`: retranslating segments (poll hint 5 s)\n- `segment_generation`: paid voicing of chosen segments into downloadable clips (poll hint 5 s)\n- `dub`: dubbing or redubbing (poll hint 10 s)\n- `lipsync`: lip-sync (poll hint 30 s)\n- `onscreen`: on-screen text translation (poll hint 15 s; cancelable while queued)\n- `localization`: dub, lip-sync and on-screen as one run with child jobs (poll hint 15 s)\n- `voice_clone`: creating a voice clone (poll hint 10 s)\n- `export`: rendering an export (poll hint 15 s)\n- `file_restore`: restoring archived files (poll hint 300 s)","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"Job status. Monotonic: never goes backwards and never leaves a terminal state.\n\n- `queued`: accepted, not started\n- `running`: in progress\n- `succeeded`: finished; see result\n- `failed`: finished; see error\n- `canceled`: canceled, or its project was deleted (`error.code = project_deleted`)","enum":["queued","running","succeeded","failed","canceled"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].status","typeLabel":"enum\u003cstring>"}},"uniqueKey":"active_jobs.items.[INDEX]","typeLabel":"object"},"description":"project_busy: the project's active spending jobs.","uniqueKey":"active_jobs","typeLabel":"object[]"},"active_job_ids":{"type":"array","items":{"type":"string","uniqueKey":"active_job_ids.items.[INDEX]","typeLabel":"string"},"description":"transcript_busy: the active jobs that block a whole-transcript request; absent when concurrent writes kept conflicting.","uniqueKey":"active_job_ids","typeLabel":"string[]"},"segment_ids":{"type":"array","items":{"type":"string","uniqueKey":"segment_ids.items.[INDEX]","typeLabel":"string"},"description":"segment_busy: the busy segments.","uniqueKey":"segment_ids","typeLabel":"string[]"},"job_id":{"oneOf":[{"type":"string","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"job_id","typeLabel":"string | null"},"job_type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Type of `job_id` (single-flight conflicts), of the job that cannot be canceled or resumed (job_not_cancelable, job_not_resumable), or whose concurrency limit was reached (too_many_concurrent_jobs).","uniqueKey":"job_type","typeLabel":"enum\u003cstring>"},"import_job_id":{"type":"string","description":"media_not_ready: the media_import job to wait for.","uniqueKey":"import_job_id","typeLabel":"string"},"max_seconds":{"type":"integer","description":"onscreen_video_too_long: the plan's limit (`onscreen_max_video_seconds`).","format":"int32","uniqueKey":"max_seconds","typeLabel":"integer\u003cint32>"},"expired_at":{"type":"string","description":"token_expired, upload_expired: when it expired.","format":"date-time","uniqueKey":"expired_at","typeLabel":"string\u003cdate-time>"},"revoked_reason":{"type":"string","description":"token_revoked: why the key was revoked.","uniqueKey":"revoked_reason","typeLabel":"string"},"token_env":{"type":"string","description":"token_wrong_environment: the key's environment (`live` or `test`).","uniqueKey":"token_env","typeLabel":"string"},"server_env":{"type":"string","description":"token_wrong_environment: this server's environment.","uniqueKey":"server_env","typeLabel":"string"},"parameter":{"type":"string","description":"token_in_query: the query parameter that carried a credential.","uniqueKey":"parameter","typeLabel":"string"},"max_upload_bytes":{"type":"integer","description":"media_too_large: the limit in bytes (the plan's upload limit, or a voice-sample limit: 11000000 for audio and stored samples, 500000000 for video).","format":"int64","uniqueKey":"max_upload_bytes","typeLabel":"integer\u003cint64>"},"size_bytes":{"type":"integer","description":"media_too_large: the file size in bytes.","format":"int64","uniqueKey":"size_bytes","typeLabel":"integer\u003cint64>"},"max_source_duration_seconds":{"type":"number","description":"media_too_long: the plan's limit.","format":"double","uniqueKey":"max_source_duration_seconds","typeLabel":"number\u003cdouble>"},"duration_seconds":{"type":"number","description":"media_too_long: the media duration.","format":"double","uniqueKey":"duration_seconds","typeLabel":"number\u003cdouble>"},"declared_size_bytes":{"type":"integer","description":"upload_size_mismatch: size_bytes of the upload.","format":"int64","uniqueKey":"declared_size_bytes","typeLabel":"integer\u003cint64>"},"actual_size_bytes":{"type":"integer","description":"upload_size_mismatch: size of the stored object.","format":"int64","uniqueKey":"actual_size_bytes","typeLabel":"integer\u003cint64>"},"project_count":{"type":"integer","description":"folder_not_empty: live projects in the folder.","format":"int32","uniqueKey":"project_count","typeLabel":"integer\u003cint32>"},"content_type":{"type":"string","description":"unsupported_media_type: the rejected content type.","uniqueKey":"content_type","typeLabel":"string"},"cause_code":{"type":"string","description":"Job errors. lipsync_rejected: the code that rejected the automatic start. dub_voiceover_failed, dub_merge_failed, dub_failed, dub_timeout, segment_generation_failed, segment_generation_timeout (always `unknown` on a timeout): the failure class, one of `segment_changed`, `insufficient_speech`, `voice_configuration`, `missing_translation`, `tts_provider_failed`, `merge_failed`, `unknown` (the default when the class cannot be told). localization_stage_failed, localization_stage_skipped: the code of the stage's own error; `localization_combination_not_supported` when a plan change during the run trimmed the lip-sync, so on-screen was skipped.","uniqueKey":"cause_code","typeLabel":"string"},"failed_stage":{"type":"string","description":"localization_stage_failed, localization_stage_skipped (job error): the stage that ended the run.","enum":["dub","lipsync","onscreen"],"x-rask-open-enum":true,"uniqueKey":"failed_stage","typeLabel":"enum\u003cstring>"}},"description":"RFC 9457 problem details (`application/problem+json`), used for every 4xx/5xx response and for `Job.error`. Branch on `code`; follow `hint`; act as `recommendation` says; retry as `retry` says. An extension member has one type across all codes and never reuses an RFC 9457 or Problem member name (hence `job_type`, and `active_job_count` for a count beside `active_jobs` for a list). Extension members appear only with the codes that define them (see each property). The problem registry and one documentation page per code live at https://docs.api.rask.ai/errors.","additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"internal_error":{"title":"internal_error","value":{"type":"https://docs.api.rask.ai/errors/internal_error","title":"Internal error","status":500,"detail":"An internal error occurred.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"internal_error","retryable":true,"retry":"same_key","recommendation":"retry_later","hint":"Retry with the same Idempotency-Key; contact support with the instance id if it persists.","errors":[]}}},"exampleType":"examples"}},"exampleType":"examples"},"6f263e76-0611-498b-a95a-b3590eb2faa2":{"description":"Service unavailable. Codes: `temporarily_unavailable`, `api_unavailable`, `auth_unavailable`.","headers":{"X-Request-Id":{"description":"Request id (UUID); also the problem `instance` (`urn:uuid:\u003cid>`). Quote it to support.","schema":{"type":"string"},"example":"7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93"},"RateLimit":{"description":"Remaining quota of the most constrained policy (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";r=597;t=42"},"RateLimit-Policy":{"description":"Rate-limit policies that apply to the key (IETF draft-11; provisional).","schema":{"type":"string"},"example":"\"credential-minute\";q=600;w=60, \"account-minute\";q=1800;w=60"},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","format":"int32","minimum":0},"example":30}},"content":{"application/problem+json":{"schema":{"type":"object","required":["type","title","status","detail","instance","code","retryable","retry","recommendation","hint","errors"],"properties":{"type":{"type":"string","description":"`https://docs.api.rask.ai/errors/{code}`: one documentation page per code.","format":"uri","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short summary of the problem type.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"HTTP status (for a job's error: the status the same failure would have synchronously).","format":"int32","minimum":400,"maximum":599,"isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"detail":{"type":"string","description":"Explanation of this occurrence. May name ids, never user text.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"`urn:uuid:\u003crequest_id>` (also in `X-Request-Id`); for a job's error, `/v3/jobs/{job_id}`.","format":"uri-reference","isRequired":true,"uniqueKey":"instance","typeLabel":"string\u003curi-reference>"},"code":{"type":"string","description":"Stable snake_case code from the problem registry. Branch on this value, never on text.","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"retryable":{"type":"boolean","description":"True when a retry can succeed; `retry` says how.","isRequired":true,"uniqueKey":"retryable","typeLabel":"boolean"},"retry":{"type":"string","description":"How to retry: `same_key` for request problems that may succeed later, `new_key` for job errors worth a new attempt, `none` otherwise. `retryable` is true exactly when this is not `none`.","enum":["same_key","new_key","none"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"retry","typeLabel":"enum\u003cstring>"},"recommendation":{"type":"string","description":"What has to happen before a retry can succeed; set per code, and per `cause_code` for dub and generation failures (`components.x-rask-job-errors`). `cause_code: unknown`: `retry_later`, or `contact_support` when the same project's previous job of that type also failed with `unknown`.","enum":["fix_request","wait","top_up","retry_later","contact_support"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"recommendation","typeLabel":"enum\u003cstring>"},"hint":{"oneOf":[{"type":"string","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.0","typeLabel":"string"},{"type":"null","description":"One imperative sentence naming the next call or field (\u003c= 160 characters).","maxLength":160,"isRequired":true,"uniqueKey":"hint.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"hint","typeLabel":"string | null"},"errors":{"type":"array","items":{"type":"object","description":"One failing field of a request.","required":["pointer","code","detail"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body (`/operations/3/start_seconds`), or a `query:`, `header:` or `path:` prefixed parameter name.","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"code":{"type":"string","description":"Stable snake_case code of this field error. Segment writes: `invalid_time`, `start_not_before_end`, `beyond_media_duration`, `segment_too_short`, `segment_too_long`, `invalid_speaker_id`, `too_many_speakers`, `text_too_long`, `invalid_text`, `transcript_too_large`, `split_point_outside_segment`, `segments_not_adjacent`, `too_many_segments`, `segment_targeted_twice`, `unknown_segment`, `variant_not_found`; spending requests: `expected_cost_required`; uploads: `part_missing`; generic schema failures use JSON Schema keyword names (`required`, `maxLength`, ...).","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation. Never contains user text.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"Failing fields; empty when the problem is not about fields.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"credit_type":{"type":"string","description":"insufficient_balance, token_spend_limit_exceeded: the pool concerned.","enum":["minutes","lipsync_free_minutes","projects"],"x-rask-open-enum":true,"uniqueKey":"credit_type","typeLabel":"enum\u003cstring>"},"required_minutes":{"type":"integer","description":"insufficient_balance, token_spend_limit_exceeded: minutes the request needs.","format":"int32","uniqueKey":"required_minutes","typeLabel":"integer\u003cint32>"},"balance_minutes":{"type":"integer","description":"insufficient_balance: minutes available in the pool.","format":"int32","uniqueKey":"balance_minutes","typeLabel":"integer\u003cint32>"},"required_projects":{"type":"integer","description":"insufficient_balance (projects pool), token_spend_limit_exceeded (projects cap): project credits needed.","format":"int32","uniqueKey":"required_projects","typeLabel":"integer\u003cint32>"},"balance_projects":{"type":"integer","description":"insufficient_balance (projects pool): project credits available.","format":"int32","uniqueKey":"balance_projects","typeLabel":"integer\u003cint32>"},"expected_cost_minutes":{"type":"integer","description":"cost_changed: the cap the request sent.","format":"int32","uniqueKey":"expected_cost_minutes","typeLabel":"integer\u003cint32>"},"current_cost_minutes":{"type":"integer","description":"cost_changed: the current price.","format":"int32","uniqueKey":"current_cost_minutes","typeLabel":"integer\u003cint32>"},"current_etag":{"type":"string","description":"precondition_failed: the resource's current ETag.","uniqueKey":"current_etag","typeLabel":"string"},"required_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"required_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: every scope the request needs, including those of `x-rask-operation.conditional`.","uniqueKey":"required_scopes","typeLabel":"enum\u003cstring>[]"},"granted_scopes":{"type":"array","items":{"type":"string","description":"An API key scope (`resource:action`). `X:write` implies `X:read`; every `*:write` implies `jobs:read`.\nA key reads every job it started. Another credential's job also needs the scope that reads what it works on, as its params and result hold that: `media:read` for `media_import`, `voices:read` for `voice_clone`, `transcripts:read` for `translation` and `segment_generation`, `projects:read` for the rest. Otherwise it answers 404 `job_not_found` and is not listed.\n\n- `account:read`: read me, plan, entitlements, balance and usage\n- `media:read`: read uploads and media\n- `media:write`: create and complete uploads, import from a URL, delete media (implies media:read)\n- `projects:read`: read projects, outputs, subtitles, lip-sync and on-screen state\n- `projects:write`: create, copy, update and delete projects; folders; share links; exports; file restores\n- `transcripts:read`: read transcripts, segments, versions and translation settings\n- `transcripts:write`: edit, split, merge and retranslate segments, import subtitles, save and restore versions, change translation settings\n- `voices:read`: read speakers, the voice catalog and voice clones\n- `voices:write`: change a speaker's voice; create, update and delete voice clones\n- `glossaries:read`: read glossaries\n- `glossaries:write`: create, update and delete glossaries\n- `dubbing:write`: dub and redub, segment generation, localization runs and their estimates\n- `lipsync:write`: lip-sync (face check included) and its estimate\n- `onscreen:write`: on-screen text translation and its estimate\n- `jobs:read`: get, list and wait for jobs\n- `jobs:write`: cancel and resume jobs\n- `webhooks:read`: read webhook endpoints and deliveries\n- `webhooks:write`: create, update, delete, rotate and test webhook endpoints\n- `credits:spend`: additionally required by every operation that can spend credits","enum":["account:read","media:read","media:write","projects:read","projects:write","transcripts:read","transcripts:write","voices:read","voices:write","glossaries:read","glossaries:write","dubbing:write","lipsync:write","onscreen:write","jobs:read","jobs:write","webhooks:read","webhooks:write","credits:spend"],"x-rask-open-enum":true,"uniqueKey":"granted_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"insufficient_scope: the key's scopes.","uniqueKey":"granted_scopes","typeLabel":"enum\u003cstring>[]"},"feature":{"type":"string","description":"A plan feature checked server-side on the payer's plan (403 `feature_not_in_plan`).\n\n- `api_access`: use the API at all (checked on every request)\n- `auto_dub`: dub automatically after processing (needs an active subscription)\n- `dubbing_model_choice`: choose the dubbing model; otherwise it is overridden (estimate notice)\n- `free_languages`: free_dubbing language variants\n- `glossary`: attach and manage glossaries\n- `translation_instructions`: custom translation instructions\n- `subtitle_import`: import SRT subtitles when creating a project\n- `subtitle_reimport`: replace a project's transcript from SRT (importTranscript)\n- `subtitle_download`: download subtitles (getProjectSubtitles, subtitle outputs)\n- `burned_subtitles`: export and download videos with burned-in subtitles\n- `audio_download`: download dubbed audio and the voice track\n- `multilanguage`: several target languages per media (copies)\n- `lipsync`: lip-sync\n- `lipsync_paid`: paid lip-sync runs (otherwise only the free run)\n- `lipsync_enhanced`: the Enhanced lip-sync model\n- `lipsync_download`: download lip-synced video\n- `onscreen`: on-screen text translation and download of its video\n- `voice_clones`: workspace voice clones\n- `instant_voice_clone`: a speaker's own cloned voice\n- `share_links`: revocable project share links","enum":["api_access","auto_dub","dubbing_model_choice","free_languages","glossary","translation_instructions","subtitle_import","subtitle_reimport","subtitle_download","burned_subtitles","audio_download","multilanguage","lipsync","lipsync_paid","lipsync_enhanced","lipsync_download","onscreen","voice_clones","instant_voice_clone","share_links"],"x-rask-open-enum":true,"uniqueKey":"feature","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","description":"workspace_access_suspended, source_url_not_allowed, webhook_url_not_allowed, instant_clone_not_available, job_not_resumable, localization_combination_not_supported: machine-readable reason. workspace_access_suspended: `subscription_inactive` (the owner's subscription is not active), `space_limit_exceeded` (the owner has more workspaces than the plan allows), `seat_limit_exceeded` (the key's user is beyond the plan's seats). job_not_resumable: `not_failed_localization`, `already_resumed`, `project_deleted`, `stage_result_gone`. localization_combination_not_supported: `nothing_ordered`, `audio_project`, `plan_trims_lipsync`.","uniqueKey":"reason","typeLabel":"string"},"limit":{"type":"integer","description":"limit_reached, voice_clone_limit_reached, rate_limited, too_many_waiters, too_many_concurrent_jobs, translation_batch_too_large: the limit.","format":"int32","uniqueKey":"limit","typeLabel":"integer\u003cint32>"},"used":{"type":"integer","description":"voice_clone_limit_reached: clones counted against the quota.","format":"int32","uniqueKey":"used","typeLabel":"integer\u003cint32>"},"limit_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): the key's monthly cap on the minutes pool.","format":"int32","uniqueKey":"limit_minutes","typeLabel":"integer\u003cint32>"},"spent_minutes":{"type":"integer","description":"token_spend_limit_exceeded (minutes cap): minutes spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_minutes","typeLabel":"integer\u003cint32>"},"limit_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): the key's monthly cap on project credits.","format":"int32","uniqueKey":"limit_projects","typeLabel":"integer\u003cint32>"},"spent_projects":{"type":"integer","description":"token_spend_limit_exceeded (projects cap): project credits spent this month by the key, with pending deferred spends.","format":"int32","uniqueKey":"spent_projects","typeLabel":"integer\u003cint32>"},"resets_at":{"type":"string","description":"token_spend_limit_exceeded: start of the next UTC month.","format":"date-time","uniqueKey":"resets_at","typeLabel":"string\u003cdate-time>"},"policy":{"type":"string","description":"rate_limited, too_many_waiters, too_many_concurrent_jobs: the exceeded policy or quota. rate_limited: credential-minute, account-minute, spend-minute, upload-hour, auth-fail-ip, translation-hour, clone-create-day, voice-settings-hour, upload-open, upload-bytes-day; too_many_waiters: long-poll (per key and per payer); too_many_concurrent_jobs: payer-concurrency, global-concurrency.","uniqueKey":"policy","typeLabel":"string"},"window_seconds":{"type":"integer","description":"rate_limited: the policy window.","format":"int32","uniqueKey":"window_seconds","typeLabel":"integer\u003cint32>"},"active_job_count":{"type":"integer","description":"too_many_concurrent_jobs: active API and MCP jobs of this type (the payer's, or all of Rask's for global-concurrency).","format":"int32","uniqueKey":"active_job_count","typeLabel":"integer\u003cint32>"},"active_jobs":{"type":"array","items":{"type":"object","description":"A non-terminal job of a project.","required":["id","type","status"],"properties":{"id":{"type":"string","description":"Job id.","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].id","typeLabel":"string"},"type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Job type. Open enum: new types are added over time.\n\n- `media_import`: registering uploaded or imported media (poll hint 3 s; cancelable)\n- `project_processing`: the project pipeline up to translation (poll hint 10 s)\n- `translation`: retranslating segments (poll hint 5 s)\n- `segment_generation`: paid voicing of chosen segments into downloadable clips (poll hint 5 s)\n- `dub`: dubbing or redubbing (poll hint 10 s)\n- `lipsync`: lip-sync (poll hint 30 s)\n- `onscreen`: on-screen text translation (poll hint 15 s; cancelable while queued)\n- `localization`: dub, lip-sync and on-screen as one run with child jobs (poll hint 15 s)\n- `voice_clone`: creating a voice clone (poll hint 10 s)\n- `export`: rendering an export (poll hint 15 s)\n- `file_restore`: restoring archived files (poll hint 300 s)","isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"Job status. Monotonic: never goes backwards and never leaves a terminal state.\n\n- `queued`: accepted, not started\n- `running`: in progress\n- `succeeded`: finished; see result\n- `failed`: finished; see error\n- `canceled`: canceled, or its project was deleted (`error.code = project_deleted`)","enum":["queued","running","succeeded","failed","canceled"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"active_jobs.items.[INDEX].status","typeLabel":"enum\u003cstring>"}},"uniqueKey":"active_jobs.items.[INDEX]","typeLabel":"object"},"description":"project_busy: the project's active spending jobs.","uniqueKey":"active_jobs","typeLabel":"object[]"},"active_job_ids":{"type":"array","items":{"type":"string","uniqueKey":"active_job_ids.items.[INDEX]","typeLabel":"string"},"description":"transcript_busy: the active jobs that block a whole-transcript request; absent when concurrent writes kept conflicting.","uniqueKey":"active_job_ids","typeLabel":"string[]"},"segment_ids":{"type":"array","items":{"type":"string","uniqueKey":"segment_ids.items.[INDEX]","typeLabel":"string"},"description":"segment_busy: the busy segments.","uniqueKey":"segment_ids","typeLabel":"string[]"},"job_id":{"oneOf":[{"type":"string","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The blocking job: dub_in_progress, lipsync_in_progress, onscreen_in_progress, project_not_ready and transcript_busy (null when the blocking work has no v3 job, e.g. it was started in the web app; `job_type` still names it), export_in_progress, restore_in_progress, media_in_use, subtitle_import_in_progress. job_not_resumable: the job that already continues this run, when there is one.","uniqueKey":"job_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"job_id","typeLabel":"string | null"},"job_type":{"type":"string","x-rask-open-enum":true,"enum":["media_import","project_processing","translation","segment_generation","dub","lipsync","onscreen","localization","voice_clone","export","file_restore"],"description":"Type of `job_id` (single-flight conflicts), of the job that cannot be canceled or resumed (job_not_cancelable, job_not_resumable), or whose concurrency limit was reached (too_many_concurrent_jobs).","uniqueKey":"job_type","typeLabel":"enum\u003cstring>"},"import_job_id":{"type":"string","description":"media_not_ready: the media_import job to wait for.","uniqueKey":"import_job_id","typeLabel":"string"},"max_seconds":{"type":"integer","description":"onscreen_video_too_long: the plan's limit (`onscreen_max_video_seconds`).","format":"int32","uniqueKey":"max_seconds","typeLabel":"integer\u003cint32>"},"expired_at":{"type":"string","description":"token_expired, upload_expired: when it expired.","format":"date-time","uniqueKey":"expired_at","typeLabel":"string\u003cdate-time>"},"revoked_reason":{"type":"string","description":"token_revoked: why the key was revoked.","uniqueKey":"revoked_reason","typeLabel":"string"},"token_env":{"type":"string","description":"token_wrong_environment: the key's environment (`live` or `test`).","uniqueKey":"token_env","typeLabel":"string"},"server_env":{"type":"string","description":"token_wrong_environment: this server's environment.","uniqueKey":"server_env","typeLabel":"string"},"parameter":{"type":"string","description":"token_in_query: the query parameter that carried a credential.","uniqueKey":"parameter","typeLabel":"string"},"max_upload_bytes":{"type":"integer","description":"media_too_large: the limit in bytes (the plan's upload limit, or a voice-sample limit: 11000000 for audio and stored samples, 500000000 for video).","format":"int64","uniqueKey":"max_upload_bytes","typeLabel":"integer\u003cint64>"},"size_bytes":{"type":"integer","description":"media_too_large: the file size in bytes.","format":"int64","uniqueKey":"size_bytes","typeLabel":"integer\u003cint64>"},"max_source_duration_seconds":{"type":"number","description":"media_too_long: the plan's limit.","format":"double","uniqueKey":"max_source_duration_seconds","typeLabel":"number\u003cdouble>"},"duration_seconds":{"type":"number","description":"media_too_long: the media duration.","format":"double","uniqueKey":"duration_seconds","typeLabel":"number\u003cdouble>"},"declared_size_bytes":{"type":"integer","description":"upload_size_mismatch: size_bytes of the upload.","format":"int64","uniqueKey":"declared_size_bytes","typeLabel":"integer\u003cint64>"},"actual_size_bytes":{"type":"integer","description":"upload_size_mismatch: size of the stored object.","format":"int64","uniqueKey":"actual_size_bytes","typeLabel":"integer\u003cint64>"},"project_count":{"type":"integer","description":"folder_not_empty: live projects in the folder.","format":"int32","uniqueKey":"project_count","typeLabel":"integer\u003cint32>"},"content_type":{"type":"string","description":"unsupported_media_type: the rejected content type.","uniqueKey":"content_type","typeLabel":"string"},"cause_code":{"type":"string","description":"Job errors. lipsync_rejected: the code that rejected the automatic start. dub_voiceover_failed, dub_merge_failed, dub_failed, dub_timeout, segment_generation_failed, segment_generation_timeout (always `unknown` on a timeout): the failure class, one of `segment_changed`, `insufficient_speech`, `voice_configuration`, `missing_translation`, `tts_provider_failed`, `merge_failed`, `unknown` (the default when the class cannot be told). localization_stage_failed, localization_stage_skipped: the code of the stage's own error; `localization_combination_not_supported` when a plan change during the run trimmed the lip-sync, so on-screen was skipped.","uniqueKey":"cause_code","typeLabel":"string"},"failed_stage":{"type":"string","description":"localization_stage_failed, localization_stage_skipped (job error): the stage that ended the run.","enum":["dub","lipsync","onscreen"],"x-rask-open-enum":true,"uniqueKey":"failed_stage","typeLabel":"enum\u003cstring>"}},"description":"RFC 9457 problem details (`application/problem+json`), used for every 4xx/5xx response and for `Job.error`. Branch on `code`; follow `hint`; act as `recommendation` says; retry as `retry` says. An extension member has one type across all codes and never reuses an RFC 9457 or Problem member name (hence `job_type`, and `active_job_count` for a count beside `active_jobs` for a list). Extension members appear only with the codes that define them (see each property). The problem registry and one documentation page per code live at https://docs.api.rask.ai/errors.","additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"temporarily_unavailable":{"title":"temporarily_unavailable","value":{"type":"https://docs.api.rask.ai/errors/temporarily_unavailable","title":"Temporarily unavailable","status":503,"detail":"A dependency is temporarily unavailable.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"temporarily_unavailable","retryable":true,"retry":"same_key","recommendation":"retry_later","hint":"Wait Retry-After seconds and retry.","errors":[]}},"api_unavailable":{"title":"api_unavailable","value":{"type":"https://docs.api.rask.ai/errors/api_unavailable","title":"Api unavailable","status":503,"detail":"The API is temporarily disabled.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"api_unavailable","retryable":true,"retry":"same_key","recommendation":"retry_later","hint":"Wait Retry-After seconds and retry.","errors":[]}},"auth_unavailable":{"title":"auth_unavailable","value":{"type":"https://docs.api.rask.ai/errors/auth_unavailable","title":"Auth unavailable","status":503,"detail":"Credential verification is temporarily unavailable.","instance":"urn:uuid:7d5c0e9a-3f1b-4c2e-9a8d-6b4f2e1c0d93","code":"auth_unavailable","retryable":true,"retry":"same_key","recommendation":"retry_later","hint":"Wait Retry-After seconds and retry.","errors":[]}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"e65ebc6e-4226-470f-911b-d1299e6747f4":{"apiToken":{"type":"http","scheme":"bearer","bearerFormat":"raskai_\u003clive|test>_key_\u003c49 base62 characters>","description":"API key from Settings -> API keys, sent as `Authorization: Bearer \u003ckey>` (SDK environment variable `RASK_API_KEY`). Bound to one workspace and one acting user. Operations list the scopes they need (OpenAPI 3.1 scopes on a bearer scheme).","scopes":["transcripts:write"],"schemeName":"apiToken"}}},"servers":{"61053d33-b3c1-45e9-9029-d55a58076416":{"url":"https://api.rask.ai/v3","description":"Production."}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"raskai_\u003clive|test>_key_\u003c49 base62 characters>","description":"API key from Settings -> API keys, sent as `Authorization: Bearer \u003ckey>` (SDK environment variable `RASK_API_KEY`). Bound to one workspace and one acting user. Operations list the scopes they need (OpenAPI 3.1 scopes on a bearer scheme).","scopes":["transcripts:write"],"schemeName":"apiToken"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key from Settings -> API keys, sent as `Authorization: Bearer \u003ckey>` (SDK environment variable `RASK_API_KEY`). Bound to one workspace and one acting user. Operations list the scopes they need (OpenAPI 3.1 scopes on a bearer scheme).","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"apiToken","name":"Authorization"}],"title":"apiToken"}]},"originalFileLocation":"openapi.v3.json"},"subdomain":"brask","siteName":"Rask AI API","title":"Delete a segment - Rask AI API","navMaps":{"firstHrefInVersion":{"v3":{"href":"/operations/deleteSegment","matchLevel":0},"v2":{"href":"/introduction","matchLevel":4}},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T14:38:52.533Z","originalFileLocation":"operations/deleteSegment.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Deletes a segment of the live transcript.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Rask AI API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/brask/64TpFZATa3dVq0DX/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/brask/64TpFZATa3dVq0DX/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/brask/64TpFZATa3dVq0DX/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/brask/64TpFZATa3dVq0DX/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/brask/64TpFZATa3dVq0DX/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/brask/64TpFZATa3dVq0DX/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/brask/64TpFZATa3dVq0DX/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/brask/64TpFZATa3dVq0DX/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/brask/64TpFZATa3dVq0DX/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Delete a segment - Rask AI API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Deletes a segment of the live transcript.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Rask AI API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.api.rask.ai/operations/deleteSegment\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://brask.mintlify.site/_mintlify/api/og/v2?division=Segments\u0026amp;title=Delete+a+segment\u0026amp;description=Deletes+a+segment+of+the+live+transcript.\u0026amp;theme=0d666554d2a0d7f967d5e07b\u0026amp;signature=ccbb9c76c460d2ca5cdeef64c9f076fc1aa022bd1806bd05d9cb3d97f236dc9a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Delete a segment - Rask AI API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Deletes a segment of the live transcript.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://brask.mintlify.site/_mintlify/api/og/v2?division=Segments\u0026amp;title=Delete+a+segment\u0026amp;description=Deletes+a+segment+of+the+live+transcript.\u0026amp;theme=0d666554d2a0d7f967d5e07b\u0026amp;signature=ccbb9c76c460d2ca5cdeef64c9f076fc1aa022bd1806bd05d9cb3d97f236dc9a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/brask/64TpFZATa3dVq0DX/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Rask AI API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0B0BCF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.api.rask.ai/operations/deleteSegment\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/operations/deleteSegment.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.api.rask.ai/#organization\",\"name\":\"Rask AI API\",\"url\":\"https://docs.api.rask.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/brask/hT_Hdq5wOpSqsld0/logo/black.svg?fit=max\u0026auto=format\u0026n=hT_Hdq5wOpSqsld0\u0026q=85\u0026s=89737eaceb0bbdbadb10eeb2e0537eee\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.api.rask.ai#website\",\"name\":\"Rask AI API\",\"url\":\"https://docs.api.rask.ai\",\"publisher\":{\"@id\":\"https://docs.api.rask.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.api.rask.ai/operations/deleteSegment#webpage\",\"url\":\"https://docs.api.rask.ai/operations/deleteSegment\",\"name\":\"Delete a segment\",\"description\":\"Deletes a segment of the live transcript.\",\"dateModified\":\"2026-11-12T14:38:52.533Z\",\"isPartOf\":{\"@id\":\"https://docs.api.rask.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.api.rask.ai/operations/deleteSegment#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.api.rask.ai/operations/deleteSegment#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Segments\",\"item\":\"https://docs.api.rask.ai/operations/listSegments\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Delete a segment\",\"item\":\"https://docs.api.rask.ai/operations/deleteSegment\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.api.rask.ai/operations/deleteSegment#apireference\",\"headline\":\"Delete a segment\",\"name\":\"Delete a segment\",\"description\":\"Deletes a segment of the live transcript.\",\"url\":\"https://docs.api.rask.ai/operations/deleteSegment\",\"mainEntityOfPage\":{\"@id\":\"https://docs.api.rask.ai/operations/deleteSegment#webpage\"},\"dateModified\":\"2026-11-12T14:38:52.533Z\",\"publisher\":{\"@id\":\"https://docs.api.rask.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.api.rask.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Rask AI API\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Rask AI API\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/operations/deleteSegment.md","siteName":"Rask AI API","nav":{"global":{"anchors":[{"anchor":"Blog","href":"https://www.rask.ai/blog","icon":"newspaper"}]},"versions":[{"version":"v3","anchors":[{"anchor":"Documentation","icon":"book-open","groups":[{"group":"Get started","pages":[{"title":"Rask API v3","sidebarTitle":"Introduction","href":"/v3/introduction"},{"title":"Quickstart: dub a video from upload to download","sidebarTitle":"Quickstart","href":"/v3/quickstart"},{"title":"API v3 authentication: keys, scopes and caps","sidebarTitle":"Authentication","href":"/authentication"},{"title":"SDKs for Rask API v3","sidebarTitle":"SDKs","href":"/v3/sdks"},{"title":"Move from API v2 to v3","sidebarTitle":"Move from v2","href":"/v3/migrate-from-v2"}]},{"group":"AI agents","pages":[{"title":"Use Rask from an AI agent: prompt, key and spending","sidebarTitle":"Use from an agent","href":"/v3/agents"},{"title":"Rask MCP server: connect, tools and confirmation","sidebarTitle":"MCP server","href":"/v3/mcp"}]},{"group":"Recipes","pages":[{"title":"Choose the dubbing model and read it back","sidebarTitle":"Dubbing model","href":"/v3/recipes/dubbing-model"},{"title":"Create a project from your own transcript","sidebarTitle":"Your own transcript","href":"/v3/recipes/own-transcript"},{"title":"Clone a voice and set its settings","sidebarTitle":"Voice clones","href":"/v3/recipes/voice-clone"},{"title":"Voice chosen segments, then assemble with a dub","sidebarTitle":"Segment generation","href":"/v3/recipes/segment-generation"},{"title":"Lip-sync a dubbed video with a model","sidebarTitle":"Lip-sync","href":"/v3/recipes/lipsync"},{"title":"Translate on-screen text","sidebarTitle":"On-screen text","href":"/v3/recipes/onscreen"},{"title":"One request for dub, lip-sync and on-screen","sidebarTitle":"One request for everything","href":"/v3/recipes/localization-run"},{"title":"Download every output","sidebarTitle":"Downloads","href":"/v3/recipes/downloads"},{"title":"Spend, balance and errors","sidebarTitle":"Spend, balance, errors","href":"/v3/recipes/spend-balance-errors"}]},{"group":"Concepts","pages":[{"title":"Glossary: the words this API uses","sidebarTitle":"Glossary","href":"/v3/concepts/glossary"},{"title":"Conventions: requests, responses and lists","sidebarTitle":"Conventions","href":"/v3/concepts/conventions"},{"title":"Jobs and long-polling","sidebarTitle":"Jobs and long-polling","href":"/v3/concepts/jobs"},{"title":"Idempotency and retries","sidebarTitle":"Idempotency and retries","href":"/v3/concepts/idempotency"},{"title":"ETags and If-Match","sidebarTitle":"ETags and If-Match","href":"/v3/concepts/etags"},{"title":"Paid text: closed until the first dub is charged","sidebarTitle":"Paid text","href":"/v3/concepts/paid-text"},{"title":"Capabilities, models and plan limits","sidebarTitle":"Capabilities and limits","href":"/v3/concepts/capabilities"},{"title":"Prices and refunds","sidebarTitle":"Prices and refunds","href":"/v3/concepts/pricing"},{"title":"Operation table","sidebarTitle":"Operation table","href":"/v3/concepts/operation-table"},{"title":"API v3 changelog","sidebarTitle":"Changelog","href":"/changelog"}]},{"group":"Errors","pages":[{"title":"Errors","sidebarTitle":"All error codes","href":"/errors"},{"group":"400 Bad request","pages":[{"title":"idempotency_key_required","sidebarTitle":"idempotency_key_required","href":"/errors/idempotency_key_required"},{"title":"invalid_cursor","sidebarTitle":"invalid_cursor","href":"/errors/invalid_cursor"},{"title":"token_in_query","sidebarTitle":"token_in_query","href":"/errors/token_in_query"}]},{"group":"401 and 403 Access","pages":[{"title":"account_disabled","sidebarTitle":"account_disabled","href":"/errors/account_disabled"},{"title":"authentication_required","sidebarTitle":"authentication_required","href":"/errors/authentication_required"},{"title":"demo_project_read_only","sidebarTitle":"demo_project_read_only","href":"/errors/demo_project_read_only"},{"title":"feature_not_in_plan","sidebarTitle":"feature_not_in_plan","href":"/errors/feature_not_in_plan"},{"title":"forbidden","sidebarTitle":"forbidden","href":"/errors/forbidden"},{"title":"insufficient_scope","sidebarTitle":"insufficient_scope","href":"/errors/insufficient_scope"},{"title":"invalid_token","sidebarTitle":"invalid_token","href":"/errors/invalid_token"},{"title":"prepare_mode_not_enabled","sidebarTitle":"prepare_mode_not_enabled","href":"/errors/prepare_mode_not_enabled"},{"title":"token_expired","sidebarTitle":"token_expired","href":"/errors/token_expired"},{"title":"token_revoked","sidebarTitle":"token_revoked","href":"/errors/token_revoked"},{"title":"token_spend_limit_exceeded","sidebarTitle":"token_spend_limit_exceeded","href":"/errors/token_spend_limit_exceeded"},{"title":"token_wrong_environment","sidebarTitle":"token_wrong_environment","href":"/errors/token_wrong_environment"},{"title":"trial_project_dub_not_allowed","sidebarTitle":"trial_project_dub_not_allowed","href":"/errors/trial_project_dub_not_allowed"},{"title":"voice_clone_limit_reached","sidebarTitle":"voice_clone_limit_reached","href":"/errors/voice_clone_limit_reached"},{"title":"workspace_access_suspended","sidebarTitle":"workspace_access_suspended","href":"/errors/workspace_access_suspended"}]},{"group":"402 Balance","pages":[{"title":"insufficient_balance","sidebarTitle":"insufficient_balance","href":"/errors/insufficient_balance"}]},{"group":"404 and 410 Missing","pages":[{"title":"folder_not_found","sidebarTitle":"folder_not_found","href":"/errors/folder_not_found"},{"title":"glossary_not_found","sidebarTitle":"glossary_not_found","href":"/errors/glossary_not_found"},{"title":"job_not_found","sidebarTitle":"job_not_found","href":"/errors/job_not_found"},{"title":"media_not_found","sidebarTitle":"media_not_found","href":"/errors/media_not_found"},{"title":"method_not_allowed","sidebarTitle":"method_not_allowed","href":"/errors/method_not_allowed"},{"title":"not_found","sidebarTitle":"not_found","href":"/errors/not_found"},{"title":"project_not_found","sidebarTitle":"project_not_found","href":"/errors/project_not_found"},{"title":"segment_not_found","sidebarTitle":"segment_not_found","href":"/errors/segment_not_found"},{"title":"speaker_not_found","sidebarTitle":"speaker_not_found","href":"/errors/speaker_not_found"},{"title":"transcript_version_not_found","sidebarTitle":"transcript_version_not_found","href":"/errors/transcript_version_not_found"},{"title":"upload_expired","sidebarTitle":"upload_expired","href":"/errors/upload_expired"},{"title":"upload_not_found","sidebarTitle":"upload_not_found","href":"/errors/upload_not_found"},{"title":"voice_clone_not_found","sidebarTitle":"voice_clone_not_found","href":"/errors/voice_clone_not_found"}]},{"group":"409 Conflict","pages":[{"title":"cost_changed","sidebarTitle":"cost_changed","href":"/errors/cost_changed"},{"title":"dub_in_progress","sidebarTitle":"dub_in_progress","href":"/errors/dub_in_progress"},{"title":"dub_payment_required","sidebarTitle":"dub_payment_required","href":"/errors/dub_payment_required"},{"title":"dub_up_to_date","sidebarTitle":"dub_up_to_date","href":"/errors/dub_up_to_date"},{"title":"export_in_progress","sidebarTitle":"export_in_progress","href":"/errors/export_in_progress"},{"title":"folder_not_empty","sidebarTitle":"folder_not_empty","href":"/errors/folder_not_empty"},{"title":"free_lipsync_already_used","sidebarTitle":"free_lipsync_already_used","href":"/errors/free_lipsync_already_used"},{"title":"idempotency_key_in_use","sidebarTitle":"idempotency_key_in_use","href":"/errors/idempotency_key_in_use"},{"title":"job_already_finished","sidebarTitle":"job_already_finished","href":"/errors/job_already_finished"},{"title":"job_not_cancelable","sidebarTitle":"job_not_cancelable","href":"/errors/job_not_cancelable"},{"title":"job_not_resumable","sidebarTitle":"job_not_resumable","href":"/errors/job_not_resumable"},{"title":"lipsync_already_done","sidebarTitle":"lipsync_already_done","href":"/errors/lipsync_already_done"},{"title":"lipsync_in_progress","sidebarTitle":"lipsync_in_progress","href":"/errors/lipsync_in_progress"},{"title":"media_in_use","sidebarTitle":"media_in_use","href":"/errors/media_in_use"},{"title":"media_not_ready","sidebarTitle":"media_not_ready","href":"/errors/media_not_ready"},{"title":"no_face_detected","sidebarTitle":"no_face_detected","href":"/errors/no_face_detected"},{"title":"no_previous_dub","sidebarTitle":"no_previous_dub","href":"/errors/no_previous_dub"},{"title":"onscreen_in_progress","sidebarTitle":"onscreen_in_progress","href":"/errors/onscreen_in_progress"},{"title":"project_busy","sidebarTitle":"project_busy","href":"/errors/project_busy"},{"title":"project_media_restoring","sidebarTitle":"project_media_restoring","href":"/errors/project_media_restoring"},{"title":"project_not_dubbed","sidebarTitle":"project_not_dubbed","href":"/errors/project_not_dubbed"},{"title":"project_not_ready","sidebarTitle":"project_not_ready","href":"/errors/project_not_ready"},{"title":"restore_in_progress","sidebarTitle":"restore_in_progress","href":"/errors/restore_in_progress"},{"title":"segment_busy","sidebarTitle":"segment_busy","href":"/errors/segment_busy"},{"title":"subtitle_import_in_progress","sidebarTitle":"subtitle_import_in_progress","href":"/errors/subtitle_import_in_progress"},{"title":"transcript_busy","sidebarTitle":"transcript_busy","href":"/errors/transcript_busy"},{"title":"transcript_not_ready","sidebarTitle":"transcript_not_ready","href":"/errors/transcript_not_ready"},{"title":"transcript_replaced","sidebarTitle":"transcript_replaced","href":"/errors/transcript_replaced"},{"title":"upload_incomplete","sidebarTitle":"upload_incomplete","href":"/errors/upload_incomplete"},{"title":"upload_not_pending","sidebarTitle":"upload_not_pending","href":"/errors/upload_not_pending"},{"title":"voice_clone_in_use","sidebarTitle":"voice_clone_in_use","href":"/errors/voice_clone_in_use"},{"title":"voice_clone_not_ready","sidebarTitle":"voice_clone_not_ready","href":"/errors/voice_clone_not_ready"},{"title":"voices_not_assigned","sidebarTitle":"voices_not_assigned","href":"/errors/voices_not_assigned"}]},{"group":"412 and 428 Preconditions","pages":[{"title":"precondition_failed","sidebarTitle":"precondition_failed","href":"/errors/precondition_failed"},{"title":"precondition_required","sidebarTitle":"precondition_required","href":"/errors/precondition_required"}]},{"group":"413, 415 and 422 Input","pages":[{"title":"auto_dub_required","sidebarTitle":"auto_dub_required","href":"/errors/auto_dub_required"},{"title":"field_not_updatable","sidebarTitle":"field_not_updatable","href":"/errors/field_not_updatable"},{"title":"glossary_entries_invalid","sidebarTitle":"glossary_entries_invalid","href":"/errors/glossary_entries_invalid"},{"title":"glossary_language_mismatch","sidebarTitle":"glossary_language_mismatch","href":"/errors/glossary_language_mismatch"},{"title":"glossary_language_pair_not_supported","sidebarTitle":"glossary_language_pair_not_supported","href":"/errors/glossary_language_pair_not_supported"},{"title":"idempotency_key_reused","sidebarTitle":"idempotency_key_reused","href":"/errors/idempotency_key_reused"},{"title":"instant_clone_not_available","sidebarTitle":"instant_clone_not_available","href":"/errors/instant_clone_not_available"},{"title":"invalid_date_range","sidebarTitle":"invalid_date_range","href":"/errors/invalid_date_range"},{"title":"localization_combination_not_supported","sidebarTitle":"localization_combination_not_supported","href":"/errors/localization_combination_not_supported"},{"title":"media_processing_failed","sidebarTitle":"media_processing_failed","href":"/errors/media_processing_failed"},{"title":"media_purpose_mismatch","sidebarTitle":"media_purpose_mismatch","href":"/errors/media_purpose_mismatch"},{"title":"media_too_large","sidebarTitle":"media_too_large","href":"/errors/media_too_large"},{"title":"media_too_long","sidebarTitle":"media_too_long","href":"/errors/media_too_long"},{"title":"onscreen_language_not_supported","sidebarTitle":"onscreen_language_not_supported","href":"/errors/onscreen_language_not_supported"},{"title":"onscreen_video_too_long","sidebarTitle":"onscreen_video_too_long","href":"/errors/onscreen_video_too_long"},{"title":"request_too_large","sidebarTitle":"request_too_large","href":"/errors/request_too_large"},{"title":"segments_missing_translation","sidebarTitle":"segments_missing_translation","href":"/errors/segments_missing_translation"},{"title":"source_language_not_supported","sidebarTitle":"source_language_not_supported","href":"/errors/source_language_not_supported"},{"title":"source_url_not_allowed","sidebarTitle":"source_url_not_allowed","href":"/errors/source_url_not_allowed"},{"title":"speaker_has_no_speech","sidebarTitle":"speaker_has_no_speech","href":"/errors/speaker_has_no_speech"},{"title":"subtitles_invalid","sidebarTitle":"subtitles_invalid","href":"/errors/subtitles_invalid"},{"title":"target_language_not_supported","sidebarTitle":"target_language_not_supported","href":"/errors/target_language_not_supported"},{"title":"translation_batch_too_large","sidebarTitle":"translation_batch_too_large","href":"/errors/translation_batch_too_large"},{"title":"unsupported_media_type","sidebarTitle":"unsupported_media_type","href":"/errors/unsupported_media_type"},{"title":"upload_size_mismatch","sidebarTitle":"upload_size_mismatch","href":"/errors/upload_size_mismatch"},{"title":"validation_failed","sidebarTitle":"validation_failed","href":"/errors/validation_failed"},{"title":"voice_not_in_pool","sidebarTitle":"voice_not_in_pool","href":"/errors/voice_not_in_pool"}]},{"group":"429 Limits","pages":[{"title":"rate_limited","sidebarTitle":"rate_limited","href":"/errors/rate_limited"},{"title":"too_many_concurrent_jobs","sidebarTitle":"too_many_concurrent_jobs","href":"/errors/too_many_concurrent_jobs"},{"title":"too_many_waiters","sidebarTitle":"too_many_waiters","href":"/errors/too_many_waiters"}]},{"group":"5xx Server","pages":[{"title":"api_unavailable","sidebarTitle":"api_unavailable","href":"/errors/api_unavailable"},{"title":"auth_unavailable","sidebarTitle":"auth_unavailable","href":"/errors/auth_unavailable"},{"title":"feature_temporarily_disabled","sidebarTitle":"feature_temporarily_disabled","href":"/errors/feature_temporarily_disabled"},{"title":"internal_error","sidebarTitle":"internal_error","href":"/errors/internal_error"},{"title":"plan_configuration_error","sidebarTitle":"plan_configuration_error","href":"/errors/plan_configuration_error"},{"title":"spending_paused","sidebarTitle":"spending_paused","href":"/errors/spending_paused"},{"title":"temporarily_unavailable","sidebarTitle":"temporarily_unavailable","href":"/errors/temporarily_unavailable"}]},{"group":"Inside a job","pages":[{"title":"audio_separation_failed","sidebarTitle":"audio_separation_failed","href":"/errors/audio_separation_failed"},{"title":"dub_failed","sidebarTitle":"dub_failed","href":"/errors/dub_failed"},{"title":"dub_merge_failed","sidebarTitle":"dub_merge_failed","href":"/errors/dub_merge_failed"},{"title":"dub_timeout","sidebarTitle":"dub_timeout","href":"/errors/dub_timeout"},{"title":"dub_voiceover_failed","sidebarTitle":"dub_voiceover_failed","href":"/errors/dub_voiceover_failed"},{"title":"export_failed","sidebarTitle":"export_failed","href":"/errors/export_failed"},{"title":"face_check_failed","sidebarTitle":"face_check_failed","href":"/errors/face_check_failed"},{"title":"lipsync_failed","sidebarTitle":"lipsync_failed","href":"/errors/lipsync_failed"},{"title":"lipsync_rejected","sidebarTitle":"lipsync_rejected","href":"/errors/lipsync_rejected"},{"title":"lipsync_timeout","sidebarTitle":"lipsync_timeout","href":"/errors/lipsync_timeout"},{"title":"localization_stage_failed","sidebarTitle":"localization_stage_failed","href":"/errors/localization_stage_failed"},{"title":"localization_stage_skipped","sidebarTitle":"localization_stage_skipped","href":"/errors/localization_stage_skipped"},{"title":"media_corrupt","sidebarTitle":"media_corrupt","href":"/errors/media_corrupt"},{"title":"no_audio_track","sidebarTitle":"no_audio_track","href":"/errors/no_audio_track"},{"title":"no_speech_detected","sidebarTitle":"no_speech_detected","href":"/errors/no_speech_detected"},{"title":"onscreen_charge_failed","sidebarTitle":"onscreen_charge_failed","href":"/errors/onscreen_charge_failed"},{"title":"onscreen_finalize_timeout","sidebarTitle":"onscreen_finalize_timeout","href":"/errors/onscreen_finalize_timeout"},{"title":"onscreen_invalid_result","sidebarTitle":"onscreen_invalid_result","href":"/errors/onscreen_invalid_result"},{"title":"onscreen_provider_unavailable","sidebarTitle":"onscreen_provider_unavailable","href":"/errors/onscreen_provider_unavailable"},{"title":"onscreen_publish_failed","sidebarTitle":"onscreen_publish_failed","href":"/errors/onscreen_publish_failed"},{"title":"onscreen_queue_timeout","sidebarTitle":"onscreen_queue_timeout","href":"/errors/onscreen_queue_timeout"},{"title":"onscreen_runner_failed","sidebarTitle":"onscreen_runner_failed","href":"/errors/onscreen_runner_failed"},{"title":"onscreen_runner_lost","sidebarTitle":"onscreen_runner_lost","href":"/errors/onscreen_runner_lost"},{"title":"onscreen_source_unavailable","sidebarTitle":"onscreen_source_unavailable","href":"/errors/onscreen_source_unavailable"},{"title":"project_deleted","sidebarTitle":"project_deleted","href":"/errors/project_deleted"},{"title":"project_processing_timeout","sidebarTitle":"project_processing_timeout","href":"/errors/project_processing_timeout"},{"title":"restore_failed","sidebarTitle":"restore_failed","href":"/errors/restore_failed"},{"title":"segment_generation_failed","sidebarTitle":"segment_generation_failed","href":"/errors/segment_generation_failed"},{"title":"segment_generation_timeout","sidebarTitle":"segment_generation_timeout","href":"/errors/segment_generation_timeout"},{"title":"source_download_failed","sidebarTitle":"source_download_failed","href":"/errors/source_download_failed"},{"title":"source_unavailable","sidebarTitle":"source_unavailable","href":"/errors/source_unavailable"},{"title":"speaker_detection_failed","sidebarTitle":"speaker_detection_failed","href":"/errors/speaker_detection_failed"},{"title":"subtitle_import_rolled_back","sidebarTitle":"subtitle_import_rolled_back","href":"/errors/subtitle_import_rolled_back"},{"title":"transcription_failed","sidebarTitle":"transcription_failed","href":"/errors/transcription_failed"},{"title":"translation_dispatch_failed","sidebarTitle":"translation_dispatch_failed","href":"/errors/translation_dispatch_failed"},{"title":"translation_failed","sidebarTitle":"translation_failed","href":"/errors/translation_failed"},{"title":"translation_timeout","sidebarTitle":"translation_timeout","href":"/errors/translation_timeout"},{"title":"voice_clone_failed","sidebarTitle":"voice_clone_failed","href":"/errors/voice_clone_failed"},{"title":"voice_clone_timeout","sidebarTitle":"voice_clone_timeout","href":"/errors/voice_clone_timeout"}]}]},{"group":"Account","pages":[{"title":"Get the payer's credit balance","sidebarTitle":"getBalance","openapi":"openapi.v3.json GET /balance","href":"/operations/getBalance"},{"title":"Get the calling key, user and workspace","sidebarTitle":"getMe","openapi":"openapi.v3.json GET /me","href":"/operations/getMe"},{"title":"Get the payer's plan, entitlements and limits","sidebarTitle":"getPlan","openapi":"openapi.v3.json GET /plan","href":"/operations/getPlan"}]},{"group":"Usage","pages":[{"title":"Get aggregated credit usage","sidebarTitle":"getUsage","openapi":"openapi.v3.json GET /usage","href":"/operations/getUsage"},{"title":"List credit usage events","sidebarTitle":"listUsageEvents","openapi":"openapi.v3.json GET /usage/events","href":"/operations/listUsageEvents"}]},{"group":"Catalogs","pages":[{"title":"List supported languages and capabilities","sidebarTitle":"listLanguages","openapi":"openapi.v3.json GET /languages","href":"/operations/listLanguages"}]},{"group":"Uploads","pages":[{"title":"Create a presigned upload","sidebarTitle":"createUpload","openapi":"openapi.v3.json POST /uploads","href":"/operations/createUpload"},{"title":"Get an upload and refresh its upload URLs","sidebarTitle":"getUpload","openapi":"openapi.v3.json GET /uploads/{upload_id}","href":"/operations/getUpload"},{"title":"Abort a pending upload","sidebarTitle":"deleteUpload","openapi":"openapi.v3.json DELETE /uploads/{upload_id}","href":"/operations/deleteUpload"},{"title":"Complete an upload and import the media","sidebarTitle":"completeUpload","openapi":"openapi.v3.json POST /uploads/{upload_id}/complete","href":"/operations/completeUpload"}]},{"group":"Media","pages":[{"title":"List media in the workspace","sidebarTitle":"listMedia","openapi":"openapi.v3.json GET /media","href":"/operations/listMedia"},{"title":"Import media from a public URL","sidebarTitle":"importMedia","openapi":"openapi.v3.json POST /media/import","href":"/operations/importMedia"},{"title":"Get a media item","sidebarTitle":"getMedia","openapi":"openapi.v3.json GET /media/{media_id}","href":"/operations/getMedia"},{"title":"Delete a media item","sidebarTitle":"deleteMedia","openapi":"openapi.v3.json DELETE /media/{media_id}","href":"/operations/deleteMedia"}]},{"group":"Projects","pages":[{"title":"List folders","sidebarTitle":"listFolders","openapi":"openapi.v3.json GET /folders","href":"/operations/listFolders"},{"title":"Create a folder","sidebarTitle":"createFolder","openapi":"openapi.v3.json POST /folders","href":"/operations/createFolder"},{"title":"Get a folder","sidebarTitle":"getFolder","openapi":"openapi.v3.json GET /folders/{folder_id}","href":"/operations/getFolder"},{"title":"Rename or pin a folder","sidebarTitle":"updateFolder","openapi":"openapi.v3.json PATCH /folders/{folder_id}","href":"/operations/updateFolder"},{"title":"Delete an empty folder","sidebarTitle":"deleteFolder","openapi":"openapi.v3.json DELETE /folders/{folder_id}","href":"/operations/deleteFolder"},{"title":"List projects","sidebarTitle":"listProjects","openapi":"openapi.v3.json GET /projects","href":"/operations/listProjects"},{"title":"Create a localization project","sidebarTitle":"createProject","openapi":"openapi.v3.json POST /projects","href":"/operations/createProject"},{"title":"Delete several projects","sidebarTitle":"deleteProjectBatch","openapi":"openapi.v3.json DELETE /projects","href":"/operations/deleteProjectBatch"},{"title":"Estimate the cost of creating a project","sidebarTitle":"estimateProject","openapi":"openapi.v3.json POST /projects/estimate","href":"/operations/estimateProject"},{"title":"Get a project","sidebarTitle":"getProject","openapi":"openapi.v3.json GET /projects/{project_id}","href":"/operations/getProject"},{"title":"Update a project's name, folder or metadata","sidebarTitle":"updateProject","openapi":"openapi.v3.json PATCH /projects/{project_id}","href":"/operations/updateProject"},{"title":"Delete a project","sidebarTitle":"deleteProject","openapi":"openapi.v3.json DELETE /projects/{project_id}","href":"/operations/deleteProject"},{"title":"Copy a project into other target languages","sidebarTitle":"createProjectCopies","openapi":"openapi.v3.json POST /projects/{project_id}/copies","href":"/operations/createProjectCopies"},{"title":"Estimate copies of a project","sidebarTitle":"estimateProjectCopies","openapi":"openapi.v3.json POST /projects/{project_id}/copies/estimate","href":"/operations/estimateProjectCopies"}]},{"group":"Exports","pages":[{"title":"Export a video with burned-in subtitles","sidebarTitle":"createExport","openapi":"openapi.v3.json POST /projects/{project_id}/exports","href":"/operations/createExport"},{"title":"Restore a project's archived files","sidebarTitle":"createFileRestore","openapi":"openapi.v3.json POST /projects/{project_id}/file-restores","href":"/operations/createFileRestore"},{"title":"List a project's downloadable outputs","sidebarTitle":"listProjectOutputs","openapi":"openapi.v3.json GET /projects/{project_id}/outputs","href":"/operations/listProjectOutputs"},{"title":"Render a project's subtitles","sidebarTitle":"getProjectSubtitles","openapi":"openapi.v3.json GET /projects/{project_id}/subtitles","href":"/operations/getProjectSubtitles"}]},{"group":"Glossaries","pages":[{"title":"List glossaries","sidebarTitle":"listGlossaries","openapi":"openapi.v3.json GET /glossaries","href":"/operations/listGlossaries"},{"title":"Create a glossary","sidebarTitle":"createGlossary","openapi":"openapi.v3.json POST /glossaries","href":"/operations/createGlossary"},{"title":"Get a glossary with its entries","sidebarTitle":"getGlossary","openapi":"openapi.v3.json GET /glossaries/{glossary_id}","href":"/operations/getGlossary"},{"title":"Update a glossary","sidebarTitle":"updateGlossary","openapi":"openapi.v3.json PATCH /glossaries/{glossary_id}","href":"/operations/updateGlossary"},{"title":"Delete a glossary","sidebarTitle":"deleteGlossary","openapi":"openapi.v3.json DELETE /glossaries/{glossary_id}","href":"/operations/deleteGlossary"}]},{"group":"Jobs","pages":[{"title":"List jobs","sidebarTitle":"listJobs","openapi":"openapi.v3.json GET /jobs","href":"/operations/listJobs"},{"title":"Get a job, optionally waiting for a change","sidebarTitle":"getJob","openapi":"openapi.v3.json GET /jobs/{job_id}","href":"/operations/getJob"},{"title":"Cancel a job","sidebarTitle":"cancelJob","openapi":"openapi.v3.json POST /jobs/{job_id}/cancel","href":"/operations/cancelJob"},{"title":"Resume a failed localization job","sidebarTitle":"resumeJob","openapi":"openapi.v3.json POST /jobs/{job_id}/resume","href":"/operations/resumeJob"}]},{"group":"Transcript","pages":[{"title":"Retranslate segments","sidebarTitle":"retranslateSegments","openapi":"openapi.v3.json POST /projects/{project_id}/retranslation","href":"/operations/retranslateSegments"},{"title":"Get a project's transcript summary","sidebarTitle":"getTranscript","openapi":"openapi.v3.json GET /projects/{project_id}/transcript","href":"/operations/getTranscript"},{"title":"Replace the transcript from SRT subtitles","sidebarTitle":"importTranscript","openapi":"openapi.v3.json POST /projects/{project_id}/transcript/import","href":"/operations/importTranscript"},{"title":"Get a project's translation settings","sidebarTitle":"getTranslationSettings","openapi":"openapi.v3.json GET /projects/{project_id}/translation-settings","href":"/operations/getTranslationSettings"},{"title":"Update translation instructions or glossary","sidebarTitle":"updateTranslationSettings","openapi":"openapi.v3.json PATCH /projects/{project_id}/translation-settings","href":"/operations/updateTranslationSettings"}]},{"group":"Segments","pages":[{"title":"List transcript segments","sidebarTitle":"listSegments","openapi":"openapi.v3.json GET /projects/{project_id}/segments","href":"/operations/listSegments"},{"title":"Insert a segment","sidebarTitle":"createSegment","openapi":"openapi.v3.json POST /projects/{project_id}/segments","href":"/operations/createSegment"},{"title":"Merge adjacent segments","sidebarTitle":"mergeSegments","openapi":"openapi.v3.json POST /projects/{project_id}/segments/merge","href":"/operations/mergeSegments"},{"title":"Get a segment","sidebarTitle":"getSegment","openapi":"openapi.v3.json GET /projects/{project_id}/segments/{segment_id}","href":"/operations/getSegment"},{"title":"Update a segment","sidebarTitle":"updateSegment","description":"Changes timing, speaker, source or translation text, the review flag, or retranslates.","openapi":"openapi.v3.json PATCH /projects/{project_id}/segments/{segment_id}","href":"/operations/updateSegment"},{"title":"Delete a segment","sidebarTitle":"deleteSegment","openapi":"openapi.v3.json DELETE /projects/{project_id}/segments/{segment_id}","href":"/operations/deleteSegment"},{"title":"Select a translation variant for a segment","sidebarTitle":"selectTranslationVariant","description":"Sets the segment's translation to one of its translation_variants (see include=variants) and records the selection; the audio is dropped.","openapi":"openapi.v3.json POST /projects/{project_id}/segments/{segment_id}/select-variant","href":"/operations/selectTranslationVariant"},{"title":"Split a segment in two","sidebarTitle":"splitSegment","openapi":"openapi.v3.json POST /projects/{project_id}/segments/{segment_id}/split","href":"/operations/splitSegment"}]},{"group":"Versions","pages":[{"title":"List transcript versions","sidebarTitle":"listTranscriptVersions","openapi":"openapi.v3.json GET /projects/{project_id}/transcript/versions","href":"/operations/listTranscriptVersions"},{"title":"Save a transcript version","sidebarTitle":"createTranscriptVersion","openapi":"openapi.v3.json POST /projects/{project_id}/transcript/versions","href":"/operations/createTranscriptVersion"},{"title":"Get a transcript version","sidebarTitle":"getTranscriptVersion","openapi":"openapi.v3.json GET /projects/{project_id}/transcript/versions/{version_number}","href":"/operations/getTranscriptVersion"},{"title":"Restore a transcript version","sidebarTitle":"restoreTranscriptVersion","openapi":"openapi.v3.json POST /projects/{project_id}/transcript/versions/{version_number}/restore","href":"/operations/restoreTranscriptVersion"},{"title":"List the segments of a transcript version","sidebarTitle":"listTranscriptVersionSegments","openapi":"openapi.v3.json GET /projects/{project_id}/transcript/versions/{version_number}/segments","href":"/operations/listTranscriptVersionSegments"}]},{"group":"Speakers","pages":[{"title":"List a project's speakers","sidebarTitle":"listSpeakers","openapi":"openapi.v3.json GET /projects/{project_id}/speakers","href":"/operations/listSpeakers"},{"title":"Get a speaker","sidebarTitle":"getSpeaker","openapi":"openapi.v3.json GET /projects/{project_id}/speakers/{speaker_id}","href":"/operations/getSpeaker"},{"title":"Set a speaker's voice","sidebarTitle":"updateSpeakerVoice","openapi":"openapi.v3.json PUT /projects/{project_id}/speakers/{speaker_id}/voice","href":"/operations/updateSpeakerVoice"}]},{"group":"Voices","pages":[{"title":"List voices available to a project","sidebarTitle":"listProjectVoices","openapi":"openapi.v3.json GET /projects/{project_id}/voices","href":"/operations/listProjectVoices"},{"title":"List voices for a target language","sidebarTitle":"listVoices","openapi":"openapi.v3.json GET /voices","href":"/operations/listVoices"}]},{"group":"Voice clones","pages":[{"title":"List voice clones","sidebarTitle":"listVoiceClones","openapi":"openapi.v3.json GET /voice-clones","href":"/operations/listVoiceClones"},{"title":"Create a voice clone","sidebarTitle":"createVoiceClone","openapi":"openapi.v3.json POST /voice-clones","href":"/operations/createVoiceClone"},{"title":"Get the voice clone quota","sidebarTitle":"getVoiceCloneQuota","openapi":"openapi.v3.json GET /voice-clones/quota","href":"/operations/getVoiceCloneQuota"},{"title":"Get a voice clone","sidebarTitle":"getVoiceClone","openapi":"openapi.v3.json GET /voice-clones/{voice_clone_id}","href":"/operations/getVoiceClone"},{"title":"Rename a voice clone or change its settings","sidebarTitle":"updateVoiceClone","openapi":"openapi.v3.json PATCH /voice-clones/{voice_clone_id}","href":"/operations/updateVoiceClone"},{"title":"Delete a voice clone","sidebarTitle":"deleteVoiceClone","openapi":"openapi.v3.json DELETE /voice-clones/{voice_clone_id}","href":"/operations/deleteVoiceClone"}]},{"group":"Dubbing","pages":[{"title":"Dub or redub a project","sidebarTitle":"createDub","openapi":"openapi.v3.json POST /projects/{project_id}/dub","href":"/operations/createDub"},{"title":"Estimate a dub or redub","sidebarTitle":"estimateDub","openapi":"openapi.v3.json POST /projects/{project_id}/dub/estimate","href":"/operations/estimateDub"},{"title":"Run dub, lip-sync and on-screen as one job","sidebarTitle":"createLocalization","openapi":"openapi.v3.json POST /projects/{project_id}/localizations","href":"/operations/createLocalization"},{"title":"Estimate a dub, lip-sync and on-screen run","sidebarTitle":"estimateLocalization","openapi":"openapi.v3.json POST /projects/{project_id}/localizations/estimate","href":"/operations/estimateLocalization"},{"title":"Voice chosen segments into downloadable clips","sidebarTitle":"generateSegments","openapi":"openapi.v3.json POST /projects/{project_id}/segments/generate","href":"/operations/generateSegments"},{"title":"Estimate voicing chosen segments","sidebarTitle":"estimateSegmentGeneration","openapi":"openapi.v3.json POST /projects/{project_id}/segments/generate/estimate","href":"/operations/estimateSegmentGeneration"}]},{"group":"Lipsync","pages":[{"title":"Get a project's lip-sync state","sidebarTitle":"getLipsyncState","openapi":"openapi.v3.json GET /projects/{project_id}/lipsync","href":"/operations/getLipsyncState"},{"title":"Lip-sync a dubbed video","sidebarTitle":"createLipsync","openapi":"openapi.v3.json POST /projects/{project_id}/lipsync","href":"/operations/createLipsync"},{"title":"Estimate a lip-sync run","sidebarTitle":"estimateLipsync","openapi":"openapi.v3.json POST /projects/{project_id}/lipsync/estimate","href":"/operations/estimateLipsync"}]},{"group":"Onscreen","pages":[{"title":"Get a project's on-screen translation state","sidebarTitle":"getOnscreenState","openapi":"openapi.v3.json GET /projects/{project_id}/onscreen","href":"/operations/getOnscreenState"},{"title":"Translate on-screen text","sidebarTitle":"createOnscreen","openapi":"openapi.v3.json POST /projects/{project_id}/onscreen","href":"/operations/createOnscreen"},{"title":"Estimate on-screen text translation","sidebarTitle":"estimateOnscreen","openapi":"openapi.v3.json POST /projects/{project_id}/onscreen/estimate","href":"/operations/estimateOnscreen"}]}]}]},{"version":"v2","pages":[{"title":"v2","href":"/introduction"}]}]},"basePath":"","title":"Delete a segment - Rask AI API","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CybtLBIt.js","utils-BMLj2fvV.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-B6In562Y.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dr8Mfhp9.js","snippetPresets-2rmQvMVl.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-WMqJYdZj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CJ-MlPHu.js","shallow-dY3TMRCk.js","getApiPlaygroundDisplay-v-1B2bKm.js","CodeSnippet-BDhiTB7U.js","CodeSnippets-D9hnzQcS.js","Page-C4GwDT3_.js","getPastedJson-Th2V45jI.js","icon-BQXch1W9.js","MethodPill-BCqUneP3.js","DuplicateIcon-Q_-bhurZ.js","createIcon-DUjLHRqp.js","DynamicMarkdown-B-f2cqXQ.js","SectionHeading-Da5NsV4v.js","axios-vUo_bRtp.js","Markdown-D13FWkIM.js","clsx-D3Isdib3.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-C-XZBk9h.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink--qIqmmVG.js"]}