Skip to content

    Voices · Suno

    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.

    SourcePriceWhat you need
    A completed clip you own5 creditsThe clipId
    Recordings of a real singer66 creditsA 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.

    Generate and save the key once for this job; reuse it with the same body on retry.

    Terminal window
    export REQUEST_KEY="$(uuidgen)"
    Terminal window
    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"
    }'
    • clipId must be a completed Suno clip owned by you. Another user’s clip returns 404 and an unfinished clip returns 409, both before any charge.
    • OmnAPI picks a suitable vocal range. To choose it yourself, send both vocalRange.startSeconds and vocalRange.endSeconds, in order and inside the clip.
    • name, description, imageUrl and config are optional. Do not send a verification phrase or recording URLs.
    Terminal window
    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.

    • 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.

    Terminal window
    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.

    Terminal window
    curl "https://api.omnapi.com/api/v1/suno/voices?page=1&pageSize=20" \
    -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.