Skip to navigation

Redaction

Redaction removes sensitive information from your transcripts.

redact string Default: False

Pre-recorded Streaming:NovaStreaming:Flux Specific languages only

Redaction options

Redaction has two kinds:

  • Number redaction (numbers, true, aggressive_numbers) — redacts numeric sequences such as account and card numbers.
  • Entity redaction (pci, pii, phi, and specific entity types) — redacts recognized entities such as names, addresses, and PHI. Available for English only.

Redaction groups

Deepgram provides the following options to redact common groups of entities:

  • pci: Redacts credit card information, including credit card number, expiration date, and CVV.
  • pii: Redacts a broad range of personally identifiable information, including names, locations, and identifying numbers.
  • phi: Redacts protected health information, including medical conditions, drugs, injuries, blood types, medical processes, and statistics.
  • numbers (or true): Redacts any sequence of three or more consecutive numerals, plus the entity types in the numbers redaction group (dates, account numbers, credit cards, SSNs, and more).
  • aggressive_numbers: Redacts every numeral (including single- and two-digit numbers), plus the entity types in the numbers redaction group.

To see exactly which entity types are included in each group, refer to the Redaction Groups column in the Supported Entity Types table.

Specific entity types

You may select the types of entities you wish to redact from over 50 supported entity types. Some options include credit_card, credit_card_expiration, cvv, and email_address.

Specific entity types rely on entity recognition and are available for English only.

Multichannel audio

For pre-recorded audio sent with multichannel=true, entity redaction uses context from all channels. For example, a CVV read out by a customer on one channel can be recognized from the agent’s question on another. Streaming entity redaction uses only the channel the value was spoken on. The entity types included in numbers and aggressive_numbers use the same labels. Their numeral rules (three or more consecutive numerals for numbers, every numeral for aggressive_numbers) do not depend on context. See Entity Detection: Multichannel Audio for an example.

Enable redaction

To enable redaction, add the redact parameter to the query string when you call Deepgram’s /listen endpoint:

redact=OPTION

Send multiple redaction values by repeating the parameter: redact=pci&redact=numbers.

Examples

To transcribe pre-recorded audio and remove PCI data from a file, run:

cURL
curl \
--request POST \
--header 'Authorization: Token YOUR_DEEPGRAM_API_KEY' \
--header 'Content-Type: audio/wav' \
--data-binary @youraudio.wav \
--url 'https://api.deepgram.com/v1/listen?redact=pci'

To remove both PCI and PII data, repeat the parameter:

cURL
curl \
--request POST \
--header 'Authorization: Token YOUR_DEEPGRAM_API_KEY' \
--header 'Content-Type: audio/wav' \
--data-binary @youraudio.wav \
--url 'https://api.deepgram.com/v1/listen?redact=pci&redact=pii'

Replace YOUR_DEEPGRAM_API_KEY with your Deepgram API Key.

How redacted output looks

Redaction replaces redacted content with a tag containing the entity type and an index. The index identifies a distinct detected value, not an occurrence count: within a transcript, each unique value of an entity type gets its own number, and repeat mentions of the same value reuse it. For example, with redact=ssn, the phrase “My social security number is five five five two two one one one one and his is six six six two two one three three three” appears in your transcript as “My social security number is [SSN_1] and his is [SSN_2]”. Index assignment is best-effort, so don’t rely on it to link mentions.

With redact=name, repeated mentions of the same name share a tag:

Before redactAfter redact
Hi, this is John Miller. My colleague Bob Smith is helping me. Thanks, John Miller. I’ll follow up with Bob Smith.Hi, this is [NAME_1]. My colleague [NAME_2] is helping me. Thanks, [NAME_1]. I’ll follow up with [NAME_2].

Numerals that match an entity type in the numbers group are tagged with the specific entity ([CREDIT_CARD_1], [SSN_1], etc.). Sequences caught only by the digit-length rule — three or more numerals for numbers/true, one or more for aggressive_numbers — are replaced with a generic [REDACTED] placeholder.

On Nova streaming (/v1/listen), Deepgram follows a two-phase approach. During interim results, the system returns a generic [REDACTED] placeholder while it continues evaluating the spoken content. Once a segment is complete and Deepgram has high confidence in the detected entity, the placeholder is replaced with a specific entity tag. This replacement may occur in a later interim result or in the final result. Indexes persist for the whole stream: a value tagged [NAME_1] early in the stream keeps that tag in later segments, and new values continue the count.

For the highest streaming redaction accuracy, set no_delay=false or omit no_delay entirely. Setting no_delay=true opts for low latency at the risk of redaction performance.

Flux (/v2/listen) uses a different output format — see Redaction on Flux.

Example with redact=pci&redact=pii:

SourceBefore redactAfter redact
my credit card number is four four four four nine nine nine nine three three three three two two two two with an expiration date of one twenty three and the cvv code is one one one i live at one two three main street dallas texas seven five two zero one my phone number is five five five two one two nine three three three my date of birth is july twelfth nineteen seventy sixmy credit card number is four four four four nine nine nine nine three three three three two two two two with an expiration date of one twenty three and the cvv code is one one one i live at one two three main street dallas texas seven five two zero one my phone number is five five five two one two nine three three three my date of birth is july twelfth nineteen seventy sixmy credit card number is [CREDIT_CARD_1] with an expiration date of [CREDIT_CARD_EXPIRATION_1] and the cvv code is [CVV_1] i live at [LOCATION_ADDRESS_1] my phone number is [PHONE_NUMBER_1] my date of birth is [DOB_1]

Language support

Redaction language coverage differs by kind and deployment:

EnvironmentNumber redactionEntity redaction
Hosted API — pre-recordedAll available languagesEnglish only
Hosted API — Nova streaming (/v1/listen)12 languages (see below)English only
Hosted API — Flux streaming (/v2/listen)numbers, aggressive_numbers onlyNot supported
Self-hosted — pre-recordedBulgarian, Cantonese, Chinese, Danish, Dutch, English, French, German, German (Swiss), Hebrew, Italian, Japanese, Korean, Malay, Norwegian, Polish, Portuguese, Romanian, Russian, Spanish, SwedishEnglish only
Self-hosted — streamingAll loaded Nova-3 languages (see note below)English only

On the hosted API, pre-recorded (batch) number redaction is available for all supported languages. In hosted streaming, it is limited to:

Danish, Dutch, English, French, German, German (Swiss), Italian, Norwegian, Polish, Portuguese, Spanish, and Swedish.

On multilingual models (language=multi), each word is redacted using its detected language’s number rules, so a single transcript can mix languages. In hosted streaming, detected languages outside the set above fall back to English number rules.

Self-hosted number redaction requires release 260430 or later; Bulgarian, Chinese, and Cantonese require 260611 or later, Malay 260714, Korean 260728, and Japanese 261001 (language=multi requires 260611 or later). Pre-recorded requests support the languages listed in the table; a pre-recorded request in any other language returns an error. Streaming requests accept every loaded Nova-3 language; outside the pre-recorded list, spelled-out numbers use English number rules, and digits are redacted in every language.

For non-English audio, only numbers are redacted. Entity redaction — names, addresses, PHI, and other pii/phi entities — is applied for English only, even when you request true.

Redaction on Flux

Flux (/v2/listen) supports number redaction only. redact accepts numbers and aggressive_numbers; any other value — including true, pci, pii, phi, and specific entity types such as ssn or credit_card — is rejected: the WebSocket connection fails to open with an HTTP 400 at connection time rather than being silently ignored. Use Nova streaming or pre-recorded for entity redaction.

Number redaction works on both flux-general-en and flux-general-multi. Because Flux does not produce word-level language tags, number redaction is applied across every language detected in the transcript.

Currently, Flux replaces each redacted span with a single * (for example, my phone number is *) rather than the [REDACTED] placeholder or specific entity tags (such as [CREDIT_CARD_1]) used by Nova — Flux performs digit redaction only, without entity recognition. Treat the redacted text as removed rather than depending on this exact placeholder format, which may change.