Turns a recorded quote into a job group: one member per quoted entry, each either a transcription job reserved at the entry’s ceiling or, for an entry priced as cached, a settled read at the price the quote gave it. This is the operation that spends.
Every guard runs before the first credit moves. The quote must be the caller’s own and unexpired (quote_not_found, quote_expired); an expected_total_credits in the body must agree with the quote’s recorded total_ceiling_credits, checked before anything is probed (expected_total_mismatch); every entry’s enclosure is re-probed and a republished one refuses the whole confirm naming the episode (quote_mismatch — take a new quote), while entries the probe budget did not reach refuse it unverified (quote_unverified — send the same confirm again); the group’s job-bearing members are checked once against the tier’s open-job cap (concurrency_limited, naming the cap and the room left) and the whole group’s ceiling against the balance (payment_required). A refusal here writes nothing at all.
Idempotency-Key is required. The group is created under it before any member is reserved, so a repeat with the same key and body returns the original group — whatever state it is in — with 200 and charges nothing further. The same key with a different body is 409 idempotency_conflict.
A confirm that dies half way is recoverable without you. The group is written pending first and marked complete only when every member has landed; a group still pending past its completion_deadline is swept — its reservations returned, its status abandoned. Reading the group tells you which.
Authorization: Bearer hk_live_... for live keys or Authorization: Bearer hk_test_... for test-mode keys. hk_test_ keys resolve real public catalog metadata but return deterministic committed fixtures, never call inference, and never mutate live credits. This is the only transport for the credential: the x-api-key alias once documented was removed in 0.2.0, because the edge authorizer reads Authorization as its single identity source and a request on any other header is refused before it is authenticated.
Never accepted on a dashboardJwt operation, and there are no exceptions. GET /v1/usage and GET /v1/limits briefly declared both schemes (0.8.0); that was withdrawn in 0.8.1 because no deployed route could honor it — both operations are served by the control-plane API, whose authorizer verifies a Cognito token and refuses an hk_live_ credential on shape, and the customer API does not route either path. An API-key holder reads its balance and reservation from QuoteResponse, which carries balance_credits and reserved_credits on every quote. Every operation in this document takes one scheme or the other and refuses the wrong one as unauthenticated.
As IdempotencyKeyHeader, but required: a confirm spends up to a whole selection's ceiling, and a retry that could not be recognized as one would spend it twice. Missing is 400 invalid_request.
The quote is in the path and the key is in the header, so the body carries at most the spending fence below. An empty object, or no body at all, is accepted; any other property is refused, so a further field can be added without an old client having silently sent it.
The quote's total_ceiling_credits as the caller read it. Sent, and disagreeing with the quote's own total, the API refuses the confirm with 409 expected_total_mismatch before an enclosure is probed or a credit is reserved: a caller that has misread the price cannot spend it. Omitted, the confirm proceeds on the quote's recorded total alone.
Required range: 0 <= x <= 9007199254740991
Response
The job group this confirm created, complete, with every member named — or, on a repeat under the same Idempotency-Key, the original group as it stands.
One group's rollup. member_count is how many members the confirm set out to create; members is how many exist, which is fewer only while the group is pending (or after it was abandoned part way). credits_reserved is what the group still holds against the balance — the reservations of members not yet terminal; credits_settled is what it has been charged, job members and cache reads together; credits_released is what came back from members that failed, were cancelled, or settled below their ceiling. None of the three is a bill: each job member carries its own figures, and the ledger is the record.
pending while a confirm is still fanning out (or died doing so); complete once every member landed; abandoned once the sweeper returned a pending group's reservations past its deadline. A cancelled group is complete with cancelled members.
How many members are in each job state, plus how many were settled cache reads (which have no state — they were delivered at confirm). The nine sum to member_count on a complete group.
A non-negative JavaScript-safe integer credit amount. The upper bound matches Number.MAX_SAFE_INTEGER, which is enforced by the domain ledger so arithmetic and JSON round-trips cannot silently lose cents worth of credit precision.
A non-negative JavaScript-safe integer credit amount. The upper bound matches Number.MAX_SAFE_INTEGER, which is enforced by the domain ledger so arithmetic and JSON round-trips cannot silently lose cents worth of credit precision.
A non-negative JavaScript-safe integer credit amount. The upper bound matches Number.MAX_SAFE_INTEGER, which is enforced by the domain ledger so arithmetic and JSON round-trips cannot silently lose cents worth of credit precision.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Audivo","description":"Podcast transcripts by API: send an episode, get the transcript.","colors":{"primary":"#1f6f5f","light":"#3aa08b","dark":"#164f44"},"logo":{"light":"https://mintcdn.com/hark-5cc9dfca/xZqIgLIsKXAcTJ_E/logo/light.png?fit=max\u0026auto=format\u0026n=xZqIgLIsKXAcTJ_E\u0026q=85\u0026s=290108566f8ad3bd0fda322b7324bbf2","dark":"https://mintcdn.com/hark-5cc9dfca/xZqIgLIsKXAcTJ_E/logo/dark.png?fit=max\u0026auto=format\u0026n=xZqIgLIsKXAcTJ_E\u0026q=85\u0026s=51442e7e1f33fc4a51cfee89a104e369"},"favicon":"https://mintcdn.com/hark-5cc9dfca/EA1QjhSCYNWn_mCh/favicon.png?fit=max\u0026auto=format\u0026n=EA1QjhSCYNWn_mCh\u0026q=85\u0026s=9feae7b6390de852ae74901d0dec1d11","api":{"playground":{"display":"simple"}},"appearance":{"default":"system"},"seo":{"indexing":"navigable"},"contextual":{"options":["copy","view"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hark-5cc9dfca","hasAudioNarration":false,"actualSubdomain":"hark-5cc9dfca","customDomains":["docs.audivo.dev"],"gitSource":{"type":"github","owner":"vvaradinov","repo":"podcast-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6abf83c3cb1db2609accf412","collectionId":"2edcaa68-1d35-4483-8de2-b1bce9e2e795","liveDeploymentHistoryId":"6abf83c3cb1db2609accf412","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6abf83c3cb1db2609accf412","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"API Reference","count":36},{"language":"default","tag":"Guides","count":23},{"language":"default","tag":"Billing","count":9},{"language":"default","tag":"Start","count":4},{"language":"default","tag":"Reference","count":4},{"language":"default","tag":"Account","count":4},{"language":"default","tag":"Catalog","count":4},{"language":"default","tag":"Connected Apps","count":4},{"language":"default","tag":"Transcripts","count":4},{"language":"default","tag":"API Keys","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"img.nav-logo{height:2.25rem!important}"}],"page":{"pagePath":"api-reference/quotes/spend-what-a-quote-priced-as-one-job-group","slug":"/api-reference/quotes/spend-what-a-quote-priced-as-one-job-group","pageMetadata":{"title":"Spend what a quote priced, as one job group","description":"Turns a recorded quote into a job group: one member per quoted entry, each either a transcription job reserved at the entry's ceiling or, for an entry priced as cached, a settled read at the price the quote gave it. This is the operation that spends.\n\n**Every guard runs before the first credit moves.** The quote must be the caller's own and unexpired (`quote_not_found`, `quote_expired`); an `expected_total_credits` in the body must agree with the quote's recorded `total_ceiling_credits`, checked before anything is probed (`expected_total_mismatch`); every entry's enclosure is re-probed and a republished one refuses the whole confirm naming the episode (`quote_mismatch` — take a new quote), while entries the probe budget did not reach refuse it unverified (`quote_unverified` — send the same confirm again); the group's job-bearing members are checked once against the tier's open-job cap (`concurrency_limited`, naming the cap and the room left) and the whole group's ceiling against the balance (`payment_required`). A refusal here writes nothing at all.\n\n**`Idempotency-Key` is required.** The group is created under it before any member is reserved, so a repeat with the same key and body returns the original group — whatever state it is in — with `200` and charges nothing further. The same key with a different body is `409 idempotency_conflict`.\n\n**A confirm that dies half way is recoverable without you.** The group is written `pending` first and marked `complete` only when every member has landed; a group still pending past its `completion_deadline` is swept — its reservations returned, its status `abandoned`. Reading the group tells you which.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/quotes/{quote_id}/confirm","href":"/api-reference/quotes/spend-what-a-quote-priced-as-one-job-group","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Turns a recorded quote into a job group: one member per quoted entry, each either a transcription job reserved at the entry’s ceiling or, for an entry priced as cached, a settled read at the price the quote gave it. This is the operation that spends.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Every guard runs before the first credit moves.\"\n }), \" The quote must be the caller’s own and unexpired (\", _jsx(_components.code, {\n children: \"quote_not_found\"\n }), \", \", _jsx(_components.code, {\n children: \"quote_expired\"\n }), \"); an \", _jsx(_components.code, {\n children: \"expected_total_credits\"\n }), \" in the body must agree with the quote’s recorded \", _jsx(_components.code, {\n children: \"total_ceiling_credits\"\n }), \", checked before anything is probed (\", _jsx(_components.code, {\n children: \"expected_total_mismatch\"\n }), \"); every entry’s enclosure is re-probed and a republished one refuses the whole confirm naming the episode (\", _jsx(_components.code, {\n children: \"quote_mismatch\"\n }), \" — take a new quote), while entries the probe budget did not reach refuse it unverified (\", _jsx(_components.code, {\n children: \"quote_unverified\"\n }), \" — send the same confirm again); the group’s job-bearing members are checked once against the tier’s open-job cap (\", _jsx(_components.code, {\n children: \"concurrency_limited\"\n }), \", naming the cap and the room left) and the whole group’s ceiling against the balance (\", _jsx(_components.code, {\n children: \"payment_required\"\n }), \"). A refusal here writes nothing at all.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsxs(_components.strong, {\n children: [_jsx(_components.code, {\n children: \"Idempotency-Key\"\n }), \" is required.\"]\n }), \" The group is created under it before any member is reserved, so a repeat with the same key and body returns the original group — whatever state it is in — with \", _jsx(_components.code, {\n children: \"200\"\n }), \" and charges nothing further. The same key with a different body is \", _jsx(_components.code, {\n children: \"409 idempotency_conflict\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"A confirm that dies half way is recoverable without you.\"\n }), \" The group is written \", _jsx(_components.code, {\n children: \"pending\"\n }), \" first and marked \", _jsx(_components.code, {\n children: \"complete\"\n }), \" only when every member has landed; a group still pending past its \", _jsx(_components.code, {\n children: \"completion_deadline\"\n }), \" is swept — its reservations returned, its status \", _jsx(_components.code, {\n children: \"abandoned\"\n }), \". Reading the group tells you which.\"]\n })]\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}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}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":"Spend what a quote priced, as one job group","description":"Turns a recorded quote into a job group: one member per quoted entry, each either a transcription job reserved at the entry's ceiling or, for an entry priced as cached, a settled read at the price the quote gave it. This is the operation that spends.\n\n**Every guard runs before the first credit moves.** The quote must be the caller's own and unexpired (`quote_not_found`, `quote_expired`); an `expected_total_credits` in the body must agree with the quote's recorded `total_ceiling_credits`, checked before anything is probed (`expected_total_mismatch`); every entry's enclosure is re-probed and a republished one refuses the whole confirm naming the episode (`quote_mismatch` — take a new quote), while entries the probe budget did not reach refuse it unverified (`quote_unverified` — send the same confirm again); the group's job-bearing members are checked once against the tier's open-job cap (`concurrency_limited`, naming the cap and the room left) and the whole group's ceiling against the balance (`payment_required`). A refusal here writes nothing at all.\n\n**`Idempotency-Key` is required.** The group is created under it before any member is reserved, so a repeat with the same key and body returns the original group — whatever state it is in — with `200` and charges nothing further. The same key with a different body is `409 idempotency_conflict`.\n\n**A confirm that dies half way is recoverable without you.** The group is written `pending` first and marked `complete` only when every member has landed; a group still pending past its `completion_deadline` is swept — its reservations returned, its status `abandoned`. Reading the group tells you which.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/quotes/{quote_id}/confirm","href":"/api-reference/quotes/spend-what-a-quote-priced-as-one-job-group","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"confirmQuote","tags":["Quotes"],"summary":"Spend what a quote priced, as one job group","security":["d9a3dacc-294c-4f1a-b981-720ecec0bce2"],"description":"Turns a recorded quote into a job group: one member per quoted entry, each either a transcription job reserved at the entry's ceiling or, for an entry priced as cached, a settled read at the price the quote gave it. This is the operation that spends.\n\n**Every guard runs before the first credit moves.** The quote must be the caller's own and unexpired (`quote_not_found`, `quote_expired`); an `expected_total_credits` in the body must agree with the quote's recorded `total_ceiling_credits`, checked before anything is probed (`expected_total_mismatch`); every entry's enclosure is re-probed and a republished one refuses the whole confirm naming the episode (`quote_mismatch` — take a new quote), while entries the probe budget did not reach refuse it unverified (`quote_unverified` — send the same confirm again); the group's job-bearing members are checked once against the tier's open-job cap (`concurrency_limited`, naming the cap and the room left) and the whole group's ceiling against the balance (`payment_required`). A refusal here writes nothing at all.\n\n**`Idempotency-Key` is required.** The group is created under it before any member is reserved, so a repeat with the same key and body returns the original group — whatever state it is in — with `200` and charges nothing further. The same key with a different body is `409 idempotency_conflict`.\n\n**A confirm that dies half way is recoverable without you.** The group is written `pending` first and marked `complete` only when every member has landed; a group still pending past its `completion_deadline` is swept — its reservations returned, its status `abandoned`. Reading the group tells you which.","parameters":["eac91d63-8322-44b9-a2c3-4cd8a2de2dd9","39a044a6-f4cb-4637-aa4a-20874b3ebfca"],"requestBody":"ed16478a-e589-470b-8d02-ac54bded4c6e","responses":{"200":"d3bb4258-c63f-4b66-bc82-0dac81d06872","400":"64d0a23f-bc10-4b27-8eb4-8f3f8828a631","401":"dc836a5f-2105-4bd0-8c64-4117ebe2818f","402":"b909d997-5d07-4450-8779-e3c373512520","404":"4a69de6d-cf97-4ec3-9f3f-ec47fd5e33fa","409":"31be339f-ed04-440c-98b5-3ef95d5f0468","429":"4148a34e-4900-4f5b-9cca-8fd8b0a79f35","500":"03804fea-3a38-4cc5-8041-3058b0799c4b"},"method":"post","type":"path","servers":["ab95c592-ddf1-4927-bb4a-1f83f0e8e07e"],"path":"/v1/quotes/{quote_id}/confirm","baseUrlOptions":["https://api.audivo.dev"],"title":"Spend what a quote priced, as one job group","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"eac91d63-8322-44b9-a2c3-4cd8a2de2dd9":{"name":"quote_id","in":"path","required":true,"schema":{"type":"string","pattern":"^qte_[A-Za-z0-9]{16,32}$","maxLength":40,"description":"Opaque, server-generated quote identifier.","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"39a044a6-f4cb-4637-aa4a-20874b3ebfca":{"name":"Idempotency-Key","in":"header","required":true,"description":"As `IdempotencyKeyHeader`, but required: a confirm spends up to a whole selection's ceiling, and a retry that could not be recognized as one would spend it twice. Missing is `400 invalid_request`.","schema":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[!-~]{1,255}$","isRequired":true,"description":"As `IdempotencyKeyHeader`, but required: a confirm spends up to a whole selection's ceiling, and a retry that could not be recognized as one would spend it twice. Missing is `400 invalid_request`.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"description":"The quote is in the path and the key is in the header, so the body carries at most the spending fence below. An empty object, or no body at all, is accepted; any other property is refused, so a further field can be added without an old client having silently sent it.","properties":{"expected_total_credits":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The quote's `total_ceiling_credits` as the caller read it. Sent, and disagreeing with the quote's own total, the API refuses the confirm with `409 expected_total_mismatch` before an enclosure is probed or a credit is reserved: a caller that has misread the price cannot spend it. Omitted, the confirm proceeds on the quote's recorded total alone.","uniqueKey":"expected_total_credits","typeLabel":"integer"}},"uniqueKey":"","typeLabel":"object"},"examples":{"empty":{"title":"empty","value":{}},"fenced":{"title":"fenced","value":{"expected_total_credits":232}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"d3bb4258-c63f-4b66-bc82-0dac81d06872":{"description":"The job group this confirm created, complete, with every member named — or, on a repeat under the same `Idempotency-Key`, the original group as it stands.","headers":{"X-Request-Id":{"description":"Echoed on every response, success or error. A refusal generated at the edge (401, 429, and the unmetered-key 500) carries API Gateway's own hyphenated request id after the `req_` prefix; a response from a function carries the same id without hyphens.","schema":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100}},"X-RateLimit-Limit":{"description":"The caller's requests-per-minute ceiling for the current tier. Present on every response for a resolved caller, success and error alike; absent from `401 unauthenticated`, which has no account to report a ceiling for, and from the edge's own `429`, which is emitted before any function runs.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["group_id","status","quote_id","member_count","members","member_counts","credits_reserved","credits_settled","credits_released","created_at","completion_deadline","completed_at","abandoned_at"],"description":"One group's rollup. `member_count` is how many members the confirm set out to create; `members` is how many exist, which is fewer only while the group is `pending` (or after it was `abandoned` part way). `credits_reserved` is what the group still holds against the balance — the reservations of members not yet terminal; `credits_settled` is what it has been charged, job members and cache reads together; `credits_released` is what came back from members that failed, were cancelled, or settled below their ceiling. None of the three is a bill: each job member carries its own figures, and the ledger is the record.","properties":{"group_id":{"type":"string","pattern":"^grp_[A-Za-z0-9]{16,32}$","maxLength":40,"description":"Opaque, server-generated job group identifier.","isRequired":true,"uniqueKey":"group_id","typeLabel":"string"},"status":{"type":"string","enum":["pending","complete","abandoned"],"description":"`pending` while a confirm is still fanning out (or died doing so); `complete` once every member landed; `abandoned` once the sweeper returned a pending group's reservations past its deadline. A cancelled group is `complete` with `cancelled` members.","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"quote_id":{"oneOf":[{"type":"string","description":"The quote this group confirmed, or `null` for a single-episode submission.","maxLength":40,"pattern":"^qte_[A-Za-z0-9]{16,32}$","isRequired":true,"uniqueKey":"quote_id.oneOf.0","typeLabel":"string"},{"description":"The quote this group confirmed, or `null` for a single-episode submission.","enum":[null],"isRequired":true,"uniqueKey":"quote_id.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"quote_id","typeLabel":"string | any"},"member_count":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"member_count","typeLabel":"integer"},"members":{"type":"array","maxItems":100,"items":{"oneOf":[{"type":"object","description":"One member of a group — a job, or a settled cache read. `kind` discriminates.","required":["kind","job_id","episode_id","show_title","episode_title","status","estimated_credits","reserved_credits","created_at"],"properties":{"kind":{"const":"job","isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.0.kind","typeLabel":"any"},"job_id":{"type":"string","pattern":"^job_[A-Za-z0-9]{16,32}$","maxLength":40,"description":"Opaque, server-generated job identifier.","isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.0.job_id","typeLabel":"string"},"episode_id":{"type":"string","pattern":"^ep_[a-z2-7]{16}$","description":"Canonical episode identifier.","isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.0.episode_id","typeLabel":"string"},"show_title":{"oneOf":[{"type":"string","description":"The show's title as it was when this job or read was created (ADR-0036), or `null` when it was created without one: before 0.14.0, or from a feed that names no show. For an upload it is `Uploads`. Copied once, never updated.","maxLength":300,"minLength":1,"isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.0.show_title.oneOf.0","typeLabel":"string"},{"type":"null","description":"The show's title as it was when this job or read was created (ADR-0036), or `null` when it was created without one: before 0.14.0, or from a feed that names no show. For an upload it is `Uploads`. Copied once, never updated.","isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.0.show_title.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.0.show_title","typeLabel":"string | null"},"episode_title":{"oneOf":[{"type":"string","description":"The episode's title as it was when this job or read was created, or `null` when it was created without one. For an upload it is the title given when the file was announced. Where a feed gave no title, a catalog read (`GET /v1/episodes/{episode_id}/transcript`) answers the identifier the catalog stores in its place.","maxLength":300,"minLength":1,"isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.0.episode_title.oneOf.0","typeLabel":"string"},{"type":"null","description":"The episode's title as it was when this job or read was created, or `null` when it was created without one. For an upload it is the title given when the file was announced. Where a feed gave no title, a catalog read (`GET /v1/episodes/{episode_id}/transcript`) answers the identifier the catalog stores in its place.","isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.0.episode_title.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.0.episode_title","typeLabel":"string | null"},"status":{"type":"string","enum":["validating","queued","downloading","transcribing","merging","completed","failed","cancelled"],"description":"Legal transitions: validating → queued|failed|cancelled; queued → downloading|failed|cancelled; downloading → transcribing|failed; transcribing → merging|failed; merging → completed|failed. Terminal states (completed, failed, cancelled) have no further transitions. Cancellation is legal only from validating/queued; every non-terminal state may fail.","isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.0.status","typeLabel":"enum\u003cstring>"},"estimated_credits":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"A non-negative JavaScript-safe integer credit amount. The upper bound matches `Number.MAX_SAFE_INTEGER`, which is enforced by the domain ledger so arithmetic and JSON round-trips cannot silently lose cents worth of credit precision.","isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.0.estimated_credits","typeLabel":"integer"},"reserved_credits":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"A non-negative JavaScript-safe integer credit amount. The upper bound matches `Number.MAX_SAFE_INTEGER`, which is enforced by the domain ledger so arithmetic and JSON round-trips cannot silently lose cents worth of credit precision.","isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.0.reserved_credits","typeLabel":"integer"},"created_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.0.created_at","typeLabel":"string\u003cdate-time>"},"settled_credits":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"A non-negative JavaScript-safe integer credit amount. The upper bound matches `Number.MAX_SAFE_INTEGER`, which is enforced by the domain ledger so arithmetic and JSON round-trips cannot silently lose cents worth of credit precision.","uniqueKey":"members.items.[INDEX].oneOf.0.settled_credits","typeLabel":"integer"},"released_credits":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"A non-negative JavaScript-safe integer credit amount. The upper bound matches `Number.MAX_SAFE_INTEGER`, which is enforced by the domain ledger so arithmetic and JSON round-trips cannot silently lose cents worth of credit precision.","uniqueKey":"members.items.[INDEX].oneOf.0.released_credits","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"members.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"One member of a group — a job, or a settled cache read. `kind` discriminates.","required":["kind","read_id","episode_id","show_title","episode_title","credits_charged","created_at"],"properties":{"kind":{"const":"cached_read","isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.1.kind","typeLabel":"any"},"read_id":{"type":"string","pattern":"^job_[A-Za-z0-9]{16,32}$","maxLength":40,"description":"Opaque, server-generated job identifier.","isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.1.read_id","typeLabel":"string"},"episode_id":{"type":"string","pattern":"^ep_[a-z2-7]{16}$","description":"Canonical episode identifier.","isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.1.episode_id","typeLabel":"string"},"show_title":{"oneOf":[{"type":"string","description":"The show's title as it was when this job or read was created (ADR-0036), or `null` when it was created without one: before 0.14.0, or from a feed that names no show. For an upload it is `Uploads`. Copied once, never updated.","maxLength":300,"minLength":1,"isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.1.show_title.oneOf.0","typeLabel":"string"},{"type":"null","description":"The show's title as it was when this job or read was created (ADR-0036), or `null` when it was created without one: before 0.14.0, or from a feed that names no show. For an upload it is `Uploads`. Copied once, never updated.","isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.1.show_title.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.1.show_title","typeLabel":"string | null"},"episode_title":{"oneOf":[{"type":"string","description":"The episode's title as it was when this job or read was created, or `null` when it was created without one. For an upload it is the title given when the file was announced. Where a feed gave no title, a catalog read (`GET /v1/episodes/{episode_id}/transcript`) answers the identifier the catalog stores in its place.","maxLength":300,"minLength":1,"isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.1.episode_title.oneOf.0","typeLabel":"string"},{"type":"null","description":"The episode's title as it was when this job or read was created, or `null` when it was created without one. For an upload it is the title given when the file was announced. Where a feed gave no title, a catalog read (`GET /v1/episodes/{episode_id}/transcript`) answers the identifier the catalog stores in its place.","isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.1.episode_title.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.1.episode_title","typeLabel":"string | null"},"credits_charged":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"A non-negative JavaScript-safe integer credit amount. The upper bound matches `Number.MAX_SAFE_INTEGER`, which is enforced by the domain ledger so arithmetic and JSON round-trips cannot silently lose cents worth of credit precision.","isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.1.credits_charged","typeLabel":"integer"},"created_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"members.items.[INDEX].oneOf.1.created_at","typeLabel":"string\u003cdate-time>"}},"additionalProperties":false,"uniqueKey":"members.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"members.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"members","typeLabel":"object[]"},"member_counts":{"type":"object","additionalProperties":false,"required":["validating","queued","downloading","transcribing","merging","completed","failed","cancelled","cached_read"],"description":"How many members are in each job state, plus how many were settled cache reads (which have no state — they were delivered at confirm). The nine sum to `member_count` on a complete group.","properties":{"validating":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"member_counts.validating","typeLabel":"integer"},"queued":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"member_counts.queued","typeLabel":"integer"},"downloading":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"member_counts.downloading","typeLabel":"integer"},"transcribing":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"member_counts.transcribing","typeLabel":"integer"},"merging":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"member_counts.merging","typeLabel":"integer"},"completed":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"member_counts.completed","typeLabel":"integer"},"failed":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"member_counts.failed","typeLabel":"integer"},"cancelled":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"member_counts.cancelled","typeLabel":"integer"},"cached_read":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"member_counts.cached_read","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"member_counts","typeLabel":"object"},"credits_reserved":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"A non-negative JavaScript-safe integer credit amount. The upper bound matches `Number.MAX_SAFE_INTEGER`, which is enforced by the domain ledger so arithmetic and JSON round-trips cannot silently lose cents worth of credit precision.","isRequired":true,"uniqueKey":"credits_reserved","typeLabel":"integer"},"credits_settled":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"A non-negative JavaScript-safe integer credit amount. The upper bound matches `Number.MAX_SAFE_INTEGER`, which is enforced by the domain ledger so arithmetic and JSON round-trips cannot silently lose cents worth of credit precision.","isRequired":true,"uniqueKey":"credits_settled","typeLabel":"integer"},"credits_released":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"A non-negative JavaScript-safe integer credit amount. The upper bound matches `Number.MAX_SAFE_INTEGER`, which is enforced by the domain ledger so arithmetic and JSON round-trips cannot silently lose cents worth of credit precision.","isRequired":true,"uniqueKey":"credits_released","typeLabel":"integer"},"created_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"completion_deadline":{"type":"string","format":"date-time","description":"Past this, a still-`pending` group is swept.","isRequired":true,"uniqueKey":"completion_deadline","typeLabel":"string\u003cdate-time>"},"completed_at":{"oneOf":[{"type":"string","description":"An ISO 8601 timestamp, or `null`.","format":"date-time","isRequired":true,"uniqueKey":"completed_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"description":"An ISO 8601 timestamp, or `null`.","enum":[null],"isRequired":true,"uniqueKey":"completed_at.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"completed_at","typeLabel":"string\u003cdate-time> | any"},"abandoned_at":{"oneOf":[{"type":"string","description":"An ISO 8601 timestamp, or `null`.","format":"date-time","isRequired":true,"uniqueKey":"abandoned_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"description":"An ISO 8601 timestamp, or `null`.","enum":[null],"isRequired":true,"uniqueKey":"abandoned_at.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"abandoned_at","typeLabel":"string\u003cdate-time> | any"}},"uniqueKey":"","typeLabel":"object"},"examples":{"confirmed":{"title":"confirmed","value":{"group_id":"grp_9k2fA7bQ3xzM1LpN","status":"complete","quote_id":"qte_9k2fA7bQ3xzM1LpN","member_count":3,"members":[{"kind":"cached_read","read_id":"job_2c1d4e9fA7bQ3xzM","episode_id":"ep_rwg4do2imnjyhaj7","show_title":"The Vergecast","episode_title":"The week in gadgets","credits_charged":1,"created_at":"2026-09-08T09:01:00Z"},{"kind":"job","job_id":"job_4e9f2c1dB8cR4yaN","episode_id":"ep_3iicyxg6ymbv75gy","show_title":"The Vergecast","episode_title":"The week in gadgets","status":"queued","estimated_credits":60,"reserved_credits":75,"created_at":"2026-09-08T09:01:00Z"},{"kind":"job","job_id":"job_9f2c1d4eC9dS5zbP","episode_id":"ep_uy4pqvjsmeyrhavz","show_title":"The Vergecast","episode_title":"The week in gadgets","status":"queued","estimated_credits":45,"reserved_credits":57,"created_at":"2026-09-08T09:01:00Z"}],"member_counts":{"validating":0,"queued":2,"downloading":0,"transcribing":0,"merging":0,"completed":0,"failed":0,"cancelled":0,"cached_read":1},"credits_reserved":132,"credits_settled":1,"credits_released":0,"created_at":"2026-09-08T09:01:00Z","completion_deadline":"2026-09-08T09:06:00Z","completed_at":"2026-09-08T09:01:00Z","abandoned_at":null}}},"exampleType":"examples"}},"exampleType":"examples"},"64d0a23f-bc10-4b27-8eb4-8f3f8828a631":{"description":"Invalid request shape or an unrecognized pointer. Codes: `invalid_request`, `invalid_url`.","headers":{"X-Request-Id":{"description":"Echoed on every response, success or error. A refusal generated at the edge (401, 429, and the unmetered-key 500) carries API Gateway's own hyphenated request id after the `req_` prefix; a response from a function carries the same id without hyphens.","schema":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100}},"X-RateLimit-Limit":{"description":"The caller's requests-per-minute ceiling for the current tier. Present on every response for a resolved caller, success and error alike; absent from `401 unauthenticated`, which has no account to report a ceiling for, and from the edge's own `429`, which is emitted before any function runs.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"oneOf":[{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","source_not_supported","unsafe_source"],"isRequired":true,"uniqueKey":"error.oneOf.0.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"invalid_request","isRequired":true,"uniqueKey":"error.oneOf.0.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.0.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.0.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.0.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.0.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","credits_not_refundable","upload_mismatch","max_credits_exceeded"],"isRequired":true,"uniqueKey":"error.oneOf.1.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unprocessable_input","isRequired":true,"uniqueKey":"error.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.1.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.1.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.1.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.1.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"unauthenticated","isRequired":true,"uniqueKey":"error.oneOf.2.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unauthenticated","isRequired":true,"uniqueKey":"error.oneOf.2.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.2.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.2.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.2.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.2.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.2","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["idempotency_conflict","job_not_completed","api_key_limit_reached","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_not_received"],"isRequired":true,"uniqueKey":"error.oneOf.3.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"conflict","isRequired":true,"uniqueKey":"error.oneOf.3.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.3.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.3.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.3.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.3.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.3","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["feed_dead","episode_not_found","show_not_found","job_not_found","api_key_not_found","credit_lot_not_found","quote_not_found","group_not_found","upload_not_found","oauth_request_not_found","connected_app_not_found"],"isRequired":true,"uniqueKey":"error.oneOf.4.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"not_found","isRequired":true,"uniqueKey":"error.oneOf.4.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.4.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.4.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.4.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.4.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.4","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"content_blocked","isRequired":true,"uniqueKey":"error.oneOf.5.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"content_blocked","isRequired":true,"uniqueKey":"error.oneOf.5.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.5.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.5.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.5.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.5.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.5","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"payment_required","isRequired":true,"uniqueKey":"error.oneOf.6.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"payment_required","isRequired":true,"uniqueKey":"error.oneOf.6.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.6.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.6.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.6.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.6.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.6","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["rate_limited","concurrency_limited","upload_quota_exceeded"],"isRequired":true,"uniqueKey":"error.oneOf.7.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"rate_limited","isRequired":true,"uniqueKey":"error.oneOf.7.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.7.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.7.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.7.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.7.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.7","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["engine_unavailable","processing_failed","discovery_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.oneOf.8.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unavailable","isRequired":true,"uniqueKey":"error.oneOf.8.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.8.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.8.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.8.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.8.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.8","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"nothing_to_quote","isRequired":true,"uniqueKey":"error.oneOf.9.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unprocessable_input","isRequired":true,"uniqueKey":"error.oneOf.9.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.9.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.9.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.9.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.9.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.9","typeLabel":"object"}],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","type":"invalid_request","message":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>","retryable":true}}}},"exampleType":"generated"}},"exampleType":"generated"},"dc836a5f-2105-4bd0-8c64-4117ebe2818f":{"description":"Code `unauthenticated` — the API key is missing, malformed, revoked, or does not exist. Every operation in this document is authenticated, so this is the most common error path a client will hit; it is declared on all of them rather than left implicit. The response never distinguishes \"no such key\" from \"revoked key\". Unlike every other API-key response it carries no `X-RateLimit-Limit`: that is a per-account figure, and an unauthenticated request has no resolved account to report one for.","headers":{"X-Request-Id":{"description":"Echoed on every response, success or error. A refusal generated at the edge (401, 429, and the unmetered-key 500) carries API Gateway's own hyphenated request id after the `req_` prefix; a response from a function carries the same id without hyphens.","schema":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"oneOf":[{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","source_not_supported","unsafe_source"],"isRequired":true,"uniqueKey":"error.oneOf.0.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"invalid_request","isRequired":true,"uniqueKey":"error.oneOf.0.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.0.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.0.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.0.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.0.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","credits_not_refundable","upload_mismatch","max_credits_exceeded"],"isRequired":true,"uniqueKey":"error.oneOf.1.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unprocessable_input","isRequired":true,"uniqueKey":"error.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.1.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.1.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.1.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.1.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"unauthenticated","isRequired":true,"uniqueKey":"error.oneOf.2.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unauthenticated","isRequired":true,"uniqueKey":"error.oneOf.2.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.2.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.2.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.2.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.2.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.2","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["idempotency_conflict","job_not_completed","api_key_limit_reached","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_not_received"],"isRequired":true,"uniqueKey":"error.oneOf.3.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"conflict","isRequired":true,"uniqueKey":"error.oneOf.3.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.3.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.3.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.3.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.3.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.3","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["feed_dead","episode_not_found","show_not_found","job_not_found","api_key_not_found","credit_lot_not_found","quote_not_found","group_not_found","upload_not_found","oauth_request_not_found","connected_app_not_found"],"isRequired":true,"uniqueKey":"error.oneOf.4.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"not_found","isRequired":true,"uniqueKey":"error.oneOf.4.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.4.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.4.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.4.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.4.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.4","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"content_blocked","isRequired":true,"uniqueKey":"error.oneOf.5.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"content_blocked","isRequired":true,"uniqueKey":"error.oneOf.5.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.5.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.5.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.5.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.5.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.5","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"payment_required","isRequired":true,"uniqueKey":"error.oneOf.6.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"payment_required","isRequired":true,"uniqueKey":"error.oneOf.6.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.6.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.6.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.6.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.6.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.6","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["rate_limited","concurrency_limited","upload_quota_exceeded"],"isRequired":true,"uniqueKey":"error.oneOf.7.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"rate_limited","isRequired":true,"uniqueKey":"error.oneOf.7.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.7.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.7.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.7.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.7.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.7","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["engine_unavailable","processing_failed","discovery_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.oneOf.8.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unavailable","isRequired":true,"uniqueKey":"error.oneOf.8.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.8.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.8.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.8.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.8.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.8","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"nothing_to_quote","isRequired":true,"uniqueKey":"error.oneOf.9.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unprocessable_input","isRequired":true,"uniqueKey":"error.oneOf.9.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.9.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.9.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.9.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.9.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.9","typeLabel":"object"}],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","type":"invalid_request","message":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>","retryable":true}}}},"exampleType":"generated"}},"exampleType":"generated"},"b909d997-5d07-4450-8779-e3c373512520":{"description":"Code `payment_required` — available account credits cannot cover the quote ceiling.","headers":{"X-Request-Id":{"description":"Echoed on every response, success or error. A refusal generated at the edge (401, 429, and the unmetered-key 500) carries API Gateway's own hyphenated request id after the `req_` prefix; a response from a function carries the same id without hyphens.","schema":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100}},"X-RateLimit-Limit":{"description":"The caller's requests-per-minute ceiling for the current tier. Present on every response for a resolved caller, success and error alike; absent from `401 unauthenticated`, which has no account to report a ceiling for, and from the edge's own `429`, which is emitted before any function runs.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"oneOf":[{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","source_not_supported","unsafe_source"],"isRequired":true,"uniqueKey":"error.oneOf.0.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"invalid_request","isRequired":true,"uniqueKey":"error.oneOf.0.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.0.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.0.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.0.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.0.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","credits_not_refundable","upload_mismatch","max_credits_exceeded"],"isRequired":true,"uniqueKey":"error.oneOf.1.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unprocessable_input","isRequired":true,"uniqueKey":"error.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.1.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.1.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.1.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.1.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"unauthenticated","isRequired":true,"uniqueKey":"error.oneOf.2.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unauthenticated","isRequired":true,"uniqueKey":"error.oneOf.2.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.2.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.2.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.2.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.2.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.2","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["idempotency_conflict","job_not_completed","api_key_limit_reached","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_not_received"],"isRequired":true,"uniqueKey":"error.oneOf.3.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"conflict","isRequired":true,"uniqueKey":"error.oneOf.3.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.3.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.3.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.3.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.3.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.3","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["feed_dead","episode_not_found","show_not_found","job_not_found","api_key_not_found","credit_lot_not_found","quote_not_found","group_not_found","upload_not_found","oauth_request_not_found","connected_app_not_found"],"isRequired":true,"uniqueKey":"error.oneOf.4.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"not_found","isRequired":true,"uniqueKey":"error.oneOf.4.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.4.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.4.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.4.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.4.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.4","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"content_blocked","isRequired":true,"uniqueKey":"error.oneOf.5.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"content_blocked","isRequired":true,"uniqueKey":"error.oneOf.5.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.5.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.5.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.5.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.5.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.5","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"payment_required","isRequired":true,"uniqueKey":"error.oneOf.6.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"payment_required","isRequired":true,"uniqueKey":"error.oneOf.6.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.6.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.6.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.6.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.6.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.6","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["rate_limited","concurrency_limited","upload_quota_exceeded"],"isRequired":true,"uniqueKey":"error.oneOf.7.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"rate_limited","isRequired":true,"uniqueKey":"error.oneOf.7.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.7.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.7.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.7.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.7.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.7","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["engine_unavailable","processing_failed","discovery_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.oneOf.8.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unavailable","isRequired":true,"uniqueKey":"error.oneOf.8.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.8.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.8.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.8.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.8.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.8","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"nothing_to_quote","isRequired":true,"uniqueKey":"error.oneOf.9.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unprocessable_input","isRequired":true,"uniqueKey":"error.oneOf.9.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.9.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.9.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.9.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.9.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.9","typeLabel":"object"}],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","type":"invalid_request","message":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>","retryable":true}}}},"exampleType":"generated"}},"exampleType":"generated"},"4a69de6d-cf97-4ec3-9f3f-ec47fd5e33fa":{"description":"Code `quote_not_found` — no such quote for this account. Deliberately one answer for \"never existed\" and \"belongs to another account\": the quote is keyed under the account that took it, so the read misses either way, and a distinguishable refusal would turn a quote id into an oracle for whether another tenant holds one.","headers":{"X-Request-Id":{"description":"Echoed on every response, success or error. A refusal generated at the edge (401, 429, and the unmetered-key 500) carries API Gateway's own hyphenated request id after the `req_` prefix; a response from a function carries the same id without hyphens.","schema":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100}},"X-RateLimit-Limit":{"description":"The caller's requests-per-minute ceiling for the current tier. Present on every response for a resolved caller, success and error alike; absent from `401 unauthenticated`, which has no account to report a ceiling for, and from the edge's own `429`, which is emitted before any function runs.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"oneOf":[{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","source_not_supported","unsafe_source"],"isRequired":true,"uniqueKey":"error.oneOf.0.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"invalid_request","isRequired":true,"uniqueKey":"error.oneOf.0.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.0.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.0.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.0.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.0.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","credits_not_refundable","upload_mismatch","max_credits_exceeded"],"isRequired":true,"uniqueKey":"error.oneOf.1.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unprocessable_input","isRequired":true,"uniqueKey":"error.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.1.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.1.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.1.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.1.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"unauthenticated","isRequired":true,"uniqueKey":"error.oneOf.2.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unauthenticated","isRequired":true,"uniqueKey":"error.oneOf.2.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.2.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.2.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.2.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.2.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.2","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["idempotency_conflict","job_not_completed","api_key_limit_reached","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_not_received"],"isRequired":true,"uniqueKey":"error.oneOf.3.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"conflict","isRequired":true,"uniqueKey":"error.oneOf.3.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.3.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.3.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.3.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.3.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.3","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["feed_dead","episode_not_found","show_not_found","job_not_found","api_key_not_found","credit_lot_not_found","quote_not_found","group_not_found","upload_not_found","oauth_request_not_found","connected_app_not_found"],"isRequired":true,"uniqueKey":"error.oneOf.4.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"not_found","isRequired":true,"uniqueKey":"error.oneOf.4.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.4.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.4.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.4.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.4.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.4","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"content_blocked","isRequired":true,"uniqueKey":"error.oneOf.5.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"content_blocked","isRequired":true,"uniqueKey":"error.oneOf.5.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.5.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.5.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.5.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.5.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.5","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"payment_required","isRequired":true,"uniqueKey":"error.oneOf.6.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"payment_required","isRequired":true,"uniqueKey":"error.oneOf.6.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.6.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.6.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.6.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.6.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.6","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["rate_limited","concurrency_limited","upload_quota_exceeded"],"isRequired":true,"uniqueKey":"error.oneOf.7.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"rate_limited","isRequired":true,"uniqueKey":"error.oneOf.7.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.7.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.7.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.7.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.7.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.7","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["engine_unavailable","processing_failed","discovery_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.oneOf.8.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unavailable","isRequired":true,"uniqueKey":"error.oneOf.8.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.8.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.8.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.8.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.8.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.8","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"nothing_to_quote","isRequired":true,"uniqueKey":"error.oneOf.9.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unprocessable_input","isRequired":true,"uniqueKey":"error.oneOf.9.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.9.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.9.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.9.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.9.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.9","typeLabel":"object"}],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","type":"invalid_request","message":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>","retryable":true}}}},"exampleType":"generated"}},"exampleType":"generated"},"31be339f-ed04-440c-98b5-3ef95d5f0468":{"description":"The quote can no longer be confirmed as it stands, or the key was reused. Codes: `idempotency_conflict` (the same `Idempotency-Key` with a different body), `quote_expired` (past the quote's `expires_at`; take a new quote), `quote_mismatch` (an enclosure was republished since the quote; the message names the episode — take a new quote), `expected_total_mismatch` (the `expected_total_credits` sent disagrees with the quote's `total_ceiling_credits`; re-read the quote and restate its total, or take a new one), and `quote_unverified` (the fence could not re-probe every entry inside its budget; retryable — nothing was reserved, so send the same confirm again, or take a new quote if it keeps happening). None of the others is retryable as sent. The confirm spends, so it also answers the account-state three — `account_suspended`, `account_closed`, `account_not_found` — which refuse before any member is reserved and are about the account rather than the quote: a new quote does not help, and the quote itself is untouched.","headers":{"X-Request-Id":{"description":"Echoed on every response, success or error. A refusal generated at the edge (401, 429, and the unmetered-key 500) carries API Gateway's own hyphenated request id after the `req_` prefix; a response from a function carries the same id without hyphens.","schema":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100}},"X-RateLimit-Limit":{"description":"The caller's requests-per-minute ceiling for the current tier. Present on every response for a resolved caller, success and error alike; absent from `401 unauthenticated`, which has no account to report a ceiling for, and from the edge's own `429`, which is emitted before any function runs.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"oneOf":[{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","source_not_supported","unsafe_source"],"isRequired":true,"uniqueKey":"error.oneOf.0.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"invalid_request","isRequired":true,"uniqueKey":"error.oneOf.0.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.0.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.0.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.0.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.0.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","credits_not_refundable","upload_mismatch","max_credits_exceeded"],"isRequired":true,"uniqueKey":"error.oneOf.1.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unprocessable_input","isRequired":true,"uniqueKey":"error.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.1.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.1.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.1.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.1.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"unauthenticated","isRequired":true,"uniqueKey":"error.oneOf.2.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unauthenticated","isRequired":true,"uniqueKey":"error.oneOf.2.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.2.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.2.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.2.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.2.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.2","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["idempotency_conflict","job_not_completed","api_key_limit_reached","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_not_received"],"isRequired":true,"uniqueKey":"error.oneOf.3.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"conflict","isRequired":true,"uniqueKey":"error.oneOf.3.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.3.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.3.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.3.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.3.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.3","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["feed_dead","episode_not_found","show_not_found","job_not_found","api_key_not_found","credit_lot_not_found","quote_not_found","group_not_found","upload_not_found","oauth_request_not_found","connected_app_not_found"],"isRequired":true,"uniqueKey":"error.oneOf.4.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"not_found","isRequired":true,"uniqueKey":"error.oneOf.4.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.4.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.4.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.4.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.4.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.4","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"content_blocked","isRequired":true,"uniqueKey":"error.oneOf.5.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"content_blocked","isRequired":true,"uniqueKey":"error.oneOf.5.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.5.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.5.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.5.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.5.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.5","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"payment_required","isRequired":true,"uniqueKey":"error.oneOf.6.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"payment_required","isRequired":true,"uniqueKey":"error.oneOf.6.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.6.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.6.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.6.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.6.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.6","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["rate_limited","concurrency_limited","upload_quota_exceeded"],"isRequired":true,"uniqueKey":"error.oneOf.7.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"rate_limited","isRequired":true,"uniqueKey":"error.oneOf.7.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.7.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.7.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.7.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.7.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.7","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["engine_unavailable","processing_failed","discovery_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.oneOf.8.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unavailable","isRequired":true,"uniqueKey":"error.oneOf.8.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.8.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.8.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.8.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.8.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.8","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"nothing_to_quote","isRequired":true,"uniqueKey":"error.oneOf.9.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unprocessable_input","isRequired":true,"uniqueKey":"error.oneOf.9.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.9.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.9.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.9.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.9.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.9","typeLabel":"object"}],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","type":"invalid_request","message":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>","retryable":true}}}},"exampleType":"generated"}},"exampleType":"generated"},"4148a34e-4900-4f5b-9cca-8fd8b0a79f35":{"description":"Codes `rate_limited`, `concurrency_limited`, or `upload_quota_exceeded`, from three different limits and three different places. `rate_limited` is the per-account request rate, refused at the edge before the operation runs: it carries `Retry-After` and no `X-RateLimit-Limit`, because nothing that knows the caller's tier has run yet. `concurrency_limited` is the cap on jobs open at once, refused by the operation itself: it carries `X-RateLimit-Limit` like every other answered response, and no `Retry-After`, because it clears when one of the account's own jobs finishes rather than after a fixed wait. `upload_quota_exceeded` is `POST /v1/uploads`' own admission refusal, returned before a PUT URL is issued when the account already holds its allowance (10 GiB across 100 unexpired uploads): like `concurrency_limited` it carries `X-RateLimit-Limit` and no `Retry-After`, because it clears when an upload's `retained_until` passes rather than after a fixed wait; its `message` names the limits hit and the earliest time enough capacity returns.","headers":{"X-Request-Id":{"description":"Echoed on every response, success or error. A refusal generated at the edge (401, 429, and the unmetered-key 500) carries API Gateway's own hyphenated request id after the `req_` prefix; a response from a function carries the same id without hyphens.","schema":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100}},"X-RateLimit-Limit":{"description":"The caller's requests-per-minute ceiling for the current tier. Present on every response for a resolved caller, success and error alike; absent from `401 unauthenticated`, which has no account to report a ceiling for, and from the edge's own `429`, which is emitted before any function runs.","schema":{"type":"integer","minimum":0}},"Retry-After":{"description":"Seconds to wait before retrying. Sent with the edge's `rate_limited` throttle refusal. Not sent with `concurrency_limited`, which clears when one of the account's own jobs reaches a terminal state — a moment the API cannot put a number on.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"oneOf":[{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","source_not_supported","unsafe_source"],"isRequired":true,"uniqueKey":"error.oneOf.0.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"invalid_request","isRequired":true,"uniqueKey":"error.oneOf.0.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.0.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.0.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.0.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.0.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","credits_not_refundable","upload_mismatch","max_credits_exceeded"],"isRequired":true,"uniqueKey":"error.oneOf.1.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unprocessable_input","isRequired":true,"uniqueKey":"error.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.1.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.1.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.1.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.1.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"unauthenticated","isRequired":true,"uniqueKey":"error.oneOf.2.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unauthenticated","isRequired":true,"uniqueKey":"error.oneOf.2.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.2.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.2.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.2.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.2.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.2","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["idempotency_conflict","job_not_completed","api_key_limit_reached","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_not_received"],"isRequired":true,"uniqueKey":"error.oneOf.3.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"conflict","isRequired":true,"uniqueKey":"error.oneOf.3.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.3.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.3.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.3.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.3.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.3","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["feed_dead","episode_not_found","show_not_found","job_not_found","api_key_not_found","credit_lot_not_found","quote_not_found","group_not_found","upload_not_found","oauth_request_not_found","connected_app_not_found"],"isRequired":true,"uniqueKey":"error.oneOf.4.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"not_found","isRequired":true,"uniqueKey":"error.oneOf.4.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.4.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.4.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.4.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.4.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.4","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"content_blocked","isRequired":true,"uniqueKey":"error.oneOf.5.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"content_blocked","isRequired":true,"uniqueKey":"error.oneOf.5.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.5.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.5.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.5.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.5.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.5","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"payment_required","isRequired":true,"uniqueKey":"error.oneOf.6.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"payment_required","isRequired":true,"uniqueKey":"error.oneOf.6.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.6.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.6.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.6.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.6.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.6","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["rate_limited","concurrency_limited","upload_quota_exceeded"],"isRequired":true,"uniqueKey":"error.oneOf.7.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"rate_limited","isRequired":true,"uniqueKey":"error.oneOf.7.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.7.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.7.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.7.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.7.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.7","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["engine_unavailable","processing_failed","discovery_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.oneOf.8.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unavailable","isRequired":true,"uniqueKey":"error.oneOf.8.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.8.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.8.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.8.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.8.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.8","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"nothing_to_quote","isRequired":true,"uniqueKey":"error.oneOf.9.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unprocessable_input","isRequired":true,"uniqueKey":"error.oneOf.9.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.9.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.9.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.9.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.9.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.9","typeLabel":"object"}],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"uploadQuotaExceeded":{"title":"uploadQuotaExceeded","value":{"error":{"type":"rate_limited","code":"upload_quota_exceeded","message":"This account already holds 100 unexpired uploads totalling 10 GiB, the account's allowance; enough capacity returns at 2026-09-24T10:00:00Z, when the oldest upload's reservation releases.","doc_url":"https://docs.audivo.dev/errors#upload_quota_exceeded","request_id":"req_3c8f1a9d2b4e","retryable":true}}}},"exampleType":"examples"}},"exampleType":"examples"},"03804fea-3a38-4cc5-8041-3058b0799c4b":{"description":"Code `internal_error` — a failure on our side that no other code describes. The message is fixed text and says nothing about the cause; `request_id` is what identifies it in our logs. Retryable.","headers":{"X-Request-Id":{"description":"Echoed on every response, success or error. A refusal generated at the edge (401, 429, and the unmetered-key 500) carries API Gateway's own hyphenated request id after the `req_` prefix; a response from a function carries the same id without hyphens.","schema":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"oneOf":[{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","source_not_supported","unsafe_source"],"isRequired":true,"uniqueKey":"error.oneOf.0.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"invalid_request","isRequired":true,"uniqueKey":"error.oneOf.0.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.0.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.0.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.0.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.0.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","credits_not_refundable","upload_mismatch","max_credits_exceeded"],"isRequired":true,"uniqueKey":"error.oneOf.1.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unprocessable_input","isRequired":true,"uniqueKey":"error.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.1.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.1.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.1.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.1.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"unauthenticated","isRequired":true,"uniqueKey":"error.oneOf.2.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unauthenticated","isRequired":true,"uniqueKey":"error.oneOf.2.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.2.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.2.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.2.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.2.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.2","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["idempotency_conflict","job_not_completed","api_key_limit_reached","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_not_received"],"isRequired":true,"uniqueKey":"error.oneOf.3.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"conflict","isRequired":true,"uniqueKey":"error.oneOf.3.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.3.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.3.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.3.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.3.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.3","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["feed_dead","episode_not_found","show_not_found","job_not_found","api_key_not_found","credit_lot_not_found","quote_not_found","group_not_found","upload_not_found","oauth_request_not_found","connected_app_not_found"],"isRequired":true,"uniqueKey":"error.oneOf.4.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"not_found","isRequired":true,"uniqueKey":"error.oneOf.4.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.4.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.4.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.4.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.4.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.4","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"content_blocked","isRequired":true,"uniqueKey":"error.oneOf.5.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"content_blocked","isRequired":true,"uniqueKey":"error.oneOf.5.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.5.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.5.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.5.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.5.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.5","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"payment_required","isRequired":true,"uniqueKey":"error.oneOf.6.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"payment_required","isRequired":true,"uniqueKey":"error.oneOf.6.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.6.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.6.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.6.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.6.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.6","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["rate_limited","concurrency_limited","upload_quota_exceeded"],"isRequired":true,"uniqueKey":"error.oneOf.7.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"rate_limited","isRequired":true,"uniqueKey":"error.oneOf.7.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.7.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.7.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.7.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.7.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.7","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["engine_unavailable","processing_failed","discovery_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.oneOf.8.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unavailable","isRequired":true,"uniqueKey":"error.oneOf.8.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.8.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.8.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.8.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.8.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.8","typeLabel":"object"},{"type":"object","required":["type","code","message","doc_url","request_id","retryable"],"properties":{"code":{"type":"string","description":"Every code the API returns, and the HTTP status it comes with. `invalid_request`, `invalid_url` → 400. `unauthenticated` → 401. `payment_required` → 402. `job_not_found`, `quote_not_found`, `group_not_found`, `api_key_not_found`, `credit_lot_not_found`, `upload_not_found`, `oauth_request_not_found`, `connected_app_not_found` → 404. `idempotency_conflict`, `request_in_progress`, `job_not_completed`, `quote_expired`, `quote_mismatch`, `quote_unverified`, `expected_total_mismatch`, `account_suspended`, `account_closed`, `account_not_found`, `api_key_limit_reached`, `tier_unchanged`, `upload_not_received` → 409; `upload_not_received` is retryable once the file's PUT has landed. `source_not_supported`, `feed_dead`, `episode_not_found`, `show_not_found`, `unsafe_source`, `unsupported_codec`, `unsupported_language`, `duration_exceeded`, `size_exceeded`, `nothing_to_quote`, `credits_not_refundable`, `upload_mismatch`, `max_credits_exceeded` → 422. `content_blocked` → 451. `rate_limited`, `concurrency_limited`, `upload_quota_exceeded` → 429; `upload_quota_exceeded` is retryable, at the earliest capacity return time its message names. `internal_error`, `processing_failed` → 500. `discovery_unavailable`, `engine_unavailable` → 503. `processing_failed` also appears inside a failed job's `error` field rather than as a live status. Each code has a heading on the documentation site's errors page, which is what `doc_url` links to.","enum":["invalid_request","invalid_url","unauthenticated","idempotency_conflict","job_not_completed","source_not_supported","feed_dead","episode_not_found","show_not_found","unsafe_source","unsupported_codec","unsupported_language","duration_exceeded","size_exceeded","content_blocked","payment_required","rate_limited","concurrency_limited","job_not_found","api_key_not_found","api_key_limit_reached","credit_lot_not_found","credits_not_refundable","engine_unavailable","processing_failed","discovery_unavailable","nothing_to_quote","internal_error","quote_not_found","group_not_found","quote_expired","quote_mismatch","quote_unverified","expected_total_mismatch","request_in_progress","account_suspended","account_closed","account_not_found","tier_unchanged","upload_quota_exceeded","upload_not_found","upload_not_received","upload_mismatch","max_credits_exceeded","oauth_request_not_found","connected_app_not_found"],"const":"nothing_to_quote","isRequired":true,"uniqueKey":"error.oneOf.9.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The family an error belongs to, for handling; `code` is the precise reason. `invalid_request`: something in the request is wrong — fix the integration. `unprocessable_input`: the request is well-formed but the episode or resource is outside published support. `unauthenticated`: missing, malformed, revoked or expired credential. `payment_required`: the account's credits cannot cover the ceiling. `conflict`: the resource's or the account's state refuses this request as sent — a lapsed quote, a reused idempotency key, a held account. `not_found`: the job, quote, group or key the request named does not exist for this account. `rate_limited`: over a plan limit; wait and retry. `unavailable`: a failure on our side or at a provider; retry, and quote `request_id` if it persists.","enum":["invalid_request","unprocessable_input","unauthenticated","conflict","not_found","content_blocked","payment_required","rate_limited","unavailable"],"const":"unprocessable_input","isRequired":true,"uniqueKey":"error.oneOf.9.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"error.oneOf.9.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","maxLength":300,"isRequired":true,"uniqueKey":"error.oneOf.9.doc_url","typeLabel":"string\u003curi>"},"request_id":{"type":"string","pattern":"^req_[A-Za-z0-9-]+$","maxLength":100,"isRequired":true,"uniqueKey":"error.oneOf.9.request_id","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"error.oneOf.9.retryable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.9","typeLabel":"object"}],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","type":"invalid_request","message":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>","retryable":true}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"d9a3dacc-294c-4f1a-b981-720ecec0bce2":{"apiKeyBearer":{"type":"http","scheme":"bearer","bearerFormat":"hk_live_... or hk_test_...","description":"`Authorization: Bearer hk_live_...` for live keys or `Authorization: Bearer hk_test_...` for test-mode keys. `hk_test_` keys resolve real public catalog metadata but return deterministic committed fixtures, never call inference, and never mutate live credits. This is the *only* transport for the credential: the `x-api-key` alias once documented was removed in 0.2.0, because the edge authorizer reads `Authorization` as its single identity source and a request on any other header is refused before it is authenticated.\n\nNever accepted on a `dashboardJwt` operation, and there are no exceptions. `GET /v1/usage` and `GET /v1/limits` briefly declared both schemes (0.8.0); that was withdrawn in 0.8.1 because no deployed route could honor it — both operations are served by the control-plane API, whose authorizer verifies a Cognito token and refuses an `hk_live_` credential on shape, and the customer API does not route either path. An API-key holder reads its balance and reservation from `QuoteResponse`, which carries `balance_credits` and `reserved_credits` on every quote. Every operation in this document takes one scheme or the other and refuses the wrong one as `unauthenticated`.","scopes":[]}}},"servers":{"ab95c592-ddf1-4927-bb4a-1f83f0e8e07e":{"url":"https://api.audivo.dev","description":"Production API. Append the operation path, including /v1."}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"hk_live_... or hk_test_...","description":"`Authorization: Bearer hk_live_...` for live keys or `Authorization: Bearer hk_test_...` for test-mode keys. `hk_test_` keys resolve real public catalog metadata but return deterministic committed fixtures, never call inference, and never mutate live credits. This is the *only* transport for the credential: the `x-api-key` alias once documented was removed in 0.2.0, because the edge authorizer reads `Authorization` as its single identity source and a request on any other header is refused before it is authenticated.\n\nNever accepted on a `dashboardJwt` operation, and there are no exceptions. `GET /v1/usage` and `GET /v1/limits` briefly declared both schemes (0.8.0); that was withdrawn in 0.8.1 because no deployed route could honor it — both operations are served by the control-plane API, whose authorizer verifies a Cognito token and refuses an `hk_live_` credential on shape, and the customer API does not route either path. An API-key holder reads its balance and reservation from `QuoteResponse`, which carries `balance_credits` and `reserved_credits` on every quote. Every operation in this document takes one scheme or the other and refuses the wrong one as `unauthenticated`.","scopes":[]},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"`Authorization: Bearer hk_live_...` for live keys or `Authorization: Bearer hk_test_...` for test-mode keys. `hk_test_` keys resolve real public catalog metadata but return deterministic committed fixtures, never call inference, and never mutate live credits. This is the *only* transport for the credential: the `x-api-key` alias once documented was removed in 0.2.0, because the edge authorizer reads `Authorization` as its single identity source and a request on any other header is refused before it is authenticated.\n\nNever accepted on a `dashboardJwt` operation, and there are no exceptions. `GET /v1/usage` and `GET /v1/limits` briefly declared both schemes (0.8.0); that was withdrawn in 0.8.1 because no deployed route could honor it — both operations are served by the control-plane API, whose authorizer verifies a Cognito token and refuses an `hk_live_` credential on shape, and the customer API does not route either path. An API-key holder reads its balance and reservation from `QuoteResponse`, which carries `balance_credits` and `reserved_credits` on every quote. Every operation in this document takes one scheme or the other and refuses the wrong one as `unauthenticated`.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"apiKeyBearer","name":"Authorization"}],"title":"apiKeyBearer"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"hark-5cc9dfca","siteName":"Audivo","title":"Spend what a quote priced, as one job group - Audivo","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-02T10:13:28.011Z","originalFileLocation":"api-reference/quotes/spend-what-a-quote-priced-as-one-job-group.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=\"Turns a recorded quote into a job group: one member per quoted entry, each either a transcription job reserved at the entry\u0026#x27;s ceiling or, for an entry priced as cached, a settled read at the price the quote gave it. This is the operation that spends. Every guard runs before the first credit moves. The quote must be the caller\u0026#x27;s own and unexpired (quote_not_found, quote_expired); an expected_total_credits in the body must agree with the quote\u0026#x27;s recorded total_ceiling_credits, checked before anything is probed (expected_total_mismatch); every entry\u0026#x27;s enclosure is re-probed and a republished one refuses the whole confirm naming the episode (quote_mismatch — take a new quote), while entries the probe budget did not reach refuse it unverified (quote_unverified — send the same confirm again); the group\u0026#x27;s job-bearing members are checked once against the tier\u0026#x27;s open-job cap (concurrency_limited, naming the cap and the room left) and the whole group\u0026#x27;s ceiling against the balance (payment_required). A refusal here writes nothing at all. Idempotency-Key is required. The group is created under it before any member is reserved, so a repeat with the same key and body returns the original group — whatever state it is in — with 200 and charges nothing further. The same key with a different body is 409 idempotency_conflict. A confirm that dies half way is recoverable without you. The group is written pending first and marked complete only when every member has landed; a group still pending past its completion_deadline is swept — its reservations returned, its status abandoned. Reading the group tells you which.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Audivo\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hark-5cc9dfca/8y4x_mdUqdXG6Y0w/_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/hark-5cc9dfca/8y4x_mdUqdXG6Y0w/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hark-5cc9dfca/8y4x_mdUqdXG6Y0w/_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/hark-5cc9dfca/8y4x_mdUqdXG6Y0w/_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/hark-5cc9dfca/8y4x_mdUqdXG6Y0w/_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/hark-5cc9dfca/8y4x_mdUqdXG6Y0w/_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/hark-5cc9dfca/8y4x_mdUqdXG6Y0w/_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/hark-5cc9dfca/8y4x_mdUqdXG6Y0w/_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/hark-5cc9dfca/8y4x_mdUqdXG6Y0w/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Spend what a quote priced, as one job group - Audivo\">\u003cmeta data-mint-head property=\"og:description\" content=\"Turns a recorded quote into a job group: one member per quoted entry, each either a transcription job reserved at the entry\u0026#x27;s ceiling or, for an entry priced as cached, a settled read at the price the quote gave it. This is the operation that spends. Every guard runs before the first credit moves. The quote must be the caller\u0026#x27;s own and unexpired (quote_not_found, quote_expired); an expected_total_credits in the body must agree with the quote\u0026#x27;s recorded total_ceiling_credits, checked before anything is probed (expected_total_mismatch); every entry\u0026#x27;s enclosure is re-probed and a republished one refuses the whole confirm naming the episode (quote_mismatch — take a new quote), while entries the probe budget did not reach refuse it unverified (quote_unverified — send the same confirm again); the group\u0026#x27;s job-bearing members are checked once against the tier\u0026#x27;s open-job cap (concurrency_limited, naming the cap and the room left) and the whole group\u0026#x27;s ceiling against the balance (payment_required). A refusal here writes nothing at all. Idempotency-Key is required. The group is created under it before any member is reserved, so a repeat with the same key and body returns the original group — whatever state it is in — with 200 and charges nothing further. The same key with a different body is 409 idempotency_conflict. A confirm that dies half way is recoverable without you. The group is written pending first and marked complete only when every member has landed; a group still pending past its completion_deadline is swept — its reservations returned, its status abandoned. Reading the group tells you which.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Audivo\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.audivo.dev/api-reference/quotes/spend-what-a-quote-priced-as-one-job-group\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hark-5cc9dfca.mintlify.app/_mintlify/api/og/v2?division=Quotes\u0026amp;title=Spend+what+a+quote+priced%2C+as+one+job+group\u0026amp;description=Turns+a+recorded+quote+into+a+job+group%3A+one+member+per+quoted+entry%2C+each+either+a+transcription+job+reserved+at+the+entry%27s+ceiling+or%2C+for+an+entry+priced+as\u0026amp;theme=1f6a5cf39cb6ad43e1c26c30\u0026amp;signature=1eddb257febba28353a37931da86e6e1550eb9605e00f91144168c38c44c8cfc\">\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=\"Spend what a quote priced, as one job group - Audivo\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Turns a recorded quote into a job group: one member per quoted entry, each either a transcription job reserved at the entry\u0026#x27;s ceiling or, for an entry priced as cached, a settled read at the price the quote gave it. This is the operation that spends. Every guard runs before the first credit moves. The quote must be the caller\u0026#x27;s own and unexpired (quote_not_found, quote_expired); an expected_total_credits in the body must agree with the quote\u0026#x27;s recorded total_ceiling_credits, checked before anything is probed (expected_total_mismatch); every entry\u0026#x27;s enclosure is re-probed and a republished one refuses the whole confirm naming the episode (quote_mismatch — take a new quote), while entries the probe budget did not reach refuse it unverified (quote_unverified — send the same confirm again); the group\u0026#x27;s job-bearing members are checked once against the tier\u0026#x27;s open-job cap (concurrency_limited, naming the cap and the room left) and the whole group\u0026#x27;s ceiling against the balance (payment_required). A refusal here writes nothing at all. Idempotency-Key is required. The group is created under it before any member is reserved, so a repeat with the same key and body returns the original group — whatever state it is in — with 200 and charges nothing further. The same key with a different body is 409 idempotency_conflict. A confirm that dies half way is recoverable without you. The group is written pending first and marked complete only when every member has landed; a group still pending past its completion_deadline is swept — its reservations returned, its status abandoned. Reading the group tells you which.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hark-5cc9dfca.mintlify.app/_mintlify/api/og/v2?division=Quotes\u0026amp;title=Spend+what+a+quote+priced%2C+as+one+job+group\u0026amp;description=Turns+a+recorded+quote+into+a+job+group%3A+one+member+per+quoted+entry%2C+each+either+a+transcription+job+reserved+at+the+entry%27s+ceiling+or%2C+for+an+entry+priced+as\u0026amp;theme=1f6a5cf39cb6ad43e1c26c30\u0026amp;signature=1eddb257febba28353a37931da86e6e1550eb9605e00f91144168c38c44c8cfc\">\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/hark-5cc9dfca/8y4x_mdUqdXG6Y0w/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Audivo\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1f6f5f\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.audivo.dev/api-reference/quotes/spend-what-a-quote-priced-as-one-job-group\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/quotes/spend-what-a-quote-priced-as-one-job-group.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.audivo.dev/#organization\",\"name\":\"Audivo\",\"url\":\"https://docs.audivo.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hark-5cc9dfca/xZqIgLIsKXAcTJ_E/logo/light.png?fit=max\u0026auto=format\u0026n=xZqIgLIsKXAcTJ_E\u0026q=85\u0026s=290108566f8ad3bd0fda322b7324bbf2\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.audivo.dev#website\",\"name\":\"Audivo\",\"url\":\"https://docs.audivo.dev\",\"publisher\":{\"@id\":\"https://docs.audivo.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.audivo.dev/api-reference/quotes/spend-what-a-quote-priced-as-one-job-group#webpage\",\"url\":\"https://docs.audivo.dev/api-reference/quotes/spend-what-a-quote-priced-as-one-job-group\",\"name\":\"Spend what a quote priced, as one job group\",\"description\":\"Turns a recorded quote into a job group: one member per quoted entry, each either a transcription job reserved at the entry's ceiling or, for an entry priced as cached, a settled read at the price the quote gave it. This is the operation that spends. Every guard runs before the first credit moves. The quote must be the caller's own and unexpired (quote_not_found, quote_expired); an expected_total_credits in the body must agree with the quote's recorded total_ceiling_credits, checked before anything is probed (expected_total_mismatch); every entry's enclosure is re-probed and a republished one refuses the whole confirm naming the episode (quote_mismatch — take a new quote), while entries the probe budget did not reach refuse it unverified (quote_unverified — send the same confirm again); the group's job-bearing members are checked once against the tier's open-job cap (concurrency_limited, naming the cap and the room left) and the whole group's ceiling against the balance (payment_required). A refusal here writes nothing at all. Idempotency-Key is required. The group is created under it before any member is reserved, so a repeat with the same key and body returns the original group — whatever state it is in — with 200 and charges nothing further. The same key with a different body is 409 idempotency_conflict. A confirm that dies half way is recoverable without you. The group is written pending first and marked complete only when every member has landed; a group still pending past its completion_deadline is swept — its reservations returned, its status abandoned. Reading the group tells you which.\",\"dateModified\":\"2026-10-02T10:13:28.011Z\",\"isPartOf\":{\"@id\":\"https://docs.audivo.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.audivo.dev/api-reference/quotes/spend-what-a-quote-priced-as-one-job-group#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.audivo.dev/api-reference/quotes/spend-what-a-quote-priced-as-one-job-group#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Quotes\",\"item\":\"https://docs.audivo.dev/api-reference/quotes/price-a-selection-without-spending\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Spend what a quote priced, as one job group\",\"item\":\"https://docs.audivo.dev/api-reference/quotes/spend-what-a-quote-priced-as-one-job-group\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.audivo.dev/api-reference/quotes/spend-what-a-quote-priced-as-one-job-group#apireference\",\"headline\":\"Spend what a quote priced, as one job group\",\"name\":\"Spend what a quote priced, as one job group\",\"description\":\"Turns a recorded quote into a job group: one member per quoted entry, each either a transcription job reserved at the entry's ceiling or, for an entry priced as cached, a settled read at the price the quote gave it. This is the operation that spends. Every guard runs before the first credit moves. The quote must be the caller's own and unexpired (quote_not_found, quote_expired); an expected_total_credits in the body must agree with the quote's recorded total_ceiling_credits, checked before anything is probed (expected_total_mismatch); every entry's enclosure is re-probed and a republished one refuses the whole confirm naming the episode (quote_mismatch — take a new quote), while entries the probe budget did not reach refuse it unverified (quote_unverified — send the same confirm again); the group's job-bearing members are checked once against the tier's open-job cap (concurrency_limited, naming the cap and the room left) and the whole group's ceiling against the balance (payment_required). A refusal here writes nothing at all. Idempotency-Key is required. The group is created under it before any member is reserved, so a repeat with the same key and body returns the original group — whatever state it is in — with 200 and charges nothing further. The same key with a different body is 409 idempotency_conflict. A confirm that dies half way is recoverable without you. The group is written pending first and marked complete only when every member has landed; a group still pending past its completion_deadline is swept — its reservations returned, its status abandoned. Reading the group tells you which.\",\"url\":\"https://docs.audivo.dev/api-reference/quotes/spend-what-a-quote-priced-as-one-job-group\",\"mainEntityOfPage\":{\"@id\":\"https://docs.audivo.dev/api-reference/quotes/spend-what-a-quote-priced-as-one-job-group#webpage\"},\"dateModified\":\"2026-10-02T10:13:28.011Z\",\"publisher\":{\"@id\":\"https://docs.audivo.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.audivo.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Audivo\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Audivo","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API Reference","groups":[{"group":"Transcripts","pages":[{"title":"Create or attach to a transcription job, or get an instant result","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/transcripts","href":"/api-reference/transcripts/create-or-attach-to-a-transcription-job-or-get-an-instant-result"},{"title":"Poll job status, progress, and (once completed) the transcript","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/transcripts/{job_id}","href":"/api-reference/transcripts/poll-job-status-progress-and-once-completed-the-transcript"},{"title":"Direct cached fetch of an episode's transcript","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/episodes/{episode_id}/transcript","href":"/api-reference/transcripts/direct-cached-fetch-of-an-episodes-transcript"},{"title":"Re-read a transcript this account has already paid for","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/reads/{read_id}","href":"/api-reference/transcripts/re-read-a-transcript-this-account-has-already-paid-for"}]},{"group":"Catalog","pages":[{"title":"Find shows by name","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/search/shows","href":"/api-reference/catalog/find-shows-by-name"},{"title":"A category chart of a chosen size, capped by tier","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/charts","href":"/api-reference/catalog/a-category-chart-of-a-chosen-size-capped-by-tier"},{"title":"Episode metadata for a show","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/shows/{show_id}/episodes","href":"/api-reference/catalog/episode-metadata-for-a-show"},{"title":"Resolve a podcast pointer to canonical IDs without creating a job","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/resolve","href":"/api-reference/catalog/resolve-a-podcast-pointer-to-canonical-ids-without-creating-a-job"}]},{"group":"Quotes","pages":[{"title":"Price a selection without spending","description":"Turns a chart or a list of named shows into a priced selection and records it. **Reserves nothing**: the quote holds no credit and creates no job; a separate confirm operation, keyed on `quote_id`, is what spends.\n\n**The selection rule, stated once.** Each show contributes either the episodes named in its `episode_ids`, or — when none are named — its newest `episodes_per_show` (default 1). Two tier bounds apply: the chart size, and the total number of episodes one selection may come to. No show may give more than that total on its own, which is the only thing that bounds depth: how far back a selection reaches is the caller's to state, not the plan's to grant. Every bound that bit is reported in `clamps`; every show and every episode that did not make it into `entries` is reported in `excluded` with a reason a caller can read. Nothing shrinks silently.\n\n**Three request shapes.** `chart` asks the provider for a category chart (clamped exactly as `GET /v1/charts` clamps it) and, because nobody chose those shows, excludes music-led ones unless `include_music_led` is `true`. `shows` names feed URLs — usually straight from a search result — and takes every one as chosen; no category data is consulted for a named show. `uploads` names files the caller announced and sent with `POST /v1/uploads`; each is verified with one object head and priced from its declared duration.\n\n**One feed fetch per show.** The feeds read to select episodes are the ones the quote prices from; nothing is downloaded twice. Each phase runs under its own wall-clock budget inside the request, and an episode the budget did not reach comes back in `excluded` as `budget_exceeded` rather than failing the request.\n\nEvery priced entry carries the domain's estimate and its ceiling; a cached entry is priced at what a cached read costs *this* account — the floor for the account whose job produced the transcript, a fraction of its measured audio minutes for anyone else — with no ceiling above it. `remaining_open_jobs` is the caller's fan-out headroom under their tier's open-job cap — jobs reserved and not yet terminal — reported so a selection can be sized before spending. It is enforced at confirm, not here. `balance_credits` and `reserved_credits` ride beside it off the same account row, so an agent sees what it holds at the moment it decides to spend; they are reported on the same terms, and a balance too small for `total_ceiling_credits` does not refuse the quote.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/quotes","href":"/api-reference/quotes/price-a-selection-without-spending"},{"title":"Spend what a quote priced, as one job group","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/quotes/{quote_id}/confirm","href":"/api-reference/quotes/spend-what-a-quote-priced-as-one-job-group"}]},{"group":"Uploads","pages":[{"title":"Announce a file to upload","description":"Records what the caller knows about an audio file and returns a presigned PUT for it. The URL is signed against the declared SHA-256, so S3 refuses a body whose hash differs; the API never reads the bytes. Send the file with exactly the `put_headers` returned. Then transcribe it with `POST /v1/transcripts` and `{ \"upload_id\": … }`, or name it in a quote as `uploads: [{ upload_id }]` alongside others.\nThe upload is private to the account: its transcript is cached for this account alone. The upload becomes unavailable at `retained_until`; a quote after that reports `upload_not_found`. Physical object and record cleanup is asynchronous. Each account may announce at most 10 GiB across 100 unexpired uploads. Announcements reserve this allowance even if no file is sent; capacity returns at their logical expiry. A refusal returns `429 upload_quota_exceeded` before a PUT URL is issued.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/uploads","href":"/api-reference/uploads/announce-a-file-to-upload"}]},{"group":"Groups","pages":[{"title":"List the caller's job groups, newest first","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/groups","href":"/api-reference/groups/list-the-callers-job-groups-newest-first"},{"title":"Read one job group's rollup","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/groups/{group_id}","href":"/api-reference/groups/read-one-job-groups-rollup"},{"title":"Cancel a group's members that have not started","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/groups/{group_id}/cancel","href":"/api-reference/groups/cancel-a-groups-members-that-have-not-started"}]},{"group":"Account","pages":[{"title":"Account credit balance and period usage","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/usage","href":"/api-reference/account/account-credit-balance-and-period-usage"},{"title":"Exact rate/concurrency/duration/size limits for the caller's tier","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/limits","href":"/api-reference/account/exact-rateconcurrencydurationsize-limits-for-the-callers-tier"},{"title":"Pinned engine route and support tier per language","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/languages","href":"/api-reference/account/pinned-engine-route-and-support-tier-per-language"},{"title":"The account's recent API requests and what each one cost","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/logs","href":"/api-reference/account/the-accounts-recent-api-requests-and-what-each-one-cost"}]},{"group":"Session","pages":[{"title":"Establish the signed-in user's Audivo session","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/session","href":"/api-reference/session/establish-the-signed-in-users-audivo-session"}]},{"group":"API Keys","pages":[{"title":"List API keys for the account","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/api-keys","href":"/api-reference/api-keys/list-api-keys-for-the-account"},{"title":"Create a labeled API key","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/api-keys","href":"/api-reference/api-keys/create-a-labeled-api-key"},{"title":"Revoke an API key","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/api-keys/{key_id}","href":"/api-reference/api-keys/revoke-an-api-key"}]},{"group":"Connected Apps","pages":[{"title":"Read a pending connection request","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/oauth/requests/{request_id}","href":"/api-reference/connected-apps/read-a-pending-connection-request"},{"title":"Approve or decline a connection request","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/oauth/requests/{request_id}/decision","href":"/api-reference/connected-apps/approve-or-decline-a-connection-request"},{"title":"List the account's connected apps","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/connected-apps","href":"/api-reference/connected-apps/list-the-accounts-connected-apps"},{"title":"Revoke a connected app","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/connected-apps/{grant_id}","href":"/api-reference/connected-apps/revoke-a-connected-app"}]},{"group":"Billing","pages":[{"title":"Create a Stripe Checkout session","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/billing/checkout","href":"/api-reference/billing/create-a-stripe-checkout-session"},{"title":"Create a Stripe Customer Portal session","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/billing/portal","href":"/api-reference/billing/create-a-stripe-customer-portal-session"},{"title":"Normalized invoice/payment history","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/billing/invoices","href":"/api-reference/billing/normalized-invoicepayment-history"},{"title":"The account's stored billing address","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/billing/address","href":"/api-reference/billing/the-accounts-stored-billing-address"},{"title":"Store the account's billing address","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/billing/address","href":"/api-reference/billing/store-the-accounts-billing-address"},{"title":"Whether this account tops itself up, and on what terms","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/billing/auto-recharge","href":"/api-reference/billing/whether-this-account-tops-itself-up-and-on-what-terms"},{"title":"Turn auto-recharge on or off","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/billing/auto-recharge","href":"/api-reference/billing/turn-auto-recharge-on-or-off"},{"title":"Refund an eligible unused paid-credit lot","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/billing/refund","href":"/api-reference/billing/refund-an-eligible-unused-paid-credit-lot"}]},{"group":"Data","pages":[{"title":"Export the account's portable data","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/data/export","href":"/api-reference/data/export-the-accounts-portable-data"},{"title":"Delete the account and account-linked data","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/data","href":"/api-reference/data/delete-the-account-and-account-linked-data"}]}]}]},"basePath":"","title":"Spend what a quote priced, as one job group - Audivo","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-B7XKH4J3.js","utils-lOYzL7z-.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DF6jUUIM.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dpsj5f7C.js","snippetPresets-CYeiDe8v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CUFz1YZ_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D8H_iLS4.js","shallow-DdluZBHX.js","getApiPlaygroundDisplay-B9922vev.js","CodeSnippet-CMoRNGYs.js","CodeSnippets-DwyrPHuw.js","Page-DSVu9Ucl.js","getPastedJson-G-zIvlHh.js","icon-B03fnEy0.js","MethodPill-CW7teklc.js","DuplicateIcon-CtO8eekd.js","createIcon-DZTKdM_A.js","DynamicMarkdown-D5M2At0B.js","SectionHeading-C_2NaA2U.js","axios-vUo_bRtp.js","Markdown-D7QRHV3m.js","clsx-D1Z-ELXV.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-lvhuD9Du.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CKfC4ywL.js"]}