Skip to content
speechinfraConsole

Deepgram · ASR

Nova-3 Batch

General-purpose speech recognition with language detection and detailed timestamps.

nova-3-batch
$0.005 / audio minuteTry in Console

Current 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.

ParameterTypeDetails
file

Required

string

Short audio or video file. Direct API limit: 30 seconds, 20 MiB.

languagestring

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"
]
keytermsarray

max 100 items

smart_formatboolean

Apply punctuation and formatting. Disabled by default for clean JSON output.

default: false

diarize_modelstring

enum: off, latest, v1, v2 · default: "off"

All accepted values
[
  "off",
  "latest",
  "v1",
  "v2"
]
utterancesboolean

Return utterance-level segments. Disabled by default for clean JSON output.

default: false

utt_splitnumber

default: 0.8 · min: 0 · max: 10

Applies when: {"utterances":true}

filler_wordsboolean

default: false

profanity_filterboolean

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"
}