Suno Voices API
A Voice is a reusable singer. Create one once, then pass its voiceId to
POST /api/v1/suno/songs with mode: "vox". Song creation, receipts, retries
and errors work as described in the Suno songs API.
Create and reuse Voices
Section titled “Create and reuse Voices”| Source | Price | What you need |
|---|---|---|
| A completed clip you own | 5 credits | The clipId |
| Recordings of a real singer | 66 credits | A verification phrase, a clean singing recording and a recording of the phrase |
Both return a Task receipt. When the Task completes, outputResults.voiceId is
the public Voice ID and outputResults.voice is the Voice object.
Create a Voice from an owned clip
Section titled “Create a Voice from an owned clip”Generate and save the key once for this job; reuse it with the same body on retry.
export REQUEST_KEY="$(uuidgen)"curl -X POST https://api.omnapi.com/api/v1/suno/voices/from-clip \ -H "x-api-key: $OMNAPI_KEY" \ -H "Idempotency-Key: $REQUEST_KEY" \ -H "Content-Type: application/json" \ -d '{ "clipId": "clip_owned_123", "name": "My Singer" }'clipIdmust be a completed Suno clip owned by you. Another user’s clip returns404and an unfinished clip returns409, both before any charge.- OmnAPI picks a suitable vocal range. To choose it yourself, send both
vocalRange.startSecondsandvocalRange.endSeconds, in order and inside the clip. name,description,imageUrlandconfigare optional. Do not send a verification phrase or recording URLs.
Create a Voice from verified recordings
Section titled “Create a Voice from verified recordings”1. Obtain the verification phrase
Section titled “1. Obtain the verification phrase”curl "https://api.omnapi.com/api/v1/suno/voices/verification-phrase?language=zh" \ -H "x-api-key: $OMNAPI_KEY"On 200, read the phrase from outputResults.phraseText and keep taskId as
verificationPhraseTaskId. On 202, poll pollUrl first. The phrase belongs to
your API user and is valid for one Voice creation attempt.
2. Record two inputs
Section titled “2. Record two inputs”voiceAudioUrl: clean singing or a cappella audio used to build the Voice.verificationAudioUrl: the same person reading the phrase.
Both must be public HTTPS URLs. Format hints are mp3, wav, m4a, flac
and ogg.
3. Create the public Voice
Section titled “3. Create the public Voice”curl -X POST https://api.omnapi.com/api/v1/suno/voices \ -H "x-api-key: $OMNAPI_KEY" \ -H "Idempotency-Key: $REQUEST_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Demo Voice", "verificationPhraseTaskId": "task_phrase_01J...", "voiceAudioUrl": "https://example.com/clean-vocal.m4a", "verificationAudioUrl": "https://example.com/phrase-reading.m4a", "voiceExtensionType": "m4a", "verificationExtensionType": "m4a" }'verificationPhraseTaskId, voiceAudioUrl and verificationAudioUrl are
required. voiceExtensionType, verificationExtensionType, name (up to 100
characters), description (up to 2,000), imageUrl and config are optional.
If the session expired, the request returns 409 SUNO_VOICE_SESSION_EXPIRED;
get a new phrase instead of retrying. Verification failures are listed under
error codes.
List, inspect, and use Voices
Section titled “List, inspect, and use Voices”curl "https://api.omnapi.com/api/v1/suno/voices?page=1&pageSize=20" \ -H "x-api-key: $OMNAPI_KEY"curl https://api.omnapi.com/api/v1/suno/voices/voice_public_123 \ -H "x-api-key: $OMNAPI_KEY"The list returns only completed Voices you created. page defaults to 1;
pageSize defaults to 20, up to 100.
{ "voices": [ { "voiceId": "voice_public_123", "name": "Demo Voice", "description": "Warm acoustic vocal", "imageUrl": "https://...", "voiceType": "recording", "isPublic": true, "taskId": "task_voice_01J...", "createdAt": "2026-07-30T12:00:00.000Z" } ], "currentPage": 1, "pageSize": 20, "totalResults": 1}Voices are public: anyone who knows a voiceId can read it and sing with it.
Voice detail returns outputResults: { voiceId, voice } on 200, or a
pollUrl on 202. Availability is checked again when a song starts. To sing
with a Voice, see the Voice example.