This BETA endpoint transcribes one audio file per request. Send the audio as
multipart/form-data (a file upload) or application/msgpack. Base64-encoded
audio in a JSON body is not supported.
Send POST https://api.fish.audio/v1/asr with Authorization: Bearer <API_KEY> and a model HTTP header that selects the model. The request is synchronous: the response arrives when the whole file has been transcribed.
Header value
Use it for
transcribe-1-pro
Recommended. Recordings up to 60 minutes, including multi-speaker conversations: speaker markers and speaker turns, with emotion and vocal-event cues preserved.
transcribe-1
General transcription of short recordings. Used when the model header is missing or not an exact match.
Send model: transcribe-1-pro with every request, written exactly, in lowercase. If the header is missing, or its value is not an exact match (for example Transcribe-1-Pro or transcribe-1pro), the request is served and billed as transcribe-1, and no error is returned. If you expected transcribe-1-pro but the transcript has no speaker markers and you did not send diarize=false, check the header. This applies to the API playground on this page too: set its model header to transcribe-1-pro.The model belongs in the header for both multipart and MessagePack requests; a model field in the request body is ignored. See Limits for recording length and request size.To link the request to your own distributed trace, also send a W3C traceparent header. See Tracing & Performance Analysis.
Multipart and MessagePack bodies use the same field names. Multipart values are text; MessagePack values are typed.
Field
Required
Default
Description
audio
Yes
—
Exactly one audio file per request: a file upload for multipart, or binary bytes for MessagePack. The format is detected from the file contents, not the file name. See Supported audio formats.
language
No
Unset
Optional language hint, as a lowercase ISO 639-1 code such as en, zh, or ja. The language is detected automatically either way. An empty multipart value counts as unset. See Language.
ignore_timestamps
No
true
Default true (no timestamps). Set to false to get word-level segments and speaker_turns. Timestamps add processing time.
tag_audio_events
No
true
true: bracketed emotion and vocal-event cues such as [laughter] or [高兴] stay in text and in speaker_turns. false: the cues are removed. Timestamps, duration, and billing do not change.
diarize
No
auto
auto or true: return speaker_turns when timestamps are requested. false: omit speaker_turns and the speaker markers in text; the rest of the transcript does not change.
num_speakers
No
Unset
The expected number of speakers, an integer of 1 or more. Cannot be combined with min_speakers or max_speakers.
min_speakers, max_speakers
No
Unset
Lower and upper bounds on the number of speakers, integers of 1 or more. min_speakers must not exceed max_speakers.
In multipart forms, send true or false for ignore_timestamps. Any value other than true (case-insensitive), including 1 or an empty value, is read as false and turns timestamps on. In MessagePack, send a boolean; a string or nil returns 400.Speaker-count hints are applied on a best-effort basis: they guide speaker identification on longer recordings and may have no effect on short ones. They cannot be sent with diarize=false.tag_audio_events, diarize, and the speaker-count hints are validated strictly:
In multipart forms, tag_audio_events takes true or false, and diarize takes auto, true, or false, in any letter case. Speaker counts take digits only. Send each field at most once.
In MessagePack, send tag_audio_events as a boolean, diarize as a boolean or one of the lowercase strings auto, true, or false, and speaker counts as integers, not floats or strings. nil means the default.
Any other value, a repeated multipart field, or a conflicting combination returns 400 with code invalid_parameter.
If you use transcribe-1: send audio, language, and ignore_timestamps. The other fields apply to transcribe-1-pro; send them only with model: transcribe-1-pro.
This request returns word-level segments and speaker_turns. For a two-person interview, you can add a speaker-count hint, and remove emotion and vocal-event cues from the transcript:
Let your HTTP client set the multipart Content-Type and boundary. For MessagePack, set Content-Type: application/msgpack and encode audio as binary bytes. See the Speech to Text guide for an example.
A successful response (HTTP 200) is a JSON object:
Field
Description
text
The full transcript, with inline speaker markers such as <|speaker:0|> (none with diarize=false) and, unless tag_audio_events=false, bracketed emotion and vocal-event cues such as [高兴] (happy) or [laughter]. See Multi-speaker response format.
duration
Length of the audio in seconds, including silence.
segments
Word-level timestamps: an array of { "text", "start", "end" }, with times in seconds. Empty ([]) when ignore_timestamps=true (the default), when no speech was found, or when timing is temporarily unavailable. See Segments.
speaker_turns
The transcript as timed speaker turns. Returned when ignore_timestamps=false and diarize is not false; otherwise absent. See Speaker turns.
language
The detected language’s English name, such as English or Chinese. Omitted when it cannot be determined. Intended for display.
language_code
Two-letter ISO 639-1 code for the language, such as en. Omitted when unknown. If the language cannot be determined and you sent a language hint, this reports your hint. See Language.
request_id
A unique ID for this request, also present in transcribe-1-pro error bodies and in the x-request-id response header. Platform and network-edge errors do not carry it. Include it when you contact support.
A field that is not returned is absent from the JSON, never null. Do not depend on the order of keys in the JSON.If you use transcribe-1: rely on text, duration, segments, language, and language_code. Speaker markers, speaker_turns, and request_id are transcribe-1-pro features.
Both SDKs select transcribe-1-pro through the model header. In Python,
pass
request_options=RequestOptions(additional_headers={"model": "transcribe-1-pro"})
to asr.transcribe(). In JavaScript, pass
{ headers: { model: "transcribe-1-pro" } } as the second argument to
speechToText.convert(). The Python SDK currently returns only text,
duration, and segments, and neither SDK can send tag_audio_events,
diarize, or the speaker-count hints. To use them, call the API directly, as
in the examples above. The JavaScript SDK returns the whole response body,
but its STTResponse type declares only text, duration, and segments.
transcribe-1-pro marks speaker changes inside the text string with <|speaker:N|> markers. The label N identifies the speaker for the text that follows, up to the next marker. A repeated label means that speaker is speaking again.
Markers usually have a space on each side (<|speaker:0|> 你好。 <|speaker:1|> ...). Do not depend on exact spacing.
Any text before the first marker belongs to the first turn.
Unless you send diarize=false, which removes the markers, a transcript with no marker comes from a single speaker; treat it as speaker 0.
Labels identify speakers within one response only. They are not names, and the same label in two requests is not the same person. Send a whole conversation as one file.
This illustrative response has two speakers and three turns. With ignore_timestamps=true (the default), timestamps are skipped and speaker_turns is absent:
Read this as speaker 0 saying 你好。, speaker 1 saying [高兴]很开心认识你。, and speaker 0 saying 我也是。. The [高兴] cue describes the delivery of speaker 1’s speech. There is no separate emotion field; the cues are part of the text.
With ignore_timestamps=false, transcribe-1-pro also returns the turns as a structured speaker_turns array, unless you send diarize=false. When you request timestamps, prefer speaker_turns over parsing text.
speaker_turns lists the turns in the order they occur, and is [] when no speech was found. Each turn is { "speaker": "speaker:N", "text": "...", "start": <seconds>, "end": <seconds> }.
speaker is the string speaker:N, where N matches the <|speaker:N|> marker in text. Like the markers, labels identify speakers within one response only.
text is that turn’s speech without speaker markers. It keeps emotion and vocal-event cues unless tag_audio_events=false.
start and end come from the word timestamps. If word timing is unavailable (segments is empty), turn times are approximate and can cover the whole recording.
Consecutive turns can have the same speaker. Do not assume turns are contiguous or non-overlapping.
This illustrative response is the same conversation with ignore_timestamps=false:
A segment is usually one word; in Chinese and Japanese it is usually one character, or a few. Segment text has no punctuation and no speaker markers or cues, and can be normalized (for example 35 for 3.5), so it does not always match text character for character. A segment can have start equal to end. Segments are not speaker turns and carry no speaker ID.
language is optional. The language is detected automatically whether or not you send a hint, and a hint does not force the transcript into that language.
Use a lowercase ISO 639-1 code such as en, zh, or ja. Other forms, such as en-US or English, may be rejected with 400.
If the language cannot be determined (for example, very short audio), language_code reports your hint, which is not checked against the audio, and language may be absent.
Responses report one language. For recordings that switch languages, language and language_code do not list every language spoken.
Audio length: up to 60 minutes per request. Longer audio returns 400 with code audio_too_long.
Request size: for long recordings, send compressed audio such as MP3, Opus, or AAC. An hour of 128 kbps MP3 is about 55 MiB. A request that is too large returns 413.
One conversation per request: send the whole recording in one request. Timestamps and speaker labels then cover the whole recording. Do not split a conversation, because labels are consistent only within one response.
If you use transcribe-1: it is designed for short recordings; for recordings longer than a few minutes, use transcribe-1-pro. It accepts up to 50 MiB per request; keep MP3 and Opus files under 25 MiB. A request that exceeds the size limit returns 413 or 400. A long request can fail with 503 if it exceeds the processing-time limit. Retry, and if it keeps failing, use transcribe-1-pro or split the audio.
Processing time grows with the length of the recording. Long transcribe-1-pro recordings can take several minutes.
Set your HTTP client’s timeout accordingly. The official SDKs’ default timeout can be too short for long recordings, and many HTTP libraries default to even less (httpx defaults to 5 seconds). For long recordings, use a generous timeout, for example 15 minutes: httpx.Timeout(900.0, connect=10.0) with httpx, RequestOptions(timeout=900) with the Python SDK, or { timeoutInSeconds: 900 } with the JavaScript SDK.
In Node.js, the built-in fetch, which the JavaScript SDK uses, also stops waiting for a response after 5 minutes, even if you set a longer timeout. To wait longer, call setGlobalDispatcher(new Agent({ headersTimeout: 900_000, bodyTimeout: 900_000 })) from the undici package once at startup. See Processing time and timeouts.
If a long request fails with a 5xx error or the connection drops, retry it.
Each request holds one of your account’s concurrent request slots until its response is returned.
transcribe-1-pro accepts WAV, MP3, AAC (including M4A/MP4), FLAC, Ogg (Opus or Vorbis), WebM/Matroska, and MOV, including browser recordings. For a video file, it uses the first audio track. Send the original file bytes; no conversion is needed.
Not supported: AIFF, CAF, WMA, AMR, AC-3, and raw (headerless) PCM. These return 400.
If you use transcribe-1: it accepts WAV, MP3, AAC (including M4A/MP4), FLAC, and Ogg (Opus or Vorbis). Browser WebM recordings (for example, from MediaRecorder) may not be accepted; convert them to Ogg/Opus, MP3, or WAV first.
transcribe-1-pro errors are JSON with status, message, code, and request_id. Branch on code, not on message.
Platform errors, such as authentication, credit, and concurrency errors, are returned before the request reaches a model. They are JSON with exactly status and message.
Errors from the network edge in front of the API, such as some 413 and 5xx responses, may not have a JSON body. Handle them by HTTP status.
This illustrative transcribe-1-pro error body shows the shape:
{ "status": 400, "message": "A human-readable description of the problem.", "code": "invalid_parameter", "request_id": "5f0c7e2a-9b1d-4c3e-8f6a-2d4b7c9e1a03"}
Status
code
Meaning
Retry?
400
invalid_request
Malformed request: the body could not be parsed, audio is missing, or more than one audio was sent.
No
400
invalid_parameter
A parameter has a value it does not accept, or parameters conflict.
No
400
invalid_audio
The audio could not be decoded, or the format is not supported.
No
400
audio_too_long
The audio is longer than 60 minutes.
No
400
audio_too_short
The audio is too short to transcribe (under about 0.08 seconds).
No
400
—
The request body could not be read.
No
401
—
Missing or invalid API key.
No
402
—
Insufficient API credit.
No
413
request_too_large
The request is too large. It may come from the network edge without a JSON body.
No
415
unsupported_media_type
Unsupported Content-Type.
No
429
— (rarely upstream_rejected)
Usually your account is at its concurrency limit. No Retry-After header is sent.
Yes, with backoff
Other 4xx (not 429)
upstream_rejected
Rare: the request was rejected during transcription.
No
500
internal_error
Internal error.
Yes, with backoff
502
—
The service could not be reached.
Yes, with backoff
503
upstream_unavailable
The transcription service is temporarily unavailable.
Yes, with backoff
503
upstream_timeout
Processing took too long.
Yes, with backoff
503
excessive_repetition
The transcription produced unusable repeated output.
Yes, with backoff
503
diarization_failed
Speaker identification failed for this recording.
Yes, with backoff
504
—
Timed out connecting to the service.
Yes, with backoff
A dash means the error has no code; a 503 without a code also means the service is temporarily unavailable.
New code values may be added; handle unknown codes by HTTP status.
Retry 429 and 5xx responses with exponential backoff. Do not retry other 4xx responses; change the request first.
Requests that return an error response are not billed.
With the Python SDK, the raw error body is in the exception’s body attribute; parse it with json.loads to read code and request_id.
If you use transcribe-1: its errors are JSON with status and message. Rely only on these two fields and on the HTTP status.See Errors for retry and SDK exception examples.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Fish Audio","description":"Documentation for Fish Audio APIs, SDKs, models, voice cloning, real-time streaming, and self-hosting.","colors":{"primary":"#0e0e0e","light":"#9b90e8","dark":"#09090b"},"logo":{"light":"https://mintcdn.com/hanabiaiinc/amYp9Dj31LtlHliX/logo/light.png?fit=max\u0026auto=format\u0026n=amYp9Dj31LtlHliX\u0026q=85\u0026s=305973cd6a8d11dbf36d1ec682ee845e","dark":"https://mintcdn.com/hanabiaiinc/amYp9Dj31LtlHliX/logo/dark.png?fit=max\u0026auto=format\u0026n=amYp9Dj31LtlHliX\u0026q=85\u0026s=b79bd889db9ac1aae939834596e8a22f"},"favicon":"https://mintcdn.com/hanabiaiinc/-WxHANLOAmlTUwdM/favicon.svg?fit=max\u0026auto=format\u0026n=-WxHANLOAmlTUwdM\u0026q=85\u0026s=dc65d9f44bda0f5b8277c48dd9c979c3","navbar":{"links":[{"href":"https://discord.gg/dF9Db2Tt3Y","label":"Community"},{"href":"mailto:support@fish.audio","label":"Support"}],"primary":{"type":"button","label":"Sign Up","href":"https://fish.audio/app/developers/get-started/?utm_source=docs\u0026utm_medium=navbar\u0026utm_content=sign-up"}},"footer":{"socials":{"website":"https://fish.audio","github":"https://github.com/fishaudio","x":"https://x.com/fishaudio","linkedin":"https://www.linkedin.com/company/fish-audio","discord":"https://discord.gg/dF9Db2Tt3Y"},"links":[{"header":"About","items":[{"label":"Research","href":"https://openaudio.com/"},{"label":"Careers","href":"mailto:hr@fish.audio"},{"label":"Blog","href":"https://fish.audio/blog"}]},{"header":"Resources","items":[{"label":"API Status","href":"https://status.fish.audio"},{"label":"Open Source","href":"https://github.com/fishaudio"},{"label":"Changelog","href":"https://docs.fish.audio/developer-guide/getting-started/changelog"}]},{"header":"Legal","items":[{"label":"Privacy Policy","href":"https://fish.audio/privacy"},{"label":"Terms of Service","href":"https://fish.audio/terms"},{"label":"Report Abuse","href":"mailto:support@fish.audio?subject=%5BReport+Abuse%5D+MODEL+NAME\u0026amp;body=Please+provide+a+detailed+description+of+the+abuse+you+are+reporting."}]}]},"fonts":{"family":"Onest"},"integrations":{"amplitude":{"apiKey":"39daf30712f00da6ea5283bc21e7084e"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"interaction":{"drilldown":true},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hanabiaiinc","hasAudioNarration":false,"actualSubdomain":"hanabiaiinc","customDomains":["docs.fish.audio"],"gitSource":{"type":"github","owner":"fishaudio","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae30a0885efe200b5623c50","collectionId":"95bc8719-b068-4451-b8f2-e4bc3675a742","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae30a0885efe200b5623c50"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae30e31b64defc9634e9dfe","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"API Reference","count":78},{"language":"default","tag":"Agents API","count":49},{"language":"default","tag":"Agents","count":46},{"language":"default","tag":"Resources","count":40},{"language":"default","tag":"Overview","count":31},{"language":"default","tag":"REST API","count":14},{"language":"default","tag":"Core Features","count":14},{"language":"default","tag":"Tests","count":13},{"language":"default","tag":"Cookbook","count":12},{"language":"default","tag":"Build","count":10}]},"assistantConfig":{"enableAskAiButton":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@fish.audio","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"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":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"custom.css","content":"*{scrollbar-width:thin;scrollbar-color:rgba(120,120,120,.4) transparent}::-webkit-scrollbar{width:6px;height:6px;background:0 0!important}::-webkit-scrollbar-thumb{background:rgba(120,120,120,.5);border-radius:999px;opacity:0;transition:opacity .2s ease}:active::-webkit-scrollbar-thumb,:hover::-webkit-scrollbar-thumb{opacity:1}img[src*=\"/images/\"]{background:0 0!important}.prompt-card{display:grid;cursor:pointer;outline:0}.prompt-card .card{transition:border-color .15s ease}.prompt-card:focus-visible .card,.prompt-card:hover .card{border-color:rgb(var(--primary))!important}.dark .prompt-card:focus-visible .card,.dark .prompt-card:hover .card{border-color:rgb(var(--primary-light))!important}.prompt-card-hint{position:absolute;top:1rem;right:1rem;padding:.3rem .6rem;border-radius:9999px;font-size:.75rem;line-height:1;color:rgb(var(--gray-500));background:rgba(120,120,120,.12);opacity:0;transition:opacity .15s ease;pointer-events:none}.prompt-card:focus-visible .prompt-card-hint,.prompt-card:hover .prompt-card-hint,.prompt-card[data-state=copied] .prompt-card-hint,.prompt-card[data-state=failed] .prompt-card-hint{opacity:1}.prompt-card[data-state=copied] .prompt-card-hint{color:rgb(var(--primary));background:rgb(var(--primary)/.12)}.dark .prompt-card[data-state=copied] .prompt-card-hint{color:rgb(var(--primary-light));background:rgb(var(--primary-light)/.16)}"}],"page":{"pagePath":"api-reference/endpoint/openapi-v1/speech-to-text","slug":"/api-reference/endpoint/openapi-v1/speech-to-text","pageMetadata":{"openapi":"post /v1/asr","title":"Speech to Text","description":"Transcribe audio with transcribe-1-pro, the recommended speech-to-text model: request and response fields, speaker turns, limits, formats, and errors","icon":"microphone","iconType":"solid","href":"/api-reference/endpoint/openapi-v1/speech-to-text"},"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: \"Transcribe audio with transcribe-1-pro, the recommended speech-to-text model: request and response fields, speaker turns, limits, formats, and errors\"\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`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Warning,{children:_jsxs(_components.p,{children:[`This BETA endpoint transcribes one audio file per request. Send the audio as\n`,_jsx(_components.code,{children:`multipart/form-data`}),` (a file upload) or `,_jsx(_components.code,{children:`application/msgpack`}),`. Base64-encoded\naudio in a JSON body is not supported.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`select-a-model`,children:`Select a model`}),`\n`,_jsxs(_components.p,{children:[`Send `,_jsx(_components.code,{children:`POST https://api.fish.audio/v1/asr`}),` with `,_jsx(_components.code,{children:`Authorization: Bearer \u003cAPI_KEY>`}),` and a `,_jsxs(_components.strong,{children:[_jsx(_components.code,{children:`model`}),` HTTP header`]}),` that selects the model. The request is synchronous: the response arrives when the whole file has been transcribed.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Header value`}),_jsx(_components.th,{children:`Use it for`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`transcribe-1-pro`})}),_jsx(_components.td,{children:`Recommended. Recordings up to 60 minutes, including multi-speaker conversations: speaker markers and speaker turns, with emotion and vocal-event cues preserved.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`transcribe-1`})}),_jsxs(_components.td,{children:[`General transcription of short recordings. Used when the `,_jsx(_components.code,{children:`model`}),` header is missing or not an exact match.`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Send `,_jsx(_components.code,{children:`model: transcribe-1-pro`}),` with every request, written exactly, in lowercase. If the header is missing, or its value is not an exact match (for example `,_jsx(_components.code,{children:`Transcribe-1-Pro`}),` or `,_jsx(_components.code,{children:`transcribe-1pro`}),`), the request is served and billed as `,_jsx(_components.code,{children:`transcribe-1`}),`, and no error is returned. If you expected `,_jsx(_components.code,{children:`transcribe-1-pro`}),` but the transcript has no speaker markers and you did not send `,_jsx(_components.code,{children:`diarize=false`}),`, check the header. This applies to the API playground on this page too: set its `,_jsx(_components.code,{children:`model`}),` header to `,_jsx(_components.code,{children:`transcribe-1-pro`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`The model belongs in the header for both multipart and MessagePack requests; a `,_jsx(_components.code,{children:`model`}),` field in the request body is ignored. See `,_jsx(_components.a,{href:`#limits`,children:`Limits`}),` for recording length and request size.`]}),`\n`,_jsxs(_components.p,{children:[`To link the request to your own distributed trace, also send a W3C `,_jsx(_components.code,{children:`traceparent`}),` header. See `,_jsx(_components.a,{href:`/api-reference/observability`,children:`Tracing \u0026 Performance Analysis`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`request-fields`,children:`Request fields`}),`\n`,_jsx(_components.p,{children:`Multipart and MessagePack bodies use the same field names. Multipart values are text; MessagePack values are typed.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Required`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`audio`})}),_jsx(_components.td,{children:`Yes`}),_jsx(_components.td,{children:`—`}),_jsxs(_components.td,{children:[`Exactly one audio file per request: a file upload for multipart, or binary bytes for MessagePack. The format is detected from the file contents, not the file name. See `,_jsx(_components.a,{href:`#supported-audio-formats`,children:`Supported audio formats`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`language`})}),_jsx(_components.td,{children:`No`}),_jsx(_components.td,{children:`Unset`}),_jsxs(_components.td,{children:[`Optional language hint, as a lowercase ISO 639-1 code such as `,_jsx(_components.code,{children:`en`}),`, `,_jsx(_components.code,{children:`zh`}),`, or `,_jsx(_components.code,{children:`ja`}),`. The language is detected automatically either way. An empty multipart value counts as unset. See `,_jsx(_components.a,{href:`#language`,children:`Language`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ignore_timestamps`})}),_jsx(_components.td,{children:`No`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`true`})}),_jsxs(_components.td,{children:[`Default `,_jsx(_components.code,{children:`true`}),` (no timestamps). Set to `,_jsx(_components.code,{children:`false`}),` to get word-level `,_jsx(_components.code,{children:`segments`}),` and `,_jsx(_components.code,{children:`speaker_turns`}),`. Timestamps add processing time.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`tag_audio_events`})}),_jsx(_components.td,{children:`No`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`true`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`true`}),`: bracketed emotion and vocal-event cues such as `,_jsx(_components.code,{children:`[laughter]`}),` or `,_jsx(_components.code,{children:`[高兴]`}),` stay in `,_jsx(_components.code,{children:`text`}),` and in `,_jsx(_components.code,{children:`speaker_turns`}),`. `,_jsx(_components.code,{children:`false`}),`: the cues are removed. Timestamps, `,_jsx(_components.code,{children:`duration`}),`, and billing do not change.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`diarize`})}),_jsx(_components.td,{children:`No`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`auto`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`auto`}),` or `,_jsx(_components.code,{children:`true`}),`: return `,_jsx(_components.code,{children:`speaker_turns`}),` when timestamps are requested. `,_jsx(_components.code,{children:`false`}),`: omit `,_jsx(_components.code,{children:`speaker_turns`}),` and the speaker markers in `,_jsx(_components.code,{children:`text`}),`; the rest of the transcript does not change.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`num_speakers`})}),_jsx(_components.td,{children:`No`}),_jsx(_components.td,{children:`Unset`}),_jsxs(_components.td,{children:[`The expected number of speakers, an integer of 1 or more. Cannot be combined with `,_jsx(_components.code,{children:`min_speakers`}),` or `,_jsx(_components.code,{children:`max_speakers`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`min_speakers`}),`, `,_jsx(_components.code,{children:`max_speakers`})]}),_jsx(_components.td,{children:`No`}),_jsx(_components.td,{children:`Unset`}),_jsxs(_components.td,{children:[`Lower and upper bounds on the number of speakers, integers of 1 or more. `,_jsx(_components.code,{children:`min_speakers`}),` must not exceed `,_jsx(_components.code,{children:`max_speakers`}),`.`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`In multipart forms, send `,_jsx(_components.code,{children:`true`}),` or `,_jsx(_components.code,{children:`false`}),` for `,_jsx(_components.code,{children:`ignore_timestamps`}),`. Any value other than `,_jsx(_components.code,{children:`true`}),` (case-insensitive), including `,_jsx(_components.code,{children:`1`}),` or an empty value, is read as `,_jsx(_components.code,{children:`false`}),` and turns timestamps on. In MessagePack, send a boolean; a string or `,_jsx(_components.code,{children:`nil`}),` returns 400.`]}),`\n`,_jsxs(_components.p,{children:[`Speaker-count hints are applied on a best-effort basis: they guide speaker identification on longer recordings and may have no effect on short ones. They cannot be sent with `,_jsx(_components.code,{children:`diarize=false`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`tag_audio_events`}),`, `,_jsx(_components.code,{children:`diarize`}),`, and the speaker-count hints are validated strictly:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`In multipart forms, `,_jsx(_components.code,{children:`tag_audio_events`}),` takes `,_jsx(_components.code,{children:`true`}),` or `,_jsx(_components.code,{children:`false`}),`, and `,_jsx(_components.code,{children:`diarize`}),` takes `,_jsx(_components.code,{children:`auto`}),`, `,_jsx(_components.code,{children:`true`}),`, or `,_jsx(_components.code,{children:`false`}),`, in any letter case. Speaker counts take digits only. Send each field at most once.`]}),`\n`,_jsxs(_components.li,{children:[`In MessagePack, send `,_jsx(_components.code,{children:`tag_audio_events`}),` as a boolean, `,_jsx(_components.code,{children:`diarize`}),` as a boolean or one of the lowercase strings `,_jsx(_components.code,{children:`auto`}),`, `,_jsx(_components.code,{children:`true`}),`, or `,_jsx(_components.code,{children:`false`}),`, and speaker counts as integers, not floats or strings. `,_jsx(_components.code,{children:`nil`}),` means the default.`]}),`\n`,_jsxs(_components.li,{children:[`Any other value, a repeated multipart field, or a conflicting combination returns 400 with code `,_jsx(_components.code,{children:`invalid_parameter`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`If you use `,_jsx(_components.code,{children:`transcribe-1`}),`:`]}),` send `,_jsx(_components.code,{children:`audio`}),`, `,_jsx(_components.code,{children:`language`}),`, and `,_jsx(_components.code,{children:`ignore_timestamps`}),`. The other fields apply to `,_jsx(_components.code,{children:`transcribe-1-pro`}),`; send them only with `,_jsx(_components.code,{children:`model: transcribe-1-pro`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`examples`,children:`Examples`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.fish.audio/v1/asr`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$FISH_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"model: transcribe-1-pro\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --form`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` audio=@conversation.wav`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --form`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ignore_timestamps=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`This request returns word-level `,_jsx(_components.code,{children:`segments`}),` and `,_jsx(_components.code,{children:`speaker_turns`}),`. For a two-person interview, you can add a speaker-count hint, and remove emotion and vocal-event cues from the transcript:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.fish.audio/v1/asr`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$FISH_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"model: transcribe-1-pro\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --form`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` audio=@interview.mp3`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --form`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ignore_timestamps=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --form`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` num_speakers=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --form`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tag_audio_events=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Let your HTTP client set the multipart `,_jsx(_components.code,{children:`Content-Type`}),` and boundary. For MessagePack, set `,_jsx(_components.code,{children:`Content-Type: application/msgpack`}),` and encode `,_jsx(_components.code,{children:`audio`}),` as binary bytes. See the `,_jsx(_components.a,{href:`/features/speech-to-text#direct-api-messagepack`,children:`Speech to Text guide`}),` for an example.`]}),`\n`,_jsx(Heading,{level:`2`,id:`read-the-response`,children:`Read the response`}),`\n`,_jsx(_components.p,{children:`A successful response (HTTP 200) is a JSON object:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`text`})}),_jsxs(_components.td,{children:[`The full transcript, with inline speaker markers such as `,_jsx(_components.code,{children:`\u003c|speaker:0|>`}),` (none with `,_jsx(_components.code,{children:`diarize=false`}),`) and, unless `,_jsx(_components.code,{children:`tag_audio_events=false`}),`, bracketed emotion and vocal-event cues such as `,_jsx(_components.code,{children:`[高兴]`}),` (happy) or `,_jsx(_components.code,{children:`[laughter]`}),`. See `,_jsx(_components.a,{href:`#multi-speaker-response-format`,children:`Multi-speaker response format`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`duration`})}),_jsx(_components.td,{children:`Length of the audio in seconds, including silence.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`segments`})}),_jsxs(_components.td,{children:[`Word-level timestamps: an array of `,_jsx(_components.code,{children:`{ \"text\", \"start\", \"end\" }`}),`, with times in seconds. Empty (`,_jsx(_components.code,{children:`[]`}),`) when `,_jsx(_components.code,{children:`ignore_timestamps=true`}),` (the default), when no speech was found, or when timing is temporarily unavailable. See `,_jsx(_components.a,{href:`#segments`,children:`Segments`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`speaker_turns`})}),_jsxs(_components.td,{children:[`The transcript as timed speaker turns. Returned when `,_jsx(_components.code,{children:`ignore_timestamps=false`}),` and `,_jsx(_components.code,{children:`diarize`}),` is not `,_jsx(_components.code,{children:`false`}),`; otherwise absent. See `,_jsx(_components.a,{href:`#speaker-turns`,children:`Speaker turns`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`language`})}),_jsxs(_components.td,{children:[`The detected language’s English name, such as `,_jsx(_components.code,{children:`English`}),` or `,_jsx(_components.code,{children:`Chinese`}),`. Omitted when it cannot be determined. Intended for display.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`language_code`})}),_jsxs(_components.td,{children:[`Two-letter ISO 639-1 code for the language, such as `,_jsx(_components.code,{children:`en`}),`. Omitted when unknown. If the language cannot be determined and you sent a `,_jsx(_components.code,{children:`language`}),` hint, this reports your hint. See `,_jsx(_components.a,{href:`#language`,children:`Language`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`request_id`})}),_jsxs(_components.td,{children:[`A unique ID for this request, also present in `,_jsx(_components.code,{children:`transcribe-1-pro`}),` error bodies and in the `,_jsx(_components.code,{children:`x-request-id`}),` response header. Platform and network-edge errors do not carry it. Include it when you contact support.`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`A field that is not returned is absent from the JSON, never `,_jsx(_components.code,{children:`null`}),`. Do not depend on the order of keys in the JSON.`]}),`\n`,_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`If you use `,_jsx(_components.code,{children:`transcribe-1`}),`:`]}),` rely on `,_jsx(_components.code,{children:`text`}),`, `,_jsx(_components.code,{children:`duration`}),`, `,_jsx(_components.code,{children:`segments`}),`, `,_jsx(_components.code,{children:`language`}),`, and `,_jsx(_components.code,{children:`language_code`}),`. Speaker markers, `,_jsx(_components.code,{children:`speaker_turns`}),`, and `,_jsx(_components.code,{children:`request_id`}),` are `,_jsx(_components.code,{children:`transcribe-1-pro`}),` features.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Both SDKs select `,_jsx(_components.code,{children:`transcribe-1-pro`}),` through the `,_jsx(_components.code,{children:`model`}),` header. In Python,\npass\n`,_jsx(_components.code,{children:`request_options=RequestOptions(additional_headers={\"model\": \"transcribe-1-pro\"})`}),`\nto `,_jsx(_components.code,{children:`asr.transcribe()`}),`. In JavaScript, pass\n`,_jsx(_components.code,{children:`{ headers: { model: \"transcribe-1-pro\" } }`}),` as the second argument to\n`,_jsx(_components.code,{children:`speechToText.convert()`}),`. The Python SDK currently returns only `,_jsx(_components.code,{children:`text`}),`,\n`,_jsx(_components.code,{children:`duration`}),`, and `,_jsx(_components.code,{children:`segments`}),`, and neither SDK can send `,_jsx(_components.code,{children:`tag_audio_events`}),`,\n`,_jsx(_components.code,{children:`diarize`}),`, or the speaker-count hints. To use them, call the API directly, as\nin the examples above. The JavaScript SDK returns the whole response body,\nbut its `,_jsx(_components.code,{children:`STTResponse`}),` type declares only `,_jsx(_components.code,{children:`text`}),`, `,_jsx(_components.code,{children:`duration`}),`, and `,_jsx(_components.code,{children:`segments`}),`.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`multi-speaker-response-format`,children:`Multi-speaker response format`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`transcribe-1-pro`}),` marks speaker changes `,_jsxs(_components.strong,{children:[`inside the `,_jsx(_components.code,{children:`text`}),` string`]}),` with `,_jsx(_components.code,{children:`\u003c|speaker:N|>`}),` markers. The label `,_jsx(_components.code,{children:`N`}),` identifies the speaker for the text that follows, up to the next marker. A repeated label means that speaker is speaking again.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Markers usually have a space on each side (`,_jsx(_components.code,{children:`\u003c|speaker:0|> 你好。 \u003c|speaker:1|> ...`}),`). Do not depend on exact spacing.`]}),`\n`,_jsx(_components.li,{children:`Any text before the first marker belongs to the first turn.`}),`\n`,_jsxs(_components.li,{children:[`Unless you send `,_jsx(_components.code,{children:`diarize=false`}),`, which removes the markers, a transcript with no marker comes from a single speaker; treat it as speaker 0.`]}),`\n`,_jsx(_components.li,{children:`Labels identify speakers within one response only. They are not names, and the same label in two requests is not the same person. Send a whole conversation as one file.`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`This illustrative response has two speakers and three turns. With `,_jsx(_components.code,{children:`ignore_timestamps=true`}),` (the default), timestamps are skipped and `,_jsx(_components.code,{children:`speaker_turns`}),` is absent:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003c|speaker:0|> 你好。 \u003c|speaker:1|> [高兴]很开心认识你。 \u003c|speaker:0|> 我也是。\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"duration\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`6.4`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"segments\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"language_code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"zh\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"language\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Chinese\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"request_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"5f0c7e2a-9b1d-4c3e-8f6a-2d4b7c9e1a03\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Read this as speaker 0 saying `,_jsx(_components.code,{children:`你好。`}),`, speaker 1 saying `,_jsx(_components.code,{children:`[高兴]很开心认识你。`}),`, and speaker 0 saying `,_jsx(_components.code,{children:`我也是。`}),`. The `,_jsx(_components.code,{children:`[高兴]`}),` cue describes the delivery of speaker 1’s speech. There is no separate emotion field; the cues are part of the text.`]}),`\n`,_jsx(Heading,{level:`3`,id:`speaker-turns`,children:`Speaker turns`}),`\n`,_jsxs(_components.p,{children:[`With `,_jsx(_components.code,{children:`ignore_timestamps=false`}),`, `,_jsx(_components.code,{children:`transcribe-1-pro`}),` also returns the turns as a structured `,_jsx(_components.code,{children:`speaker_turns`}),` array, unless you send `,_jsx(_components.code,{children:`diarize=false`}),`. When you request timestamps, prefer `,_jsx(_components.code,{children:`speaker_turns`}),` over parsing `,_jsx(_components.code,{children:`text`}),`.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`speaker_turns`}),` lists the turns in the order they occur, and is `,_jsx(_components.code,{children:`[]`}),` when no speech was found. Each turn is `,_jsx(_components.code,{children:`{ \"speaker\": \"speaker:N\", \"text\": \"...\", \"start\": \u003cseconds>, \"end\": \u003cseconds> }`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`speaker`}),` is the string `,_jsx(_components.code,{children:`speaker:N`}),`, where `,_jsx(_components.code,{children:`N`}),` matches the `,_jsx(_components.code,{children:`\u003c|speaker:N|>`}),` marker in `,_jsx(_components.code,{children:`text`}),`. Like the markers, labels identify speakers within one response only.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`text`}),` is that turn’s speech without speaker markers. It keeps emotion and vocal-event cues unless `,_jsx(_components.code,{children:`tag_audio_events=false`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`start`}),` and `,_jsx(_components.code,{children:`end`}),` come from the word timestamps. If word timing is unavailable (`,_jsx(_components.code,{children:`segments`}),` is empty), turn times are approximate and can cover the whole recording.`]}),`\n`,_jsx(_components.li,{children:`Consecutive turns can have the same speaker. Do not assume turns are contiguous or non-overlapping.`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`This illustrative response is the same conversation with `,_jsx(_components.code,{children:`ignore_timestamps=false`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`30`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`30`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003c|speaker:0|> 你好。 \u003c|speaker:1|> [高兴]很开心认识你。 \u003c|speaker:0|> 我也是。\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"duration\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`6.4`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"segments\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"你\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"start\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.24`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"end\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.52`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"好\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"start\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.52`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"end\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.8`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"很\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"start\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1.6`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"end\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1.84`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"开\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"start\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1.84`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"end\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2.1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"心\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"start\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2.1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"end\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2.36`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"认\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"start\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2.36`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"end\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2.7`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"识\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"start\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2.7`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"end\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2.98`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"你\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"start\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2.98`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"end\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`3.3`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"我\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"start\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4.5`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"end\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4.78`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"也\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"start\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4.78`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"end\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5.02`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"是\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"start\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5.02`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"end\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5.4`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"speaker_turns\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"speaker\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"speaker:0\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"你好。\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"start\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.24`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"end\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.8`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"speaker\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"speaker:1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"[高兴]很开心认识你。\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"start\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1.6`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"end\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`3.3`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"speaker\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"speaker:0\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"我也是。\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"start\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4.5`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"end\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5.4`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"language_code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"zh\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"language\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Chinese\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"request_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"5f0c7e2a-9b1d-4c3e-8f6a-2d4b7c9e1a03\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`See the `,_jsx(_components.a,{href:`/features/speech-to-text#multi-speaker-conversations`,children:`Speech to Text guide`}),` for parsing examples.`]}),`\n`,_jsx(Heading,{level:`3`,id:`segments`,children:`Segments`}),`\n`,_jsxs(_components.p,{children:[`A segment is usually one word; in Chinese and Japanese it is usually one character, or a few. Segment text has no punctuation and no speaker markers or cues, and can be normalized (for example `,_jsx(_components.code,{children:`35`}),` for `,_jsx(_components.code,{children:`3.5`}),`), so it does not always match `,_jsx(_components.code,{children:`text`}),` character for character. A segment can have `,_jsx(_components.code,{children:`start`}),` equal to `,_jsx(_components.code,{children:`end`}),`. Segments are not speaker turns and carry no speaker ID.`]}),`\n`,_jsx(Heading,{level:`3`,id:`language`,children:`Language`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`language`}),` is optional. The language is detected automatically whether or not you send a hint, and a hint does not force the transcript into that language.`]}),`\n`,_jsxs(_components.li,{children:[`Use a lowercase ISO 639-1 code such as `,_jsx(_components.code,{children:`en`}),`, `,_jsx(_components.code,{children:`zh`}),`, or `,_jsx(_components.code,{children:`ja`}),`. Other forms, such as `,_jsx(_components.code,{children:`en-US`}),` or `,_jsx(_components.code,{children:`English`}),`, may be rejected with 400.`]}),`\n`,_jsxs(_components.li,{children:[`If the language cannot be determined (for example, very short audio), `,_jsx(_components.code,{children:`language_code`}),` reports your hint, which is not checked against the audio, and `,_jsx(_components.code,{children:`language`}),` may be absent.`]}),`\n`,_jsxs(_components.li,{children:[`Responses report one language. For recordings that switch languages, `,_jsx(_components.code,{children:`language`}),` and `,_jsx(_components.code,{children:`language_code`}),` do not list every language spoken.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`limits`,children:`Limits`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Audio length:`}),` up to 60 minutes per request. Longer audio returns 400 with code `,_jsx(_components.code,{children:`audio_too_long`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Request size:`}),` for long recordings, send compressed audio such as MP3, Opus, or AAC. An hour of 128 kbps MP3 is about 55 MiB. A request that is too large returns 413.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`One conversation per request:`}),` send the whole recording in one request. Timestamps and speaker labels then cover the whole recording. Do not split a conversation, because labels are consistent only within one response.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`If you use `,_jsx(_components.code,{children:`transcribe-1`}),`:`]}),` it is designed for short recordings; for recordings longer than a few minutes, use `,_jsx(_components.code,{children:`transcribe-1-pro`}),`. It accepts up to 50 MiB per request; keep MP3 and Opus files under 25 MiB. A request that exceeds the size limit returns 413 or 400. A long request can fail with 503 if it exceeds the processing-time limit. Retry, and if it keeps failing, use `,_jsx(_components.code,{children:`transcribe-1-pro`}),` or split the audio.`]}),`\n`,_jsx(Heading,{level:`3`,id:`processing-time-and-timeouts`,children:`Processing time and timeouts`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Processing time grows with the length of the recording. Long `,_jsx(_components.code,{children:`transcribe-1-pro`}),` recordings can take several minutes.`]}),`\n`,_jsxs(_components.li,{children:[`Set your HTTP client’s timeout accordingly. The official SDKs’ default timeout can be too short for long recordings, and many HTTP libraries default to even less (httpx defaults to 5 seconds). For long recordings, use a generous timeout, for example 15 minutes: `,_jsx(_components.code,{children:`httpx.Timeout(900.0, connect=10.0)`}),` with httpx, `,_jsx(_components.code,{children:`RequestOptions(timeout=900)`}),` with the Python SDK, or `,_jsx(_components.code,{children:`{ timeoutInSeconds: 900 }`}),` with the JavaScript SDK.`]}),`\n`,_jsxs(_components.li,{children:[`In Node.js, the built-in `,_jsx(_components.code,{children:`fetch`}),`, which the JavaScript SDK uses, also stops waiting for a response after 5 minutes, even if you set a longer timeout. To wait longer, call `,_jsx(_components.code,{children:`setGlobalDispatcher(new Agent({ headersTimeout: 900_000, bodyTimeout: 900_000 }))`}),` from the `,_jsx(_components.code,{children:`undici`}),` package once at startup. See `,_jsx(_components.a,{href:`/features/speech-to-text#processing-time-and-timeouts`,children:`Processing time and timeouts`}),`.`]}),`\n`,_jsx(_components.li,{children:`If a long request fails with a 5xx error or the connection drops, retry it.`}),`\n`,_jsxs(_components.li,{children:[`Each request holds one of your account’s `,_jsx(_components.a,{href:`/developer-guide/models-pricing/pricing-and-rate-limits#concurrent-request-limits`,children:`concurrent request slots`}),` until its response is returned.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`supported-audio-formats`,children:`Supported audio formats`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`transcribe-1-pro`}),` accepts WAV, MP3, AAC (including M4A/MP4), FLAC, Ogg (Opus or Vorbis), WebM/Matroska, and MOV, including browser recordings. For a video file, it uses the first audio track. Send the original file bytes; no conversion is needed.`]}),`\n`,_jsx(_components.li,{children:`Not supported: AIFF, CAF, WMA, AMR, AC-3, and raw (headerless) PCM. These return 400.`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`If you use `,_jsx(_components.code,{children:`transcribe-1`}),`:`]}),` it accepts WAV, MP3, AAC (including M4A/MP4), FLAC, and Ogg (Opus or Vorbis). Browser WebM recordings (for example, from `,_jsx(_components.code,{children:`MediaRecorder`}),`) may not be accepted; convert them to Ogg/Opus, MP3, or WAV first.`]}),`\n`,_jsx(Heading,{level:`2`,id:`errors`,children:`Errors`}),`\n`,_jsx(_components.p,{children:`Error responses have one of these shapes:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[_jsx(_components.code,{children:`transcribe-1-pro`}),` errors`]}),` are JSON with `,_jsx(_components.code,{children:`status`}),`, `,_jsx(_components.code,{children:`message`}),`, `,_jsx(_components.code,{children:`code`}),`, and `,_jsx(_components.code,{children:`request_id`}),`. Branch on `,_jsx(_components.code,{children:`code`}),`, not on `,_jsx(_components.code,{children:`message`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Platform errors`}),`, such as authentication, credit, and concurrency errors, are returned before the request reaches a model. They are JSON with exactly `,_jsx(_components.code,{children:`status`}),` and `,_jsx(_components.code,{children:`message`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Errors from the network edge`}),` in front of the API, such as some 413 and 5xx responses, may not have a JSON body. Handle them by HTTP status.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`This illustrative `,_jsx(_components.code,{children:`transcribe-1-pro`}),` error body shows the shape:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`400`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"A human-readable description of the problem.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"invalid_parameter\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"request_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"5f0c7e2a-9b1d-4c3e-8f6a-2d4b7c9e1a03\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status`}),_jsx(_components.th,{children:_jsx(_components.code,{children:`code`})}),_jsx(_components.th,{children:`Meaning`}),_jsx(_components.th,{children:`Retry?`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request`})}),_jsxs(_components.td,{children:[`Malformed request: the body could not be parsed, `,_jsx(_components.code,{children:`audio`}),` is missing, or more than one `,_jsx(_components.code,{children:`audio`}),` was sent.`]}),_jsx(_components.td,{children:`No`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_parameter`})}),_jsx(_components.td,{children:`A parameter has a value it does not accept, or parameters conflict.`}),_jsx(_components.td,{children:`No`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_audio`})}),_jsx(_components.td,{children:`The audio could not be decoded, or the format is not supported.`}),_jsx(_components.td,{children:`No`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`audio_too_long`})}),_jsx(_components.td,{children:`The audio is longer than 60 minutes.`}),_jsx(_components.td,{children:`No`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`audio_too_short`})}),_jsx(_components.td,{children:`The audio is too short to transcribe (under about 0.08 seconds).`}),_jsx(_components.td,{children:`No`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:`—`}),_jsx(_components.td,{children:`The request body could not be read.`}),_jsx(_components.td,{children:`No`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`401`}),_jsx(_components.td,{children:`—`}),_jsx(_components.td,{children:`Missing or invalid API key.`}),_jsx(_components.td,{children:`No`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`402`}),_jsx(_components.td,{children:`—`}),_jsx(_components.td,{children:`Insufficient API credit.`}),_jsx(_components.td,{children:`No`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`413`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`request_too_large`})}),_jsx(_components.td,{children:`The request is too large. It may come from the network edge without a JSON body.`}),_jsx(_components.td,{children:`No`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`415`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`unsupported_media_type`})}),_jsxs(_components.td,{children:[`Unsupported `,_jsx(_components.code,{children:`Content-Type`}),`.`]}),_jsx(_components.td,{children:`No`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`429`}),_jsxs(_components.td,{children:[`— (rarely `,_jsx(_components.code,{children:`upstream_rejected`}),`)`]}),_jsxs(_components.td,{children:[`Usually your account is at its concurrency limit. No `,_jsx(_components.code,{children:`Retry-After`}),` header is sent.`]}),_jsx(_components.td,{children:`Yes, with backoff`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Other 4xx (not 429)`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`upstream_rejected`})}),_jsx(_components.td,{children:`Rare: the request was rejected during transcription.`}),_jsx(_components.td,{children:`No`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`500`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`internal_error`})}),_jsx(_components.td,{children:`Internal error.`}),_jsx(_components.td,{children:`Yes, with backoff`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`502`}),_jsx(_components.td,{children:`—`}),_jsx(_components.td,{children:`The service could not be reached.`}),_jsx(_components.td,{children:`Yes, with backoff`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`503`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`upstream_unavailable`})}),_jsx(_components.td,{children:`The transcription service is temporarily unavailable.`}),_jsx(_components.td,{children:`Yes, with backoff`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`503`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`upstream_timeout`})}),_jsx(_components.td,{children:`Processing took too long.`}),_jsx(_components.td,{children:`Yes, with backoff`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`503`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`excessive_repetition`})}),_jsx(_components.td,{children:`The transcription produced unusable repeated output.`}),_jsx(_components.td,{children:`Yes, with backoff`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`503`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`diarization_failed`})}),_jsx(_components.td,{children:`Speaker identification failed for this recording.`}),_jsx(_components.td,{children:`Yes, with backoff`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`504`}),_jsx(_components.td,{children:`—`}),_jsx(_components.td,{children:`Timed out connecting to the service.`}),_jsx(_components.td,{children:`Yes, with backoff`})]})]})]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`A dash means the error has no `,_jsx(_components.code,{children:`code`}),`; a 503 without a `,_jsx(_components.code,{children:`code`}),` also means the service is temporarily unavailable.`]}),`\n`,_jsxs(_components.li,{children:[`New `,_jsx(_components.code,{children:`code`}),` values may be added; handle unknown codes by HTTP status.`]}),`\n`,_jsx(_components.li,{children:`Retry 429 and 5xx responses with exponential backoff. Do not retry other 4xx responses; change the request first.`}),`\n`,_jsx(_components.li,{children:`Requests that return an error response are not billed.`}),`\n`,_jsxs(_components.li,{children:[`With the Python SDK, the raw error body is in the exception’s `,_jsx(_components.code,{children:`body`}),` attribute; parse it with `,_jsx(_components.code,{children:`json.loads`}),` to read `,_jsx(_components.code,{children:`code`}),` and `,_jsx(_components.code,{children:`request_id`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`If you use `,_jsx(_components.code,{children:`transcribe-1`}),`:`]}),` its errors are JSON with `,_jsx(_components.code,{children:`status`}),` and `,_jsx(_components.code,{children:`message`}),`. Rely only on these two fields and on the HTTP status.`]}),`\n`,_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/api-reference/errors`,children:`Errors`}),` for retry and SDK exception examples.`]})]})}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":{"openapi":"post /v1/asr","title":"Speech to Text","description":"Transcribe audio with transcribe-1-pro, the recommended speech-to-text model: request and response fields, speaker turns, limits, formats, and errors","icon":"microphone","iconType":"solid","href":"/api-reference/endpoint/openapi-v1/speech-to-text"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Select a model","slug":"select-a-model","depth":2,"children":[]},{"title":"Request fields","slug":"request-fields","depth":2,"children":[{"title":"Examples","slug":"examples","depth":3,"children":[]}]},{"title":"Read the response","slug":"read-the-response","depth":2,"children":[{"title":"Multi-speaker response format","slug":"multi-speaker-response-format","depth":3,"children":[]},{"title":"Speaker turns","slug":"speaker-turns","depth":3,"children":[]},{"title":"Segments","slug":"segments","depth":3,"children":[]},{"title":"Language","slug":"language","depth":3,"children":[]}]},{"title":"Limits","slug":"limits","depth":2,"children":[{"title":"Processing time and timeouts","slug":"processing-time-and-timeouts","depth":3,"children":[]}]},{"title":"Supported audio formats","slug":"supported-audio-formats","depth":2,"children":[]},{"title":"Errors","slug":"errors","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Speech to Text","security":["1c9dae6b-32a3-4d09-bc8f-60171cd19d16"],"parameters":["b0b624b5-d33c-4482-ad78-a4e372fd7561"],"requestBody":"9c657913-62f3-4f7c-9ba2-9941bbf8b1cb","responses":{"200":"7af2b56c-34fe-40b7-9a95-91bd412c827c","401":"868f0765-c889-422e-a329-e853ffd854b5","402":"dd233494-8fa4-4f51-be0b-5a1e205c9484","503":"ccca5a7e-292d-49f1-a7d5-bd292713e876"},"tags":["OpenAPI v1"],"method":"post","type":"path","servers":["67d0b003-947c-4252-a64e-22ee212a4e74"],"path":"/v1/asr","baseUrlOptions":["https://api.fish.audio"],"title":"Speech to Text","description":"Transcribe audio with transcribe-1-pro, the recommended speech-to-text model: request and response fields, speaker turns, limits, formats, and errors","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"b0b624b5-d33c-4482-ad78-a4e372fd7561":{"in":"header","name":"model","description":"Specify which speech-to-text model to use.","required":false,"schema":{"default":"transcribe-1","enum":["transcribe-1","transcribe-1-pro"],"title":"Model","type":"string","isRequired":false,"description":"Specify which speech-to-text model to use.","uniqueKey":"","typeLabel":"enum\u003cstring>"},"deprecated":false}},"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"properties":{"audio":{"description":"Audio file to be converted to text","format":"binary","title":"Audio","type":"string","isRequired":true,"uniqueKey":"audio","typeLabel":"file"},"language":{"oneOf":[{"type":"string","title":"Language","description":"Optional hint. The language is auto-detected regardless; the detected language is returned as `language_code`.","uniqueKey":"language.oneOf.0","typeLabel":"string"},{"type":"null","title":"Language","description":"Optional hint. The language is auto-detected regardless; the detected language is returned as `language_code`.","uniqueKey":"language.oneOf.1","typeLabel":"null"}],"uniqueKey":"language","typeLabel":"string | null"},"ignore_timestamps":{"default":true,"description":"Whether to return precise timestamps in the text, this will increase the latency in audio shorter than 30 seconds","title":"Ignore Timestamps","type":"boolean","uniqueKey":"ignore_timestamps","typeLabel":"boolean"}},"required":["audio"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"audio":"\u003cstring>","language":"\u003cstring>","ignore_timestamps":true}}},"exampleType":"generated"},"application/msgpack":{"schema":{"properties":{"audio":{"description":"Audio file to be converted to text","format":"binary","title":"Audio","type":"string","isRequired":true,"uniqueKey":"audio","typeLabel":"file"},"language":{"oneOf":[{"type":"string","title":"Language","description":"Optional hint. The language is auto-detected regardless; the detected language is returned as `language_code`.","uniqueKey":"language.oneOf.0","typeLabel":"string"},{"type":"null","title":"Language","description":"Optional hint. The language is auto-detected regardless; the detected language is returned as `language_code`.","uniqueKey":"language.oneOf.1","typeLabel":"null"}],"uniqueKey":"language","typeLabel":"string | null"},"ignore_timestamps":{"default":true,"description":"Whether to return precise timestamps in the text, this will increase the latency in audio shorter than 30 seconds","title":"Ignore Timestamps","type":"boolean","uniqueKey":"ignore_timestamps","typeLabel":"boolean"}},"required":["audio"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"audio":"\u003cstring>","language":"\u003cstring>","ignore_timestamps":true}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"7af2b56c-34fe-40b7-9a95-91bd412c827c":{"description":"Request fulfilled, document follows","headers":{},"content":{"application/json":{"schema":{"properties":{"text":{"title":"Text","type":"string","isRequired":true,"uniqueKey":"text","typeLabel":"string"},"duration":{"description":"Duration of the audio in seconds","title":"Duration","type":"number","isRequired":true,"uniqueKey":"duration","typeLabel":"number"},"segments":{"items":{"properties":{"text":{"title":"Text","type":"string","isRequired":true,"uniqueKey":"segments.items.[INDEX].text","typeLabel":"string"},"start":{"title":"Start","type":"number","isRequired":true,"uniqueKey":"segments.items.[INDEX].start","typeLabel":"number"},"end":{"title":"End","type":"number","isRequired":true,"uniqueKey":"segments.items.[INDEX].end","typeLabel":"number"}},"required":["text","start","end"],"title":"ASRSegment","type":"object","uniqueKey":"segments.items.[INDEX]","typeLabel":"ASRSegment · object"},"title":"Segments","type":"array","isRequired":true,"uniqueKey":"segments","typeLabel":"ASRSegment · object[]"},"language_code":{"oneOf":[{"type":"string","title":"Language Code","description":"Detected language as an ISO 639-1 code (e.g. `en`, `ja`). Omitted if no language is detected.","uniqueKey":"language_code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Language Code","description":"Detected language as an ISO 639-1 code (e.g. `en`, `ja`). Omitted if no language is detected.","uniqueKey":"language_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"language_code","typeLabel":"string | null"},"language":{"oneOf":[{"type":"string","title":"Language","description":"Detected language name (e.g. `English`). For display only; use `language_code` in code.","uniqueKey":"language.oneOf.0","typeLabel":"string"},{"type":"null","title":"Language","description":"Detected language name (e.g. `English`). For display only; use `language_code` in code.","uniqueKey":"language.oneOf.1","typeLabel":"null"}],"uniqueKey":"language","typeLabel":"string | null"}},"required":["text","duration","segments"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"text":"\u003cstring>","duration":123,"segments":[{"text":"\u003cstring>","start":123,"end":123}],"language_code":"\u003cstring>","language":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"868f0765-c889-422e-a329-e853ffd854b5":{"description":"No permission -- see authorization schemes","headers":{},"content":{"application/json":{"schema":{"properties":{"status":{"title":"Status","type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"message":{"title":"Message","type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"reason":{"oneOf":[{"type":"string","title":"Reason","uniqueKey":"reason.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reason","uniqueKey":"reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"reason","typeLabel":"string | null"}},"required":["status","message"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"message":"\u003cstring>","reason":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"dd233494-8fa4-4f51-be0b-5a1e205c9484":{"description":"No payment -- see charging schemes","headers":{},"content":{"application/json":{"schema":{"properties":{"status":{"title":"Status","type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"message":{"title":"Message","type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"reason":{"oneOf":[{"type":"string","title":"Reason","uniqueKey":"reason.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reason","uniqueKey":"reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"reason","typeLabel":"string | null"}},"required":["status","message"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"message":"\u003cstring>","reason":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"ccca5a7e-292d-49f1-a7d5-bd292713e876":{"description":"The server cannot process the request due to a high load","headers":{},"content":{"application/json":{"schema":{"properties":{"status":{"title":"Status","type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"message":{"title":"Message","type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"reason":{"oneOf":[{"type":"string","title":"Reason","uniqueKey":"reason.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reason","uniqueKey":"reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"reason","typeLabel":"string | null"}},"required":["status","message"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"message":"\u003cstring>","reason":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"1c9dae6b-32a3-4d09-bc8f-60171cd19d16":{"BearerAuth":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"67d0b003-947c-4252-a64e-22ee212a4e74":{"description":"Fish Audio API","url":"https://api.fish.audio"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"hanabiaiinc","siteName":"Fish Audio","title":"Speech to Text - Fish Audio","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-25T05:11:08.983Z","originalFileLocation":"api-reference/endpoint/openapi-v1/speech-to-text.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=\"Transcribe audio with transcribe-1-pro, the recommended speech-to-text model: request and response fields, speaker turns, limits, formats, and errors\">\u003cmeta data-mint-head name=\"application-name\" content=\"Fish Audio\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Speech to Text - Fish Audio\">\u003cmeta data-mint-head property=\"og:description\" content=\"Transcribe audio with transcribe-1-pro, the recommended speech-to-text model: request and response fields, speaker turns, limits, formats, and errors\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Fish Audio\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.fish.audio/api-reference/endpoint/openapi-v1/speech-to-text\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hanabiaiinc.mintlify.app/_mintlify/api/og/v2?division=ASR+%28v1%29\u0026amp;title=Speech+to+Text\u0026amp;description=Transcribe+audio+with+transcribe-1-pro%2C+the+recommended+speech-to-text+model%3A+request+and+response+fields%2C+speaker+turns%2C+limits%2C+formats%2C+and+errors\u0026amp;theme=949dddfb68a78f6c8e39910d\u0026amp;signature=8d004b874928cf0b19e13551f9b0b4f6c307fe29c86112708da717498ad310a6\">\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=\"Speech to Text - Fish Audio\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Transcribe audio with transcribe-1-pro, the recommended speech-to-text model: request and response fields, speaker turns, limits, formats, and errors\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hanabiaiinc.mintlify.app/_mintlify/api/og/v2?division=ASR+%28v1%29\u0026amp;title=Speech+to+Text\u0026amp;description=Transcribe+audio+with+transcribe-1-pro%2C+the+recommended+speech-to-text+model%3A+request+and+response+fields%2C+speaker+turns%2C+limits%2C+formats%2C+and+errors\u0026amp;theme=949dddfb68a78f6c8e39910d\u0026amp;signature=8d004b874928cf0b19e13551f9b0b4f6c307fe29c86112708da717498ad310a6\">\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/hanabiaiinc/rHJNuwD9FcQhvMwX/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Fish Audio\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0e0e0e\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.fish.audio/api-reference/endpoint/openapi-v1/speech-to-text\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/endpoint/openapi-v1/speech-to-text.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.fish.audio/#organization\",\"name\":\"Fish Audio\",\"url\":\"https://docs.fish.audio\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hanabiaiinc/amYp9Dj31LtlHliX/logo/light.png?fit=max\u0026auto=format\u0026n=amYp9Dj31LtlHliX\u0026q=85\u0026s=305973cd6a8d11dbf36d1ec682ee845e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.fish.audio#website\",\"name\":\"Fish Audio\",\"url\":\"https://docs.fish.audio\",\"publisher\":{\"@id\":\"https://docs.fish.audio/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.fish.audio/api-reference/endpoint/openapi-v1/speech-to-text#webpage\",\"url\":\"https://docs.fish.audio/api-reference/endpoint/openapi-v1/speech-to-text\",\"name\":\"Speech to Text\",\"description\":\"Transcribe audio with transcribe-1-pro, the recommended speech-to-text model: request and response fields, speaker turns, limits, formats, and errors\",\"dateModified\":\"2026-10-25T05:11:08.983Z\",\"isPartOf\":{\"@id\":\"https://docs.fish.audio#website\"},\"breadcrumb\":{\"@id\":\"https://docs.fish.audio/api-reference/endpoint/openapi-v1/speech-to-text#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.fish.audio/api-reference/endpoint/openapi-v1/speech-to-text#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"REST API\",\"item\":\"https://docs.fish.audio/api-reference/endpoint/wallet/get-api-credit\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Speech to Text\",\"item\":\"https://docs.fish.audio/api-reference/endpoint/openapi-v1/speech-to-text\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.fish.audio/api-reference/endpoint/openapi-v1/speech-to-text#apireference\",\"headline\":\"Speech to Text\",\"name\":\"Speech to Text\",\"description\":\"Transcribe audio with transcribe-1-pro, the recommended speech-to-text model: request and response fields, speaker turns, limits, formats, and errors\",\"url\":\"https://docs.fish.audio/api-reference/endpoint/openapi-v1/speech-to-text\",\"mainEntityOfPage\":{\"@id\":\"https://docs.fish.audio/api-reference/endpoint/openapi-v1/speech-to-text#webpage\"},\"dateModified\":\"2026-10-25T05:11:08.983Z\",\"publisher\":{\"@id\":\"https://docs.fish.audio/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.fish.audio#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Fish Audio\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Fish Audio","nav":{"global":null,"tabs":[{"tab":"Overview","pages":[{"title":"Overview","href":"/overview/capabilities"}]},{"tab":"Agents","pages":[{"title":"Agents","href":"/agents/overview"}]},{"tab":"Resources","pages":[{"title":"Resources","href":"/developer-guide/sdk-guide/quickstart"}]},{"tab":"API Reference","groups":[{"group":"API Reference","pages":[{"title":"Introduction","icon":"book","iconType":"solid","href":"/api-reference/introduction"},{"title":"Tracing \u0026 Performance Analysis","icon":"chart-line","iconType":"solid","href":"/api-reference/observability"},{"title":"Errors","icon":"triangle-exclamation","href":"/api-reference/errors"}]},{"group":"REST API","pages":[{"group":"Wallet","icon":"wallet","pages":[{"openapi":"get /wallet/{user_id}/api-credit","title":"Get API Credit","icon":"wallet","iconType":"solid","href":"/api-reference/endpoint/wallet/get-api-credit"},{"openapi":"get /wallet/{user_id}/package","title":"Get User Package","icon":"star","iconType":"solid","href":"/api-reference/endpoint/wallet/get-user-package"}]},{"group":"Voice Models","icon":"cube","pages":[{"openapi":"get /model","title":"List Models","icon":"list","iconType":"solid","href":"/api-reference/endpoint/model/list-models"},{"openapi":"post /model","title":"Create Model","icon":"circle-plus","iconType":"solid","href":"/api-reference/endpoint/model/create-model"},{"openapi":"get /model/{id}","title":"Get Model","icon":"circle-info","iconType":"solid","href":"/api-reference/endpoint/model/get-model"},{"openapi":"delete /model/{id}","title":"Delete Model","icon":"trash","iconType":"solid","href":"/api-reference/endpoint/model/delete-model"},{"openapi":"patch /model/{id}","title":"Update Model","icon":"pen-to-square","iconType":"solid","href":"/api-reference/endpoint/model/update-model"}]},{"group":"TTS (v1)","icon":"code","pages":[{"openapi":"post /v1/tts","title":"Text to Speech","icon":"comment-dots","iconType":"solid","href":"/api-reference/endpoint/openapi-v1/text-to-speech"},{"openapi":"post /v1/tts/stream/with-timestamp","title":"Text to Speech Stream with Timestamps","icon":"waveform-lines","iconType":"solid","href":"/api-reference/endpoint/openapi-v1/text-to-speech-stream-with-timestamps"},{"asyncapi":"api-reference/asyncapi.yml ttsLive","title":"WebSocket TTS Streaming","icon":"webhook","iconType":"solid","href":"/api-reference/endpoint/websocket/tts-live"},{"asyncapi":"api-reference/asyncapi.yml ttsLiveWithTimestamps","title":"WebSocket TTS with Timestamps","description":"Stream text and receive speech with word-level timestamps over WebSocket","icon":"webhook","iconType":"solid","href":"/api-reference/endpoint/openapi-v1/text-to-speech-live-with-timestamps"}]},{"group":"ASR (v1)","icon":"microphone","pages":[{"openapi":"post /v1/asr","title":"Speech to Text","icon":"microphone","iconType":"solid","href":"/api-reference/endpoint/openapi-v1/speech-to-text"},{"asyncapi":"api-reference/asyncapi-asr-realtime.yml asrRealtime","title":"WebSocket Realtime Speech to Text","description":"Stream audio over a WebSocket and receive transcripts turn by turn, with turn detection, live drafts and conversation context","icon":"webhook","iconType":"solid","tag":"Preview","href":"/api-reference/endpoint/websocket/asr-realtime"}]},{"group":"Voice Design","icon":"wand-magic-sparkles","pages":[{"openapi":"post /v1/voice-design","title":"Voice Design","icon":"wand-magic-sparkles","iconType":"solid","href":"/api-reference/endpoint/openapi-v1/voice-design"}]}]},{"group":"Agents API","pages":[{"title":"Agents API Errors","icon":"triangle-exclamation","href":"/api-reference/agent-errors"},{"group":"Agents","icon":"robot","pages":[{"openapi":"get /v1/agent/agents","title":"List Agents","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/list-agents"},{"openapi":"post /v1/agent/agents","title":"Create Agent","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/create-agent"},{"openapi":"get /v1/agent/agents/{agent_id}","title":"Get Agent","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/get-agent"},{"openapi":"patch /v1/agent/agents/{agent_id}","title":"Update Agent","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/update-agent"},{"openapi":"delete /v1/agent/agents/{agent_id}","title":"Delete Agent","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/delete-agent"},{"openapi":"get /v1/agent/agents/{agent_id}/config","title":"Get Draft Config","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/get-draft-config"},{"openapi":"patch /v1/agent/agents/{agent_id}/config","title":"Update Draft Config","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/update-draft-config"},{"openapi":"post /v1/agent/agents/{agent_id}/publish","title":"Publish Agent","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/publish-agent"},{"openapi":"get /v1/agent/agents/{agent_id}/versions","title":"List Agent Versions","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/list-agent-versions"},{"openapi":"get /v1/agent/agents/{agent_id}/versions/{version_number}","title":"Get Agent Version","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/get-agent-version"},{"openapi":"get /v1/agent/agents/{agent_id}/widget","title":"Get Widget Config","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/get-widget-config"}]},{"group":"Sessions","icon":"headset","pages":[{"openapi":"post /v1/agent/sessions","title":"Create Agent Session","icon":"headset","iconType":"solid","href":"/api-reference/endpoint/agent/create-agent-session"},{"openapi":"get /v1/agent/sessions","title":"List Agent Sessions","icon":"headset","iconType":"solid","href":"/api-reference/endpoint/agent/list-agent-sessions"},{"openapi":"get /v1/agent/sessions/{session_id}","title":"Get Agent Session","icon":"headset","iconType":"solid","href":"/api-reference/endpoint/agent/get-agent-session"},{"openapi":"get /v1/agent/sessions/{session_id}/recording","title":"Get Agent Session Recording","icon":"headset","iconType":"solid","href":"/api-reference/endpoint/agent/get-agent-session-recording"},{"openapi":"post /v1/agent/sessions/{session_id}/end","title":"End Agent Session","icon":"headset","iconType":"solid","href":"/api-reference/endpoint/agent/end-agent-session"}]},{"group":"Tools","icon":"wrench","pages":[{"openapi":"get /v1/agent/tools","title":"List Tools","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/list-tools"},{"openapi":"post /v1/agent/tools","title":"Create Tool","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/create-tool"},{"openapi":"get /v1/agent/tools/{tool_id}","title":"Get Tool","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/get-tool"},{"openapi":"patch /v1/agent/tools/{tool_id}","title":"Update Tool","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/update-tool"},{"openapi":"delete /v1/agent/tools/{tool_id}","title":"Delete Tool","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/delete-tool"},{"openapi":"get /v1/agent/tools/{tool_id}/agents","title":"List Agents Using Tool","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/list-agents-using-tool"}]},{"group":"Tests","icon":"flask","pages":[{"openapi":"get /v1/agent/tests","title":"List Tests","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/list-tests"},{"openapi":"post /v1/agent/tests","title":"Create Test","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/create-test"},{"openapi":"get /v1/agent/tests/{test_id}","title":"Get Test","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/get-test"},{"openapi":"patch /v1/agent/tests/{test_id}","title":"Update Test","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/update-test"},{"openapi":"delete /v1/agent/tests/{test_id}","title":"Delete Test","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/delete-test"},{"openapi":"put /v1/agent/agents/{agent_id}/tests/{test_id}","title":"Attach Test","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/attach-test"},{"openapi":"delete /v1/agent/agents/{agent_id}/tests/{test_id}","title":"Detach Test","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/detach-test"},{"openapi":"get /v1/agent/agents/{agent_id}/test-tools","title":"List Test Tools","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/list-test-tools"},{"openapi":"post /v1/agent/agents/{agent_id}/tests/run","title":"Run Tests","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/run-tests"},{"openapi":"get /v1/agent/agents/{agent_id}/test-batches","title":"List Test Batches","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/list-test-batches"},{"openapi":"get /v1/agent/agents/{agent_id}/test-batches/{batch_id}","title":"Get Test Batch","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/get-test-batch"},{"openapi":"get /v1/agent/test-runs","title":"List Test Runs","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/list-test-runs"},{"openapi":"get /v1/agent/test-runs/{run_id}","title":"Get Test Run","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/get-test-run"}]},{"group":"Knowledge Sources","icon":"book","pages":[{"openapi":"get /v1/agent/knowledge-sources","title":"List Knowledge Sources","icon":"book","iconType":"solid","href":"/api-reference/endpoint/agent/list-knowledge-sources"},{"openapi":"post /v1/agent/knowledge-sources","title":"Create Knowledge Source","icon":"book","iconType":"solid","href":"/api-reference/endpoint/agent/create-knowledge-source"},{"openapi":"get /v1/agent/knowledge-sources/{source_id}","title":"Get Knowledge Source","icon":"book","iconType":"solid","href":"/api-reference/endpoint/agent/get-knowledge-source"},{"openapi":"patch /v1/agent/knowledge-sources/{source_id}","title":"Update Knowledge Source","icon":"book","iconType":"solid","href":"/api-reference/endpoint/agent/update-knowledge-source"},{"openapi":"delete /v1/agent/knowledge-sources/{source_id}","title":"Delete Knowledge Source","icon":"book","iconType":"solid","href":"/api-reference/endpoint/agent/delete-knowledge-source"},{"openapi":"get /v1/agent/knowledge-sources/{source_id}/agents","title":"List Agents Using Knowledge Source","icon":"book","iconType":"solid","href":"/api-reference/endpoint/agent/list-agents-using-knowledge-source"}]},{"group":"Phone Numbers","icon":"phone","pages":[{"openapi":"get /v1/agent/available-phone-numbers","title":"Search Available Phone Numbers","icon":"phone","iconType":"solid","href":"/api-reference/endpoint/agent/search-available-phone-numbers"},{"openapi":"get /v1/agent/phone-numbers","title":"List Phone Numbers","icon":"phone","iconType":"solid","href":"/api-reference/endpoint/agent/list-phone-numbers"},{"openapi":"post /v1/agent/phone-numbers","title":"Purchase Phone Number","icon":"phone","iconType":"solid","href":"/api-reference/endpoint/agent/purchase-phone-number"},{"openapi":"get /v1/agent/phone-numbers/{phone_number_id}","title":"Get Phone Number","icon":"phone","iconType":"solid","href":"/api-reference/endpoint/agent/get-phone-number"},{"openapi":"patch /v1/agent/phone-numbers/{phone_number_id}","title":"Update Phone Number","icon":"phone","iconType":"solid","href":"/api-reference/endpoint/agent/update-phone-number"},{"openapi":"delete /v1/agent/phone-numbers/{phone_number_id}","title":"Release Phone Number","icon":"phone","iconType":"solid","href":"/api-reference/endpoint/agent/release-phone-number"}]},{"group":"Phone Calls","icon":"phone-arrow-up-right","pages":[{"openapi":"post /v1/agent/phone-calls","title":"Create Phone Call","icon":"phone-arrow-up-right","iconType":"solid","href":"/api-reference/endpoint/agent/create-phone-call"}]}]},{"group":"SDK Reference","pages":[{"group":"Python SDK","icon":"python","pages":[{"title":"Overview","icon":"python","href":"/api-reference/sdk/python/overview"},{"group":"Reference","icon":"book-open","pages":[{"title":null,"href":"/api-reference/sdk/python/client"},{"title":null,"href":"/api-reference/sdk/python/resources"},{"title":null,"href":"/api-reference/sdk/python/types"},{"title":null,"href":"/api-reference/sdk/python/core"},{"title":null,"href":"/api-reference/sdk/python/utils"},{"title":null,"href":"/api-reference/sdk/python/exceptions"}]},{"title":"Legacy","icon":"clock-rotate-left","href":"/archive/python-sdk-legacy/index"}]},{"group":"JavaScript SDK","icon":"js","pages":[{"title":"JavaScript SDK Reference","sidebarTitle":"Reference","icon":"book","href":"/api-reference/sdk/javascript/api-reference"}]}]}]}]},"title":"Speech to Text - Fish Audio","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","Page-CBCH2P7b.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js","Markdown-Cc16CX65.js","clsx-Cs6nMGht.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-zbf22OZA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C_fs-y5n.js"]}