---
summary: How messages are recorded, transcribed and summarised, where they show up,
  and the settings that control them.
title: Voicemail
path: concepts/voicemail
status: published
---

Every extension has a voicemail box. A call goes there when the extension is on do-not-disturb, when nobody answers and no later dialplan rule connects, when a ScaiWave user declines to voicemail, or through a `voicemail` dialplan action.

## What the caller hears

1. The greeting: the extension's `voicemail_greeting_text`, or a default naming the extension ("Reception is not available right now. Please leave a message after the tone."). ScaiSpeak speaks it in the tenant's prompt voice and language.
2. A tone, then recording.

Recording stops when the caller hangs up, after about 6 seconds of silence following speech, or after 3 minutes. Calls where the caller never speaks (or speaks for less than a second) leave no message.

## Transcript and summary

When the tenant turns on transcripts (`PATCH /policy` `{"voicemail_transcript_enabled": true}`, admin UI: **ScaiDial → Settings**):

- **`transcript`** — the full message as text, via ScaiEcho.
- **`summary`** — one or two sentences in the message's own language: who called, what they want, any call-back number or time, and whether it's urgent. Generated by a ScaiLabs-hosted model from the transcript, which is told to use only what the caller said.

Both are `null` when transcripts are off. Turning them on applies to new messages only.

## Where messages show up

| Who | Where |
|---|---|
| Tenant admins | **ScaiDial → Voicemail**; `GET /voicemail` (`extension_id`, `only_unheard`, `limit`), `GET /voicemail/{id}/audio`, `POST /voicemail/{id}/listened`, `DELETE /voicemail/{id}` |
| Users | `/my/dial` and ScaiWave, for extensions they own or have a role on |
| Integrations | the ScaiGrid event `scaidial.voicemail.left` (with `has_transcript`, `has_summary`) |

Recordings are 16 kHz mono WAV. Deleting a message deletes the recording.

## Message fields

`id`, `extension_id`, `call_id`, `from_e164`, `from_user_id`, `from_display`, `duration_ms`, `transcript`, `summary`, `listened_at`, `created_at`.
