Modulate’s model families, what each model returns, and how to choose between endpoints that overlap.
Modulate’s models are grouped into families by the kind of output they produce. Within a family, endpoints differ by language coverage, latency, and whether they take a file or a live stream.Each capability page below carries the full parameter, response, and audio format detail for its endpoints.
Multilingual Transcription, PII/PHI Redaction, and Velma Triage all return a transcript. Pairing any of the last two with a transcription call returns the same text twice.
Requirement
Endpoint that covers it
A redacted transcript and audio with the sensitive ranges silenced
PII/PHI Redaction. A separate transcription call returns the same text.
Behaviors, topics, and sentiment across a conversation
Velma Triage. The diarized transcript comes back as clips.
Each is available as a flag on Multilingual Transcription, attached per utterance, or as a dedicated endpoint that produces no transcript. English Fast and Multilingual Fast Transcription carry none of them.
Signal
Multilingual Transcription flag
Dedicated endpoint
What the dedicated endpoint adds
Deepfake
deepfake_signal=true, one score per utterance
Deepfake Detection
Frame-level verdicts, explicit no-content for silence, and verdicts on live audio without a transcript
Emotion
emotion_signal=true, one label per utterance
Emotion Detection
A whole-file label and a per-window time series, without a transcript
Accent
accent_signal=true, one label per utterance
Accent Detection
A whole-file label and a per-window time series, without a transcript
PII/PHI
pii_phi_tagging=true, spans tagged in the transcript text
English Fast Transcription (batch). Bound parallel requests with a semaphore to stay inside the concurrency cap.
Recorded calls in mixed or non-English languages, transcript only
Multilingual Fast Transcription (batch). Pass language when it is known.
Live non-English captions, minimum latency
Multilingual Fast Transcription (streaming), for the 25 European languages it covers. The language is identified automatically, and detect_language=true reports it per utterance. Outside those 25, use Multilingual Transcription (streaming).
Captions, or search that seeks into the audio
English Fast Transcription (batch) with time_stamps=true. Returns a start time, end time, and alignment confidence per word, in seconds from the start of the file.
Live English captions timed to the word
English Fast Transcription (streaming) with time_stamps=true. Each final utterance carries a start and duration per word, in milliseconds from the start of the stream.
Meeting transcription with speakers and emotion
Multilingual Transcription (batch) with speaker_diarization=true and emotion_signal=true.
Recorded English clinical dictation
English Fast Transcription (batch) or Multilingual Transcription (batch) with medical_domain=true. Corrects drug names, conditions, and procedures.
Live captions with speaker labels or non-English audio
Multilingual Transcription (streaming).
Voice agent input, minimum latency
English Fast Transcription (streaming) with endpointing=true. Replace the displayed partial on each message rather than appending.
Live English captions that attribute turns to speakers
English Fast Transcription (streaming) with diarize=true and endpointing=true. Check speakers_capped before trusting the labels past ten speakers.
Screening a submitted clip for AI-generated voice
Deepfake Detection (batch).
Anti-spoofing during a live voice-authentication flow
Deepfake Detection (streaming). Frame verdicts arrive during the call.
A compliance recording that must be shareable
PII/PHI Redaction (batch). Returns the silenced MP3 and the tagged transcript together.
Routing audio by spoken language
Language Detection (batch). Read predicted_language_code; low confidence means no commitment.
Processing only speech from a live stream
Music & Speech Detection (streaming). Route on the frame classification.
Screening uploaded tracks for AI-generated music
AI Music Detection (batch). The clip primary_verdict is more accurate than the per-window scores.
Identifying non-speech sounds in a clip
Audio Event Detection (batch). Entries are independent probabilities, so threshold each event you care about; an absent key means not confidently detected, not absent from the audio.
{"docsConfig":{"theme":"sequoia","$schema":"https://mintlify.com/docs.json","name":"Modulate","description":"Build with the modulate.ai models — real-time transcription, deepfake detection, and PII/PHI redaction at scale.","colors":{"primary":"#285FEB","light":"#5B82F0","dark":"#285FEB"},"logo":{"light":"https://mintcdn.com/modulateai/0NHKM9zXEnghoEfZ/images/wordmark-navy.svg?fit=max\u0026auto=format\u0026n=0NHKM9zXEnghoEfZ\u0026q=85\u0026s=7ee7a19111bb0154aa2e6934ebd29607","dark":"https://mintcdn.com/modulateai/0NHKM9zXEnghoEfZ/images/wordmark-white.svg?fit=max\u0026auto=format\u0026n=0NHKM9zXEnghoEfZ\u0026q=85\u0026s=98ae552c2cd0d6bf2268f8374825c88a","href":"https://modulate.ai"},"favicon":"https://mintcdn.com/modulateai/0NHKM9zXEnghoEfZ/images/favicon.svg?fit=max\u0026auto=format\u0026n=0NHKM9zXEnghoEfZ\u0026q=85\u0026s=d8e2a95af577097e3287379354855376","appearance":{"default":"system"},"navbar":{"links":[{"href":"https://platform.modulate.ai/signin","label":"Sign in"}],"primary":{"type":"button","label":"Start building free","href":"https://platform.modulate.ai/signup-request"}},"footer":{"socials":{"website":"https://modulate.ai"},"links":[{"header":"Product","items":[{"label":"Modulate","href":"https://modulate.ai"},{"label":"Velma Preview","href":"https://preview.modulate.ai"}]},{"header":"Support","items":[{"label":"Email support","href":"mailto:support@modulate.ai"},{"label":"Privacy policy","href":"https://www.modulate.ai/privacy-policy"},{"label":"Report a vulnerability","href":"/security"}]}]},"integrations":{"ga4":{"measurementId":"G-0WV1JKWMB3"}},"contextual":{"options":["copy","view","assistant","chatgpt","claude","perplexity"],"display":"header"},"markdown":{"schema":true},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"modulateai","hasAudioNarration":false,"actualSubdomain":"modulateai","customDomains":["docs.modulate.ai"],"gitSource":{"type":"gitlab","owner":"modulate","repo":"modulate-user-docs","projectId":81929608,"deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae8b8d621d86b83cef2b55b","collectionId":"edb8ba97-3e05-4ed6-950a-9032b207844d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae8b8d621d86b83cef2b55b"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae8b8d621d86b83cef2b55b","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"API Reference","count":31},{"language":"default","tag":"Velma","count":17},{"language":"default","tag":"Get Started","count":16},{"language":"default","tag":"By capability","count":10},{"language":"default","tag":"Speech-to-text Transcription","count":7},{"language":"default","tag":"Detection packages","count":7},{"language":"default","tag":"Benchmarks","count":6},{"language":"default","tag":"Support","count":4},{"language":"default","tag":"Behaviors","count":4},{"language":"default","tag":"AI Music Detection","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@modulate.ai","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":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"guides/which-api","slug":"/guides/which-api","pageMetadata":{"title":"Which API should I use?","description":"Modulate's model families, what each model returns, and how to choose between endpoints that overlap.","href":"/guides/which-api"},"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: \"Modulate’s model families, what each model returns, and how to choose between endpoints that overlap.\"\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`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Table}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Modulate’s models are grouped into families by the kind of output they produce. Within a family, endpoints differ by language coverage, latency, and whether they take a file or a live stream.`}),`\n`,_jsx(_components.p,{children:`Each capability page below carries the full parameter, response, and audio format detail for its endpoints.`}),`\n`,_jsx(Heading,{level:`2`,id:`model-families`,children:`Model families`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Family`}),_jsx(_components.th,{children:`Model`}),_jsx(_components.th,{children:`Output`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Transcription`})}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/get-started/stt`,children:`Multilingual Transcription`})}),_jsx(_components.td,{children:`A transcript with per-utterance timing, speaker labels, and optional emotion, accent, deepfake, and PII/PHI signals. Batch and streaming.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/get-started/stt`,children:`English Fast Transcription`})}),_jsx(_components.td,{children:`An English transcript, with speaker turns when diarization is enabled. Batch and streaming.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/get-started/stt`,children:`Multilingual Fast Transcription`})}),_jsx(_components.td,{children:`A transcript, its duration, and its language. No metadata. Batch and streaming, though only batch reports the language.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Detection`})}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/get-started/deepfake`,children:`Deepfake Detection`})}),_jsxs(_components.td,{children:[`A `,_jsx(_components.code,{children:`synthetic`}),`, `,_jsx(_components.code,{children:`non-synthetic`}),`, or `,_jsx(_components.code,{children:`no-content`}),` verdict per frame, with confidence. Batch and streaming.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/get-started/emotion`,children:`Emotion Detection`})}),_jsx(_components.td,{children:`A whole-file emotion label plus a per-window time series. Batch.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/get-started/accent`,children:`Accent Detection`})}),_jsx(_components.td,{children:`A whole-file accent label plus a per-window time series. Batch.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/get-started/music-detection`,children:`Music \u0026 Speech Detection`})}),_jsx(_components.td,{children:`Music and speech probabilities per 192 ms frame, plus clip totals. Batch and streaming.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/get-started/ai-music-detection`,children:`AI Music Detection`})}),_jsx(_components.td,{children:`A clip verdict on AI-generated music, plus per-window vocal and instrumental scores. Batch and streaming.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/get-started/language-detection`,children:`Language Detection`})}),_jsx(_components.td,{children:`The spoken language with a confidence score, across 100 languages. Batch.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/get-started/audio-event-detection`,children:`Audio Event Detection`})}),_jsx(_components.td,{children:`A probability for each non-speech sound event detected, from a vocabulary of 42. Batch.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Redaction`})}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/get-started/pii`,children:`PII/PHI Redaction`})}),_jsx(_components.td,{children:`A redacted transcript plus audio with the sensitive ranges silenced. Batch and streaming.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Triage`})}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/get-started/velma`,children:`Velma Triage`})}),_jsx(_components.td,{children:`Behaviors, conversation type, participant roles, topics, sentiment, a summary, and a diarized transcript. Batch and streaming.`})]})]})]}),`\n`,_jsx(_components.p,{children:`No Detection model returns a transcript.`}),`\n`,_jsx(Heading,{level:`2`,id:`endpoints-that-overlap`,children:`Endpoints that overlap`}),`\n`,_jsx(Heading,{level:`3`,id:`three-models-return-a-transcript`,children:`Three models return a transcript`}),`\n`,_jsx(_components.p,{children:`Multilingual Transcription, PII/PHI Redaction, and Velma Triage all return a transcript. Pairing any of the last two with a transcription call returns the same text twice.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Requirement`}),_jsx(_components.th,{children:`Endpoint that covers it`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`A redacted transcript and audio with the sensitive ranges silenced`}),_jsx(_components.td,{children:`PII/PHI Redaction. A separate transcription call returns the same text.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Behaviors, topics, and sentiment across a conversation`}),_jsxs(_components.td,{children:[`Velma Triage. The diarized transcript comes back as `,_jsx(_components.code,{children:`clips`}),`.`]})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`four-signals-have-two-paths`,children:`Four signals have two paths`}),`\n`,_jsx(_components.p,{children:`Each is available as a flag on Multilingual Transcription, attached per utterance, or as a dedicated endpoint that produces no transcript. English Fast and Multilingual Fast Transcription carry none of them.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Signal`}),_jsx(_components.th,{children:`Multilingual Transcription flag`}),_jsx(_components.th,{children:`Dedicated endpoint`}),_jsx(_components.th,{children:`What the dedicated endpoint adds`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Deepfake`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`deepfake_signal=true`}),`, one score per utterance`]}),_jsx(_components.td,{children:`Deepfake Detection`}),_jsxs(_components.td,{children:[`Frame-level verdicts, explicit `,_jsx(_components.code,{children:`no-content`}),` for silence, and verdicts on live audio without a transcript`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Emotion`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`emotion_signal=true`}),`, one label per utterance`]}),_jsx(_components.td,{children:`Emotion Detection`}),_jsx(_components.td,{children:`A whole-file label and a per-window time series, without a transcript`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Accent`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`accent_signal=true`}),`, one label per utterance`]}),_jsx(_components.td,{children:`Accent Detection`}),_jsx(_components.td,{children:`A whole-file label and a per-window time series, without a transcript`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`PII/PHI`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pii_phi_tagging=true`}),`, spans tagged in the transcript text`]}),_jsx(_components.td,{children:`PII/PHI Redaction`}),_jsx(_components.td,{children:`Silenced audio, not only tagged text`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`common-scenarios`,children:`Common scenarios`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Goal`}),_jsx(_components.th,{children:`Endpoint`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Recorded English calls, high volume`}),_jsx(_components.td,{children:`English Fast Transcription (batch). Bound parallel requests with a semaphore to stay inside the concurrency cap.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Recorded calls in mixed or non-English languages, transcript only`}),_jsxs(_components.td,{children:[`Multilingual Fast Transcription (batch). Pass `,_jsx(_components.code,{children:`language`}),` when it is known.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Live non-English captions, minimum latency`}),_jsxs(_components.td,{children:[`Multilingual Fast Transcription (streaming), for the 25 European languages it covers. The language is identified automatically, and `,_jsx(_components.code,{children:`detect_language=true`}),` reports it per utterance. Outside those 25, use Multilingual Transcription (streaming).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Captions, or search that seeks into the audio`}),_jsxs(_components.td,{children:[`English Fast Transcription (batch) with `,_jsx(_components.code,{children:`time_stamps=true`}),`. Returns a start time, end time, and alignment confidence per word, in seconds from the start of the file.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Live English captions timed to the word`}),_jsxs(_components.td,{children:[`English Fast Transcription (streaming) with `,_jsx(_components.code,{children:`time_stamps=true`}),`. Each final utterance carries a start and duration per word, in milliseconds from the start of the stream.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Meeting transcription with speakers and emotion`}),_jsxs(_components.td,{children:[`Multilingual Transcription (batch) with `,_jsx(_components.code,{children:`speaker_diarization=true`}),` and `,_jsx(_components.code,{children:`emotion_signal=true`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Recorded English clinical dictation`}),_jsxs(_components.td,{children:[`English Fast Transcription (batch) or Multilingual Transcription (batch) with `,_jsx(_components.code,{children:`medical_domain=true`}),`. Corrects drug names, conditions, and procedures.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Live captions with speaker labels or non-English audio`}),_jsx(_components.td,{children:`Multilingual Transcription (streaming).`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Voice agent input, minimum latency`}),_jsxs(_components.td,{children:[`English Fast Transcription (streaming) with `,_jsx(_components.code,{children:`endpointing=true`}),`. Replace the displayed partial on each message rather than appending.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Live English captions that attribute turns to speakers`}),_jsxs(_components.td,{children:[`English Fast Transcription (streaming) with `,_jsx(_components.code,{children:`diarize=true`}),` and `,_jsx(_components.code,{children:`endpointing=true`}),`. Check `,_jsx(_components.code,{children:`speakers_capped`}),` before trusting the labels past ten speakers.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Screening a submitted clip for AI-generated voice`}),_jsx(_components.td,{children:`Deepfake Detection (batch).`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Anti-spoofing during a live voice-authentication flow`}),_jsx(_components.td,{children:`Deepfake Detection (streaming). Frame verdicts arrive during the call.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`A compliance recording that must be shareable`}),_jsx(_components.td,{children:`PII/PHI Redaction (batch). Returns the silenced MP3 and the tagged transcript together.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Routing audio by spoken language`}),_jsxs(_components.td,{children:[`Language Detection (batch). Read `,_jsx(_components.code,{children:`predicted_language_code`}),`; low `,_jsx(_components.code,{children:`confidence`}),` means no commitment.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Processing only speech from a live stream`}),_jsx(_components.td,{children:`Music \u0026 Speech Detection (streaming). Route on the frame classification.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Screening uploaded tracks for AI-generated music`}),_jsxs(_components.td,{children:[`AI Music Detection (batch). The clip `,_jsx(_components.code,{children:`primary_verdict`}),` is more accurate than the per-window scores.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Identifying non-speech sounds in a clip`}),_jsx(_components.td,{children:`Audio Event Detection (batch). Entries are independent probabilities, so threshold each event you care about; an absent key means not confidently detected, not absent from the audio.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Fraud or compliance review on recorded calls`}),_jsxs(_components.td,{children:[`Velma Triage (batch) with a `,_jsx(_components.a,{href:`/velma/detection-packages`,children:`detection package`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Live monitoring for escalation or churn`}),_jsxs(_components.td,{children:[`Velma Triage (streaming). `,_jsx(_components.code,{children:`behavior_detection`}),` events arrive during the call.`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`related`,children:`Related`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/guides/authentication`,children:`Authentication and rate limits`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/get-started/stt#signals`,children:`Transcription signals`})}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Which API should I use?","description":"Modulate's model families, what each model returns, and how to choose between endpoints that overlap.","href":"/guides/which-api"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Model families","slug":"model-families","depth":2,"children":[]},{"title":"Endpoints that overlap","slug":"endpoints-that-overlap","depth":2,"children":[{"title":"Three models return a transcript","slug":"three-models-return-a-transcript","depth":3,"children":[]},{"title":"Four signals have two paths","slug":"four-signals-have-two-paths","depth":3,"children":[]}]},{"title":"Common scenarios","slug":"common-scenarios","depth":2,"children":[]},{"title":"Related","slug":"related","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/modulateai/6f43a4827c59f292/hubspot.js","/_mintlify/custom/modulateai/0bb96afd82713278/swan.js","/_mintlify/custom/modulateai/476f212ab71e7bd6/hubspot-forms.js","/_mintlify/custom/modulateai/06d8e9ccae2eea7a/detection-package-download.js"],"subdomain":"modulateai","siteName":"Modulate","title":"Which API should I use? - Modulate","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-23T02:50:50.118Z","originalFileLocation":"guides/which-api.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=\"Modulate\u0026#x27;s model families, what each model returns, and how to choose between endpoints that overlap.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Modulate\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/modulateai/DjDAyeOufX95soiv/_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/modulateai/DjDAyeOufX95soiv/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/modulateai/DjDAyeOufX95soiv/_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/modulateai/DjDAyeOufX95soiv/_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/modulateai/DjDAyeOufX95soiv/_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/modulateai/DjDAyeOufX95soiv/_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/modulateai/DjDAyeOufX95soiv/_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/modulateai/DjDAyeOufX95soiv/_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/modulateai/DjDAyeOufX95soiv/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Which API should I use? - Modulate\">\u003cmeta data-mint-head property=\"og:description\" content=\"Modulate\u0026#x27;s model families, what each model returns, and how to choose between endpoints that overlap.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Modulate\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.modulate.ai/guides/which-api\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://modulateai.mintlify.app/_mintlify/api/og/v2?division=Guides\u0026amp;title=Which+API+should+I+use%3F\u0026amp;description=Modulate%27s+model+families%2C+what+each+model+returns%2C+and+how+to+choose+between+endpoints+that+overlap.\u0026amp;theme=5b1c5018c22e2de339bbf72b\u0026amp;signature=621e44cd47bd79aed80f3f935110ae81e3a30897005ccc64daee24f44b3f96b8\">\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=\"Which API should I use? - Modulate\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Modulate\u0026#x27;s model families, what each model returns, and how to choose between endpoints that overlap.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://modulateai.mintlify.app/_mintlify/api/og/v2?division=Guides\u0026amp;title=Which+API+should+I+use%3F\u0026amp;description=Modulate%27s+model+families%2C+what+each+model+returns%2C+and+how+to+choose+between+endpoints+that+overlap.\u0026amp;theme=5b1c5018c22e2de339bbf72b\u0026amp;signature=621e44cd47bd79aed80f3f935110ae81e3a30897005ccc64daee24f44b3f96b8\">\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/modulateai/DjDAyeOufX95soiv/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Modulate\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#285FEB\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.modulate.ai/guides/which-api\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/which-api.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.modulate.ai/#organization\",\"name\":\"Modulate\",\"url\":\"https://docs.modulate.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/modulateai/0NHKM9zXEnghoEfZ/images/wordmark-navy.svg?fit=max\u0026auto=format\u0026n=0NHKM9zXEnghoEfZ\u0026q=85\u0026s=7ee7a19111bb0154aa2e6934ebd29607\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.modulate.ai#website\",\"name\":\"Modulate\",\"url\":\"https://docs.modulate.ai\",\"publisher\":{\"@id\":\"https://docs.modulate.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.modulate.ai/guides/which-api#webpage\",\"url\":\"https://docs.modulate.ai/guides/which-api\",\"name\":\"Which API should I use?\",\"description\":\"Modulate's model families, what each model returns, and how to choose between endpoints that overlap.\",\"dateModified\":\"2026-10-23T02:50:50.118Z\",\"isPartOf\":{\"@id\":\"https://docs.modulate.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.modulate.ai/guides/which-api#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.modulate.ai/guides/which-api#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Modulate\",\"item\":\"https://docs.modulate.ai\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Which API should I use?\",\"item\":\"https://docs.modulate.ai/guides/which-api\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.modulate.ai/guides/which-api#article\",\"headline\":\"Which API should I use?\",\"name\":\"Which API should I use?\",\"description\":\"Modulate's model families, what each model returns, and how to choose between endpoints that overlap.\",\"url\":\"https://docs.modulate.ai/guides/which-api\",\"mainEntityOfPage\":{\"@id\":\"https://docs.modulate.ai/guides/which-api#webpage\"},\"dateModified\":\"2026-10-23T02:50:50.118Z\",\"publisher\":{\"@id\":\"https://docs.modulate.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.modulate.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Modulate\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Modulate","nav":{"global":null,"tabs":[{"tab":"Get Started","groups":[{"group":"Get started","pages":[{"title":"Modulate developer docs","href":""},{"title":"Quick start","href":"/quickstart"}]},{"group":"By capability","pages":[{"title":"Velma Triage","href":"/get-started/velma"},{"title":"Transcription","href":"/get-started/stt"},{"title":"Deepfake Detection","href":"/get-started/deepfake"},{"title":"PII/PHI Redaction","href":"/get-started/pii"},{"title":"Emotion Detection","href":"/get-started/emotion"},{"title":"Accent Detection","href":"/get-started/accent"},{"title":"Music \u0026 Speech Detection","href":"/get-started/music-detection"},{"title":"AI Music Detection","href":"/get-started/ai-music-detection"},{"title":"Language Detection","href":"/get-started/language-detection"},{"title":"Audio Event Detection","href":"/get-started/audio-event-detection"}]},{"group":"Build end to end","pages":[{"title":"Screen a call for voice fraud","description":"Combine Deepfake Detection and Velma Triage on one recording to decide whether a call needs review, then evaluate the result against a test matrix.","icon":"user-shield","href":"/get-started/voice-fraud-screening"}]},{"group":"Guides","pages":[{"title":"Which API should I use?","href":"/guides/which-api"},{"title":"Authentication and rate limits","description":"How to pass a Modulate API key, which limits apply per model, and what each auth and limit error means.","href":"/guides/authentication"}]},{"group":"Account admin","pages":[{"title":"Auto top-up","icon":"arrows-rotate","href":"/account-admin/auto-top-up"}]}]},{"tab":"Velma","pages":[{"title":"Velma","href":"/velma/overview"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/velma/overview"}]},{"tab":"Benchmarks","pages":[{"title":"Benchmarks","href":"/benchmarks/overview"}]},{"tab":"Support","pages":[{"title":"Support","href":"/support"}]}]},"basePath":"","title":"Which API should I use? - Modulate","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":[],"chunks":[]}