Need to auto-detect a caller’s language before routing transcripts or running downstream NLP? Deepgram does support language detection, but only on specific models and only for pre-recorded audio. Here’s the reference I wish I had when wiring voice pipelines into n8n and Render.
Quick capabilities matrix
| Model family | Example model IDs | Supports detect_language? | Streaming support? | Notes |
|---|---|---|---|---|
| Nova-3 | nova-3, nova-3-general, nova-3-medical | ✅ Yes (pre-recorded only) | ❌ No | Flag detect_language=true. Streaming endpoints ignore it. |
| Nova-2 | nova-2, nova-2-general, nova-2-meeting, nova-2-phonecall, etc. | ✅ Yes (pre-recorded only) | ❌ No | Works across domain-specific variants. |
| Nova (legacy) | nova, nova-general, nova-phonecall, nova-medical | ✅ Yes (pre-recorded only) | ❌ No | Still supported for batch jobs. |
| Enhanced | enhanced, enhanced-general, enhanced-meeting, enhanced-phonecall, etc. | ✅ Yes (pre-recorded only) | ❌ No | Use when you need higher accuracy but don’t require streaming. |
| Base | base, base-general, base-meeting, base-phonecall, etc. | ✅ Yes (pre-recorded only) | ❌ No | Entry-level models still handle detection for offline audio. |
| Whisper via Deepgram | whisper-base, whisper-large, etc. | ❌ No | ❌ No | Whisper uses its own detection. Deepgram’s detect_language flag is ignored and you can’t restrict language sets. |
Important constraints
- Language detection only works for batch (pre-recorded) requests. Streaming (
/listen/stream) will not honordetect_language. - The detectable language set is smaller than the full transcription language list. Check Deepgram’s Language Detection docs if you need a particular locale.
- Whisper models ignore the
detect_languageflag entirely; you can’t narrow or enforce languages when calling them through Deepgram.
Batch transcription example
curl --request POST \
--header "Authorization: Token $DEEPGRAM_API_KEY" \
--header 'Content-Type: audio/wav' \
--data-binary @youraudio.wav \
--url 'https://api.deepgram.com/v1/listen?model=nova-3-general&detect_language=true'Swap nova-3-general for any of the supported models in the table above. Deepgram returns a detected_language field in the response, allowing you to branch workflows on the fly.
Production checklist
- Batch-only: Ship your audio file and wait for the JSON response. Streaming integrations require your own language detection fallback.
- Model pick: Choose a Nova 3/2, Enhanced, or Base variant if detection matters. Avoid Whisper unless you’ve already handled language outside of Deepgram.
- Management API: Need to confirm what’s available to your account? Call
GET /v1/modelsorGET /v1/projects/{project_id}/modelsfor a live list before hard-coding IDs.
Available model names (September 2025)
Use any of the following in the model query parameter:
- Nova 3:
nova-3,nova-3-general,nova-3-medical - Nova 2:
nova-2,nova-2-general,nova-2-meeting,nova-2-phonecall,nova-2-finance,nova-2-conversationalai,nova-2-voicemail,nova-2-video,nova-2-medical,nova-2-drivethru,nova-2-automotive,nova-2-atc - Nova (legacy):
nova,nova-general,nova-phonecall,nova-medical - Enhanced:
enhanced,enhanced-general,enhanced-meeting,enhanced-phonecall,enhanced-finance - Base:
base,base-general,base-meeting,base-phonecall,base-finance,base-conversationalai,base-voicemail,base-video - Whisper (no detection):
whisper-tiny,whisper-base,whisper-small,whisper-medium,whisper-large
When in doubt, query the Management API to confirm active names. Deepgram occasionally retires or renames variants.
Takeaways
- Detection + streaming isn’t a thing. Plan for batch if you need auto-language pivoting.
- Stick to Nova/Enhanced/Base for language detection. Whisper is transcription-only in this context.
- Parameterize everything. Keep
modelanddetect_languagein config so you can toggle per project.
Pair this guide with your n8n automations or Render services, and you’ll know exactly which Deepgram knob to turn before launching multi-lingual voice features.