Voice Cloning
Upload reference audio and create a custom voice.
CN API paths use a separate contract
This English reference describes the global FishAudio Open API. For Kitta Audio China integrations, use the CN API Reference, API Playground, and API Keys in this site.
Voice Cloning
POST /api/open/v1/voices
Authorization: Bearer FISHAUDIO_API_KEY
Content-Type: multipart/form-dataFull URL:
https://fishaudio.org/api/open/v1/voicesVoice creation uses reference audio and the FishAudio creation flow. The Open API route ignores provider overrides, so you do not need to send a provider field.
Request Fields
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Voice name |
audioFiles | file[] | Yes | One or more reference audio files |
description | string | No | Voice description |
referenceText | string | No | Transcript for the reference audio |
visibility | string | No | private or public. Default: private |
languages | string | No | JSON string array, such as '["zh","en"]' |
Supported file extensions: aac, flac, m4a, mp3, mp4, mpeg, oga, ogg, opus, wav, and webm. Each file can be up to 10MB.
Do not set the multipart boundary manually. When using curl -F, browser FormData, or an SDK, let the client generate Content-Type.
curl Example
curl -X POST "https://fishaudio.org/api/open/v1/voices" \
-H "Authorization: Bearer FISHAUDIO_API_KEY" \
-F "name=My cloned voice" \
-F "description=Chinese narration voice" \
-F "visibility=private" \
-F 'languages=["zh"]' \
-F "audioFiles=@/path/to/sample-1.mp3;type=audio/mpeg" \
-F "audioFiles=@/path/to/sample-2.wav;type=audio/wav"Response
{
"voiceId": "voice_abc123",
"title": "My cloned voice",
"description": "Chinese narration voice",
"createdAt": "2026-07-09T00:00:00.000Z"
}Store the returned voiceId, then pass it directly when generating speech.
Errors
| Status | Meaning |
|---|---|
400 | Missing fields, unsupported file type, or oversize file |
401 | API key is missing or invalid |
403 | Account cannot create voices |
429 | Voice creation requests are too frequent |
500 | Voice creation failed on the server |
Creating a voice records Open API usage and is subject to the current account's Open API quota and provider allocation.
Continue with runnable API checks
Docs and executable requests stay in the same CN-site surface. After reading the reference, open the API Playground for curl examples or manage API keys in the developer workspace.