Summary
The GET /v1/audio/voices endpoint reports total: 30, total_pages: 3 but only ever returns the same 10 voices regardless of the page query parameter. The page_size parameter is silently capped at 10. Additionally, voices documented in the press release (Marie/FR, Nick, Angele, etc.) are not returned in the listing — though fr_marie_neutral is accessible directly by slug in POST /v1/audio/speech.
Reproduction
curl -s -H "Authorization: Bearer $MISTRAL_API_KEY" \
"https://api.mistral.ai/v1/audio/voices?page=1&page_size=50" | jq '.page_size, .items | length'
# → 10, 10 (page_size=50 was ignored, server returns 10)
for p in 1 2 3 4 5; do
curl -s -H "Authorization: Bearer $MISTRAL_API_KEY" \
"https://api.mistral.ai/v1/audio/voices?page=$p" | jq -r '"page=" + (.page|tostring) + " items=" + ([.items[].slug] | tostring)'
done
# → All pages return the same 10 slugs: en_paul_* (8), gb_oliver_neutral, gb_jane_sarcasm
# → The server-side .page field is always 1 even when requesting page=5
Expected
page parameter respected (e.g., page=2 returns voices 11–20 if page_size=10).
page_size parameter respected up to a documented maximum.
total and total_pages accurately reflect listable voices, OR documentation explicitly says voices like fr_marie_neutral are accessible by slug but excluded from the listing (and explains why).
Actual
- Always page 1 of 10, regardless of
page value.
total: 30 but no way to access the other 20 entries through pagination.
- Voices presented in the public TTS announcement (
fr_marie_neutral, Nick, Angele, Gustavo, Khyathi, Yassir, Margaret, Sanchit per https://mistral.ai/fr/news/voxtral-tts) are not listed by this endpoint, even though at least fr_marie_neutral is fully functional when passed as voice_id to POST /v1/audio/speech.
Impact
Integrators cannot programmatically discover the full set of available voices, and are forced to hardcode slugs based on the press release (which lists voice names but no slugs). Either the listing should be complete, or the documentation should clarify the listing's scope and provide a canonical mapping of human-named voices to slugs.
Environment
- Endpoint:
https://api.mistral.ai/v1/audio/voices
- Date observed: 2026-05-15
- Auth: standard API key (also reproducible with paid credit)
Summary
The
GET /v1/audio/voicesendpoint reportstotal: 30, total_pages: 3but only ever returns the same 10 voices regardless of thepagequery parameter. Thepage_sizeparameter is silently capped at 10. Additionally, voices documented in the press release (Marie/FR, Nick, Angele, etc.) are not returned in the listing — thoughfr_marie_neutralis accessible directly by slug inPOST /v1/audio/speech.Reproduction
Expected
pageparameter respected (e.g.,page=2returns voices 11–20 ifpage_size=10).page_sizeparameter respected up to a documented maximum.totalandtotal_pagesaccurately reflect listable voices, OR documentation explicitly says voices likefr_marie_neutralare accessible by slug but excluded from the listing (and explains why).Actual
pagevalue.total: 30but no way to access the other 20 entries through pagination.fr_marie_neutral, Nick, Angele, Gustavo, Khyathi, Yassir, Margaret, Sanchit per https://mistral.ai/fr/news/voxtral-tts) are not listed by this endpoint, even though at leastfr_marie_neutralis fully functional when passed asvoice_idtoPOST /v1/audio/speech.Impact
Integrators cannot programmatically discover the full set of available voices, and are forced to hardcode slugs based on the press release (which lists voice names but no slugs). Either the listing should be complete, or the documentation should clarify the listing's scope and provide a canonical mapping of human-named voices to slugs.
Environment
https://api.mistral.ai/v1/audio/voices