*What a Persona hears in a voice message, what she does with it, and the limits a recording has to fit.*

## Overview

Some Users talk instead of typing. Give us the recording and the Persona answers it like a person would.

We fetch the file, transcribe what was said, and describe how it sounded: the delivery, the emotional colour of the voice, whether someone else is in the room, what is audible behind them. The Persona then replies to **what was said and to how it was said** — the part a transcript alone throws away.

Three things to know before you read further:

- **Inbound only.** We understand the voice messages a User sends. The Persona never sends one back.
- **Nothing to switch on.** Unlike [Vision Link](/content-creation/vision-link), there is no option to enable. A message that carries `audioUrls` is analyzed, and you are billed for it.
- **The Persona never pretends to have heard something.** A recording we could not use is said to be unheard, in her own words, rather than guessed at.

## Availability

Every Chat Model 2.0 and above hears voice messages in full.

| Chat Model | Voice |
| --- | --- |
| `chat-2.1-pro` | Yes |
| `chat-2.1-smart` | Yes |
| `chat-2-pro` | Yes |
| `chat-2-smart` | Yes |
| `dating-pro-1` | Words only |
| `dating-smart-1` | Words only |

On the `dating-*-1` models the transcript still reaches the Persona as the text of the message, so she answers the words. She is not told the message was spoken and she is given none of the acoustic detail below. See [Model Versions](/getting-started/model-versions).

## What the Persona Is Told

She is told that the message was spoken, then what the analysis heard.

| What she gets | Example of what it carries |
| --- | --- |
| The words | The transcript, in the language it was spoken in. We never translate it. |
| What the audio mostly is | Speech, singing, music, background noise, silence, or a mix of them. |
| How the voice is used | Normal, whispered, shouted, sung, guttural, distorted, robotic. |
| The tone of the delivery | Neutral, jovial, excited, flirtatious, sad, angry, anxious, tired, flat. |
| Whether it sounds unusual | Growled, pitch-shifted, heavily processed, played through a speaker. |
| Whether the User was alone | Alone, someone with them and part of the exchange, or other voices around them. |
| A notable accent | Named plainly, and only when there is something worth naming. |
| What is audible behind them | Music, a street, a television, a room. |
| How well it could be heard | Whether parts were hard to make out. |

<Note>
**We report what was heard, never why it was sent.** Someone singing may be sharing a song they wrote or checking whether they reached a machine, and the recording cannot tell the two apart. The Persona is given the observation and reads the situation herself.
</Note>

<Warning>
**We say nothing about who the voices belong to.** No age, no gender, no guess at who a second voice is or what they are to the User. A voice is poor evidence about a person, and a Persona remarking on a wrong guess costs more than a right one gains. "Someone is in the room with them" is the fact we report; who that someone is, we do not.
</Warning>

## Limits a Recording Has to Fit

| Limit | Value |
| --- | --- |
| Length | **30 seconds.** A longer recording is not listened to at all. |
| Size | **8 MB.** A larger file is refused before we finish downloading it. |
| Formats | `wav`, `mp3`, `m4a`, `mp4`, `aac`, `ogg`, `opus`, `webm`, `flac`, `caf` |
| Per message | **The first URL only.** Put one voice message on one chat history message. |

<Warning>
**The format is read from the URL, not from the file.** The extension has to be in the path, before any query string: `https://cdn.example.com/u/1042/note.m4a?sig=abc` works, `https://cdn.example.com/media/9f2c1b` does not. A URL we cannot name a format for is **not analyzed at all** — no transcript, no analysis, no charge, and the Persona is never told the message existed. This is the most common reason a voice integration silently does nothing.
</Warning>

Every URL must be publicly reachable at the moment we generate the answer, HTTPS strongly recommended. Signed URLs are fine as long as they are still valid when we fetch them.

## When a Recording Cannot Be Used

None of these break the reply. She answers, and she is honest about what she got.

| What happened | What the Persona does |
| --- | --- |
| **Nothing on the recording** — a muted, unplugged or denied mic | Says lightly that she got it but heard nothing, that their mic looks off, and asks for another one. |
| **Longer than 30 seconds** | Says plainly that it was too long to play, and asks for a shorter one. She never implies she heard any part of it. |
| **Too noisy to make out** | Reacts to how it sounded and says she could not catch the words. |
| **Spoken in a language she does not have** | Reacts to how it sounded. She is never shown the words, and never hints at what they meant. |
| **We could not fetch or analyze it** | Answers the conversation without it. She is not told a voice message was sent. |

<Note>
**A quiet recording is not an empty one.** Someone speaking softly, or playing a piece they wrote, is answered normally. Only a recording that captured no signal whatsoever gets the "your mic looks off" treatment.
</Note>

## Pricing

**Base cost:** €0.015 per analyzed voice message, flat, whatever the length.

- **We key an analysis by URL.** The same URL is analyzed once and billed once, however many conversations or projects it appears in, and the result is kept for a year.
- **Change the file behind a URL and it is a new recording.** Fresh analysis, and you pay again.
- **A recording with no signal at all is free.** We recognise it from the audio itself and never ask a model, so there is nothing to charge for.
- **A recording over 30 seconds is free.** We decline to listen rather than analyze an opening.
- **A recording we cannot fetch, or cannot name a format for, is free.** No analysis, no charge.

Analyses appear as their own **Voice Message Analyses** line item on your [pricing page](https://dash.dumgum.ai/pricing) and invoices. Volumes come back on the [Project Statistics endpoint](/api-reference/content-creation/endpoints/project-statistics) as `audioAnalysisCount` and `audioAnalysisCost`, outside the answer spend — voice messages are billed when the message arrives, not when a reply is written.

## Technical Implementation

### Step 1: Return Voice URLs in Your Chat History

In the [Chat History Endpoint](/content-creation/customer-endpoints/chat-history-endpoint) you host, add an `audioUrls` array to the message that carried the recording. It sits alongside `text`, `pictureUrls` and `videoUrls`.

```json
{
  "messages": [
    {
      "id": "msg_1042",
      "sender": "USER",
      "date": "2026-09-14T10:00:00Z",
      "audioUrls": ["https://cdn.example.com/u/1042/note.m4a"],
      "audioLevelsDb": { "https://cdn.example.com/u/1042/note.m4a": -14.9 }
    }
  ]
}
```

That is the whole integration. There is no reply parameter to set.

<Warning>
**Send the voice message on a message of its own.** A `text` you send wins over the transcript: if the same message carries both, the Persona reads your text and the spoken words are dropped. She is still told how the recording sounded, but not what was said.
</Warning>

Keep the message `id` stable. We analyze a recording once, when the message first reaches us, so replaying your history on later turns costs nothing.

### Step 2: Send the Measured Level, If You Can

`audioLevelsDb` holds the loudness of each recording in dBFS, keyed by its URL. It is optional and partial — send what you can measure.

A level you do not send, we measure ourselves, so nothing is lost by omitting it. Sending it saves that round-trip, and both the browser and iOS give the number away while recording.

### Step 3: Read the Reply

Nothing about the answer changes. The reply comes back as ordinary text on [`message`](/api-reference/content-creation/data-types/answer), and the Persona never returns audio.

The transcript is treated as User text everywhere else, too: it is what [Core Guardian](/content-creation/core-guardian) reads, what the moderation checks read, and what gets translated. A User cannot get past your safeguards by speaking instead of typing.

### Step 4: Try It Before You Ship

The [Playground](https://dash.dumgum.ai/content-creation/playground) records a voice message from your browser and sends it exactly as your integration would — same analysis, same cache, same 30-second limit, refusals included. It is the fastest way to hear what a Persona does with a clip before you write any code.

## Frequently Asked Questions

**Do we have to enable anything?**
No. There is no reply parameter and no project setting. A message carrying `audioUrls` is analyzed.

**Can the Persona send voice messages back?**
No. Understanding is inbound only.

**The Persona ignored a voice message entirely. Why?**
Almost always the URL: no recognisable extension in the path, unreachable when we generated the answer, or over 8 MB. In all three cases we leave the message as it arrived and she answers around it. Check the extension first.

**Do you translate what was said?**
Never. The transcript is always in the language it was spoken in, and a translated transcript is treated as a failed analysis.

**What if the User speaks a language the Persona does not have?**
She is told how the recording sounded and is never shown the words. She reacts to the voice without carrying on as though she had understood it. The languages she has are the reply language plus `additionalLanguages`.

**Is a voice message counted in the answer cost?**
No. It is billed on arrival, as its own line. See [Pricing](#pricing).

**We re-sent the same conversation history. Are we billed twice?**
No. An analysis is keyed by URL and kept for a year, and a message we have already stored is not analyzed again.

**Can a User slip something past moderation by recording it?**
No. The transcript becomes the text of the message, and every guardrail reads it as though it had been typed.

**Is there a rejection event for voice messages, like `chat.image.rejected`?**
No. Voice messages have no rejection event today. Photos and videos do — see [Vision Link](/content-creation/vision-link).

**Can we send several recordings on one message?**
Only the first is analyzed. Put one recording on one message.
