{
"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
Text-to-Speech
Generate speech audio from text. Supports three TTS modes: custom_voice (default, preset speakers), voice_clone (clone from reference audio), voice_design (create voice from description).
{
"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."
}
Generate natural-sounding speech from text. Supports preset voices, voice cloning, and voice design depending on the selected model. Returns a request_id for status polling.
Prerequisite: Consult the Model Selection endpoint to identify a valid model slug and the per-model voice catalog.
OpenAI SDK users: This endpoint is also available via the OpenAI-compatible surface as POST /v1/audio/speech at https://oai.deapi.ai/v1. The six OpenAI voice aliases (alloy, echo, fable, onyx, nova, shimmer) are supported on Kokoro. See OpenAI Compatibility.
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.
Audio output format. Read info.limits.output_formats for your model from GET /api/v2/models and send one of the listed values; anything else is rejected with 422.
Reference audio file for voice cloning. Supported formats: mp3, wav, flac, ogg, m4a. Max 10MB. Duration must be between 3-10 seconds (model-specific limits may apply). Required for voice_clone mode.
Natural language voice description for voice_design mode (e.g. "A warm female voice with a British accent"), or style/emotion control in custom_voice mode.
Optional HTTPS URL to receive webhook notifications for job status changes (processing, completed, failed). Must be HTTPS. Max 2048 characters. A per-request URL is self-contained: it is delivered even when the account has no webhook configuration, or the account webhook is disabled. See the webhooks block at the top level of this document for the event payloads and the headers each delivery carries.
Optional per-request HMAC secret (min. 32 chars) used to sign the webhook callback. Overrides the account-default secret for this job only. If omitted, the account-default secret signs the callback; if no secret exists at all, the callback is still delivered but UNSIGNED (empty X-DeAPI-Signature header). Requires webhook_url to also be set.
{"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/speech","slug":"/api/v2/audio/speech","pageMetadata":{"title":"Text-to-Speech","openapi":"openapi-v2.json POST /api/v2/audio/speech","description":"Generate speech audio from text. Supports three TTS modes: custom_voice (default, preset speakers), voice_clone (clone from reference audio), voice_design (create voice from description).","href":"/api/v2/audio/speech"},"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: \"Generate speech audio from text. Supports three TTS modes: custom_voice (default, preset speakers), voice_clone (clone from reference audio), voice_design (create voice from description).\"\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`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Note,Tip}=_components;if(!Note)_missingMdxReference(`Note`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Generate natural-sounding speech from text. Supports preset voices, voice cloning, and voice design depending on the selected model. Returns a `,_jsx(_components.code,{children:`request_id`}),` for status polling.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Prerequisite:`}),` Consult the `,_jsx(_components.a,{href:`/api/v2/utilities/models`,children:`Model Selection`}),` endpoint to identify a valid model `,_jsx(_components.code,{children:`slug`}),` and the per-model voice catalog.`]})}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`OpenAI SDK users:`}),` This endpoint is also available via the OpenAI-compatible surface as `,_jsx(_components.code,{children:`POST /v1/audio/speech`}),` at `,_jsx(_components.code,{children:`https://oai.deapi.ai/v1`}),`. The six OpenAI voice aliases (`,_jsx(_components.code,{children:`alloy`}),`, `,_jsx(_components.code,{children:`echo`}),`, `,_jsx(_components.code,{children:`fable`}),`, `,_jsx(_components.code,{children:`onyx`}),`, `,_jsx(_components.code,{children:`nova`}),`, `,_jsx(_components.code,{children:`shimmer`}),`) are supported on `,_jsx(_components.code,{children:`Kokoro`}),`. See `,_jsx(_components.a,{href:`/openai-compatibility`,children:`OpenAI Compatibility`}),`.`]})})]})}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":"Text-to-Speech","openapi":"openapi-v2.json POST /api/v2/audio/speech","description":"Generate speech audio from text. Supports three TTS modes: custom_voice (default, preset speakers), voice_clone (clone from reference audio), voice_design (create voice from description).","href":"/api/v2/audio/speech"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Client API v2"],"summary":"Generate speech audio from text","description":"Generate speech audio from text. Supports three TTS modes: custom_voice (default, preset speakers), voice_clone (clone from reference audio), voice_design (create voice from description).","operationId":"generateSpeech","parameters":["72366d50-23db-4dea-b7a0-318db4e40160"],"requestBody":"6ce1f3d4-654e-4154-8856-0db7a64a3c09","responses":{"200":"67122d76-30e3-4ba2-8557-0a1ef97dc8e0","401":"b80389f2-91e3-44dd-93f8-33c8459c9cff","403":"33154eee-c9a7-4652-b01b-0130f6d65809","404":"480d8eab-20eb-4983-942b-b154fe85b668","422":"6e5beaa1-525f-4152-9677-c78828ede9a0","429":"677ea81e-b225-4b65-8105-942df2266431"},"security":["690635f9-498b-4d1b-91d0-582b18ffd183"],"method":"post","type":"path","servers":["e0e49a8e-d368-42c9-8377-07c35e662b8c"],"path":"/api/v2/audio/speech","baseUrlOptions":["https://api.deapi.ai"],"title":"Generate speech audio from text","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"72366d50-23db-4dea-b7a0-318db4e40160":{"name":"Accept","in":"header","required":true,"schema":{"type":"string","default":"application/json","enum":["application/json"],"isRequired":true,"uniqueKey":"","typeLabel":"enum\u003cstring>"}}},"requestBody":{"description":"Audio generation parameters. Supports three TTS modes: custom_voice (default, preset speakers), voice_clone (clone from reference audio), voice_design (create voice from description).","required":true,"content":{"multipart/form-data":{"schema":{"required":["text","model","lang","speed","format","sample_rate"],"properties":{"text":{"description":"Text to be converted to speech","type":"string","example":"A beautiful sunset over mountains","isRequired":true,"uniqueKey":"text","typeLabel":"string"},"model":{"description":"The model to use for speech generation. Available models can be retrieved via the GET /api/v2/models endpoint.","type":"string","example":"Kokoro","isRequired":true,"uniqueKey":"model","typeLabel":"string"},"lang":{"description":"Language to be used during audio generation","type":"string","example":"en-us","isRequired":true,"uniqueKey":"lang","typeLabel":"string"},"speed":{"description":"Generated audio speech speed","type":"number","example":1,"isRequired":true,"uniqueKey":"speed","typeLabel":"number"},"format":{"description":"Audio output format. Read `info.limits.output_formats` for your `model` from `GET /api/v2/models` and send one of the listed values; anything else is rejected with 422.","type":"string","example":"mp3","isRequired":true,"uniqueKey":"format","typeLabel":"string"},"sample_rate":{"description":"Sample rate of generated audio","type":"number","example":24000,"isRequired":true,"uniqueKey":"sample_rate","typeLabel":"number"},"mode":{"oneOf":[{"description":"TTS mode: custom_voice (default), voice_clone, or voice_design. Determines which fields are required.","type":"string","example":"custom_voice","enum":["custom_voice","voice_clone","voice_design",null],"uniqueKey":"mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"TTS mode: custom_voice (default), voice_clone, or voice_design. Determines which fields are required.","type":"null","example":"custom_voice","enum":["custom_voice","voice_clone","voice_design",null],"uniqueKey":"mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"mode","typeLabel":"enum\u003cstring> | null"},"voice":{"oneOf":[{"description":"Name of the voice to be used. Required for custom_voice mode.","type":"string","example":"af_sky","uniqueKey":"voice.oneOf.0","typeLabel":"string"},{"description":"Name of the voice to be used. Required for custom_voice mode.","type":"null","example":"af_sky","uniqueKey":"voice.oneOf.1","typeLabel":"null"}],"uniqueKey":"voice","typeLabel":"string | null"},"ref_audio":{"oneOf":[{"description":"Reference audio file for voice cloning. Supported formats: mp3, wav, flac, ogg, m4a. Max 10MB. Duration must be between 3-10 seconds (model-specific limits may apply). Required for voice_clone mode.","type":"string","format":"binary","uniqueKey":"ref_audio.oneOf.0","typeLabel":"file"},{"description":"Reference audio file for voice cloning. Supported formats: mp3, wav, flac, ogg, m4a. Max 10MB. Duration must be between 3-10 seconds (model-specific limits may apply). Required for voice_clone mode.","type":"null","format":"binary","uniqueKey":"ref_audio.oneOf.1","typeLabel":"null"}],"uniqueKey":"ref_audio","typeLabel":"file | null"},"ref_text":{"oneOf":[{"description":"Optional transcript of the reference audio for improved voice cloning accuracy.","type":"string","example":"Transcript of the reference audio clip","uniqueKey":"ref_text.oneOf.0","typeLabel":"string"},{"description":"Optional transcript of the reference audio for improved voice cloning accuracy.","type":"null","example":"Transcript of the reference audio clip","uniqueKey":"ref_text.oneOf.1","typeLabel":"null"}],"uniqueKey":"ref_text","typeLabel":"string | null"},"instruct":{"oneOf":[{"description":"Natural language voice description for voice_design mode (e.g. \"A warm female voice with a British accent\"), or style/emotion control in custom_voice mode.","type":"string","example":"Read this in a calm, measured tone","uniqueKey":"instruct.oneOf.0","typeLabel":"string"},{"description":"Natural language voice description for voice_design mode (e.g. \"A warm female voice with a British accent\"), or style/emotion control in custom_voice mode.","type":"null","example":"Read this in a calm, measured tone","uniqueKey":"instruct.oneOf.1","typeLabel":"null"}],"uniqueKey":"instruct","typeLabel":"string | null"},"webhook_url":{"oneOf":[{"description":"Optional HTTPS URL to receive webhook notifications for job status changes (processing, completed, failed). Must be HTTPS. Max 2048 characters. A per-request URL is self-contained: it is delivered even when the account has no webhook configuration, or the account webhook is disabled. See the `webhooks` block at the top level of this document for the event payloads and the headers each delivery carries.","type":"string","format":"uri","example":"https://your-server.com/webhooks/deapi","maxLength":2048,"uniqueKey":"webhook_url.oneOf.0","typeLabel":"string\u003curi>"},{"description":"Optional HTTPS URL to receive webhook notifications for job status changes (processing, completed, failed). Must be HTTPS. Max 2048 characters. A per-request URL is self-contained: it is delivered even when the account has no webhook configuration, or the account webhook is disabled. See the `webhooks` block at the top level of this document for the event payloads and the headers each delivery carries.","type":"null","format":"uri","example":"https://your-server.com/webhooks/deapi","maxLength":2048,"uniqueKey":"webhook_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"webhook_url","typeLabel":"string\u003curi> | null"},"webhook_secret":{"oneOf":[{"description":"Optional per-request HMAC secret (min. 32 chars) used to sign the webhook callback. Overrides the account-default secret for this job only. If omitted, the account-default secret signs the callback; if no secret exists at all, the callback is still delivered but UNSIGNED (empty X-DeAPI-Signature header). Requires `webhook_url` to also be set.","type":"string","example":"a1b2c3d4e5f60708091a2b3c4d5e6f7081920a1b2c3d4e5f60708091a2b3c4d5","maxLength":255,"minLength":32,"uniqueKey":"webhook_secret.oneOf.0","typeLabel":"string"},{"description":"Optional per-request HMAC secret (min. 32 chars) used to sign the webhook callback. Overrides the account-default secret for this job only. If omitted, the account-default secret signs the callback; if no secret exists at all, the callback is still delivered but UNSIGNED (empty X-DeAPI-Signature header). Requires `webhook_url` to also be set.","type":"null","example":"a1b2c3d4e5f60708091a2b3c4d5e6f7081920a1b2c3d4e5f60708091a2b3c4d5","maxLength":255,"minLength":32,"uniqueKey":"webhook_secret.oneOf.1","typeLabel":"null"}],"uniqueKey":"webhook_secret","typeLabel":"string | null"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"text":"A beautiful sunset over mountains","model":"Kokoro","lang":"en-us","speed":1,"format":"mp3","sample_rate":24000,"mode":"custom_voice","voice":"af_sky","ref_audio":"\u003cstring>","ref_text":"Transcript of the reference audio clip","instruct":"Read this in a calm, measured tone","webhook_url":"https://your-server.com/webhooks/deapi","webhook_secret":"a1b2c3d4e5f60708091a2b3c4d5e6f7081920a1b2c3d4e5f60708091a2b3c4d5"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"67122d76-30e3-4ba2-8557-0a1ef97dc8e0":{"description":"ID of the inference request.","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":{"required":["data"],"properties":{"data":{"description":"Information from success endpoint","required":["request_id"],"properties":{"request_id":{"description":"UUID identifying the created inference request. Pass it to `GET /api/v2/jobs/{job_request}` to poll status and collect the result.","type":"string","format":"uuid","example":"c08a339c-73e5-4d67-a4d5-231302fbff9a","isRequired":true,"uniqueKey":"data.request_id","typeLabel":"string\u003cuuid>"}},"type":"object","isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"request_id":"c08a339c-73e5-4d67-a4d5-231302fbff9a"}}}},"exampleType":"generated"}},"exampleType":"generated"},"b80389f2-91e3-44dd-93f8-33c8459c9cff":{"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"},"33154eee-c9a7-4652-b01b-0130f6d65809":{"description":"The account is suspended. Applies to every endpoint that spends credits — generation, transcription and prompt enhancement — and is returned before any validation runs, so a suspended account sees this rather than a 422 about the body. Price-estimate endpoints are not gated and keep working.","content":{"application/json":{"schema":{"properties":{"message":{"description":"Human-readable explanation. No `errors` object accompanies this response.","type":"string","example":"Client account is suspended. If you believe this is a mistake, contact us.","uniqueKey":"message","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"Client account is suspended. If you believe this is a mistake, contact us."}}},"exampleType":"generated"}},"exampleType":"generated"},"480d8eab-20eb-4983-942b-b154fe85b668":{"description":"Not found.","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"},"6e5beaa1-525f-4152-9677-c78828ede9a0":{"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"},"677ea81e-b225-4b65-8105-942df2266431":{"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":{"690635f9-498b-4d1b-91d0-582b18ffd183":{"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":"Text-to-Speech - deAPI","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-05-14T11:56:57.564Z","originalFileLocation":"api/v2/audio/speech.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=\"Generate speech audio from text. Supports three TTS modes: custom_voice (default, preset speakers), voice_clone (clone from reference audio), voice_design (create voice from description).\">\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=\"Text-to-Speech - deAPI\">\u003cmeta data-mint-head property=\"og:description\" content=\"Generate speech audio from text. Supports three TTS modes: custom_voice (default, preset speakers), voice_clone (clone from reference audio), voice_design (create voice from description).\">\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/speech\">\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=Text-to-Speech\u0026amp;description=Generate+speech+audio+from+text.+Supports+three+TTS+modes%3A+custom_voice+%28default%2C+preset+speakers%29%2C+voice_clone+%28clone+from+reference+audio%29%2C+voice_design+%28crea\u0026amp;theme=4c928ee8ac6977ca60ea2061\u0026amp;signature=5295ab3f78ea9956fadb0f4ceaf5b800291092c83a6750afaf8016d1e84ea78d\">\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=\"Text-to-Speech - deAPI\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Generate speech audio from text. Supports three TTS modes: custom_voice (default, preset speakers), voice_clone (clone from reference audio), voice_design (create voice from description).\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://deapi-f9ba3abb.mintlify.app/_mintlify/api/og/v2?division=Audio\u0026amp;title=Text-to-Speech\u0026amp;description=Generate+speech+audio+from+text.+Supports+three+TTS+modes%3A+custom_voice+%28default%2C+preset+speakers%29%2C+voice_clone+%28clone+from+reference+audio%29%2C+voice_design+%28crea\u0026amp;theme=4c928ee8ac6977ca60ea2061\u0026amp;signature=5295ab3f78ea9956fadb0f4ceaf5b800291092c83a6750afaf8016d1e84ea78d\">\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/speech\">\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/speech.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/speech#webpage\",\"url\":\"https://docs.deapi.ai/api/v2/audio/speech\",\"name\":\"Text-to-Speech\",\"description\":\"Generate speech audio from text. Supports three TTS modes: custom_voice (default, preset speakers), voice_clone (clone from reference audio), voice_design (create voice from description).\",\"dateModified\":\"2026-05-14T11:56:57.564Z\",\"isPartOf\":{\"@id\":\"https://docs.deapi.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.deapi.ai/api/v2/audio/speech#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.deapi.ai/api/v2/audio/speech#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"deAPI\",\"item\":\"https://docs.deapi.ai\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Text-to-Speech\",\"item\":\"https://docs.deapi.ai/api/v2/audio/speech\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.deapi.ai/api/v2/audio/speech#apireference\",\"headline\":\"Text-to-Speech\",\"name\":\"Text-to-Speech\",\"description\":\"Generate speech audio from text. Supports three TTS modes: custom_voice (default, preset speakers), voice_clone (clone from reference audio), voice_design (create voice from description).\",\"url\":\"https://docs.deapi.ai/api/v2/audio/speech\",\"mainEntityOfPage\":{\"@id\":\"https://docs.deapi.ai/api/v2/audio/speech#webpage\"},\"dateModified\":\"2026-05-14T11:56:57.564Z\",\"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","description":"Quote a video description before submitting it. Priced on the machine time the description takes — which grows with the length of the video and with the `preset` — at the model's hourly rate, except on TikTok, where the price is a fixed card by length (up to 1, 2, 3, 5 or 10 minutes; 10 minutes is the maximum) scaled ×0.75 / ×1 / ×1.5 by the `preset`. `include_metadata` adds the same flat surcharge as on transcription, on URL sources only. Provide the source as a URL, an upload, or a known `duration_seconds`.","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","description":"Estimate the price of a text-to-speech generation request. Either text or count_text must be provided.","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","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","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":"Text-to-Speech - 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"]}