Search voices
/v1/voicesSearch voices available through AllModels. Filter by model, provider, language, category, or labels, and page through results with a cursor. No API key is required.
Query Parameters
Search voice names and descriptive metadata.
AllModels model ID. Repeat to match any supplied model.
Provider ID. Repeat to match any supplied provider.
Language ID, such as en. Repeat to match any supplied language.
Voice category, such as official or community. Repeat to match any supplied category.
A facet:value filter, such as gender:female.
Return voices added after this RFC 3339 timestamp.
date-timeSort by featured, relevance, newest, popularity, or name. Featured results place official voices before community voices. Relevance requires q.
Value in
- "featured"
- "relevance"
- "newest"
- "popular"
- "name"
Number of results to return.
1 <= value <= 10020next_cursor from the previous response.
Include available filters and result counts.
"false"Value in
- "true"
- "false"
Response Body
application/json
application/json
application/json
application/json
const response = await fetch("https://api.allmodels.io/v1/voices");if (!response.ok) throw new Error(`AllModels request failed: ${response.status}`);console.log(await response.json());import requestsresponse = requests.get( "https://api.allmodels.io/v1/voices", timeout=30,)response.raise_for_status()print(response.json())curl "https://api.allmodels.io/v1/voices"{ "voices": [ { "model": { "id": "string", "name": "string" }, "voice": { "id": "string", "name": "string", "description": "string", "category": { "id": "string", "name": "string" }, "preview_url": "http://example.com", "languages": [ { "id": "string", "name": "string", "locale": "string", "accent": "string" } ], "labels": [ { "facet": { "id": "string", "name": "string" }, "value": { "id": "string", "name": "string" } } ], "source_urls": [ "http://example.com" ], "scope": { "type": "global" }, "first_seen_at": "2019-08-24T14:15:22Z", "last_seen_at": "2019-08-24T14:15:22Z" }, "providers": [ { "id": "string", "name": "string", "default": true, "provider_model_id": "string", "metrics": { "popularity_score": 0, "likes": 0, "saves": 0, "shares": 0, "uses": 0, "characters_7d": 0, "characters_1y": 0, "clones": 0 } } ] } ], "facets": [ { "id": "string", "name": "string", "values": [ { "id": "string", "name": "string", "count": 0 } ] } ], "total_count": 0, "has_more": true, "next_cursor": "string", "catalogue_updated_at": "2019-08-24T14:15:22Z"}{ "error": "not_found"}{ "error": "catalogue_changed"}{ "error": "voice_catalogue_unavailable"}Get a provider's delivery skill GET
Returns a markdown guide, written for this API, on how to steer delivery with `instructions` through allmodels for one provider's TTS models: which models honor it, the tags it renders to, what to write in the text where it is not honored, and worked request examples. Every TTS binding in `GET /v1/models` and `GET /v1/providers` links its provider's guide as `instructions.skill`. The file starts with YAML frontmatter carrying `name`, `description`, `updated` (the `YYYY-MM-DD` the guide was last checked against the provider's own docs, also sent as `Last-Modified`) and `stale_after_days`. Every URL in the guide is on the host the guide was requested from.
Fetch a cloning sample with a signed grant GET
Serve the audio sample of a voice being cloned, to a provider that clones from a URL it fetches itself. The token is issued by AllModels for a single clone, expires after ten minutes, and is the only thing that authorizes the read — there is no other way to address a sample, and a voice ID cannot be turned into one. Every failure, expiry included, answers `404`.
