Deepgram · ASR
Nova-3 Batch
General-purpose speech recognition with language detection and detailed timestamps.
nova-3-batchCurrent model-specific price from our catalog. Requests require your project API key and sufficient balance. Availability is checked at execution time.
Input and capabilities
Upload a short audio or video file using multipart/form-data: at most 30 seconds and 20 MiB. Use WAV for the examples below. Container compatibility depends on the model.
- transcription
- diarization
- word timestamps
- segment timestamps
- hotwords
Automatic language detection: supported.
Supported language codes: af, ar, hy, as, be, bn, bs, bg, ca, zh, hr, cs, da, nl, en, et, fi, fr, ka, de, el, gu, he, hi, hu, id, it, ja, kn, kk, ko, lv, lt, mk, ms, mr, mn, ne, no, ps, fa, pl, pt, pa, ro, ru, sr, sk, sl, es, sv, tl, ta, te, th, tr, uk, ur, vi.
API endpoint
POST https://api.speechinfra.com/v1/inference/nova-3-batch
Authenticate with your Speechinfra project key. Read the quickstart and billing guide.
cURL
curl --fail-with-body "https://api.speechinfra.com/v1/inference/nova-3-batch" \
-H "Authorization: Bearer $SPEECH_API_KEY" \
-F "file=@clip.wav" \
--form-string "language=auto" \
--form-string "smart_format=false" \
--form-string "diarize_model=off" \
--form-string "utterances=false" \
--form-string "filler_words=false" \
--form-string "profanity_filter=false"Python
# pip install httpx
import os
import httpx
headers = {"Authorization": "Bearer " + os.environ["SPEECH_API_KEY"]}
with open("clip.wav", "rb") as audio:
response = httpx.post(
"https://api.speechinfra.com/v1/inference/nova-3-batch",
headers=headers, files={"file": ("clip.wav", audio, "audio/wav")},
data={
"language": "auto",
"smart_format": "false",
"diarize_model": "off",
"utterances": "false",
"filler_words": "false",
"profanity_filter": "false"
}, timeout=90,
)
response.raise_for_status()
print(response.json())Node.js / fetch
// Node.js 22+, no SDK required.
import { readFile } from 'node:fs/promises';
const form = new FormData();
form.set('file', new Blob([await readFile('clip.wav')]), 'clip.wav');
for (const [key, value] of Object.entries({
"language": "auto",
"smart_format": "false",
"diarize_model": "off",
"utterances": "false",
"filler_words": "false",
"profanity_filter": "false"
})) form.set(key, value);
const response = await fetch("https://api.speechinfra.com/v1/inference/nova-3-batch", {
method: 'POST', body: form, signal: AbortSignal.timeout(90000),
headers: { Authorization: 'Bearer ' + process.env.SPEECH_API_KEY },
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());Request parameters
Generated from the API schema for this deployment. Conditional parameters apply only when their controlling setting is enabled.
| Parameter | Type | Details |
|---|---|---|
fileRequired | string | Short audio or video file. Direct API limit: 30 seconds, 20 MiB. |
language | string | Single-language recognition, or multi for code-switching between: en, es, fr, de, hi, ru, pt, ja, it, nl. enum: auto, af, ar, hy, as, be, bn, bs, bg, ca, zh, hr … · default: "auto" All accepted values[ "auto", "af", "ar", "hy", "as", "be", "bn", "bs", "bg", "ca", "zh", "hr", "cs", "da", "nl", "en", "et", "fi", "fr", "ka", "de", "el", "gu", "he", "hi", "hu", "id", "it", "ja", "kn", "kk", "ko", "lv", "lt", "mk", "ms", "mr", "mn", "ne", "no", "ps", "fa", "pl", "pt", "pa", "ro", "ru", "sr", "sk", "sl", "es", "sv", "tl", "ta", "te", "th", "tr", "uk", "ur", "vi", "af-ZA", "ar-AE", "ar-SA", "ar-QA", "ar-KW", "ar-SY", "ar-LB", "ar-PS", "ar-JO", "ar-EG", "ar-SD", "ar-TD", "ar-MA", "ar-DZ", "ar-TN", "ar-IQ", "ar-IR", "as-IN", "zh-HK", "zh-CN", "zh-TW", "cs-CZ", "da-DK", "en-US", "en-AU", "en-GB", "en-IN", "en-NZ", "nl-BE", "fr-CA", "ka-GE", "de-CH", "gu-IN", "kk-KZ", "ko-KR", "ps-AF", "pt-BR", "pt-PT", "pa-IN", "es-419", "sv-SE", "th-TH", "tr-TR", "multi" ] |
keyterms | array | max 100 items |
smart_format | boolean | Apply punctuation and formatting. Disabled by default for clean JSON output. default: false |
diarize_model | string | enum: off, latest, v1, v2 · default: "off" All accepted values[ "off", "latest", "v1", "v2" ] |
utterances | boolean | Return utterance-level segments. Disabled by default for clean JSON output. default: false |
utt_split | number | default: 0.8 · min: 0 · max: 10 Applies when: |
filler_words | boolean | default: false |
profanity_filter | boolean | default: false |
Complete request schema
{
"type": "object",
"additionalProperties": false,
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"format": "binary",
"description": "Short audio or video file. Direct API limit: 30 seconds, 20 MiB."
},
"language": {
"type": "string",
"default": "auto",
"description": "Single-language recognition, or multi for code-switching between: en, es, fr, de, hi, ru, pt, ja, it, nl.",
"enum": [
"auto",
"af",
"ar",
"hy",
"as",
"be",
"bn",
"bs",
"bg",
"ca",
"zh",
"hr",
"cs",
"da",
"nl",
"en",
"et",
"fi",
"fr",
"ka",
"de",
"el",
"gu",
"he",
"hi",
"hu",
"id",
"it",
"ja",
"kn",
"kk",
"ko",
"lv",
"lt",
"mk",
"ms",
"mr",
"mn",
"ne",
"no",
"ps",
"fa",
"pl",
"pt",
"pa",
"ro",
"ru",
"sr",
"sk",
"sl",
"es",
"sv",
"tl",
"ta",
"te",
"th",
"tr",
"uk",
"ur",
"vi",
"af-ZA",
"ar-AE",
"ar-SA",
"ar-QA",
"ar-KW",
"ar-SY",
"ar-LB",
"ar-PS",
"ar-JO",
"ar-EG",
"ar-SD",
"ar-TD",
"ar-MA",
"ar-DZ",
"ar-TN",
"ar-IQ",
"ar-IR",
"as-IN",
"zh-HK",
"zh-CN",
"zh-TW",
"cs-CZ",
"da-DK",
"en-US",
"en-AU",
"en-GB",
"en-IN",
"en-NZ",
"nl-BE",
"fr-CA",
"ka-GE",
"de-CH",
"gu-IN",
"kk-KZ",
"ko-KR",
"ps-AF",
"pt-BR",
"pt-PT",
"pa-IN",
"es-419",
"sv-SE",
"th-TH",
"tr-TR",
"multi"
]
},
"keyterms": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"maxItems": 100
},
"smart_format": {
"type": "boolean",
"default": false,
"description": "Apply punctuation and formatting. Disabled by default for clean JSON output."
},
"diarize_model": {
"type": "string",
"enum": [
"off",
"latest",
"v1",
"v2"
],
"default": "off"
},
"utterances": {
"type": "boolean",
"default": false,
"description": "Return utterance-level segments. Disabled by default for clean JSON output."
},
"utt_split": {
"type": "number",
"minimum": 0,
"maximum": 10,
"default": 0.8,
"visibleWhen": {
"utterances": true
}
},
"filler_words": {
"type": "boolean",
"default": false
},
"profanity_filter": {
"type": "boolean",
"default": false
}
}
}Response schema
The schema below describes the response; optional fields depend on model settings.
View complete response schema
{
"$defs": {
"Segment": {
"properties": {
"id": {
"title": "Id",
"type": "string"
},
"start": {
"title": "Start",
"type": "number"
},
"end": {
"title": "End",
"type": "number"
},
"text": {
"title": "Text",
"type": "string"
},
"speaker": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Speaker"
},
"language": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Language"
},
"words": {
"items": {
"$ref": "#/$defs/Word"
},
"title": "Words",
"type": "array"
}
},
"required": [
"id",
"start",
"end",
"text"
],
"title": "Segment",
"type": "object"
},
"Word": {
"properties": {
"word": {
"title": "Word",
"type": "string"
},
"start": {
"title": "Start",
"type": "number"
},
"end": {
"title": "End",
"type": "number"
},
"confidence": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Confidence"
},
"speaker": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Speaker"
}
},
"required": [
"word",
"start",
"end"
],
"title": "Word",
"type": "object"
}
},
"properties": {
"text": {
"title": "Text",
"type": "string"
},
"language": {
"default": "und",
"title": "Language",
"type": "string"
},
"language_confidence": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Language Confidence"
},
"duration": {
"default": 0,
"title": "Duration",
"type": "number"
},
"segments": {
"items": {
"$ref": "#/$defs/Segment"
},
"title": "Segments",
"type": "array"
},
"words": {
"items": {
"$ref": "#/$defs/Word"
},
"title": "Words",
"type": "array"
}
},
"required": [
"text"
],
"title": "PublicTranscriptionResult",
"type": "object"
}