curl --request POST \ --url https://api.nineninesix.ai/tts/bytes \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "model_id": "gepard-1.0", "transcript": "Today is a wonderful day to build something people love!", "voice": { "mode": "id", "id": "5148a2db-5f7c-480c-8f7c-39c6414a4d5d" }, "output_format": { "container": "wav", "encoding": "pcm_s16le", "sample_rate": 22050 }}'
"<string>"
TTS
Text-to-Speech (Bytes)
Generate audio from text and return the complete audio file in a single response — the body is the raw audio in the requested format, and it arrives once generation finishes. Use this when you want the whole clip at once; for real-time playback use /tts/sse or the WebSocket endpoint instead. The wav container is available on this endpoint only.
Billing is all-or-nothing: any failure is an HTTP error with no audio and isn’t charged. A successful response is charged, even if the client disconnects while downloading it.
POST
/
tts
/
bytes
curl --request POST \ --url https://api.nineninesix.ai/tts/bytes \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "model_id": "gepard-1.0", "transcript": "Today is a wonderful day to build something people love!", "voice": { "mode": "id", "id": "5148a2db-5f7c-480c-8f7c-39c6414a4d5d" }, "output_format": { "container": "wav", "encoding": "pcm_s16le", "sample_rate": 22050 }}'
The text to synthesize, at most 2,000 characters (about 1.5–2 minutes of speech). Characters are Unicode code points of the string as sent (after JSON decoding, no normalization), including leading and trailing whitespace and newlines — the same count used for billing at 1 credit per character. In JavaScript, count with [...text].length, not text.length. Over the limit → input_too_long (400), returned before any work starts and not billed; split longer text across requests. The request body is also capped at 64 KB (payload_too_large, 413).
Selects the voice to synthesize. Required — there is no default voice; a request that doesn't resolve to a voice returns an error (it is no longer silently substituted). The only accepted form is the nested object { "mode": "id", "id": "<voice-uuid>" }; a top-level voice_id is not supported.
Optional BCP-47 language tag (e.g. en-US). Accepted for compatibility but has no effect on synthesis.
Example:
"en-US"
Response
The audio file in the requested format. A wav container is returned as Content-Type: audio/wav (the playground renders an audio player); a raw container is returned as application/octet-stream (raw PCM has no header and won't play in a browser).
The response is of type file.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Nineninesix","colors":{"primary":"#ff4500","light":"#ff6a33","dark":"#ff4500"},"logo":{"light":"https://mintcdn.com/nineninesix-ai/ctaDmXyYszZGsjK3/logos/light.svg?fit=max\u0026auto=format\u0026n=ctaDmXyYszZGsjK3\u0026q=85\u0026s=b06fe111c50766a5178de8000fb1c2aa","dark":"https://mintcdn.com/nineninesix-ai/ctaDmXyYszZGsjK3/logos/dark.svg?fit=max\u0026auto=format\u0026n=ctaDmXyYszZGsjK3\u0026q=85\u0026s=6433a6ecfd432cb372d0e5568cbbada2"},"favicon":"https://mintcdn.com/nineninesix-ai/ctaDmXyYszZGsjK3/favicon.svg?fit=max\u0026auto=format\u0026n=ctaDmXyYszZGsjK3\u0026q=85\u0026s=5e2cef98284aa8fc76a15606ef128932","navbar":{"primary":{"type":"button","label":"Dashboard","href":"https://nineninesix.ai"}},"seo":{"indexing":"all"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"nineninesix-ai","hasAudioNarration":false,"actualSubdomain":"nineninesix-ai","customDomains":["docs.nineninesix.ai"],"gitSource":{"type":"github","owner":"ylankgz","repo":"nineninesix-mintlify","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae8805a72371a1bd6341089","collectionId":"34050b9a-0a71-4c0d-a106-27856f9191f3","liveDeploymentHistoryId":"6ae8805a72371a1bd6341089","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae8805a72371a1bd6341089","clientVersion":"0.0.4074","searchFilterCounts":[{"language":"default","tag":"Documentation","count":9},{"language":"default","tag":"API Reference","count":7},{"language":"default","tag":"Guides","count":5},{"language":"default","tag":"Voices","count":4},{"language":"default","tag":"TTS","count":3},{"language":"default","tag":"Getting Started","count":3},{"language":"default","tag":"Resources","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/tts/bytes","slug":"/api-reference/tts/bytes","pageMetadata":{"title":"Text-to-Speech (Bytes)","openapi":"api-reference/openapi.json POST /tts/bytes","description":"Generate audio from text and return the **complete audio file in a single response** — the body is the raw audio in the requested format, and it arrives once generation finishes. Use this when you want the whole clip at once; for real-time playback use `/tts/sse` or the WebSocket endpoint instead. The `wav` container is available on this endpoint only.\n\nBilling is all-or-nothing: any failure is an HTTP error with no audio and isn't charged. A successful response is charged, even if the client disconnects while downloading it.","href":"/api-reference/tts/bytes"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Generate audio from text and return the \", _jsx(_components.strong, {\n children: \"complete audio file in a single response\"\n }), \" — the body is the raw audio in the requested format, and it arrives once generation finishes. Use this when you want the whole clip at once; for real-time playback use \", _jsx(_components.code, {\n children: \"/tts/sse\"\n }), \" or the WebSocket endpoint instead. The \", _jsx(_components.code, {\n children: \"wav\"\n }), \" container is available on this endpoint only.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Billing is all-or-nothing: any failure is an HTTP error with no audio and isn’t charged. A successful response is charged, even if the client disconnects while downloading it.\"\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Text-to-Speech (Bytes)","openapi":"api-reference/openapi.json POST /tts/bytes","description":"Generate audio from text and return the **complete audio file in a single response** — the body is the raw audio in the requested format, and it arrives once generation finishes. Use this when you want the whole clip at once; for real-time playback use `/tts/sse` or the WebSocket endpoint instead. The `wav` container is available on this endpoint only.\n\nBilling is all-or-nothing: any failure is an HTTP error with no audio and isn't charged. A successful response is charged, even if the client disconnects while downloading it.","href":"/api-reference/tts/bytes"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"createSpeechBytes","summary":"Text-to-Speech (Bytes)","description":"Generate audio from text and return the **complete audio file in a single response** — the body is the raw audio in the requested format, and it arrives once generation finishes. Use this when you want the whole clip at once; for real-time playback use `/tts/sse` or the WebSocket endpoint instead. The `wav` container is available on this endpoint only.\n\nBilling is all-or-nothing: any failure is an HTTP error with no audio and isn't charged. A successful response is charged, even if the client disconnects while downloading it.","tags":["Speech"],"requestBody":"3a43c532-0193-49ab-946d-73313d2b6577","responses":{"200":"8dcd5b9e-9063-42d0-bac4-c20ef4241a18","400":"e502b4cc-b21f-4abd-9b97-2e504fbfefaf","401":"3e65daaa-d5b8-47c5-82eb-7923ab7f5ba8","402":"a9fae62f-9d9d-45ca-b630-fbd1c804d39f","404":"5d0a511a-c36a-4f86-82af-4db01f35f6ba","413":"05a9d7e6-ab37-4e8b-8a2e-6d60538845a9","429":"230aa7ee-d882-4234-ba3b-2780f9759f4d","500":"09cbc1dd-c21a-4076-97b3-c420ca90fb7f","502":"c1f1b41b-618e-4816-9ba5-9814dfc6427c","503":"a85b4739-a5e4-47fa-b2d9-4108e180ddfd"},"method":"post","type":"path","servers":["2e858738-79ac-42e6-9618-e8a800a74672"],"security":["f8250e61-58f5-4cd3-b1de-12676596357e","b745ac31-db8f-4bfd-a2ef-0a2a3ff93bcc"],"path":"/tts/bytes","baseUrlOptions":["https://api.nineninesix.ai"],"title":"Text-to-Speech (Bytes)","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["model_id","transcript","voice","output_format"],"properties":{"model_id":{"type":"string","enum":["gepard-1.0"],"description":"The TTS model. Currently `gepard-1.0`.","isRequired":true,"uniqueKey":"model_id","typeLabel":"enum\u003cstring>"},"transcript":{"type":"string","maxLength":2000,"description":"The text to synthesize, at most 2,000 characters (about 1.5–2 minutes of speech). Characters are Unicode code points of the string as sent (after JSON decoding, no normalization), including leading and trailing whitespace and newlines — the same count used for billing at 1 credit per character. In JavaScript, count with `[...text].length`, not `text.length`. Over the limit → `input_too_long` (400), returned before any work starts and not billed; split longer text across requests. The request body is also capped at 64 KB (`payload_too_large`, 413).","isRequired":true,"uniqueKey":"transcript","typeLabel":"string"},"voice":{"type":"object","description":"Selects the voice to synthesize. **Required** — there is no default voice; a request that doesn't resolve to a voice returns an error (it is no longer silently substituted). The only accepted form is the nested object `{ \"mode\": \"id\", \"id\": \"\u003cvoice-uuid>\" }`; a top-level `voice_id` is not supported.","required":["mode","id"],"properties":{"mode":{"type":"string","enum":["id"],"description":"Voice selection mode. Must be `id` — the only supported mode (anything else → `unknown_voice_mode`, 400).","isRequired":true,"uniqueKey":"voice.mode","typeLabel":"enum\u003cstring>"},"id":{"type":"string","description":"A non-empty saved voice id. Empty/missing → `missing_voice_id` (400); not found or owned by another org → `voice_not_found` (404).","example":"5148a2db-5f7c-480c-8f7c-39c6414a4d5d","isRequired":true,"uniqueKey":"voice.id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"voice","typeLabel":"object"},"output_format":{"type":"object","description":"Output audio format. Each field is validated against a fixed set; anything outside these values returns 400 with no silent fallback.","required":["container","encoding","sample_rate"],"properties":{"container":{"type":"string","enum":["raw","wav"],"description":"`wav` is available on `/tts/bytes` only; streaming endpoints are `raw`-only.","isRequired":true,"uniqueKey":"output_format.container","typeLabel":"enum\u003cstring>"},"encoding":{"type":"string","enum":["pcm_s16le","pcm_mulaw","pcm_alaw"],"description":"`pcm_mulaw`/`pcm_alaw` are 8-bit G.711 telephony codecs.","isRequired":true,"uniqueKey":"output_format.encoding","typeLabel":"enum\u003cstring>"},"sample_rate":{"type":"integer","enum":[8000,16000,22050,24000,44100,48000],"description":"The model is natively 48 kHz. `48000` skips resampling; lower rates are resampled on the server. G.711 (`pcm_mulaw`/`pcm_alaw`) isn't forced to 8 kHz, so send `8000` with those encodings.","isRequired":true,"uniqueKey":"output_format.sample_rate","typeLabel":"enum\u003cinteger>"}},"isRequired":true,"uniqueKey":"output_format","typeLabel":"object"},"language":{"type":"string","description":"Optional BCP-47 language tag (e.g. `en-US`). Accepted for compatibility but has no effect on synthesis.","example":"en-US","uniqueKey":"language","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"wav":{"title":"wav","value":{"model_id":"gepard-1.0","transcript":"Today is a wonderful day to build something people love!","voice":{"mode":"id","id":"5148a2db-5f7c-480c-8f7c-39c6414a4d5d"},"output_format":{"container":"wav","encoding":"pcm_s16le","sample_rate":22050}}},"telephony":{"title":"telephony","value":{"model_id":"gepard-1.0","transcript":"Thanks for calling. How can I help?","voice":{"mode":"id","id":"5148a2db-5f7c-480c-8f7c-39c6414a4d5d"},"output_format":{"container":"raw","encoding":"pcm_mulaw","sample_rate":8000}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"8dcd5b9e-9063-42d0-bac4-c20ef4241a18":{"description":"The audio file in the requested format. A `wav` container is returned as `Content-Type: audio/wav` (the playground renders an audio player); a `raw` container is returned as `application/octet-stream` (raw PCM has no header and won't play in a browser).","content":{"audio/wav":{"schema":{"type":"string","format":"binary","uniqueKey":"","typeLabel":"file"},"examples":{"Example":{"title":"Example","value":"\u003cstring>"}},"exampleType":"generated"},"application/octet-stream":{"schema":{"type":"string","format":"binary","uniqueKey":"","typeLabel":"file"},"examples":{"Example":{"title":"Example","value":"\u003cstring>"}},"exampleType":"generated"}},"exampleType":"generated"},"e502b4cc-b21f-4abd-9b97-2e504fbfefaf":{"description":"Malformed request. Common `error_code` values: `missing_voice` (voice missing, not an object, or empty), `missing_voice_id` (`voice.mode` is `id` but `voice.id` is missing/empty), `unknown_voice_mode` (`voice.mode` is not `id`), `missing_transcript` (transcript empty or whitespace-only), `input_too_long` (transcript over 2,000 characters), `unknown_model`, or an unsupported `output_format` (bad container, encoding, or sample rate).","content":{"application/json":{"schema":{"type":"object","description":"Standard HTTP error envelope for the TTS endpoints. `error_code` is the canonical machine-readable field; `error` mirrors it and `detail` is kept for backward-compatibility. (`/voices/clone` uses the shorter `{ error, message }` shape, or `{ detail }` for audio validation errors.)","properties":{"error":{"type":"string","description":"Machine-readable error code (mirrors `error_code`).","example":"voice_not_found","uniqueKey":"error","typeLabel":"string"},"error_code":{"type":"string","description":"Canonical machine-readable error code.","example":"voice_not_found","uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable description.","example":"voice not found","uniqueKey":"message","typeLabel":"string"},"detail":{"type":"string","description":"Backward-compatible detail string; usually mirrors `message`.","example":"voice not found","uniqueKey":"detail","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"missing_voice":{"title":"missing_voice","value":{"error":"missing_voice","error_code":"missing_voice","message":"voice is required","detail":"voice is required"}},"missing_voice_id":{"title":"missing_voice_id","value":{"error":"missing_voice_id","error_code":"missing_voice_id","message":"voice.id is required","detail":"voice.id is required"}},"unknown_voice_mode":{"title":"unknown_voice_mode","value":{"error":"unknown_voice_mode","error_code":"unknown_voice_mode","message":"unsupported voice.mode; only \"id\" is supported","detail":"unsupported voice.mode"}},"missing_transcript":{"title":"missing_transcript","value":{"error":"missing_transcript","error_code":"missing_transcript","message":"transcript is required","detail":"transcript is required"}},"input_too_long":{"title":"input_too_long","value":{"error":"input_too_long","error_code":"input_too_long","message":"transcript is 2345 characters; the maximum is 2000 per request — split longer text across requests or WebSocket messages","detail":"transcript is 2345 characters; the maximum is 2000 per request — split longer text across requests or WebSocket messages"}},"invalid_output_format":{"title":"invalid_output_format","value":{"error":"invalid_output_format","error_code":"invalid_output_format","message":"unsupported sample_rate","detail":"unsupported sample_rate"}}},"exampleType":"examples"}},"exampleType":"examples"},"3e65daaa-d5b8-47c5-82eb-7923ab7f5ba8":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"type":"object","description":"Standard HTTP error envelope for the TTS endpoints. `error_code` is the canonical machine-readable field; `error` mirrors it and `detail` is kept for backward-compatibility. (`/voices/clone` uses the shorter `{ error, message }` shape, or `{ detail }` for audio validation errors.)","properties":{"error":{"type":"string","description":"Machine-readable error code (mirrors `error_code`).","example":"voice_not_found","uniqueKey":"error","typeLabel":"string"},"error_code":{"type":"string","description":"Canonical machine-readable error code.","example":"voice_not_found","uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable description.","example":"voice not found","uniqueKey":"message","typeLabel":"string"},"detail":{"type":"string","description":"Backward-compatible detail string; usually mirrors `message`.","example":"voice not found","uniqueKey":"detail","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"unauthorized","message":"invalid API key"},"examples":{"Example":{"title":"Example","value":{"error":"unauthorized","message":"invalid API key"}}},"exampleType":"examples"}},"exampleType":"examples"},"a9fae62f-9d9d-45ca-b630-fbd1c804d39f":{"description":"The org's balance is zero or below. Billing is postpaid: new requests start only while the balance is positive, so the last request can take it slightly below zero.","content":{"application/json":{"schema":{"type":"object","description":"Standard HTTP error envelope for the TTS endpoints. `error_code` is the canonical machine-readable field; `error` mirrors it and `detail` is kept for backward-compatibility. (`/voices/clone` uses the shorter `{ error, message }` shape, or `{ detail }` for audio validation errors.)","properties":{"error":{"type":"string","description":"Machine-readable error code (mirrors `error_code`).","example":"voice_not_found","uniqueKey":"error","typeLabel":"string"},"error_code":{"type":"string","description":"Canonical machine-readable error code.","example":"voice_not_found","uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable description.","example":"voice not found","uniqueKey":"message","typeLabel":"string"},"detail":{"type":"string","description":"Backward-compatible detail string; usually mirrors `message`.","example":"voice not found","uniqueKey":"detail","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"payment_required","message":"insufficient credits"},"examples":{"Example":{"title":"Example","value":{"error":"payment_required","message":"insufficient credits"}}},"exampleType":"examples"}},"exampleType":"examples"},"5d0a511a-c36a-4f86-82af-4db01f35f6ba":{"description":"The `voice.id` doesn't exist or belongs to another organization.","content":{"application/json":{"schema":{"type":"object","description":"Standard HTTP error envelope for the TTS endpoints. `error_code` is the canonical machine-readable field; `error` mirrors it and `detail` is kept for backward-compatibility. (`/voices/clone` uses the shorter `{ error, message }` shape, or `{ detail }` for audio validation errors.)","properties":{"error":{"type":"string","description":"Machine-readable error code (mirrors `error_code`).","example":"voice_not_found","uniqueKey":"error","typeLabel":"string"},"error_code":{"type":"string","description":"Canonical machine-readable error code.","example":"voice_not_found","uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable description.","example":"voice not found","uniqueKey":"message","typeLabel":"string"},"detail":{"type":"string","description":"Backward-compatible detail string; usually mirrors `message`.","example":"voice not found","uniqueKey":"detail","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"voice_not_found","error_code":"voice_not_found","message":"voice not found","detail":"voice not found"},"examples":{"Example":{"title":"Example","value":{"error":"voice_not_found","error_code":"voice_not_found","message":"voice not found","detail":"voice not found"}}},"exampleType":"examples"}},"exampleType":"examples"},"05a9d7e6-ab37-4e8b-8a2e-6d60538845a9":{"description":"The request body exceeds the 64 KB (65536-byte) cap. Normal requests are nowhere near this — it's a safety limit. Uses the shorter `{ error, message }` shape.","content":{"application/json":{"schema":{"type":"object","description":"Standard HTTP error envelope for the TTS endpoints. `error_code` is the canonical machine-readable field; `error` mirrors it and `detail` is kept for backward-compatibility. (`/voices/clone` uses the shorter `{ error, message }` shape, or `{ detail }` for audio validation errors.)","properties":{"error":{"type":"string","description":"Machine-readable error code (mirrors `error_code`).","example":"voice_not_found","uniqueKey":"error","typeLabel":"string"},"error_code":{"type":"string","description":"Canonical machine-readable error code.","example":"voice_not_found","uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable description.","example":"voice not found","uniqueKey":"message","typeLabel":"string"},"detail":{"type":"string","description":"Backward-compatible detail string; usually mirrors `message`.","example":"voice not found","uniqueKey":"detail","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"payload_too_large","message":"request body exceeds 65536 bytes"},"examples":{"Example":{"title":"Example","value":{"error":"payload_too_large","message":"request body exceeds 65536 bytes"}}},"exampleType":"examples"}},"exampleType":"examples"},"230aa7ee-d882-4234-ba3b-2780f9759f4d":{"description":"`rate_limited` / `concurrent_limit`: your org's rate or concurrency limit was reached — honor the `Retry-After` header. `overloaded`: the synthesis servers are at capacity, separate from your tier's limits — retry with backoff (a `Retry-After` header isn't guaranteed). At capacity, a request waits up to about 5 seconds for a slot before `overloaded` is returned, so set client timeouts comfortably above that (10 s or more).","content":{"application/json":{"schema":{"type":"object","description":"Standard HTTP error envelope for the TTS endpoints. `error_code` is the canonical machine-readable field; `error` mirrors it and `detail` is kept for backward-compatibility. (`/voices/clone` uses the shorter `{ error, message }` shape, or `{ detail }` for audio validation errors.)","properties":{"error":{"type":"string","description":"Machine-readable error code (mirrors `error_code`).","example":"voice_not_found","uniqueKey":"error","typeLabel":"string"},"error_code":{"type":"string","description":"Canonical machine-readable error code.","example":"voice_not_found","uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable description.","example":"voice not found","uniqueKey":"message","typeLabel":"string"},"detail":{"type":"string","description":"Backward-compatible detail string; usually mirrors `message`.","example":"voice not found","uniqueKey":"detail","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"rate_limited":{"title":"rate_limited","value":{"error":"rate_limited","message":"requests/min limit exceeded for your tier"}},"overloaded":{"title":"overloaded","value":{"error":"overloaded","error_code":"overloaded","message":"too many active streams; retry later","detail":"too many active streams; retry later"}}},"exampleType":"examples"}},"exampleType":"examples"},"09cbc1dd-c21a-4076-97b3-c420ca90fb7f":{"description":"`generation_failed`: the engine failed unexpectedly, in a way that isn't one of the known cases (rare). Retry, as with `engine_error`. The body may be plain text (`Internal Server Error`) rather than the JSON envelope, so don't assume JSON on a 500. Not charged.","content":{"text/plain":{"schema":{"type":"string","uniqueKey":"","typeLabel":"string"},"example":"Internal Server Error","examples":{"Example":{"title":"Example","value":"Internal Server Error"}},"exampleType":"examples"},"application/json":{"schema":{"type":"object","description":"Standard HTTP error envelope for the TTS endpoints. `error_code` is the canonical machine-readable field; `error` mirrors it and `detail` is kept for backward-compatibility. (`/voices/clone` uses the shorter `{ error, message }` shape, or `{ detail }` for audio validation errors.)","properties":{"error":{"type":"string","description":"Machine-readable error code (mirrors `error_code`).","example":"voice_not_found","uniqueKey":"error","typeLabel":"string"},"error_code":{"type":"string","description":"Canonical machine-readable error code.","example":"voice_not_found","uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable description.","example":"voice not found","uniqueKey":"message","typeLabel":"string"},"detail":{"type":"string","description":"Backward-compatible detail string; usually mirrors `message`.","example":"voice not found","uniqueKey":"detail","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"generation_failed","error_code":"generation_failed","message":"…","detail":"…"},"examples":{"Example":{"title":"Example","value":{"error":"generation_failed","error_code":"generation_failed","message":"…","detail":"…"}}},"exampleType":"examples"}},"exampleType":"examples"},"c1f1b41b-618e-4816-9ba5-9814dfc6427c":{"description":"`engine_error`: generation failed — retry. Usually 502, but it can carry a 4xx status passed through from the engine, so key on `error_code`; its `message` varies. `upstream_unavailable`: the synthesis backend errored. Failed requests aren't charged.","content":{"application/json":{"schema":{"type":"object","description":"Standard HTTP error envelope for the TTS endpoints. `error_code` is the canonical machine-readable field; `error` mirrors it and `detail` is kept for backward-compatibility. (`/voices/clone` uses the shorter `{ error, message }` shape, or `{ detail }` for audio validation errors.)","properties":{"error":{"type":"string","description":"Machine-readable error code (mirrors `error_code`).","example":"voice_not_found","uniqueKey":"error","typeLabel":"string"},"error_code":{"type":"string","description":"Canonical machine-readable error code.","example":"voice_not_found","uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable description.","example":"voice not found","uniqueKey":"message","typeLabel":"string"},"detail":{"type":"string","description":"Backward-compatible detail string; usually mirrors `message`.","example":"voice not found","uniqueKey":"detail","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"engine_error":{"title":"engine_error","value":{"error":"engine_error","error_code":"engine_error","message":"…","detail":"…"}},"upstream_unavailable":{"title":"upstream_unavailable","value":{"error":"upstream_unavailable","message":"synthesis backend error"}}},"exampleType":"examples"}},"exampleType":"examples"},"a85b4739-a5e4-47fa-b2d9-4108e180ddfd":{"description":"`engine_unavailable`: the synthesis engine is temporarily unavailable. Retry shortly. The `message` is the underlying connection error and varies.","content":{"application/json":{"schema":{"type":"object","description":"Standard HTTP error envelope for the TTS endpoints. `error_code` is the canonical machine-readable field; `error` mirrors it and `detail` is kept for backward-compatibility. (`/voices/clone` uses the shorter `{ error, message }` shape, or `{ detail }` for audio validation errors.)","properties":{"error":{"type":"string","description":"Machine-readable error code (mirrors `error_code`).","example":"voice_not_found","uniqueKey":"error","typeLabel":"string"},"error_code":{"type":"string","description":"Canonical machine-readable error code.","example":"voice_not_found","uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable description.","example":"voice not found","uniqueKey":"message","typeLabel":"string"},"detail":{"type":"string","description":"Backward-compatible detail string; usually mirrors `message`.","example":"voice not found","uniqueKey":"detail","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"engine_unavailable","error_code":"engine_unavailable","message":"All connection attempts failed","detail":"All connection attempts failed"},"examples":{"Example":{"title":"Example","value":{"error":"engine_unavailable","error_code":"engine_unavailable","message":"All connection attempts failed","detail":"All connection attempts failed"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"f8250e61-58f5-4cd3-b1de-12676596357e":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Pass your API key as a Bearer token: `Authorization: Bearer sk_996_...`.","scopes":[],"schemeName":"bearerAuth"}},"b745ac31-db8f-4bfd-a2ef-0a2a3ff93bcc":{"apiKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Alternatively, pass your API key in the `X-API-Key` header.","scopes":[],"schemeName":"apiKeyHeader"}}},"servers":{"2e858738-79ac-42e6-9618-e8a800a74672":{"url":"https://api.nineninesix.ai","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Pass your API key as a Bearer token: `Authorization: Bearer sk_996_...`.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Pass your API key as a Bearer token: `Authorization: Bearer sk_996_...`.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"},{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Alternatively, pass your API key in the `X-API-Key` header.","scopes":[],"schemeName":"apiKeyHeader"},"schema":{"title":"X-API-Key","type":"string","description":"Alternatively, pass your API key in the `X-API-Key` header.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKeyHeader","name":"X-API-Key"}],"title":"apiKeyHeader"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"nineninesix-ai","siteName":"Nineninesix","title":"Text-to-Speech (Bytes) - Nineninesix","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-10T09:37:56.238Z","originalFileLocation":"api-reference/tts/bytes.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 audio from text and return the complete audio file in a single response — the body is the raw audio in the requested format, and it arrives once generation finishes. Use this when you want the whole clip at once; for real-time playback use /tts/sse or the WebSocket endpoint instead. The wav container is available on this endpoint only. Billing is all-or-nothing: any failure is an HTTP error with no audio and isn\u0026#x27;t charged. A successful response is charged, even if the client disconnects while downloading it.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Nineninesix\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/nineninesix-ai/zR9pbBAlL8oRbYJd/_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/nineninesix-ai/zR9pbBAlL8oRbYJd/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/nineninesix-ai/zR9pbBAlL8oRbYJd/_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/nineninesix-ai/zR9pbBAlL8oRbYJd/_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/nineninesix-ai/zR9pbBAlL8oRbYJd/_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/nineninesix-ai/zR9pbBAlL8oRbYJd/_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/nineninesix-ai/zR9pbBAlL8oRbYJd/_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/nineninesix-ai/zR9pbBAlL8oRbYJd/_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/nineninesix-ai/zR9pbBAlL8oRbYJd/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Text-to-Speech (Bytes) - Nineninesix\">\u003cmeta data-mint-head property=\"og:description\" content=\"Generate audio from text and return the complete audio file in a single response — the body is the raw audio in the requested format, and it arrives once generation finishes. Use this when you want the whole clip at once; for real-time playback use /tts/sse or the WebSocket endpoint instead. The wav container is available on this endpoint only. Billing is all-or-nothing: any failure is an HTTP error with no audio and isn\u0026#x27;t charged. A successful response is charged, even if the client disconnects while downloading it.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Nineninesix\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.nineninesix.ai/api-reference/tts/bytes\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://nineninesix-ai.mintlify.site/_mintlify/api/og/v2?division=TTS\u0026amp;title=Text-to-Speech+%28Bytes%29\u0026amp;description=Generate+audio+from+text+and+return+the+**complete+audio+file+in+a+single+response**+%E2%80%94+the+body+is+the+raw+audio+in+the+requested+format%2C+and+it+arrives+once+ge\u0026amp;theme=2f19723586ca474259cc27dd\u0026amp;signature=d67cd484dd8d07bf344d8c39c2ac7823705fe0ec2815e849534cb041997859f2\">\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 (Bytes) - Nineninesix\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Generate audio from text and return the complete audio file in a single response — the body is the raw audio in the requested format, and it arrives once generation finishes. Use this when you want the whole clip at once; for real-time playback use /tts/sse or the WebSocket endpoint instead. The wav container is available on this endpoint only. Billing is all-or-nothing: any failure is an HTTP error with no audio and isn\u0026#x27;t charged. A successful response is charged, even if the client disconnects while downloading it.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://nineninesix-ai.mintlify.site/_mintlify/api/og/v2?division=TTS\u0026amp;title=Text-to-Speech+%28Bytes%29\u0026amp;description=Generate+audio+from+text+and+return+the+**complete+audio+file+in+a+single+response**+%E2%80%94+the+body+is+the+raw+audio+in+the+requested+format%2C+and+it+arrives+once+ge\u0026amp;theme=2f19723586ca474259cc27dd\u0026amp;signature=d67cd484dd8d07bf344d8c39c2ac7823705fe0ec2815e849534cb041997859f2\">\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/nineninesix-ai/zR9pbBAlL8oRbYJd/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Nineninesix\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#ff4500\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.nineninesix.ai/api-reference/tts/bytes\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/tts/bytes.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.nineninesix.ai/#organization\",\"name\":\"Nineninesix\",\"url\":\"https://docs.nineninesix.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/nineninesix-ai/ctaDmXyYszZGsjK3/logos/light.svg?fit=max\u0026auto=format\u0026n=ctaDmXyYszZGsjK3\u0026q=85\u0026s=b06fe111c50766a5178de8000fb1c2aa\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.nineninesix.ai#website\",\"name\":\"Nineninesix\",\"url\":\"https://docs.nineninesix.ai\",\"publisher\":{\"@id\":\"https://docs.nineninesix.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.nineninesix.ai/api-reference/tts/bytes#webpage\",\"url\":\"https://docs.nineninesix.ai/api-reference/tts/bytes\",\"name\":\"Text-to-Speech (Bytes)\",\"description\":\"Generate audio from text and return the complete audio file in a single response — the body is the raw audio in the requested format, and it arrives once generation finishes. Use this when you want the whole clip at once; for real-time playback use /tts/sse or the WebSocket endpoint instead. The wav container is available on this endpoint only. Billing is all-or-nothing: any failure is an HTTP error with no audio and isn't charged. A successful response is charged, even if the client disconnects while downloading it.\",\"dateModified\":\"2026-10-10T09:37:56.238Z\",\"isPartOf\":{\"@id\":\"https://docs.nineninesix.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.nineninesix.ai/api-reference/tts/bytes#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.nineninesix.ai/api-reference/tts/bytes#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Nineninesix\",\"item\":\"https://docs.nineninesix.ai\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Text-to-Speech (Bytes)\",\"item\":\"https://docs.nineninesix.ai/api-reference/tts/bytes\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.nineninesix.ai/api-reference/tts/bytes#apireference\",\"headline\":\"Text-to-Speech (Bytes)\",\"name\":\"Text-to-Speech (Bytes)\",\"description\":\"Generate audio from text and return the complete audio file in a single response — the body is the raw audio in the requested format, and it arrives once generation finishes. Use this when you want the whole clip at once; for real-time playback use /tts/sse or the WebSocket endpoint instead. The wav container is available on this endpoint only. Billing is all-or-nothing: any failure is an HTTP error with no audio and isn't charged. A successful response is charged, even if the client disconnects while downloading it.\",\"url\":\"https://docs.nineninesix.ai/api-reference/tts/bytes\",\"mainEntityOfPage\":{\"@id\":\"https://docs.nineninesix.ai/api-reference/tts/bytes#webpage\"},\"dateModified\":\"2026-10-10T09:37:56.238Z\",\"publisher\":{\"@id\":\"https://docs.nineninesix.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.nineninesix.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Nineninesix\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Nineninesix","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API Reference","groups":[{"group":"TTS","pages":[{"title":"Text-to-Speech (Bytes)","openapi":"api-reference/openapi.json POST /tts/bytes","href":"/api-reference/tts/bytes"},{"title":"Text-to-Speech (SSE)","openapi":"api-reference/openapi.json POST /tts/sse","description":"Stream audio over Server-Sent Events for low time-to-first-audio. Identical body to `/tts/bytes`, except `output_format.container` must be `raw` (SSE cannot wrap a WAV/RIFF header). Each event's `data` is a JSON object: `chunk` events carry base64-encoded raw PCM; a final `done` event closes the stream.","href":"/api-reference/tts/sse"},{"title":"Text-to-Speech (WebSocket)","asyncapi":"api-reference/asyncapi.yaml tts","href":"/api-reference/tts/websocket"}]},{"group":"Voices","pages":[{"title":"List voices","openapi":"api-reference/openapi.json GET /voices","href":"/api-reference/voices/list"},{"title":"Get a voice","openapi":"api-reference/openapi.json GET /voices/{id}","href":"/api-reference/voices/get"},{"title":"Delete a voice","openapi":"api-reference/openapi.json DELETE /voices/{id}","href":"/api-reference/voices/delete"},{"title":"Clone a voice","openapi":"api-reference/openapi.json POST /voices/clone","href":"/api-reference/voices/clone"}]}]}]},"basePath":"","title":"Text-to-Speech (Bytes) - Nineninesix","buildId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","deploymentId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Myd8dsju.js","utils-C2HkQgW0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-8rSppmTv.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B6MjiCFm.js","snippetPresets-DwrSAONL.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-1-a5UQKQ.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C541m7wZ.js","shallow-CWELCZ77.js","getApiPlaygroundDisplay-CTo5Zn03.js","CodeSnippet-D--dzvnl.js","CodeSnippets-DM3cXEDh.js","Page-CxAy5y67.js","getPastedJson-C-VECgcL.js","icon-BPq2-Mg3.js","MethodPill-D9J5cUHd.js","DuplicateIcon-BqHaxUnD.js","createIcon-CIbcZHp9.js","DynamicMarkdown-BKiHAm_d.js","SectionHeading-DstQXt3H.js","axios-vUo_bRtp.js","Markdown-CpxgzsKA.js","clsx-C5EfhVm0.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CJ9Oly2E.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Mk6P3qvh.js"]}