---
title: "Preview Voice"
method: GET
path: "/ai-calls/voices/{voice_id}/preview"
tags: ["ai-calls"]
---

# Preview Voice

`GET /ai-calls/voices/{voice_id}/preview`

## Request

- Base URL: `https://dev.whispa.net` (the document declares no server; this is the origin it was published from)
- URL: `https://dev.whispa.net/ai-calls/voices/{voice_id}/preview`
- Auth: one of:
  - OAuth 2
    - Password
    - Token URL: `auth/bearer/login`
  - API key in cookie `access_token`

Render a short sample of ``voice_id`` at the telephony sample rate.

8 kHz, not studio quality — the pipeline renders straight to 8 kHz for the
3CX stream, and band-limiting is exactly where voices stop sounding alike.

## Path parameters

- `voice_id` string, required

## Query parameters

- `scenario` string, nullable: ai_agent scenario whose opening line the preview should speak — the truest audition, since it is the exact wording that scenario greets with, placeholders rendered as a real dial renders them. Falls back to the generic sample if it cannot be resolved.
- `text` string, nullable: Explicit line to speak instead of the scenario's greeting — a candidate opening line. Still a `$placeholder` template: combined with `scenario` it renders against that scenario's brand context, so a draft opener auditions as a dial would speak it. Truncated to 400 characters — a longer line is still auditioned, just not to the end.
- `model` string, nullable: Cartesia model to audition. Omit to use the scenario's configured model, then the runtime default.

## Response `200`

8 kHz mono WAV — the telephony band the caller hears.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/whispa/apis/whispa-api.md) - [All operations](https://skmtc.dev/whispa/apis/whispa-api/llms.txt) - [OpenAPI document](https://skmtc.dev/whispa/apis/whispa-api/revisions/12c2e4aca43c?raw)
