Returns who is calling: the acting user, the workspace the key is bound to, the payer (the workspace owner, who is charged for all work), the key’s scopes, expiry and monthly spend caps (minutes and project credits), the plan summary and its entitlements. An allow-listed view: no billing identifiers, marketing or UI-state fields.When to use: first, to learn the workspace, role and scopes before planning work. Leaked-key scanners use it to verify a key.Side effects: None.Cost: Free.Idempotency: safe and pure (never writes); retry freely.Required scopes:account:read
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).
{"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/getMe","slug":"/operations/getMe","pageMetadata":{"title":"Get the calling key, user and workspace","sidebarTitle":"getMe","description":"Returns who is calling.","openapi":"openapi.v3.json GET /me","href":"/operations/getMe"},"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: \"Returns who is calling.\"\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:`Returns who is calling: the acting user, the workspace the key is bound to, the payer (the workspace owner, who is charged for all work), the key’s scopes, expiry and monthly spend caps (minutes and project credits), the plan summary and its entitlements. An allow-listed view: no billing identifiers, marketing or UI-state fields.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`When to use:`}),` first, to learn the workspace, role and scopes before planning work. Leaked-key scanners use it to verify a key.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Side effects:`}),` None.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Cost:`}),` Free.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Idempotency:`}),` safe and pure (never writes); retry freely.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Required scopes:`}),` `,_jsx(_components.code,{children:`account:read`})]})]})}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":"Get the calling key, user and workspace","sidebarTitle":"getMe","description":"Returns who is calling.","openapi":"openapi.v3.json GET /me","href":"/operations/getMe"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"getMe","tags":["Account"],"summary":"Get the calling key, user and workspace","description":"Returns who is calling.","security":["ad3b1e78-afbc-4cea-bc7c-2960ffd95143"],"responses":{"200":"67a58872-43fd-4033-b2e9-29b44f404ab4","400":"8f46032d-eb9b-4564-aa1f-a8a92df813fa","401":"8a291776-fadd-4e29-bf2f-728139852a62","403":"23b2e1c9-e415-4283-ab79-5b5e067051e0","429":"6469ebdc-69fb-44e4-bf3a-54db5230bbc4","500":"f72bd296-66d9-4193-81cb-914a9158a88f","503":"b089c943-1f2f-468d-8f90-aa3a6eb4043f"},"x-rask-operation":{"effect":"read","async":"none","job_type":null,"idempotency_key":"none","etag":"none","pagination":"none","estimate_operation":null,"plan_feature":null,"scopes":["account:read"],"errors":[],"stability":"alpha"},"x-rask-release":"ga","x-stability-level":"alpha","method":"get","type":"path","servers":["61053d33-b3c1-45e9-9029-d55a58076416"],"path":"/me","baseUrlOptions":["https://api.rask.ai/v3"],"title":"Get the calling key, user and workspace","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"responses":{"67a58872-43fd-4033-b2e9-29b44f404ab4":{"description":"OK: `Me`.","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/json":{"schema":{"type":"object","description":"Who is calling: an allow-listed view of the acting user, workspace, payer and credential.","required":["object","user","workspace","payer","auth","plan","entitlements"],"properties":{"object":{"type":"string","enum":["me"],"description":"Always `me`.","isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"user":{"type":"object","description":"The acting user.","required":["id","email","created_at"],"properties":{"id":{"type":"string","description":"User id.","isRequired":true,"uniqueKey":"user.id","typeLabel":"string"},"email":{"type":"string","description":"E-mail address.","format":"email","x-rask-untrusted":true,"isRequired":true,"uniqueKey":"user.email","typeLabel":"string\u003cemail>"},"created_at":{"type":"string","description":"Sign-up time.","format":"date-time","isRequired":true,"uniqueKey":"user.created_at","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"user","typeLabel":"object"},"workspace":{"type":"object","description":"The workspace the key is bound to.","required":["id","name","role","is_default"],"properties":{"id":{"type":"string","description":"Workspace id.","isRequired":true,"uniqueKey":"workspace.id","typeLabel":"string"},"name":{"type":"string","description":"Workspace name.","x-rask-untrusted":true,"isRequired":true,"uniqueKey":"workspace.name","typeLabel":"string"},"role":{"type":"string","description":"Role of the acting user.\n\n- `owner`: owns the workspace and pays for its work\n- `editor`: a member who works in the workspace; the owner pays","enum":["owner","editor"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"workspace.role","typeLabel":"enum\u003cstring>"},"is_default":{"type":"boolean","description":"Whether it is the user's default workspace.","isRequired":true,"uniqueKey":"workspace.is_default","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"workspace","typeLabel":"object"},"payer":{"type":"object","description":"The payer of the workspace.","required":["user_id","is_you"],"properties":{"user_id":{"type":"string","description":"The workspace owner, who pays for all work in the workspace.","isRequired":true,"uniqueKey":"payer.user_id","typeLabel":"string"},"is_you":{"type":"boolean","description":"True when the acting user is the payer.","isRequired":true,"uniqueKey":"payer.is_you","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"payer","typeLabel":"object"},"auth":{"type":"object","description":"The calling credential.","required":["credential_id","kind","display","scopes","audience","oauth_client_id","expires_at","spend_limit_minutes_per_month","spent_minutes_this_month","spend_limit_projects_per_month","spent_projects_this_month"],"properties":{"credential_id":{"type":"string","description":"API key id (or OAuth grant id).","isRequired":true,"uniqueKey":"auth.credential_id","typeLabel":"string"},"kind":{"type":"string","description":"Kind of the calling credential.\n\n- `api_key`: an API key created in Settings -> API keys\n- `oauth`: an app connected through the hosted MCP server's browser login","enum":["api_key","oauth"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"auth.kind","typeLabel":"enum\u003cstring>"},"display":{"type":"string","description":"Masked key, e.g. `raskai_live_key_3Fz9...a1B2`.","isRequired":true,"uniqueKey":"auth.display","typeLabel":"string"},"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":"auth.scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Granted scopes, implications expanded.","isRequired":true,"uniqueKey":"auth.scopes","typeLabel":"enum\u003cstring>[]"},"audience":{"type":"string","description":"Audience the credential was authenticated for.\n\n- `v3`: direct REST calls\n- `mcp`: calls relayed by the Rask MCP server","enum":["v3","mcp"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"auth.audience","typeLabel":"enum\u003cstring>"},"oauth_client_id":{"oneOf":[{"type":"string","description":"OAuth client id; null for API keys.","isRequired":true,"uniqueKey":"auth.oauth_client_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"OAuth client id; null for API keys.","isRequired":true,"uniqueKey":"auth.oauth_client_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"auth.oauth_client_id","typeLabel":"string | null"},"expires_at":{"oneOf":[{"type":"string","description":"Expiry; null when it never expires.","format":"date-time","isRequired":true,"uniqueKey":"auth.expires_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"Expiry; null when it never expires.","format":"date-time","isRequired":true,"uniqueKey":"auth.expires_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"auth.expires_at","typeLabel":"string\u003cdate-time> | null"},"spend_limit_minutes_per_month":{"oneOf":[{"type":"integer","description":"Monthly cap on the minutes pool; null when uncapped.","format":"int32","isRequired":true,"uniqueKey":"auth.spend_limit_minutes_per_month.oneOf.0","typeLabel":"integer\u003cint32>"},{"type":"null","description":"Monthly cap on the minutes pool; null when uncapped.","format":"int32","isRequired":true,"uniqueKey":"auth.spend_limit_minutes_per_month.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"auth.spend_limit_minutes_per_month","typeLabel":"integer\u003cint32> | null"},"spent_minutes_this_month":{"type":"integer","description":"Minutes this credential spent this UTC month, with the deferred spends still pending, which count against the cap and have no usage event yet.","format":"int32","isRequired":true,"uniqueKey":"auth.spent_minutes_this_month","typeLabel":"integer\u003cint32>"},"spend_limit_projects_per_month":{"oneOf":[{"type":"integer","description":"Monthly cap on project credits; null when uncapped.","format":"int32","isRequired":true,"uniqueKey":"auth.spend_limit_projects_per_month.oneOf.0","typeLabel":"integer\u003cint32>"},{"type":"null","description":"Monthly cap on project credits; null when uncapped.","format":"int32","isRequired":true,"uniqueKey":"auth.spend_limit_projects_per_month.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"auth.spend_limit_projects_per_month","typeLabel":"integer\u003cint32> | null"},"spent_projects_this_month":{"type":"integer","description":"Project credits this credential spent this UTC month, with the deferred spends still pending.","format":"int32","isRequired":true,"uniqueKey":"auth.spent_projects_this_month","typeLabel":"integer\u003cint32>"}},"isRequired":true,"uniqueKey":"auth","typeLabel":"object"},"plan":{"type":"object","description":"Plan summary.","required":["name","family","active"],"properties":{"name":{"type":"string","description":"Plan name.","isRequired":true,"uniqueKey":"plan.name","typeLabel":"string"},"family":{"type":"string","description":"Plan family of the payer. Open enum: new values may be added.\n\n- `trial`: no subscription; trial processing window\n- `free`: free subscription\n- `creator`: Creator plans\n- `creator_pro`: Creator Pro plans\n- `business`: Business plans\n- `enterprise`: Enterprise plans\n- `custom`: any other plan","enum":["trial","free","creator","creator_pro","business","enterprise","custom"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"plan.family","typeLabel":"enum\u003cstring>"},"active":{"type":"boolean","description":"Whether the payer's subscription is active.","isRequired":true,"uniqueKey":"plan.active","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"plan","typeLabel":"object"},"entitlements":{"type":"array","items":{"type":"object","description":"A plan feature and whether it is enabled for this workspace.","required":["feature","enabled","reason"],"properties":{"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,"isRequired":true,"uniqueKey":"entitlements.items.[INDEX].feature","typeLabel":"enum\u003cstring>"},"enabled":{"type":"boolean","description":"Whether the payer's plan allows the feature now.","isRequired":true,"uniqueKey":"entitlements.items.[INDEX].enabled","typeLabel":"boolean"},"reason":{"oneOf":[{"type":"string","description":"Why it is disabled; null when enabled.","enum":["not_in_plan","subscription_inactive","temporarily_disabled"],"x-rask-open-enum":true,"isRequired":true,"uniqueKey":"entitlements.items.[INDEX].reason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Why it is disabled; null when enabled.","isRequired":true,"uniqueKey":"entitlements.items.[INDEX].reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"entitlements.items.[INDEX].reason","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"entitlements.items.[INDEX]","typeLabel":"object"},"description":"Plan features.","isRequired":true,"uniqueKey":"entitlements","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"me":{"title":"me","value":{"object":"me","user":{"id":"0d9a4e1c-7f2b-4c8d-a1e5-3b6f9c2d8e47","email":"maria@example.com","created_at":"2025-03-14T10:00:00Z"},"workspace":{"id":"b2e0c6d4-5b1a-4f7e-9a3c-2d8f1e6a7b90","name":"Acme Marketing","role":"owner","is_default":true},"payer":{"user_id":"0d9a4e1c-7f2b-4c8d-a1e5-3b6f9c2d8e47","is_you":true},"auth":{"credential_id":"5c3f8a2e-1d4b-4e9f-b7a6-8e2d1c0f9a35","kind":"api_key","display":"raskai_live_key_3Fz9…a1B2","scopes":["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"],"audience":"v3","oauth_client_id":null,"expires_at":"2027-10-20T08:00:00Z","spend_limit_minutes_per_month":500,"spent_minutes_this_month":120,"spend_limit_projects_per_month":null,"spent_projects_this_month":3},"plan":{"name":"Business","family":"business","active":true},"entitlements":[{"feature":"api_access","enabled":true,"reason":null},{"feature":"auto_dub","enabled":true,"reason":null},{"feature":"glossary","enabled":true,"reason":null},{"feature":"lipsync","enabled":true,"reason":null},{"feature":"lipsync_enhanced","enabled":true,"reason":null},{"feature":"onscreen","enabled":true,"reason":null},{"feature":"audio_download","enabled":false,"reason":"not_in_plan"},{"feature":"share_links","enabled":false,"reason":"not_in_plan"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"8f46032d-eb9b-4564-aa1f-a8a92df813fa":{"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"},"8a291776-fadd-4e29-bf2f-728139852a62":{"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"},"23b2e1c9-e415-4283-ab79-5b5e067051e0":{"description":"Forbidden. Codes: `insufficient_scope`, `account_disabled`, `feature_not_in_plan`, `workspace_access_suspended`.","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":[]}}},"exampleType":"examples"}},"exampleType":"examples"},"6469ebdc-69fb-44e4-bf3a-54db5230bbc4":{"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"},"f72bd296-66d9-4193-81cb-914a9158a88f":{"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"},"b089c943-1f2f-468d-8f90-aa3a6eb4043f":{"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":{"ad3b1e78-afbc-4cea-bc7c-2960ffd95143":{"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":["account:read"],"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":["account:read"],"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":"Get the calling key, user and workspace - Rask AI API","navMaps":{"firstHrefInVersion":{"v3":{"href":"/operations/getMe","matchLevel":0},"v2":{"href":"/introduction","matchLevel":4}},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T14:38:52.515Z","originalFileLocation":"operations/getMe.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=\"Returns who is calling.\">\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=\"Get the calling key, user and workspace - Rask AI API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Returns who is calling.\">\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/getMe\">\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=Account\u0026amp;title=Get+the+calling+key%2C+user+and+workspace\u0026amp;description=Returns+who+is+calling.\u0026amp;theme=0d666554d2a0d7f967d5e07b\u0026amp;signature=b009ec47d8fc9a8e9dc7e2b4652554a99ab6bda9ab2f9b4d4d35e21448119621\">\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=\"Get the calling key, user and workspace - Rask AI API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Returns who is calling.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://brask.mintlify.site/_mintlify/api/og/v2?division=Account\u0026amp;title=Get+the+calling+key%2C+user+and+workspace\u0026amp;description=Returns+who+is+calling.\u0026amp;theme=0d666554d2a0d7f967d5e07b\u0026amp;signature=b009ec47d8fc9a8e9dc7e2b4652554a99ab6bda9ab2f9b4d4d35e21448119621\">\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/getMe\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/operations/getMe.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/getMe#webpage\",\"url\":\"https://docs.api.rask.ai/operations/getMe\",\"name\":\"Get the calling key, user and workspace\",\"description\":\"Returns who is calling.\",\"dateModified\":\"2026-11-12T14:38:52.515Z\",\"isPartOf\":{\"@id\":\"https://docs.api.rask.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.api.rask.ai/operations/getMe#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.api.rask.ai/operations/getMe#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Account\",\"item\":\"https://docs.api.rask.ai/operations/getBalance\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get the calling key, user and workspace\",\"item\":\"https://docs.api.rask.ai/operations/getMe\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.api.rask.ai/operations/getMe#apireference\",\"headline\":\"Get the calling key, user and workspace\",\"name\":\"Get the calling key, user and workspace\",\"description\":\"Returns who is calling.\",\"url\":\"https://docs.api.rask.ai/operations/getMe\",\"mainEntityOfPage\":{\"@id\":\"https://docs.api.rask.ai/operations/getMe#webpage\"},\"dateModified\":\"2026-11-12T14:38:52.515Z\",\"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/getMe.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","description":"Returns the payer's credit pools.","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","description":"Returns the payer's plan as it applies to this workspace.","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","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","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":"Get the calling key, user and workspace - 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"]}