Using Deepgram Audio Intelligence (JavaScript / TypeScript SDK)
Analytics overlays applied to /v1/listen: summaries, topics, intents, sentiment, language detection, diarization, redaction, entities. Same client surface as STT; turn features on with parameters.
When to use this product
- You have audio and want analytics returned alongside the transcript.
- REST is the primary path; the WebSocket path supports only a subset of intelligence features.
Use a different skill when:
- You just want transcript output →
deepgram-js-speech-to-text.
- You already have text and want analytics on that text →
deepgram-js-text-intelligence.
- You need Flux turn-taking →
deepgram-js-conversational-stt.
- You need a full interactive voice agent →
deepgram-js-voice-agent.
Feature availability: REST vs WSS
| Feature |
REST |
WSS |
diarize |
yes |
yes |
redact |
yes |
yes |
detect_entities |
yes |
yes |
punctuate, smart_format |
yes |
yes |
summarize |
yes |
no in current WSS connect args |
topics |
yes |
no |
intents |
yes |
no |
sentiment |
yes |
no |
detect_language |
yes |
no |
Authentication
require("dotenv").config();
const { DeepgramClient } = require("@deepgram/sdk");
const deepgramClient = new DeepgramClient({
apiKey: process.env.DEEPGRAM_API_KEY,
});
Quick start — REST with analytics
From examples/22-transcription-advanced-options.ts:
const data = await deepgramClient.listen.v1.media.transcribeUrl({
url: "https://dpgr.am/spacewalk.wav",
model: "nova-3",
language: "en",
punctuate: true,
paragraphs: true,
utterances: true,
smart_format: true,
sentiment: true,
topics: true,
custom_topic: "custom_topic",
custom_topic_mode: "extended",
intents: true,
custom_intent: "custom_intent",
custom_intent_mode: "extended",
detect_entities: true,
detect_language: true,
diarize: true,
keyterm: ["keyword1", "keyword2"],
redact: ["pci", "ssn"],
});
Quick start — WSS subset
Start from examples/07-transcription-live-websocket.ts and keep the same socket flow, but only use WSS-supported intelligence flags such as diarize, redact, and detect_entities in the connection args.
const deepgramConnection = await deepgramClient.listen.v1.createConnection({
model: "nova-3",
diarize: true,
redact: "pci",
detect_entities: true,
});
Key parameters / API surface
- Analytics flags:
summarize, topics, intents, sentiment, detect_language, detect_entities, diarize, redact, custom_topic, custom_topic_mode, custom_intent, custom_intent_mode.
- Standard STT flags still apply:
model, language, encoding, sample_rate, punctuate, smart_format, utterances, paragraphs, multichannel.
- Nova-3-specific biasing in repo examples uses
keyterm, not keywords.
API reference (layered)
- In-repo reference:
reference.md → Listen V1 Media; WSS subset behavior lives in src/CustomClient.ts and src/api/resources/listen/resources/v1/client/{Client,Socket}.ts.
- Canonical OpenAPI (REST): https://developers.deepgram.com/openapi.yaml
- Canonical AsyncAPI (WSS): https://developers.deepgram.com/asyncapi.yaml
- Context7: library ID
/llmstxt/developers_deepgram_llms_txt
- Product docs:
Gotchas
summarize on /v1/listen is versioned, not plain boolean. The generated REST surface and examples point at "v2".
- Most intelligence flags are REST-only. Current WSS connect args do not expose
topics, intents, sentiment, summarize, or detect_language.
redact typing is looser in practice than in the generated alias. Examples pass arrays like ["pci", "ssn"], even though ListenV1Redact itself is just a string alias.
- Use
keyterm for Nova-3 biasing. examples/22-transcription-advanced-options.ts explicitly notes keywords are not supported for Nova-3.
- Model/feature support is product-side.
nova-3 is the safest choice when mixing many overlays.
- Diarization quality depends on audio quality and duration. Short or noisy clips churn speakers.
Example files in this repo
examples/22-transcription-advanced-options.ts
examples/04-transcription-prerecorded-url.ts
examples/05-transcription-prerecorded-file.ts
examples/07-transcription-live-websocket.ts
Central product skills
For cross-language Deepgram product knowledge — the consolidated API reference, documentation finder, focused runnable recipes, third-party integration examples, and MCP setup — install the central skills:
npx skills add deepgram/skills
This SDK ships language-idiomatic code skills; deepgram/skills ships cross-language product knowledge (see api, docs, recipes, examples, starters, setup-mcp).
1---2name: deepgram-js-audio-intelligence3description: Use when writing or reviewing JavaScript/TypeScript in this repo that calls Deepgram audio analytics overlays on `/v1/listen` - summarize, topics, intents, sentiment, diarize, redact, detect_language, and entity detection. Same endpoint as plain STT, different params. Covers REST via `client.listen.v1.media.transcribeUrl` / `transcribeFile` and the WebSocket-supported subset on `client.listen.v1.createConnection()` / `connect()`. Use `deepgram-js-speech-to-text` for plain transcription and `deepgram-js-text-intelligence` for analytics on already-transcribed text. Triggers include "audio intelligence", "summarize audio", "diarize", "sentiment from audio", "redact PII", and "detect language audio".4---56# Using Deepgram Audio Intelligence (JavaScript / TypeScript SDK)78Analytics overlays applied to `/v1/listen`: summaries, topics, intents, sentiment, language detection, diarization, redaction, entities. Same client surface as STT; turn features on with parameters.910## When to use this product1112- You have **audio** and want analytics returned alongside the transcript.13- REST is the primary path; the WebSocket path supports only a subset of intelligence features.1415**Use a different skill when:**16- You just want transcript output → `deepgram-js-speech-to-text`.17- You already have text and want analytics on that text → `deepgram-js-text-intelligence`.18- You need Flux turn-taking → `deepgram-js-conversational-stt`.19- You need a full interactive voice agent → `deepgram-js-voice-agent`.2021## Feature availability: REST vs WSS2223| Feature | REST | WSS |24|---|---|---|25| `diarize` | yes | yes |26| `redact` | yes | yes |27| `detect_entities` | yes | yes |28| `punctuate`, `smart_format` | yes | yes |29| `summarize` | yes | no in current WSS connect args |30| `topics` | yes | no |31| `intents` | yes | no |32| `sentiment` | yes | no |33| `detect_language` | yes | no |3435## Authentication3637```js38require("dotenv").config();3940const { DeepgramClient } = require("@deepgram/sdk");4142const deepgramClient = new DeepgramClient({43 apiKey: process.env.DEEPGRAM_API_KEY,44});45```4647## Quick start — REST with analytics4849From `examples/22-transcription-advanced-options.ts`:5051```js52const data = await deepgramClient.listen.v1.media.transcribeUrl({53 url: "https://dpgr.am/spacewalk.wav",54 model: "nova-3",55 language: "en",56 punctuate: true,57 paragraphs: true,58 utterances: true,59 smart_format: true,60 sentiment: true,61 topics: true,62 custom_topic: "custom_topic",63 custom_topic_mode: "extended",64 intents: true,65 custom_intent: "custom_intent",66 custom_intent_mode: "extended",67 detect_entities: true,68 detect_language: true,69 diarize: true,70 keyterm: ["keyword1", "keyword2"],71 redact: ["pci", "ssn"],72});73```7475## Quick start — WSS subset7677Start from `examples/07-transcription-live-websocket.ts` and keep the same socket flow, but only use WSS-supported intelligence flags such as `diarize`, `redact`, and `detect_entities` in the connection args.7879```js80const deepgramConnection = await deepgramClient.listen.v1.createConnection({81 model: "nova-3",82 diarize: true,83 redact: "pci",84 detect_entities: true,85});86```8788## Key parameters / API surface8990- Analytics flags: `summarize`, `topics`, `intents`, `sentiment`, `detect_language`, `detect_entities`, `diarize`, `redact`, `custom_topic`, `custom_topic_mode`, `custom_intent`, `custom_intent_mode`.91- Standard STT flags still apply: `model`, `language`, `encoding`, `sample_rate`, `punctuate`, `smart_format`, `utterances`, `paragraphs`, `multichannel`.92- Nova-3-specific biasing in repo examples uses `keyterm`, not `keywords`.9394## API reference (layered)95961. **In-repo reference**: `reference.md` → `Listen V1 Media`; WSS subset behavior lives in `src/CustomClient.ts` and `src/api/resources/listen/resources/v1/client/{Client,Socket}.ts`.972. **Canonical OpenAPI (REST)**: https://developers.deepgram.com/openapi.yaml983. **Canonical AsyncAPI (WSS)**: https://developers.deepgram.com/asyncapi.yaml994. **Context7**: library ID `/llmstxt/developers_deepgram_llms_txt`1005. **Product docs**:101 - https://developers.deepgram.com/docs/stt-intelligence-feature-overview102 - https://developers.deepgram.com/docs/summarization103 - https://developers.deepgram.com/docs/topic-detection104 - https://developers.deepgram.com/docs/intent-recognition105 - https://developers.deepgram.com/docs/sentiment-analysis106 - https://developers.deepgram.com/docs/language-detection107 - https://developers.deepgram.com/docs/redaction108 - https://developers.deepgram.com/docs/diarization109110## Gotchas1111121. **`summarize` on `/v1/listen` is versioned, not plain boolean.** The generated REST surface and examples point at `"v2"`.1132. **Most intelligence flags are REST-only.** Current WSS connect args do not expose `topics`, `intents`, `sentiment`, `summarize`, or `detect_language`.1143. **`redact` typing is looser in practice than in the generated alias.** Examples pass arrays like `["pci", "ssn"]`, even though `ListenV1Redact` itself is just a string alias.1154. **Use `keyterm` for Nova-3 biasing.** `examples/22-transcription-advanced-options.ts` explicitly notes keywords are not supported for Nova-3.1165. **Model/feature support is product-side.** `nova-3` is the safest choice when mixing many overlays.1176. **Diarization quality depends on audio quality and duration.** Short or noisy clips churn speakers.118119## Example files in this repo120121- `examples/22-transcription-advanced-options.ts`122- `examples/04-transcription-prerecorded-url.ts`123- `examples/05-transcription-prerecorded-file.ts`124- `examples/07-transcription-live-websocket.ts`125126## Central product skills127128For cross-language Deepgram product knowledge — the consolidated API reference, documentation finder, focused runnable recipes, third-party integration examples, and MCP setup — install the central skills:129130```bash131npx skills add deepgram/skills132```133134This SDK ships language-idiomatic code skills; `deepgram/skills` ships cross-language product knowledge (see `api`, `docs`, `recipes`, `examples`, `starters`, `setup-mcp`).