---
title: "List Voice Catalog"
method: GET
path: "/ai-calls/voices"
tags: ["ai-calls"]
---

# List Voice Catalog

`GET /ai-calls/voices`

## 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`
- Auth: one of:
  - OAuth 2
    - Password
    - Token URL: `auth/bearer/login`
  - API key in cookie `access_token`

The configured TTS voices a scenario or single dial can use.

Cartesia is proxied live and cached briefly; Deepgram exposes Whispa's
auditioned supported subset. One configured provider failing does not hide
the other. Open to any signed-in user because voice metadata is not
privileged; rendering a preview stays admin because it costs credits.

## Query parameters

- `language` string: ISO 639-1 code or language-locale pair. The default keeps each provider to Australian English; pass 'en' to widen it.
- `gender` string, nullable: Optional provider-neutral gender filter.

## Response `200`

Successful Response

- VoiceCatalogResponse: The configured providers' voices an operator can choose between.
  - `voices` VoiceCatalogItem[], required
    - `id` string, required: Provider-qualified value stored on a scenario
    - `provider` 'cartesia' | 'deepgram', required
    - `name` string, required: Provider display name, e.g. 'Arlo - Service Specialist'
    - `description` string: Provider description of the voice
    - `gender` string, nullable: masculine | feminine | gender_neutral
    - `language` string: ISO 639-1 language code
    - `country` string, nullable: ISO 3166-1 alpha-2 code
    - `is_pro` boolean: Whether this is a pro voice
    - `is_runtime_default` boolean: True for the voice a scenario falls back to when it names none.
  - `models` VoiceModelCatalogItem[], required
    - `id` string, required
    - `provider` 'cartesia', required
    - `name` string, required
    - `status` 'stable' | 'beta', required
    - `description` string, required
    - `is_runtime_default` boolean, required
  - `has_more` boolean, required: True when the filter matched more voices than one page holds — narrow it with search rather than assuming this is everything.
  - `default_voice_id` string, required: The voice used when a scenario configures none.
  - `default_model_id` string, required: The Cartesia model used when a scenario configures none.
  - `unavailable_providers` string[]: Configured providers omitted because their catalog failed.

## 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)
