List available voices
Alpha
GET
https://api.voxrouter.ai/v1/voicesReturn the voice catalog across every configured provider. Filter by `provider` (comma-separated), `language`, or `gender`. Voices are identified by a provider-local `id` plus the `provider` field — pass both to `/v1/audio/speech` as `model="{provider}/..."` and `voice=id`.
bash
curl https://api.voxrouter.ai/v1/voices \
-H "Authorization: Bearer $VOXROUTER_API_KEY"Headers
AuthorizationstringRequiredBearer token. Send as
Authorization: Bearer pk_....Query parameters
providerstringOptionalComma-separated provider filter (e.g. `elevenlabs,cartesia`).
languagestringOptionalISO language prefix (case-insensitive, e.g. `en` or `en-US`).
genderstringOptionalExact gender label (case-insensitive, e.g. `female`).
Response
Voice catalog.
json
{
"voices": [
{
"id": "string",
"provider": "elevenlabs",
"name": "string",
"language": "string",
"labels": {},
"model_compatibility": [
"string"
]
}
]
}voicesobject[]RequiredErrors
Non-2xx responses return a JSON body with a machine-readable error code and an optional details string.
| Status | Meaning |
|---|---|
| 400 | Request body failed validation or model string is malformed. |
| 401 | Missing or invalid API key. |
| 429 | Per-key rate limit or per-key concurrency limit exceeded. The `code` field on the body distinguishes the two (`rate_limit_exceeded` vs `concurrency_limit_exceeded`). `Retry-After` is seconds-from-now: a hard value until the rate-limit window resets, or a soft `1` hint for concurrency (slots free on request completion). |
| 500 | Unexpected server error. |