Voices
List, create, and delete voice models.
Voices
Voice endpoints manage the voice ids used by TTS requests. Most applications list voices for selection, create custom voices from reference audio, and delete voices that should no longer be available.
List Voices
GET /api/open/v1/voices
Authorization: Bearer YOUR_API_TOKENRequest
Supported query parameters may include provider, search, limit, and offset. Keep pagination in your UI even if your account starts with only a few voices.
curl "https://fishaudio.org/api/open/v1/voices?limit=20&offset=0" \
-H "Authorization: Bearer YOUR_API_TOKEN"Response
{
"total": 1,
"page": 1,
"pageSize": 20,
"totalPages": 1,
"items": [
{
"id": "voice_123",
"name": "My Voice",
"provider": "fishaudio"
}
]
}Use id as voiceId in TTS requests. Do not rely on display names for stable lookup because users can rename voices.
Create Voice
POST /api/open/v1/voices
Authorization: Bearer YOUR_API_TOKEN
Content-Type: multipart/form-dataVoice creation commonly uses reference audio. The exact multipart fields depend on the enabled provider and model creation flow, so validate against GET /api/openapi.json for your deployed environment.
Store the returned voice id with the user or project that owns it. If creation is asynchronous for your account, show a training or processing state before allowing the voice to be selected for generation.
Delete Voice
DELETE /api/open/v1/voices/{voiceId}
Authorization: Bearer YOUR_API_TOKENDeletion should be treated as a destructive account operation. Confirm the owner, remove the voice from your own selection lists, and expect old generation records to keep referencing the historical id.
Billing And Credits
Listing voices is an account operation. Creating a voice may consume credits, quota, or provider-specific allocation depending on the enabled provider. Deleting a voice does not imply refund of previous generation or training usage.
Errors
| Status | Meaning | Action |
|---|---|---|
400 | Invalid query, multipart fields, or voice id | Fix the request |
401 | Token is invalid | Refresh credentials |
402 | Account lacks credits or provider allocation for creation | Stop voice creation and show billing state |
404 | Voice id does not exist for this account | Refresh your local voice list |
409 | Voice cannot be deleted because it is in use | Remove dependencies first |