{
"message": "The selected model does not support Text To Image.",
"errors": {
"model": [
"This model is not available on your plan. Please upgrade to access it."
]
}
}
{
"message": "Too Many Attempts."
}
Audio
Transcription Price Calculation
Estimate the price of a transcription request. Provide one of: source_url, source_file, or duration_seconds.
{
"message": "The selected model does not support Text To Image.",
"errors": {
"model": [
"This model is not available on your plan. Please upgrade to access it."
]
}
}
{
"message": "Too Many Attempts."
}
Estimate the cost of an audio/video transcription job before submitting it.Quote from one of three inputs: source_url, source_file, or a bare duration_seconds.
Pass the same flags you will pass to the job.ts_level: "word", diarize (which implies include_ts) and include_metadata can all raise the price. A quote that omits them comes in under what you are actually charged. include_ts on its own does not: segment-level timing is included in the base price.
This mode never fetches the source, so it cannot see which platform the media comes from. On models that price per platform — and on TikTok, which is priced from a fixed length-band card rather than by the hour — pass platform alongside the duration:
Without platform, the quote uses the model base rate with no duration-band rounding.
platform: "tiktok" is only valid with model: "WhisperLargeV3Ct2" — that is the only model that transcribes TikTok. Paired with any other model it is rejected with 422, the same way the job itself would be. See Audio/Video Transcription.
Base amount — the TikTok length band for TikTok sources, otherwise the duration rate.
Timestamps — segment-level timing is included in the base amount, so include_ts: true with the default ts_level: "segment" does not change the quote. The base amount is multiplied by 1.5 only when ts_level is word, or when diarize is set — diarization carries the surcharge at any granularity, segment included.
Metadata — if include_metadata is set on a source that can return it, a flat 0.005 is added after the multiplication.
Sanctum personal access token, sent as Authorization: Bearer <token>. The token is opaque — it carries no claims and no embedded expiry, so do not attempt to decode it. Issue and revoke tokens from your account dashboard.
Exactly ONE input source per request — source_url, source_file or duration_seconds — hence the three variants below. They are mutually exclusive, not a menu of optional fields: sending two of them is a 422. platform belongs to the duration_seconds variant alone; with a URL or an upload the platform is derived from the source itself and passing it is rejected. Everything else (include_ts, ts_level, include_metadata, diarize, lang, model) applies to all three.
URL of video/audio to estimate price for. Mutually exclusive with source_file and duration_seconds; platform must NOT be sent with it, as it is derived from the URL.
Should transcription include timestamps. Implied when diarize is true. Whether it raises the quote depends on ts_level — segment-level timing is included in the base price. Pass it exactly as you will pass it to POST /api/v2/audio/transcriptions.
Timestamp granularity. Validated against the model exactly as on POST /api/v2/audio/transcriptions, so a price quote is never returned for a combination the job request would reject. Granularity affects the price on models that price timestamps separately: segment is included in the base price, while word and char carry a surcharge.
Whether the job will be asked to attach source metadata. Carries a flat surcharge on models that price it, so pass it exactly as you will pass it to POST /api/v2/audio/transcriptions or the quote will come in under the amount charged. The surcharge applies only to sources that can actually return metadata: uploads always return null and are never charged for it. Every recognised platform, YouTube included, does return metadata and is charged the surcharge.
Label each timed unit with a detected speaker. Requires a model that supports diarization. Implies include_ts and carries the timestamp surcharge at ANY granularity, including segment.
Language hint for the transcription. Does not affect the price, but is validated against the model the same way as on the job request: a language outside a model's published info.limits.languages is rejected.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"deAPI","colors":{"primary":"#FD9A00","light":"#FFAD33","dark":"#E58A00"},"logo":{"light":"https://mintcdn.com/deapi-f9ba3abb/gSOvhf4F2Dm8oAad/logo/deapi-light.svg?fit=max\u0026auto=format\u0026n=gSOvhf4F2Dm8oAad\u0026q=85\u0026s=e44c94d9c161aa9264f717cd49f375e5","dark":"https://mintcdn.com/deapi-f9ba3abb/gSOvhf4F2Dm8oAad/logo/deapi-dark.svg?fit=max\u0026auto=format\u0026n=gSOvhf4F2Dm8oAad\u0026q=85\u0026s=4f204c43a4a41d8f476b76d91ac5ee7c"},"favicon":"https://mintcdn.com/deapi-f9ba3abb/-BqpLinCKwOHWbhI/favicon.png?fit=max\u0026auto=format\u0026n=-BqpLinCKwOHWbhI\u0026q=85\u0026s=295488219f7cfd2b9a7007447e093121","api":{"openapi":["openapi.json","openapi-v2.json"]},"navbar":{"links":[{"href":"https://app.deapi.ai/dashboard","label":"Dashboard"},{"href":"https://status.deapi.ai/","label":"Status"},{"href":"https://github.com/deapi-ai","label":"GitHub"}],"primary":{"type":"button","label":"Get API Key","href":"https://app.deapi.ai/dashboard"}},"footer":{"socials":{"github":"https://github.com/deapi-ai","twitter":"https://x.com/deAPI_","discord":"https://discord.com/invite/UFfK5YRBsr","x":"https://x.com/deAPI_"}},"search":{"prompt":"Search deAPI docs..."},"seo":{"indexing":"all"},"contextual":{"options":["copy","view","chatgpt","claude","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"deapi-f9ba3abb","hasAudioNarration":false,"actualSubdomain":"deapi-f9ba3abb","customDomains":["docs.deapi.ai"],"gitSource":{"type":"github","owner":"deapi-ai","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad9fda4f7b413b0bdc2fd82","collectionId":"a0ac662e-4b69-4e6b-9f36-6f740d5d6d6e","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad9fda4f7b413b0bdc2fd82"},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6ad9fda4f7b413b0bdc2fd82","clientVersion":"0.0.3965","searchFilterCounts":[{"language":"default","tag":"API v2 (Latest)","count":49},{"language":"default","tag":"API v1 (Deprecated)","count":42},{"language":"default","tag":"Guides","count":18},{"language":"default","tag":"Generation","count":14},{"language":"default","tag":"Analysis","count":12},{"language":"default","tag":"Videos","count":12},{"language":"default","tag":"Transformation","count":10},{"language":"default","tag":"Images","count":10},{"language":"default","tag":"Get started","count":8},{"language":"default","tag":"API Keys","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"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":"editor-v7-file-tree","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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"editor-agent-model-picker","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":"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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api/v2/audio/transcriptions-price","slug":"/api/v2/audio/transcriptions-price","pageMetadata":{"title":"Transcription Price Calculation","openapi":"openapi-v2.json POST /api/v2/audio/transcriptions/price","description":"Estimate the price of a transcription request. Provide one of: source_url, source_file, or duration_seconds.","href":"/api/v2/audio/transcriptions-price"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Estimate the price of a transcription request. Provide one of: source_url, source_file, or duration_seconds.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Estimate the cost of an audio/video transcription job before submitting it.`}),`\n`,_jsxs(_components.p,{children:[`Quote from one of three inputs: `,_jsx(_components.code,{children:`source_url`}),`, `,_jsx(_components.code,{children:`source_file`}),`, or a bare `,_jsx(_components.code,{children:`duration_seconds`}),`.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Pass the same flags you will pass to the job.`}),` `,_jsx(_components.code,{children:`ts_level: \"word\"`}),`, `,_jsx(_components.code,{children:`diarize`}),` (which implies `,_jsx(_components.code,{children:`include_ts`}),`) and `,_jsx(_components.code,{children:`include_metadata`}),` can all raise the price. A quote that omits them comes in `,_jsx(_components.strong,{children:`under`}),` what you are actually charged. `,_jsx(_components.code,{children:`include_ts`}),` on its own does not: segment-level timing is included in the base price.`]})}),`\n`,_jsxs(Heading,{level:`3`,id:`quoting-from-duration_seconds`,children:[`Quoting from `,_jsx(_components.code,{children:`duration_seconds`})]}),`\n`,_jsxs(_components.p,{children:[`This mode never fetches the source, so it cannot see which platform the media comes from. On models that price per platform — and on TikTok, which is priced from a fixed `,_jsx(_components.a,{href:`/pricing`,children:`length-band card`}),` rather than by the hour — pass `,_jsx(_components.code,{children:`platform`}),` alongside the duration:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`12`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`12`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.deapi.ai/api/v2/audio/transcriptions/price\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$DEAPI_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Accept: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"duration_seconds\": 240,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"platform\": \"tiktok\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"model\": \"WhisperLargeV3Ct2\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"include_ts\": true,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"ts_level\": \"word\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"include_metadata\": true`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Without `,_jsx(_components.code,{children:`platform`}),`, the quote uses the model base rate with no duration-band rounding.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`platform: \"tiktok\"`}),` is only valid with `,_jsx(_components.code,{children:`model: \"WhisperLargeV3Ct2\"`}),` — that is the only model that transcribes TikTok. Paired with any other model it is rejected with `,_jsx(_components.code,{children:`422`}),`, the same way the job itself would be. See `,_jsx(_components.a,{href:`/api/v2/audio/transcriptions`,children:`Audio/Video Transcription`}),`.`]})}),`\n`,_jsxs(Heading,{level:`2`,id:`what-whisperlargev3ct2-costs`,children:[`What `,_jsx(_components.code,{children:`WhisperLargeV3Ct2`}),` costs`]}),`\n`,_jsx(_components.p,{children:`The quote is built in three steps, in this order:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Base amount`}),` — the TikTok `,_jsx(_components.a,{href:`/pricing`,children:`length band`}),` for TikTok sources, otherwise the duration rate.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Timestamps`}),` — segment-level timing is included in the base amount, so `,_jsx(_components.code,{children:`include_ts: true`}),` with the default `,_jsx(_components.code,{children:`ts_level: \"segment\"`}),` does not change the quote. The base amount is multiplied by 1.5 only when `,_jsx(_components.code,{children:`ts_level`}),` is `,_jsx(_components.code,{children:`word`}),`, or when `,_jsx(_components.code,{children:`diarize`}),` is set — diarization carries the surcharge at any granularity, `,_jsx(_components.code,{children:`segment`}),` included.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Metadata`}),` — if `,_jsx(_components.code,{children:`include_metadata`}),` is set on a source that can return it, a flat `,_jsx(_components.code,{children:`0.005`}),` is added `,_jsx(_components.em,{children:`after`}),` the multiplication.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Transcription Price Calculation","openapi":"openapi-v2.json POST /api/v2/audio/transcriptions/price","description":"Estimate the price of a transcription request. Provide one of: source_url, source_file, or duration_seconds.","href":"/api/v2/audio/transcriptions-price"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Quoting from duration_seconds","slug":"quoting-from-duration_seconds","depth":3,"children":[]},{"title":"What WhisperLargeV3Ct2 costs","slug":"what-whisperlargev3ct2-costs","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Client API v2"],"summary":"Estimate the price of a transcription request","description":"Estimate the price of a transcription request. Provide one of: source_url, source_file, or duration_seconds.","operationId":"estimateTranscriptionPrice","parameters":["06c201db-68bb-4dbd-9910-5e5fc8b1820c"],"requestBody":"92f56a84-4bcf-415b-b2e3-3b8c606ccb88","responses":{"200":"acb664b6-bc80-4bdf-8b1e-f9460b143284","401":"179c3450-1e3b-41c0-bc90-b2c3ada69d4b","422":"8028d4b5-c075-482d-8fb2-8edb2c885e83","429":"ec7f949e-e093-44e2-bd0e-3b0ac042ee13"},"security":["f95189b4-e229-48bd-9399-525c38ee19fc"],"method":"post","type":"path","servers":["e0e49a8e-d368-42c9-8377-07c35e662b8c"],"path":"/api/v2/audio/transcriptions/price","baseUrlOptions":["https://api.deapi.ai"],"title":"Estimate the price of a transcription request","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"06c201db-68bb-4dbd-9910-5e5fc8b1820c":{"name":"Accept","in":"header","required":true,"schema":{"type":"string","default":"application/json","enum":["application/json"],"isRequired":true,"uniqueKey":"","typeLabel":"enum\u003cstring>"}}},"requestBody":{"description":"Transcription price calculation parameters","required":true,"content":{"multipart/form-data":{"schema":{"oneOf":[{"type":"object","title":"From a source URL","description":"Exactly ONE input source per request — `source_url`, `source_file` or `duration_seconds` — hence the three variants below. They are mutually exclusive, not a menu of optional fields: sending two of them is a 422. `platform` belongs to the `duration_seconds` variant alone; with a URL or an upload the platform is derived from the source itself and passing it is rejected. Everything else (`include_ts`, `ts_level`, `include_metadata`, `diarize`, `lang`, `model`) applies to all three.","required":["source_url","model"],"properties":{"source_url":{"description":"URL of video/audio to estimate price for. Mutually exclusive with `source_file` and `duration_seconds`; `platform` must NOT be sent with it, as it is derived from the URL.","type":"string","example":"https://www.youtube.com/watch?v=jNQXAC9IVRw","isRequired":true,"uniqueKey":"oneOf.0.source_url","typeLabel":"string"},"model":{"description":"The model to use for transcription.","type":"string","example":"WhisperLargeV3","isRequired":true,"uniqueKey":"oneOf.0.model","typeLabel":"string"},"include_ts":{"oneOf":[{"description":"Should transcription include timestamps. Implied when `diarize` is true. Whether it raises the quote depends on `ts_level` — segment-level timing is included in the base price. Pass it exactly as you will pass it to POST /api/v2/audio/transcriptions.","type":"boolean","example":false,"default":false,"uniqueKey":"oneOf.0.include_ts.oneOf.0","typeLabel":"boolean"},{"description":"Should transcription include timestamps. Implied when `diarize` is true. Whether it raises the quote depends on `ts_level` — segment-level timing is included in the base price. Pass it exactly as you will pass it to POST /api/v2/audio/transcriptions.","type":"null","example":false,"default":false,"uniqueKey":"oneOf.0.include_ts.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.include_ts","typeLabel":"boolean | null"},"ts_level":{"oneOf":[{"description":"Timestamp granularity. Validated against the model exactly as on POST /api/v2/audio/transcriptions, so a price quote is never returned for a combination the job request would reject. Granularity affects the price on models that price timestamps separately: `segment` is included in the base price, while `word` and `char` carry a surcharge.","type":"string","example":"word","default":"segment","enum":["segment","word","char",null],"uniqueKey":"oneOf.0.ts_level.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"Timestamp granularity. Validated against the model exactly as on POST /api/v2/audio/transcriptions, so a price quote is never returned for a combination the job request would reject. Granularity affects the price on models that price timestamps separately: `segment` is included in the base price, while `word` and `char` carry a surcharge.","type":"null","example":"word","default":"segment","enum":["segment","word","char",null],"uniqueKey":"oneOf.0.ts_level.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.ts_level","typeLabel":"enum\u003cstring> | null"},"include_metadata":{"oneOf":[{"description":"Whether the job will be asked to attach source metadata. Carries a flat surcharge on models that price it, so pass it exactly as you will pass it to POST /api/v2/audio/transcriptions or the quote will come in under the amount charged. The surcharge applies only to sources that can actually return metadata: uploads always return null and are never charged for it. Every recognised platform, YouTube included, does return metadata and is charged the surcharge.","type":"boolean","example":false,"default":false,"uniqueKey":"oneOf.0.include_metadata.oneOf.0","typeLabel":"boolean"},{"description":"Whether the job will be asked to attach source metadata. Carries a flat surcharge on models that price it, so pass it exactly as you will pass it to POST /api/v2/audio/transcriptions or the quote will come in under the amount charged. The surcharge applies only to sources that can actually return metadata: uploads always return null and are never charged for it. Every recognised platform, YouTube included, does return metadata and is charged the surcharge.","type":"null","example":false,"default":false,"uniqueKey":"oneOf.0.include_metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.include_metadata","typeLabel":"boolean | null"},"diarize":{"oneOf":[{"description":"Label each timed unit with a detected speaker. Requires a model that supports diarization. Implies `include_ts` and carries the timestamp surcharge at ANY granularity, including `segment`.","type":"boolean","example":false,"default":false,"uniqueKey":"oneOf.0.diarize.oneOf.0","typeLabel":"boolean"},{"description":"Label each timed unit with a detected speaker. Requires a model that supports diarization. Implies `include_ts` and carries the timestamp surcharge at ANY granularity, including `segment`.","type":"null","example":false,"default":false,"uniqueKey":"oneOf.0.diarize.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.diarize","typeLabel":"boolean | null"},"lang":{"oneOf":[{"description":"Language hint for the transcription. Does not affect the price, but is validated against the model the same way as on the job request: a language outside a model's published `info.limits.languages` is rejected.","type":"string","example":"en","maxLength":16,"uniqueKey":"oneOf.0.lang.oneOf.0","typeLabel":"string"},{"description":"Language hint for the transcription. Does not affect the price, but is validated against the model the same way as on the job request: a language outside a model's published `info.limits.languages` is rejected.","type":"null","example":"en","maxLength":16,"uniqueKey":"oneOf.0.lang.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.lang","typeLabel":"string | null"}},"uniqueKey":"oneOf.0","typeLabel":"From a source URL · object"},{"type":"object","title":"From an uploaded file","description":"Exactly ONE input source per request — `source_url`, `source_file` or `duration_seconds` — hence the three variants below. They are mutually exclusive, not a menu of optional fields: sending two of them is a 422. `platform` belongs to the `duration_seconds` variant alone; with a URL or an upload the platform is derived from the source itself and passing it is rejected. Everything else (`include_ts`, `ts_level`, `include_metadata`, `diarize`, `lang`, `model`) applies to all three.","required":["source_file","model"],"properties":{"source_file":{"description":"Audio or video file to estimate price for. Mutually exclusive with `source_url` and `duration_seconds`; `platform` must NOT be sent with it, as an upload belongs to no platform.","type":"string","format":"binary","isRequired":true,"uniqueKey":"oneOf.1.source_file","typeLabel":"file"},"model":{"description":"The model to use for transcription.","type":"string","example":"WhisperLargeV3","isRequired":true,"uniqueKey":"oneOf.1.model","typeLabel":"string"},"include_ts":{"oneOf":[{"description":"Should transcription include timestamps. Implied when `diarize` is true. Whether it raises the quote depends on `ts_level` — segment-level timing is included in the base price. Pass it exactly as you will pass it to POST /api/v2/audio/transcriptions.","type":"boolean","example":false,"default":false,"uniqueKey":"oneOf.1.include_ts.oneOf.0","typeLabel":"boolean"},{"description":"Should transcription include timestamps. Implied when `diarize` is true. Whether it raises the quote depends on `ts_level` — segment-level timing is included in the base price. Pass it exactly as you will pass it to POST /api/v2/audio/transcriptions.","type":"null","example":false,"default":false,"uniqueKey":"oneOf.1.include_ts.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.include_ts","typeLabel":"boolean | null"},"ts_level":{"oneOf":[{"description":"Timestamp granularity. Validated against the model exactly as on POST /api/v2/audio/transcriptions, so a price quote is never returned for a combination the job request would reject. Granularity affects the price on models that price timestamps separately: `segment` is included in the base price, while `word` and `char` carry a surcharge.","type":"string","example":"word","default":"segment","enum":["segment","word","char",null],"uniqueKey":"oneOf.1.ts_level.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"Timestamp granularity. Validated against the model exactly as on POST /api/v2/audio/transcriptions, so a price quote is never returned for a combination the job request would reject. Granularity affects the price on models that price timestamps separately: `segment` is included in the base price, while `word` and `char` carry a surcharge.","type":"null","example":"word","default":"segment","enum":["segment","word","char",null],"uniqueKey":"oneOf.1.ts_level.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.ts_level","typeLabel":"enum\u003cstring> | null"},"include_metadata":{"oneOf":[{"description":"Whether the job will be asked to attach source metadata. An upload always returns null metadata and is never charged the surcharge, so this flag does not move the quote on this variant. Pass it exactly as you will pass it to POST /api/v2/audio/transcriptions.","type":"boolean","example":false,"default":false,"uniqueKey":"oneOf.1.include_metadata.oneOf.0","typeLabel":"boolean"},{"description":"Whether the job will be asked to attach source metadata. An upload always returns null metadata and is never charged the surcharge, so this flag does not move the quote on this variant. Pass it exactly as you will pass it to POST /api/v2/audio/transcriptions.","type":"null","example":false,"default":false,"uniqueKey":"oneOf.1.include_metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.include_metadata","typeLabel":"boolean | null"},"diarize":{"oneOf":[{"description":"Label each timed unit with a detected speaker. Requires a model that supports diarization. Implies `include_ts` and carries the timestamp surcharge at ANY granularity, including `segment`.","type":"boolean","example":false,"default":false,"uniqueKey":"oneOf.1.diarize.oneOf.0","typeLabel":"boolean"},{"description":"Label each timed unit with a detected speaker. Requires a model that supports diarization. Implies `include_ts` and carries the timestamp surcharge at ANY granularity, including `segment`.","type":"null","example":false,"default":false,"uniqueKey":"oneOf.1.diarize.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.diarize","typeLabel":"boolean | null"},"lang":{"oneOf":[{"description":"Language hint for the transcription. Does not affect the price, but is validated against the model the same way as on the job request: a language outside a model's published `info.limits.languages` is rejected.","type":"string","example":"en","maxLength":16,"uniqueKey":"oneOf.1.lang.oneOf.0","typeLabel":"string"},{"description":"Language hint for the transcription. Does not affect the price, but is validated against the model the same way as on the job request: a language outside a model's published `info.limits.languages` is rejected.","type":"null","example":"en","maxLength":16,"uniqueKey":"oneOf.1.lang.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.lang","typeLabel":"string | null"}},"uniqueKey":"oneOf.1","typeLabel":"From an uploaded file · object"},{"type":"object","title":"From a known duration","description":"Exactly ONE input source per request — `source_url`, `source_file` or `duration_seconds` — hence the three variants below. They are mutually exclusive, not a menu of optional fields: sending two of them is a 422. `platform` belongs to the `duration_seconds` variant alone; with a URL or an upload the platform is derived from the source itself and passing it is rejected. Everything else (`include_ts`, `ts_level`, `include_metadata`, `diarize`, `lang`, `model`) applies to all three.","required":["duration_seconds","model"],"properties":{"duration_seconds":{"description":"Duration in seconds for direct price estimation. Mutually exclusive with `source_url` and `source_file`. This mode never fetches the source, so pass `platform` alongside it on models that price per platform — without it the quote uses the model base rate and no duration rounding, and can come in under the amount charged.","type":"number","example":3600,"minimum":0.1,"isRequired":true,"uniqueKey":"oneOf.2.duration_seconds","typeLabel":"number"},"model":{"description":"The model to use for transcription.","type":"string","example":"WhisperLargeV3","isRequired":true,"uniqueKey":"oneOf.2.model","typeLabel":"string"},"platform":{"oneOf":[{"description":"The platform the source comes from. Valid ONLY on this variant, where there is no URL to derive it from — with `source_url` or `source_file` it is rejected, because the platform is taken from the source itself. Some models price per platform, and TikTok is priced from a length-band card, so a duration-only quote that omits this is priced at the model base rate and can come in under the amount charged. Pass the platform you will actually submit.","type":"string","example":"tiktok","enum":["youtube","twitter","twitch","kick","tiktok",null],"uniqueKey":"oneOf.2.platform.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"The platform the source comes from. Valid ONLY on this variant, where there is no URL to derive it from — with `source_url` or `source_file` it is rejected, because the platform is taken from the source itself. Some models price per platform, and TikTok is priced from a length-band card, so a duration-only quote that omits this is priced at the model base rate and can come in under the amount charged. Pass the platform you will actually submit.","type":"null","example":"tiktok","enum":["youtube","twitter","twitch","kick","tiktok",null],"uniqueKey":"oneOf.2.platform.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.2.platform","typeLabel":"enum\u003cstring> | null"},"include_ts":{"oneOf":[{"description":"Should transcription include timestamps. Implied when `diarize` is true. Whether it raises the quote depends on `ts_level` — segment-level timing is included in the base price. Pass it exactly as you will pass it to POST /api/v2/audio/transcriptions.","type":"boolean","example":false,"default":false,"uniqueKey":"oneOf.2.include_ts.oneOf.0","typeLabel":"boolean"},{"description":"Should transcription include timestamps. Implied when `diarize` is true. Whether it raises the quote depends on `ts_level` — segment-level timing is included in the base price. Pass it exactly as you will pass it to POST /api/v2/audio/transcriptions.","type":"null","example":false,"default":false,"uniqueKey":"oneOf.2.include_ts.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.2.include_ts","typeLabel":"boolean | null"},"ts_level":{"oneOf":[{"description":"Timestamp granularity. Validated against the model exactly as on POST /api/v2/audio/transcriptions, so a price quote is never returned for a combination the job request would reject. Granularity affects the price on models that price timestamps separately: `segment` is included in the base price, while `word` and `char` carry a surcharge.","type":"string","example":"word","default":"segment","enum":["segment","word","char",null],"uniqueKey":"oneOf.2.ts_level.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"Timestamp granularity. Validated against the model exactly as on POST /api/v2/audio/transcriptions, so a price quote is never returned for a combination the job request would reject. Granularity affects the price on models that price timestamps separately: `segment` is included in the base price, while `word` and `char` carry a surcharge.","type":"null","example":"word","default":"segment","enum":["segment","word","char",null],"uniqueKey":"oneOf.2.ts_level.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.2.ts_level","typeLabel":"enum\u003cstring> | null"},"include_metadata":{"oneOf":[{"description":"Whether the job will be asked to attach source metadata. Carries a flat surcharge on models that price it, so pass it exactly as you will pass it to POST /api/v2/audio/transcriptions or the quote will come in under the amount charged. The surcharge applies only to sources that can actually return metadata: uploads always return null and are never charged for it. Every recognised platform, YouTube included, does return metadata and is charged the surcharge.","type":"boolean","example":false,"default":false,"uniqueKey":"oneOf.2.include_metadata.oneOf.0","typeLabel":"boolean"},{"description":"Whether the job will be asked to attach source metadata. Carries a flat surcharge on models that price it, so pass it exactly as you will pass it to POST /api/v2/audio/transcriptions or the quote will come in under the amount charged. The surcharge applies only to sources that can actually return metadata: uploads always return null and are never charged for it. Every recognised platform, YouTube included, does return metadata and is charged the surcharge.","type":"null","example":false,"default":false,"uniqueKey":"oneOf.2.include_metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.2.include_metadata","typeLabel":"boolean | null"},"diarize":{"oneOf":[{"description":"Label each timed unit with a detected speaker. Requires a model that supports diarization. Implies `include_ts` and carries the timestamp surcharge at ANY granularity, including `segment`.","type":"boolean","example":false,"default":false,"uniqueKey":"oneOf.2.diarize.oneOf.0","typeLabel":"boolean"},{"description":"Label each timed unit with a detected speaker. Requires a model that supports diarization. Implies `include_ts` and carries the timestamp surcharge at ANY granularity, including `segment`.","type":"null","example":false,"default":false,"uniqueKey":"oneOf.2.diarize.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.2.diarize","typeLabel":"boolean | null"},"lang":{"oneOf":[{"description":"Language hint for the transcription. Does not affect the price, but is validated against the model the same way as on the job request: a language outside a model's published `info.limits.languages` is rejected.","type":"string","example":"en","maxLength":16,"uniqueKey":"oneOf.2.lang.oneOf.0","typeLabel":"string"},{"description":"Language hint for the transcription. Does not affect the price, but is validated against the model the same way as on the job request: a language outside a model's published `info.limits.languages` is rejected.","type":"null","example":"en","maxLength":16,"uniqueKey":"oneOf.2.lang.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.2.lang","typeLabel":"string | null"}},"uniqueKey":"oneOf.2","typeLabel":"From a known duration · object"}],"uniqueKey":"","typeLabel":"From a source URL · object | From an uploaded file · object | From a known duration · object"},"examples":{"Example":{"title":"Example","value":{"source_url":"https://www.youtube.com/watch?v=jNQXAC9IVRw","model":"WhisperLargeV3","include_ts":false,"ts_level":"word","include_metadata":false,"diarize":false,"lang":"en"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"acb664b6-bc80-4bdf-8b1e-f9460b143284":{"description":"Calculated price for transcription.","headers":{"X-RateLimit-Policy":{"description":"Every window that applies, as `\u003climit>;w=\u003cseconds>` elements. Always present on a throttled response, so a single element means there is no daily limit — do not infer that from the absence of the Daily-* headers. `300;w=60` is minute-only; `3;w=60, 100;w=86400` is both.","schema":{"type":"string","example":"3;w=60, 100;w=86400"}},"X-RateLimit-Source":{"description":"Where the limit came from, so you know what would change it:\n`tier` — your account tier's rate for this endpoint;\n`fallback` — no rate configured for this tier and endpoint, degraded default in force;\n`model` — a per-model override for the model in the request, unaffected by your tier\n(only when the request carried a recognised `model`, otherwise the tier pool applies);\n`static` — a flat limit outside the tier system, identical for every account.\n\nIf you ever see `fallback`, tell us: it means no rate is configured for that tier and endpoint.","schema":{"type":"string","example":"tier","enum":["tier","fallback","model","static"]}},"X-RateLimit-Limit":{"description":"Maximum requests allowed per minute (RPM)","schema":{"type":"integer","example":3}},"X-RateLimit-Remaining":{"description":"Remaining requests in current minute window","schema":{"type":"integer","example":2}},"X-RateLimit-Reset":{"description":"Epoch second at which the minute (RPM) window refills. Fixed window — the value does not drift as you spend the quota. Describes the same window as X-RateLimit-Limit, including on a daily rejection.","schema":{"type":"integer","example":1755800460}},"X-RateLimit-Daily-Limit":{"description":"Maximum requests allowed per day (RPD)","schema":{"type":"integer","example":100}},"X-RateLimit-Daily-Remaining":{"description":"Remaining requests in current day window","schema":{"type":"integer","example":95}},"X-RateLimit-Daily-Reset":{"description":"Epoch second at which the daily (RPD) window refills — 86400 s after the first request that opened this bucket's window, not a calendar midnight. Present only when a daily limit applies.","schema":{"type":"integer","example":1755846000}}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"price":{"description":"Calculated price for the transcription","type":"number","format":"float","example":0.25,"uniqueKey":"data.price","typeLabel":"number\u003cfloat>"}},"type":"object","uniqueKey":"data","typeLabel":"object"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"price":0.25}}}},"exampleType":"generated"}},"exampleType":"generated"},"179c3450-1e3b-41c0-bc90-b2c3ada69d4b":{"description":"Unauthorized user.","content":{"application/json":{"schema":{"properties":{"data":{"description":"Information from success endpoint","type":"object","uniqueKey":"data","typeLabel":"object"},"message":{"description":"Error general message","type":"string","uniqueKey":"message","typeLabel":"string"},"errors":{"description":"Information about errors","type":"array","items":{"oneOf":[{}],"uniqueKey":"errors.items.[INDEX]","typeLabel":"any"},"uniqueKey":"errors","typeLabel":"any[]"},"statusCode":{"description":"Status code","type":"integer","uniqueKey":"statusCode","typeLabel":"integer"},"code":{"description":"A stable, machine-readable reason, on the responses that publish one. Refused credentials (401): `missing_key` — no Bearer credentials arrived at all; `invalid_key` — a key was presented but is unknown, carries the wrong secret, or is malformed; `key_expired` — past its expiry date; `key_revoked` — deactivated. Refused requests: `insufficient_permissions` (403), `ip_not_allowed` (403), `active_key_limit_reached` (422), `insufficient_balance` (422), `key_limit_exceeded` (402), `rate_limited` (429). Absent wherever a response publishes no code, so treat an unknown value as the status code alone — the list grows.","type":"string","enum":["missing_key","invalid_key","key_expired","key_revoked","insufficient_permissions","ip_not_allowed","active_key_limit_reached","insufficient_balance","key_limit_exceeded","rate_limited"],"uniqueKey":"code","typeLabel":"enum\u003cstring>"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{},"message":"\u003cstring>","errors":["\u003cunknown>"],"statusCode":123,"code":"missing_key"}}},"exampleType":"generated"}},"exampleType":"generated"},"8028d4b5-c075-482d-8fb2-8edb2c885e83":{"description":"Validation failed. Common errors include: model does not exist, model does not support the inference type for this endpoint, the model is not available on your plan (it requires a higher tier than your account has — upgrade to use it), or invalid request parameters.","content":{"application/json":{"schema":{"properties":{"message":{"description":"General error message","type":"string","example":"The selected model does not support Text To Image.","uniqueKey":"message","typeLabel":"string"},"errors":{"description":"Detailed validation errors by field. A model your plan does not cover is reported on the \"model\" field with the message \"This model is not available on your plan. Please upgrade to access it.\" Such a model is also omitted from GET /models.","type":"object","example":{"model":["This model is not available on your plan. Please upgrade to access it."]},"uniqueKey":"errors","typeLabel":"object"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"The selected model does not support Text To Image.","errors":{"model":["This model is not available on your plan. Please upgrade to access it."]}}}},"exampleType":"generated"}},"exampleType":"generated"},"ec7f949e-e093-44e2-bd0e-3b0ac042ee13":{"description":"Rate limit exceeded. Check X-RateLimit-Type header to determine if minute (RPM) or daily (RPD) limit was hit.","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed per minute (RPM)","schema":{"type":"integer","example":3}},"X-RateLimit-Remaining":{"description":"Remaining requests in current minute window","schema":{"type":"integer","example":2}},"X-RateLimit-Daily-Limit":{"description":"Maximum requests allowed per day (RPD)","schema":{"type":"integer","example":100}},"X-RateLimit-Daily-Remaining":{"description":"Remaining requests in current day window","schema":{"type":"integer","example":95}},"X-RateLimit-Type":{"description":"Which limit rejected the request. Sent only on 429. Read it before anything else on the response: it decides what the other `X-RateLimit-*` headers are counting.\n\n`minute` — the per-request RPM window. `daily` — the per-request RPD window; the Daily-* pair is the one at 0.\n\n`key-creation` — the hourly cap on keys created over the API (`POST /api/v2/keys`), per account and shared by its ADMIN keys. The whole `X-RateLimit-*` set describes that bucket and there are no Daily-* headers.\n\n`ip-not-allowed` — too many calls from an address your key's IP whitelist refuses. Counted against that address, never against your account.","schema":{"type":"string","example":"minute","enum":["minute","daily","key-creation","ip-not-allowed"]}},"Retry-After":{"description":"Seconds until the window that rejected you frees up (60 for minute, up to 86400 for daily). Counted from when that window opened, not to a calendar boundary. Sent only on 429.","schema":{"type":"integer","example":60}},"X-RateLimit-Reset":{"description":"Epoch second at which the minute (RPM) window refills. Fixed window — the value does not drift as you spend the quota. Describes the same window as X-RateLimit-Limit, including on a daily rejection.","schema":{"type":"integer","example":1755800460}},"X-RateLimit-Daily-Reset":{"description":"Epoch second at which the daily (RPD) window refills — 86400 s after the first request that opened this bucket's window, not a calendar midnight. Present only when a daily limit applies.","schema":{"type":"integer","example":1755846000}},"X-RateLimit-Source":{"description":"Where the limit came from, so you know what would change it:\n`tier` — your account tier's rate for this endpoint;\n`fallback` — no rate configured for this tier and endpoint, degraded default in force;\n`model` — a per-model override for the model in the request, unaffected by your tier\n(only when the request carried a recognised `model`, otherwise the tier pool applies);\n`static` — a flat limit outside the tier system, identical for every account.\n\nIf you ever see `fallback`, tell us: it means no rate is configured for that tier and endpoint.","schema":{"type":"string","example":"tier","enum":["tier","fallback","model","static"]}},"X-RateLimit-Policy":{"description":"Every window that applies, as `\u003climit>;w=\u003cseconds>` elements. Always present on a throttled response, so a single element means there is no daily limit — do not infer that from the absence of the Daily-* headers. `300;w=60` is minute-only; `3;w=60, 100;w=86400` is both.","schema":{"type":"string","example":"3;w=60, 100;w=86400"}}},"content":{"application/json":{"schema":{"description":"Rate limit exceeded response","properties":{"message":{"description":"Error message","type":"string","example":"Too Many Attempts.","uniqueKey":"message","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"Too Many Attempts."}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"f95189b4-e229-48bd-9399-525c38ee19fc":{"bearerAuth":{"type":"http","description":"Sanctum personal access token, sent as `Authorization: Bearer \u003ctoken>`. The token is opaque — it carries no claims and no embedded expiry, so do not attempt to decode it. Issue and revoke tokens from your account dashboard.","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"e0e49a8e-d368-42c9-8377-07c35e662b8c":{"url":"https://api.deapi.ai","description":"Production API Server base URL"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","description":"Sanctum personal access token, sent as `Authorization: Bearer \u003ctoken>`. The token is opaque — it carries no claims and no embedded expiry, so do not attempt to decode it. Issue and revoke tokens from your account dashboard.","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Sanctum personal access token, sent as `Authorization: Bearer \u003ctoken>`. The token is opaque — it carries no claims and no embedded expiry, so do not attempt to decode it. Issue and revoke tokens from your account dashboard.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi-v2.json"},"subdomain":"deapi-f9ba3abb","siteName":"deAPI","title":"Transcription Price Calculation - deAPI","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-12T09:05:32.614Z","originalFileLocation":"api/v2/audio/transcriptions-price.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=\"Estimate the price of a transcription request. Provide one of: source_url, source_file, or duration_seconds.\">\u003cmeta data-mint-head name=\"application-name\" content=\"deAPI\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/deapi-f9ba3abb/33g1Y_LWZKSlqOOT/_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/deapi-f9ba3abb/33g1Y_LWZKSlqOOT/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/deapi-f9ba3abb/33g1Y_LWZKSlqOOT/_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/deapi-f9ba3abb/33g1Y_LWZKSlqOOT/_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/deapi-f9ba3abb/33g1Y_LWZKSlqOOT/_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/deapi-f9ba3abb/33g1Y_LWZKSlqOOT/_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/deapi-f9ba3abb/33g1Y_LWZKSlqOOT/_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/deapi-f9ba3abb/33g1Y_LWZKSlqOOT/_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/deapi-f9ba3abb/33g1Y_LWZKSlqOOT/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Transcription Price Calculation - deAPI\">\u003cmeta data-mint-head property=\"og:description\" content=\"Estimate the price of a transcription request. Provide one of: source_url, source_file, or duration_seconds.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"deAPI\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.deapi.ai/api/v2/audio/transcriptions-price\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://deapi-f9ba3abb.mintlify.app/_mintlify/api/og/v2?division=Audio\u0026amp;title=Transcription+Price+Calculation\u0026amp;description=Estimate+the+price+of+a+transcription+request.+Provide+one+of%3A+source_url%2C+source_file%2C+or+duration_seconds.\u0026amp;theme=4c928ee8ac6977ca60ea2061\u0026amp;signature=46950a138c96d13b8d7b009bf611381be022087b02fd45bbf99ad15201f9dccf\">\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=\"Transcription Price Calculation - deAPI\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Estimate the price of a transcription request. Provide one of: source_url, source_file, or duration_seconds.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://deapi-f9ba3abb.mintlify.app/_mintlify/api/og/v2?division=Audio\u0026amp;title=Transcription+Price+Calculation\u0026amp;description=Estimate+the+price+of+a+transcription+request.+Provide+one+of%3A+source_url%2C+source_file%2C+or+duration_seconds.\u0026amp;theme=4c928ee8ac6977ca60ea2061\u0026amp;signature=46950a138c96d13b8d7b009bf611381be022087b02fd45bbf99ad15201f9dccf\">\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/deapi-f9ba3abb/33g1Y_LWZKSlqOOT/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"deAPI\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FD9A00\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.deapi.ai/api/v2/audio/transcriptions-price\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api/v2/audio/transcriptions-price.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.deapi.ai/#organization\",\"name\":\"deAPI\",\"url\":\"https://docs.deapi.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/deapi-f9ba3abb/gSOvhf4F2Dm8oAad/logo/deapi-light.svg?fit=max\u0026auto=format\u0026n=gSOvhf4F2Dm8oAad\u0026q=85\u0026s=e44c94d9c161aa9264f717cd49f375e5\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.deapi.ai#website\",\"name\":\"deAPI\",\"url\":\"https://docs.deapi.ai\",\"publisher\":{\"@id\":\"https://docs.deapi.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.deapi.ai/api/v2/audio/transcriptions-price#webpage\",\"url\":\"https://docs.deapi.ai/api/v2/audio/transcriptions-price\",\"name\":\"Transcription Price Calculation\",\"description\":\"Estimate the price of a transcription request. Provide one of: source_url, source_file, or duration_seconds.\",\"dateModified\":\"2026-08-12T09:05:32.614Z\",\"isPartOf\":{\"@id\":\"https://docs.deapi.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.deapi.ai/api/v2/audio/transcriptions-price#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.deapi.ai/api/v2/audio/transcriptions-price#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Audio\",\"item\":\"https://docs.deapi.ai/api/v2/audio/speech\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Transcription Price Calculation\",\"item\":\"https://docs.deapi.ai/api/v2/audio/transcriptions-price\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.deapi.ai/api/v2/audio/transcriptions-price#apireference\",\"headline\":\"Transcription Price Calculation\",\"name\":\"Transcription Price Calculation\",\"description\":\"Estimate the price of a transcription request. Provide one of: source_url, source_file, or duration_seconds.\",\"url\":\"https://docs.deapi.ai/api/v2/audio/transcriptions-price\",\"mainEntityOfPage\":{\"@id\":\"https://docs.deapi.ai/api/v2/audio/transcriptions-price#webpage\"},\"dateModified\":\"2026-08-12T09:05:32.614Z\",\"publisher\":{\"@id\":\"https://docs.deapi.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.deapi.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"deAPI\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"deAPI","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/introduction"}]},{"tab":"API v2 (Latest)","groups":[{"group":"Overview","pages":[{"title":"API Overview","href":"/api/v2/overview"},{"title":"Errors","href":"/api/v2/errors"}]},{"group":"Images","pages":[{"title":"Image Generation","openapi":"openapi-v2.json POST /api/v2/images/generations","href":"/api/v2/images/generations"},{"title":"Image Generation Price Calculation","openapi":"openapi-v2.json POST /api/v2/images/generations/price","href":"/api/v2/images/generations-price"},{"title":"Image Edit","openapi":"openapi-v2.json POST /api/v2/images/edits","href":"/api/v2/images/edits"},{"title":"Image Edit Price Calculation","openapi":"openapi-v2.json POST /api/v2/images/edits/price","href":"/api/v2/images/edits-price"},{"title":"Image OCR","openapi":"openapi-v2.json POST /api/v2/images/ocr","href":"/api/v2/images/ocr"},{"title":"Image OCR Price Calculation","openapi":"openapi-v2.json POST /api/v2/images/ocr/price","href":"/api/v2/images/ocr-price"},{"title":"Image Background Removal","openapi":"openapi-v2.json POST /api/v2/images/background-removals","href":"/api/v2/images/background-removals"},{"title":"Image Background Removal Price Calculation","openapi":"openapi-v2.json POST /api/v2/images/background-removals/price","href":"/api/v2/images/background-removals-price"},{"title":"Image Upscale","openapi":"openapi-v2.json POST /api/v2/images/upscales","href":"/api/v2/images/upscales"},{"title":"Image Upscale Price Calculation","openapi":"openapi-v2.json POST /api/v2/images/upscales/price","href":"/api/v2/images/upscales-price"}]},{"group":"Videos","pages":[{"title":"Video Generation","openapi":"openapi-v2.json POST /api/v2/videos/generations","href":"/api/v2/videos/generations"},{"title":"Video Generation Price Calculation","openapi":"openapi-v2.json POST /api/v2/videos/generations/price","href":"/api/v2/videos/generations-price"},{"title":"Video Animation (Image-to-Video)","openapi":"openapi-v2.json POST /api/v2/videos/animations","href":"/api/v2/videos/animations"},{"title":"Video Animation Price Calculation","openapi":"openapi-v2.json POST /api/v2/videos/animations/price","href":"/api/v2/videos/animations-price"},{"title":"Video Audio Sync (Audio-to-Video)","openapi":"openapi-v2.json POST /api/v2/videos/audio-syncs","href":"/api/v2/videos/audio-syncs"},{"title":"Video Audio Sync Price Calculation","openapi":"openapi-v2.json POST /api/v2/videos/audio-syncs/price","href":"/api/v2/videos/audio-syncs-price"},{"title":"Video Replacement","openapi":"openapi-v2.json POST /api/v2/videos/replacements","href":"/api/v2/videos/replacements"},{"title":"Video Replacement Price Calculation","openapi":"openapi-v2.json POST /api/v2/videos/replacements/price","href":"/api/v2/videos/replacements-price"},{"title":"Video Upscale","openapi":"openapi-v2.json POST /api/v2/videos/upscales","href":"/api/v2/videos/upscales"},{"title":"Video Upscale Price Calculation","openapi":"openapi-v2.json POST /api/v2/videos/upscales/price","href":"/api/v2/videos/upscales-price"},{"title":"Video Description","openapi":"openapi-v2.json POST /api/v2/videos/descriptions","href":"/api/v2/videos/descriptions"},{"title":"Video Description Price Calculation","openapi":"openapi-v2.json POST /api/v2/videos/descriptions/price","href":"/api/v2/videos/descriptions-price"}]},{"group":"Audio","pages":[{"title":"Text-to-Speech","openapi":"openapi-v2.json POST /api/v2/audio/speech","href":"/api/v2/audio/speech"},{"title":"Text-to-Speech Price Calculation","openapi":"openapi-v2.json POST /api/v2/audio/speech/price","href":"/api/v2/audio/speech-price"},{"title":"Text-to-Music","openapi":"openapi-v2.json POST /api/v2/audio/music","href":"/api/v2/audio/music"},{"title":"Text-to-Music Price Calculation","openapi":"openapi-v2.json POST /api/v2/audio/music/price","href":"/api/v2/audio/music-price"},{"title":"Audio/Video Transcription","openapi":"openapi-v2.json POST /api/v2/audio/transcriptions","description":"Unified transcription — auto-detects URL or file upload for audio and video sources (YouTube, X, Twitch, Kick, TikTok, X/Twitter Spaces).","href":"/api/v2/audio/transcriptions"},{"title":"Transcription Price Calculation","openapi":"openapi-v2.json POST /api/v2/audio/transcriptions/price","href":"/api/v2/audio/transcriptions-price"}]},{"group":"Embeddings","pages":[{"title":"Embeddings","openapi":"openapi-v2.json POST /api/v2/embeddings","description":"Generate embeddings for one or more input texts.","href":"/api/v2/embeddings/embeddings"},{"title":"Embeddings Price Calculation","openapi":"openapi-v2.json POST /api/v2/embeddings/price","href":"/api/v2/embeddings/embeddings-price"}]},{"group":"Prompt Enhancement","pages":[{"title":"Prompt Enhancement - Overview","href":"/api/v2/prompt-enhancement/overview"},{"title":"Prompt Booster","openapi":"openapi-v2.json POST /api/v2/prompts/enhancements","href":"/api/v2/prompt-enhancement/prompt-booster"},{"title":"Prompt Booster Price","openapi":"openapi-v2.json POST /api/v2/prompts/enhancements/price","href":"/api/v2/prompt-enhancement/prompt-booster-price"}]},{"group":"Utilities","pages":[{"title":"Check Balance","openapi":"openapi-v2.json GET /api/v2/account/balance","href":"/api/v2/utilities/balance"},{"title":"Get Job Results","openapi":"openapi-v2.json GET /api/v2/jobs/{job_request}","href":"/api/v2/utilities/jobs"},{"title":"Model Selection","openapi":"openapi-v2.json GET /api/v2/models","href":"/api/v2/utilities/models"}]},{"group":"API Keys","pages":[{"title":"Get Current Key","openapi":"openapi-v2.json GET /api/v2/key","href":"/api/v2/keys/get-current-key"},{"title":"Get Current Key Usage","openapi":"openapi-v2.json GET /api/v2/key/usage","href":"/api/v2/keys/get-current-key-usage"},{"title":"List Keys","openapi":"openapi-v2.json GET /api/v2/keys","href":"/api/v2/keys/list-keys"},{"title":"Create Key","openapi":"openapi-v2.json POST /api/v2/keys","href":"/api/v2/keys/create-key"},{"title":"Get Key","openapi":"openapi-v2.json GET /api/v2/keys/{id}","href":"/api/v2/keys/get-key"},{"title":"Update Key","openapi":"openapi-v2.json PATCH /api/v2/keys/{id}","href":"/api/v2/keys/update-key"},{"title":"Delete Key","openapi":"openapi-v2.json DELETE /api/v2/keys/{id}","href":"/api/v2/keys/delete-key"},{"title":"Get Key Usage","openapi":"openapi-v2.json GET /api/v2/keys/{id}/usage","href":"/api/v2/keys/get-key-usage"}]},{"group":"Account","pages":[{"title":"Get Account Billing","openapi":"openapi-v2.json GET /api/v2/account","href":"/api/v2/account/get-account"},{"title":"Get Account Usage","openapi":"openapi-v2.json GET /api/v2/account/usage","href":"/api/v2/account/usage"},{"title":"List Payments","openapi":"openapi-v2.json GET /api/v2/account/payments","href":"/api/v2/account/payments"}]}]},{"tab":"API v1 (Deprecated)","pages":[{"title":"API v1 (Deprecated)","href":"/api/v1/overview"}]}]},"title":"Transcription Price Calculation - deAPI","buildId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","deploymentId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Bbp7I60D.js","utils-C3RIvJha.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DqD-vLt8.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B31Loprg.js","snippetPresets-DKpk-b8t.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Cj65AhOR.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BXtn5gcC.js","shallow-RY2b03Cp.js","getApiPlaygroundDisplay-B0jeiPk3.js","CodeSnippet-CYgBjjwn.js","CodeSnippets-DOngDrYB.js","Page-n7I5XbKb.js","getPastedJson-DRQbJx-T.js","icon-CQiQCicY.js","MethodPill-BKTLdNtu.js","DuplicateIcon-B9jpAdat.js","createIcon-DCddRrXv.js","DynamicMarkdown-a8hUKrw6.js","SectionHeading-eECVV2eH.js","axios-vUo_bRtp.js","Markdown--GF7ZIpf.js","clsx-DZLdJUrt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-2LoAhjKH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Zwc0ZncM.js"]}