Skip to content

Suno Use-Case Scenarios

  • 2026.08.01 Supports copyright detection bypass via nice upload
  • 2026.04.10 Suno has discontinued versions below v3.5; currently versions below 3.5 are forcibly converted to v4.5-all with unchanged pricing
  • 2026.03.27 Suno supports version v5.5, mv is chirp-fenix
  • 2026.02.04 Suno supports version suno-v4.5-all, mv is chirp-auk-turbo, same price as suno-3.5
  • 2025.09.23 Suno supports version v5, mv is chirp-crow
  • 2025.07.17 Suno supports version v4.5+, mv is chirp-bluejay
  • 2025.05.03 Suno supports version v4.5, mv is chirp-auk
  • Suno supports different scenarios through different request formats
  • All submissions are POST to https://api.openai-hk.com/sunoapi/generate
  • All results are retrieved via GET https://api.openai-hk.com/sunoapi/feed/clipsId1,clipsId2
  • The following request bodies produce different effects
shell
curl --request POST \
  --url https://api.openai-hk.com/sunoapi/generate \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Content-Type: application/json' \
  --data '{
    "gpt_description_prompt": "nostalgia"
}'
curl --request POST \
  --url https://api.openai-hk.com/sunoapi/generate \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Content-Type: application/json' \
  --data '{
    "gpt_description_prompt": "nostalgia"
}'

1. Inspiration Mode

json
{
  "gpt_description_prompt": "nostalgia"
}
{
  "gpt_description_prompt": "nostalgia"
}

2. Custom Lyrics & Title

json
{
  "prompt": "[Verse]\nBusy days one after another\nFiles piling up with no end in sight\nDreams tucked away in a drawer\nCoffee cup already gone cold\n\n[Verse 2]\nClock in at eight every morning\nTired eyes with no spark left\nSmall talk with colleagues feels pointless\nJust waiting for time to speed by\n\n[Chorus]\nWork work the boss keeps calling\nFinish up finish up then we're safe\nOvertime overtime just to earn a little\nDreams dreams when will they come true\n\n[Verse 3]\nLunch break eating a bento box\nWatching sunshine pour through the window\nLife feels so far from the dream\nAll I see is the desk and chair\n\n[Bridge]\nThe boss's footsteps sound like thunder\nHeartbeat quickening with the rhythm\nA mountain of files on the desk\nThe sound of complaints slowly fades\n\n[Chorus]\nWork work the boss keeps calling\nFinish up finish up then we're safe\nOvertime overtime just to earn a little\nDreams dreams when will they come true",
  "mv": "chirp-v3-5",
  "title": "Work",
  "tags": " edm"
}
{
  "prompt": "[Verse]\nBusy days one after another\nFiles piling up with no end in sight\nDreams tucked away in a drawer\nCoffee cup already gone cold\n\n[Verse 2]\nClock in at eight every morning\nTired eyes with no spark left\nSmall talk with colleagues feels pointless\nJust waiting for time to speed by\n\n[Chorus]\nWork work the boss keeps calling\nFinish up finish up then we're safe\nOvertime overtime just to earn a little\nDreams dreams when will they come true\n\n[Verse 3]\nLunch break eating a bento box\nWatching sunshine pour through the window\nLife feels so far from the dream\nAll I see is the desk and chair\n\n[Bridge]\nThe boss's footsteps sound like thunder\nHeartbeat quickening with the rhythm\nA mountain of files on the desk\nThe sound of complaints slowly fades\n\n[Chorus]\nWork work the boss keeps calling\nFinish up finish up then we're safe\nOvertime overtime just to earn a little\nDreams dreams when will they come true",
  "mv": "chirp-v3-5",
  "title": "Work",
  "tags": " edm"
}

3. Instrumental (Custom)

json
{
  "prompt": "",
  "tags": "heavy metal",
  "mv": "chirp-v3-5",
  "title": "Beijing",
  "continue_clip_id": null,
  "continue_at": null,
  "infill_start_s": null,
  "infill_end_s": null
}
{
  "prompt": "",
  "tags": "heavy metal",
  "mv": "chirp-v3-5",
  "title": "Beijing",
  "continue_clip_id": null,
  "continue_at": null,
  "infill_start_s": null,
  "infill_end_s": null
}

4. Instrumental (Inspiration Mode)

json
{
  "gpt_description_prompt": "A national dance pop anthem about dancing all night long",
  "mv": "chirp-v3-5",
  "prompt": "",
  "make_instrumental": true
}
{
  "gpt_description_prompt": "A national dance pop anthem about dancing all night long",
  "mv": "chirp-v3-5",
  "prompt": "",
  "make_instrumental": true
}

5. Extend Custom Audio

A. Upload Audio

First, use the upload API to get a clip_id with the value abcd-1234-1234-1234-abd

B. Extend Audio (with Version)

  • mv can be chirp-v4, chirp-auk, or chirp-bluejay
  • task must be upload_extend
json
{
  "prompt": "lyrics",
  "tags": "",
  "negative_tags": "",
  "mv": "chirp-v4",
  "title": "Title",
  "continue_clip_id": "ca94a97d-d3f2-4a63-aeee-ba3a43384bcd",
  "continue_at": 10,
  "task": "upload_extend"
}
{
  "prompt": "lyrics",
  "tags": "",
  "negative_tags": "",
  "mv": "chirp-v4",
  "title": "Title",
  "continue_clip_id": "ca94a97d-d3f2-4a63-aeee-ba3a43384bcd",
  "continue_at": 10,
  "task": "upload_extend"
}

C. Extend Audio (Deprecated)

Note: mv here is chirp-v3-5-upload or chirp-v4-upload

json
{
  "prompt": "[Verse]\nBusy days one after another\nFiles piling up with no end in sight\nDreams tucked away in a drawer\nCoffee cup already gone cold\n\n[Verse 2]\nClock in at eight every morning\nTired eyes with no spark left\nSmall talk with colleagues feels pointless\nJust waiting for time to speed by\n\n[Chorus]\nWork work the boss keeps calling\nFinish up finish up then we're safe\nOvertime overtime just to earn a little\nDreams dreams when will they come true\n\n[Verse 3]\nLunch break eating a bento box\nWatching sunshine pour through the window\nLife feels so far from the dream\nAll I see is the desk and chair\n\n[Bridge]\nThe boss's footsteps sound like thunder\nHeartbeat quickening with the rhythm\nA mountain of files on the desk\nThe sound of complaints slowly fades\n\n[Chorus]\nWork work the boss keeps calling\nFinish up finish up then we're safe\nOvertime overtime just to earn a little\nDreams dreams when will they come true",
  "tags": "heavy metal",
  "mv": "chirp-v3-5-upload",
  "title": "Work",
  "continue_clip_id": "abcd-1234-1234-1234-abd",
  "continue_at": 30.792
}
{
  "prompt": "[Verse]\nBusy days one after another\nFiles piling up with no end in sight\nDreams tucked away in a drawer\nCoffee cup already gone cold\n\n[Verse 2]\nClock in at eight every morning\nTired eyes with no spark left\nSmall talk with colleagues feels pointless\nJust waiting for time to speed by\n\n[Chorus]\nWork work the boss keeps calling\nFinish up finish up then we're safe\nOvertime overtime just to earn a little\nDreams dreams when will they come true\n\n[Verse 3]\nLunch break eating a bento box\nWatching sunshine pour through the window\nLife feels so far from the dream\nAll I see is the desk and chair\n\n[Bridge]\nThe boss's footsteps sound like thunder\nHeartbeat quickening with the rhythm\nA mountain of files on the desk\nThe sound of complaints slowly fades\n\n[Chorus]\nWork work the boss keeps calling\nFinish up finish up then we're safe\nOvertime overtime just to earn a little\nDreams dreams when will they come true",
  "tags": "heavy metal",
  "mv": "chirp-v3-5-upload",
  "title": "Work",
  "continue_clip_id": "abcd-1234-1234-1234-abd",
  "continue_at": 30.792
}

D. Concatenate Full Song

shell
curl --request POST \
  --url https://api.openai-hk.com/sunoapi/generate/concat \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Content-Type: application/json' \
  --data '{
  "clip_id": "newid-1234-1234-1234-one",
  "is_infill": false
}'
curl --request POST \
  --url https://api.openai-hk.com/sunoapi/generate/concat \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Content-Type: application/json' \
  --data '{
  "clip_id": "newid-1234-1234-1234-one",
  "is_infill": false
}'

Request body:

json
{
  "clip_id": "newid-1234-1234-1234-one",
  "is_infill": false
}
{
  "clip_id": "newid-1234-1234-1234-one",
  "is_infill": false
}

6. Extend Music and Get Full Song

Note: Extending official-generated music only; custom extension is not supported

A. Generate Music

Use scenarios 1, 2, or 3 to generate music and get one song's clip_id with value abcd-1234-1234-1234-abd

B. Extend Music

Returns 2 new clip_id values; one of them is newid-1234-1234-1234-one

json
{
  "prompt": "[Verse]\nBusy days one after another\nFiles piling up with no end in sight\nDreams tucked away in a drawer\nCoffee cup already gone cold\n\n[Verse 2]\nClock in at eight every morning\nTired eyes with no spark left\nSmall talk with colleagues feels pointless\nJust waiting for time to speed by\n\n[Chorus]\nWork work the boss keeps calling\nFinish up finish up then we're safe\nOvertime overtime just to earn a little\nDreams dreams when will they come true\n\n[Verse 3]\nLunch break eating a bento box\nWatching sunshine pour through the window\nLife feels so far from the dream\nAll I see is the desk and chair\n\n[Bridge]\nThe boss's footsteps sound like thunder\nHeartbeat quickening with the rhythm\nA mountain of files on the desk\nThe sound of complaints slowly fades\n\n[Chorus]\nWork work the boss keeps calling\nFinish up finish up then we're safe\nOvertime overtime just to earn a little\nDreams dreams when will they come true",
  "tags": "heavy metal",
  "mv": "chirp-v3-5",
  "title": "Work",
  "continue_clip_id": "abcd-1234-1234-1234-abd",
  "continue_at": 30,
  "task": "extend"
}
{
  "prompt": "[Verse]\nBusy days one after another\nFiles piling up with no end in sight\nDreams tucked away in a drawer\nCoffee cup already gone cold\n\n[Verse 2]\nClock in at eight every morning\nTired eyes with no spark left\nSmall talk with colleagues feels pointless\nJust waiting for time to speed by\n\n[Chorus]\nWork work the boss keeps calling\nFinish up finish up then we're safe\nOvertime overtime just to earn a little\nDreams dreams when will they come true\n\n[Verse 3]\nLunch break eating a bento box\nWatching sunshine pour through the window\nLife feels so far from the dream\nAll I see is the desk and chair\n\n[Bridge]\nThe boss's footsteps sound like thunder\nHeartbeat quickening with the rhythm\nA mountain of files on the desk\nThe sound of complaints slowly fades\n\n[Chorus]\nWork work the boss keeps calling\nFinish up finish up then we're safe\nOvertime overtime just to earn a little\nDreams dreams when will they come true",
  "tags": "heavy metal",
  "mv": "chirp-v3-5",
  "title": "Work",
  "continue_clip_id": "abcd-1234-1234-1234-abd",
  "continue_at": 30,
  "task": "extend"
}

C. Concatenate Full Song

shell
curl --request POST \
  --url https://api.openai-hk.com/sunoapi/generate/concat \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Content-Type: application/json' \
  --data '{
  "clip_id": "newid-1234-1234-1234-one",
  "is_infill": false
}'
curl --request POST \
  --url https://api.openai-hk.com/sunoapi/generate/concat \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Content-Type: application/json' \
  --data '{
  "clip_id": "newid-1234-1234-1234-one",
  "is_infill": false
}'

Request body:

json
{
  "clip_id": "newid-1234-1234-1234-one",
  "is_infill": false
}
{
  "clip_id": "newid-1234-1234-1234-one",
  "is_infill": false
}

7. Cover Music: Remake / Style Modification

A. Generate Music

  • Use scenarios 1, 2, or 3 to generate music and get one song's clip_id with value abcd-1234-1234-1234-abd
  • You can also use the upload API to get a clip_id for covering custom audio

B. Cover Music

  • Note: mv must be chirp-v4, chirp-auk, or chirp-bluejay
  • task must be cover
  • Cross-account usage is supported — no need to worry about account expiry
  • If cover_clip_id is an uploaded clip_id, cross-account is not supported
  • mv no longer uses chirp-v3-5-tau or chirp-v4-tau
json
{
  "prompt": "[Verse]\nBusy days one after another\nFiles piling up with no end in sight\nDreams tucked away in a drawer\nCoffee cup already gone cold\n\n[Verse 2]\nClock in at eight every morning\nTired eyes with no spark left\nSmall talk with colleagues feels pointless\nJust waiting for time to speed by\n\n[Chorus]\nWork work the boss keeps calling\nFinish up finish up then we're safe\nOvertime overtime just to earn a little\nDreams dreams when will they come true\n\n[Verse 3]\nLunch break eating a bento box\nWatching sunshine pour through the window\nLife feels so far from the dream\nAll I see is the desk and chair\n\n[Bridge]\nThe boss's footsteps sound like thunder\nHeartbeat quickening with the rhythm\nA mountain of files on the desk\nThe sound of complaints slowly fades\n\n[Chorus]\nWork work the boss keeps calling\nFinish up finish up then we're safe\nOvertime overtime just to earn a little\nDreams dreams when will they come true",
  "generation_type": "TEXT",
  "tags": "rock, punk",
  "negative_tags": "",
  "mv": "chirp-auk",
  "title": "Work (Cover)",
  "continue_clip_id": null,
  "continue_at": null,
  "continued_aligned_prompt": null,
  "infill_start_s": null,
  "infill_end_s": null,
  "task": "cover",
  "cover_clip_id": "abcd-1234-1234-1234-abd"
}
{
  "prompt": "[Verse]\nBusy days one after another\nFiles piling up with no end in sight\nDreams tucked away in a drawer\nCoffee cup already gone cold\n\n[Verse 2]\nClock in at eight every morning\nTired eyes with no spark left\nSmall talk with colleagues feels pointless\nJust waiting for time to speed by\n\n[Chorus]\nWork work the boss keeps calling\nFinish up finish up then we're safe\nOvertime overtime just to earn a little\nDreams dreams when will they come true\n\n[Verse 3]\nLunch break eating a bento box\nWatching sunshine pour through the window\nLife feels so far from the dream\nAll I see is the desk and chair\n\n[Bridge]\nThe boss's footsteps sound like thunder\nHeartbeat quickening with the rhythm\nA mountain of files on the desk\nThe sound of complaints slowly fades\n\n[Chorus]\nWork work the boss keeps calling\nFinish up finish up then we're safe\nOvertime overtime just to earn a little\nDreams dreams when will they come true",
  "generation_type": "TEXT",
  "tags": "rock, punk",
  "negative_tags": "",
  "mv": "chirp-auk",
  "title": "Work (Cover)",
  "continue_clip_id": null,
  "continue_at": null,
  "continued_aligned_prompt": null,
  "infill_start_s": null,
  "infill_end_s": null,
  "task": "cover",
  "cover_clip_id": "abcd-1234-1234-1234-abd"
}

8. Replace Section

A. Generate Music

Use scenarios 1, 2, or 3 to generate music and get one song's clip_id with value abcd-1234-1234-1234-abd

B. Replace Section

  • task must be infill
  • Note: mv must be chirp-v4, chirp-auk, or chirp-bluejay
  • Reminder: the replacement lyrics should overlap with the original lyrics; ideally the timing should correspond
  • infill_start_s start time, infill_end_s end time, infill_dur_s = infill_end_s - infill_start_s
  • Cross-account usage is supported — no need to worry about account expiry
  • Returns 2 new clip_id values; choose one (newid-1234-1234-1234-one) for the next step
  • mv no longer uses chirp-v3-5-tau or chirp-v4-tau
json
{
  "task": "infill",
  "generation_type": "TEXT",
  "title": "Scale of Longing-replace",
  "tags": "Sorrow/Sad,Female Vocals,Mandarin",
  "mv": "chirp-auk",
  "prompt": "《Scale of Longing》 \n \nLyrics: A Guo Yi Luo\nThe rings of a tree hold the warmth of your running steps. \nEvery falling leaf calls out your name\nBut one gust of wind turns it to mist. \nTidying up your guitar in the corner \nThe case holds all the rainy seasons,\nSoaking the back of the rosewood. \nIf I wound my longing into new strings,\nI fear one touch would shatter them\nInto echoes of back then. \nTime is a rewound videotape,\nThe deeper the night, the clearer your laughter comes. \nIf tears could water a time tunnel,\nI'd cry my eyes into a sea. \nWhen every spring becomes about you,\nI learn to breathe through the wound. \nTo keep loving you,\nUsing up",
  "metadata": {
    "infill_lyrics": ". \nTidying up your guitar in the corner \nThe case holds all the rainy seasons,\nSoaking the back of the rosewood. \nIf I wound my longing into new strings,\nI fear one touch would shatter them\nInto echoes of back then"
  },
  "continue_clip_id": "8a858961-8831-4423-8ffb-2dec096aea0a",
  "continued_aligned_prompt": "《Scale of Longing》 \n \nLyrics: A Guo Yi Luo\nThe rings of a tree hold the warmth of your running steps. \nEvery falling leaf calls out your name\nBut one gust of wind turns it to mist. \nTidying up your guitar in the corner \nThe case holds all the rainy seasons,\nSoaking the back of the rosewood. \nIf I wound my longing into new strings,\nI fear one touch would shatter them\nInto echoes of back then. \nTime is a rewound videotape,\nThe deeper the night, the clearer your laughter comes. \nIf tears could water a time tunnel,\nI'd cry my eyes into a sea. \nWhen every spring becomes about you,\nI learn to breathe through the wound. \nTo keep loving you,\nUsing up everything\nA heartbeat that no longer beats.\nTidying up your guitar in the corner \nThe case holds all the rainy seasons,\nSoaking the back of the rosewood. \nIf I wound my longing into new strings,\nI fear one touch would shatter them\nInto echoes of back then. \nWhen every spring becomes about you,\nI learn to breathe through the wound. \nTo keep loving you,\nUsing up everything\nA heartbeat that no longer beats.\n",
  "infill_context_start_s": 3.48,
  "infill_context_end_s": 109.96,
  "infill_start_s": 33.48,
  "infill_end_s": 79.96,
  "infill_dur_s": 46.48
}
{
  "task": "infill",
  "generation_type": "TEXT",
  "title": "Scale of Longing-replace",
  "tags": "Sorrow/Sad,Female Vocals,Mandarin",
  "mv": "chirp-auk",
  "prompt": "《Scale of Longing》 \n \nLyrics: A Guo Yi Luo\nThe rings of a tree hold the warmth of your running steps. \nEvery falling leaf calls out your name\nBut one gust of wind turns it to mist. \nTidying up your guitar in the corner \nThe case holds all the rainy seasons,\nSoaking the back of the rosewood. \nIf I wound my longing into new strings,\nI fear one touch would shatter them\nInto echoes of back then. \nTime is a rewound videotape,\nThe deeper the night, the clearer your laughter comes. \nIf tears could water a time tunnel,\nI'd cry my eyes into a sea. \nWhen every spring becomes about you,\nI learn to breathe through the wound. \nTo keep loving you,\nUsing up",
  "metadata": {
    "infill_lyrics": ". \nTidying up your guitar in the corner \nThe case holds all the rainy seasons,\nSoaking the back of the rosewood. \nIf I wound my longing into new strings,\nI fear one touch would shatter them\nInto echoes of back then"
  },
  "continue_clip_id": "8a858961-8831-4423-8ffb-2dec096aea0a",
  "continued_aligned_prompt": "《Scale of Longing》 \n \nLyrics: A Guo Yi Luo\nThe rings of a tree hold the warmth of your running steps. \nEvery falling leaf calls out your name\nBut one gust of wind turns it to mist. \nTidying up your guitar in the corner \nThe case holds all the rainy seasons,\nSoaking the back of the rosewood. \nIf I wound my longing into new strings,\nI fear one touch would shatter them\nInto echoes of back then. \nTime is a rewound videotape,\nThe deeper the night, the clearer your laughter comes. \nIf tears could water a time tunnel,\nI'd cry my eyes into a sea. \nWhen every spring becomes about you,\nI learn to breathe through the wound. \nTo keep loving you,\nUsing up everything\nA heartbeat that no longer beats.\nTidying up your guitar in the corner \nThe case holds all the rainy seasons,\nSoaking the back of the rosewood. \nIf I wound my longing into new strings,\nI fear one touch would shatter them\nInto echoes of back then. \nWhen every spring becomes about you,\nI learn to breathe through the wound. \nTo keep loving you,\nUsing up everything\nA heartbeat that no longer beats.\n",
  "infill_context_start_s": 3.48,
  "infill_context_end_s": 109.96,
  "infill_start_s": 33.48,
  "infill_end_s": 79.96,
  "infill_dur_s": 46.48
}

C. Confirm and Concatenate Full Song

shell
curl --request POST \
  --url https://api.openai-hk.com/sunoapi/generate/concat \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Content-Type: application/json' \
  --data '{
  "clip_id": "newid-1234-1234-1234-one",
  "is_infill": true
}'
curl --request POST \
  --url https://api.openai-hk.com/sunoapi/generate/concat \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Content-Type: application/json' \
  --data '{
  "clip_id": "newid-1234-1234-1234-one",
  "is_infill": true
}'

Request body:

json
{
  "clip_id": "newid-1234-1234-1234-one",
  "is_infill": true
}
{
  "clip_id": "newid-1234-1234-1234-one",
  "is_infill": true
}

8.V2 Replace Section: V2 Replace Segment

  • Goal: Replace the lyric just missing your presence by my side in clip_id 4cd8a76f-802a-42a5-8064-3ba9c6138072 with just missing yesterday without you by my side
  • Actually only replacing by my sideyesterday

A. Get Timeline

get https://api.openai-hk.com/suno/act/timing/4cd8a76f-802a-42a5-8064-3ba9c6138072

json
{
  "text": "底",
  "start_s": 60.638297872340424,
  "end_s": 60.71808510638298
}
{
  "text": "底",
  "start_s": 60.638297872340424,
  "end_s": 60.71808510638298
}
  • Search for the end context word to find aligned_lyrics[13].words[9].end_s = 90.6 as infill_context_end_s
json
{
  "text": "回",
  "start_s": 90.47872340425532,
  "end_s": 90.55851063829788
}
{
  "text": "回",
  "start_s": 90.47872340425532,
  "end_s": 90.55851063829788
}
  • Search for the word to replace, find aligned_lyrics[11]
json
{
  "text": "just missing by my side,",

  "words": [
    ......
    {
      "text": "by",
      "start_s": 75.47872340425532, // use this as infill_start_s
      "end_s": 75.55851063829788
    },
    {
      "text": "side",
      "start_s": 75.71808510638299,
      "end_s": 75.79787234042553 // use this as infill_end_s
    },
   ......
  ]
}
{
  "text": "just missing by my side,",

  "words": [
    ......
    {
      "text": "by",
      "start_s": 75.47872340425532, // use this as infill_start_s
      "end_s": 75.55851063829788
    },
    {
      "text": "side",
      "start_s": 75.71808510638299,
      "end_s": 75.79787234042553 // use this as infill_end_s
    },
   ......
  ]
}

B. Replace Segment

  • task must be fixed_infill
  • Note: mv only supports chirp-carp
  • How to obtain infill_context_start_s, infill_context_end_s, infill_start_s, infill_end_s — refer to A. Get Timeline
  • infill_dur_s = infill_end_s - infill_start_s
  • Cross-account usage is supported — no need to worry about account expiry
  • Returns 2 new clip_id values; choose one (newid-1234-1234-1234-one) for the next step
json
{
  "task": "fixed_infill",
  "generation_type": "TEXT",
  "title": "Replace 01:15-01:15 (06:25 AM Feb 04)",
  "tags": "Love Song,Rock,Acoustic Guitar,Piano,Strings,R&B",
  "negative_tags": "",
  "mv": "chirp-carp",
  "prompt": "底忘记。\n\n[Interlude]\n\n[Verse 2]\n街角的灯光依然那么熟悉,\n只是昨日再也没有你的气息,\n曾经的誓言如今变成了谜题,\n只剩下我在原地默默回",
  "metadata": {
    "create_mode": "custom",
    "infill_lyrics": "昨日",
    "is_remix": true,
    "lyrics_updated": true
  },

  "continue_clip_id": "4cd8a76f-802a-42a5-8064-3ba9c6138072",
  "continued_aligned_prompt": "底忘记。\n\n[Interlude]\n\n[Verse 2]\n街角的灯光依然那么熟悉,\n只是昨日再也没有你的气息,\n曾经的誓言如今变成了谜题,\n只剩下我在原地默默回",
  "continue_at": null,
  "infill_context_start_s": 60.6,
  "infill_context_end_s": 90.6,
  "infill_start_s": 75.44,
  "infill_end_s": 75.8,
  "infill_dur_s": 0.36
}
{
  "task": "fixed_infill",
  "generation_type": "TEXT",
  "title": "Replace 01:15-01:15 (06:25 AM Feb 04)",
  "tags": "Love Song,Rock,Acoustic Guitar,Piano,Strings,R&B",
  "negative_tags": "",
  "mv": "chirp-carp",
  "prompt": "底忘记。\n\n[Interlude]\n\n[Verse 2]\n街角的灯光依然那么熟悉,\n只是昨日再也没有你的气息,\n曾经的誓言如今变成了谜题,\n只剩下我在原地默默回",
  "metadata": {
    "create_mode": "custom",
    "infill_lyrics": "昨日",
    "is_remix": true,
    "lyrics_updated": true
  },

  "continue_clip_id": "4cd8a76f-802a-42a5-8064-3ba9c6138072",
  "continued_aligned_prompt": "底忘记。\n\n[Interlude]\n\n[Verse 2]\n街角的灯光依然那么熟悉,\n只是昨日再也没有你的气息,\n曾经的誓言如今变成了谜题,\n只剩下我在原地默默回",
  "continue_at": null,
  "infill_context_start_s": 60.6,
  "infill_context_end_s": 90.6,
  "infill_start_s": 75.44,
  "infill_end_s": 75.8,
  "infill_dur_s": 0.36
}

C. Confirm and Concatenate Full Song

shell
curl --request POST \
  --url https://api.openai-hk.com/sunoapi/generate/concat \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Content-Type: application/json' \
  --data '{
  "clip_id": "newid-1234-1234-1234-one",
  "is_infill": true
}'
curl --request POST \
  --url https://api.openai-hk.com/sunoapi/generate/concat \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Content-Type: application/json' \
  --data '{
  "clip_id": "newid-1234-1234-1234-one",
  "is_infill": true
}'

Request body:

json
{
  "clip_id": "newid-1234-1234-1234-one",
  "is_infill": true
}
{
  "clip_id": "newid-1234-1234-1234-one",
  "is_infill": true
}

9. Persona: Singer Style

A. Generate Music

Use scenarios 1, 2, or 3 to generate music and get one song's clip_id with value 4cd8a76f-802a-42a5-8064-3ba9c6138072

B. Create Persona

post https://api.openai-hk.com/sunoapi/persona/create/

  • clip_id must exist in the system and cannot be an uploaded clip
  • Cross-account not supported — may be unavailable if account expires
  • To prevent abuse, 100 credits will be deducted

Request body:

json
{
  "root_clip_id": "54834687-5e79-4f08-8e14-cf188f15b598",
  "name": "Persona Title",
  "description": "Persona Description",
  "clips": ["54834687-5e79-4f08-8e14-cf188f15b598"],
  "is_public": true
}
{
  "root_clip_id": "54834687-5e79-4f08-8e14-cf188f15b598",
  "name": "Persona Title",
  "description": "Persona Description",
  "clips": ["54834687-5e79-4f08-8e14-cf188f15b598"],
  "is_public": true
}

Response: the key id value fd213afd-ac1c-4822-9802-c1c0ea45e77b is the persona_id for the next step

json
{
  "id": "fd213afd-ac1c-4822-9802-c1c0ea45e77b",
  "name": "food",
  "description": "123",
  "root_clip_id": "54834687-5e79-4f08-8e14-cf188f15b598",
  "clip": {
    "id": "54834687-5e79-4f08-8e14-cf188f15b598",
    "video_url": "https://cdn1.suno.ai/54834687-5e79-4f08-8e14-cf188f15b598.mp4",
    "audio_url": "https://cdn1.suno.ai/54834687-5e79-4f08-8e14-cf188f15b598.mp3",
    "image_url": "https://cdn2.suno.ai/image_54834687-5e79-4f08-8e14-cf188f15b598.jpeg",
    "image_large_url": "https://cdn2.suno.ai/image_large_54834687-5e79-4f08-8e14-cf188f15b598.jpeg",
    "major_model_version": "v4",
    "model_name": "chirp-v4",
    "metadata": {
      "tags": "electronic pop, tropical house fusion",
      "prompt": "",
      "type": "gen",
      "duration": 190,
      "refund_credits": false,
      "stream": true
    },
    "is_liked": false,
    "user_id": "21de6d0f-398c-467c-9957-8fa9065f3ca6",
    "display_name": "SensoryRecorders4685",
    "handle": "sensoryrecorders4685",
    "is_handle_updated": false,
    "avatar_image_url": "https://cdn1.suno.ai/defaultPink.webp",
    "is_trashed": false,
    "created_at": "2024-12-23T10:34:30.144Z",
    "status": "complete",
    "title": "noks noko wane",
    "play_count": 0,
    "upvote_count": 0,
    "is_public": false
  },
  "user_display_name": "SensoryRecorders4685",
  "user_handle": "sensoryrecorders4685",
  "user_image_url": "https://cdn1.suno.ai/defaultPink.webp",
  "persona_clips": [
    {
      "clip": {
        "id": "54834687-5e79-4f08-8e14-cf188f15b598",
        "video_url": "https://cdn1.suno.ai/54834687-5e79-4f08-8e14-cf188f15b598.mp4",
        "audio_url": "https://cdn1.suno.ai/54834687-5e79-4f08-8e14-cf188f15b598.mp3",
        "image_url": "https://cdn2.suno.ai/image_54834687-5e79-4f08-8e14-cf188f15b598.jpeg",
        "image_large_url": "https://cdn2.suno.ai/image_large_54834687-5e79-4f08-8e14-cf188f15b598.jpeg",
        "major_model_version": "v4",
        "model_name": "chirp-v4",
        "metadata": {
          "tags": "electronic pop, tropical house fusion",
          "prompt": "",
          "type": "gen",
          "duration": 190,
          "refund_credits": false,
          "stream": true
        },
        "is_liked": false,
        "user_id": "21de6d0f-398c-467c-9957-8fa9065f3ca6",
        "display_name": "SensoryRecorders4685",
        "handle": "sensoryrecorders4685",
        "is_handle_updated": false,
        "avatar_image_url": "https://cdn1.suno.ai/defaultPink.webp",
        "is_trashed": false,
        "created_at": "2024-12-23T10:34:30.144Z",
        "status": "complete",
        "title": "noks noko wane",
        "play_count": 0,
        "upvote_count": 0,
        "is_public": false
      },
      "id": 11288925
    }
  ]
}
{
  "id": "fd213afd-ac1c-4822-9802-c1c0ea45e77b",
  "name": "food",
  "description": "123",
  "root_clip_id": "54834687-5e79-4f08-8e14-cf188f15b598",
  "clip": {
    "id": "54834687-5e79-4f08-8e14-cf188f15b598",
    "video_url": "https://cdn1.suno.ai/54834687-5e79-4f08-8e14-cf188f15b598.mp4",
    "audio_url": "https://cdn1.suno.ai/54834687-5e79-4f08-8e14-cf188f15b598.mp3",
    "image_url": "https://cdn2.suno.ai/image_54834687-5e79-4f08-8e14-cf188f15b598.jpeg",
    "image_large_url": "https://cdn2.suno.ai/image_large_54834687-5e79-4f08-8e14-cf188f15b598.jpeg",
    "major_model_version": "v4",
    "model_name": "chirp-v4",
    "metadata": {
      "tags": "electronic pop, tropical house fusion",
      "prompt": "",
      "type": "gen",
      "duration": 190,
      "refund_credits": false,
      "stream": true
    },
    "is_liked": false,
    "user_id": "21de6d0f-398c-467c-9957-8fa9065f3ca6",
    "display_name": "SensoryRecorders4685",
    "handle": "sensoryrecorders4685",
    "is_handle_updated": false,
    "avatar_image_url": "https://cdn1.suno.ai/defaultPink.webp",
    "is_trashed": false,
    "created_at": "2024-12-23T10:34:30.144Z",
    "status": "complete",
    "title": "noks noko wane",
    "play_count": 0,
    "upvote_count": 0,
    "is_public": false
  },
  "user_display_name": "SensoryRecorders4685",
  "user_handle": "sensoryrecorders4685",
  "user_image_url": "https://cdn1.suno.ai/defaultPink.webp",
  "persona_clips": [
    {
      "clip": {
        "id": "54834687-5e79-4f08-8e14-cf188f15b598",
        "video_url": "https://cdn1.suno.ai/54834687-5e79-4f08-8e14-cf188f15b598.mp4",
        "audio_url": "https://cdn1.suno.ai/54834687-5e79-4f08-8e14-cf188f15b598.mp3",
        "image_url": "https://cdn2.suno.ai/image_54834687-5e79-4f08-8e14-cf188f15b598.jpeg",
        "image_large_url": "https://cdn2.suno.ai/image_large_54834687-5e79-4f08-8e14-cf188f15b598.jpeg",
        "major_model_version": "v4",
        "model_name": "chirp-v4",
        "metadata": {
          "tags": "electronic pop, tropical house fusion",
          "prompt": "",
          "type": "gen",
          "duration": 190,
          "refund_credits": false,
          "stream": true
        },
        "is_liked": false,
        "user_id": "21de6d0f-398c-467c-9957-8fa9065f3ca6",
        "display_name": "SensoryRecorders4685",
        "handle": "sensoryrecorders4685",
        "is_handle_updated": false,
        "avatar_image_url": "https://cdn1.suno.ai/defaultPink.webp",
        "is_trashed": false,
        "created_at": "2024-12-23T10:34:30.144Z",
        "status": "complete",
        "title": "noks noko wane",
        "play_count": 0,
        "upvote_count": 0,
        "is_public": false
      },
      "id": 11288925
    }
  ]
}

C. Create Using persona_id

post https://api.openai-hk.com/suno/generate

  • Note: mv must be chirp-v4, chirp-auk, or chirp-bluejay
  • task must be artist_consistency
  • persona_id is the value obtained from Step B
  • artist_clip_id is the clip_id from Step A
  • Cross-account supported
  • mv no longer uses chirp-v3-5-tau or chirp-v4-tau
json
{
  "prompt": "[Verse]\nFrom dawn to dusk you've been by my side so warm\nRain or shine I'm not afraid\nHolding hands we'll never part\n\n[Verse 2]\nWith you I'm never alone\nLike stars shining in the night\nNo road feels too long\nBecause you are my light\n\n[Chorus]\nDarling darling I love you\nYou're the only one in my world\nNo matter where we roam\nOur hearts will always follow\n\n[Verse 3]\nYou're my safe harbor\nEvery night my dreams are of you\nEven if the road ahead is hard\nWith you everything's beautiful\n\n[Chorus]\nDarling darling I love you\nYou're the only one in my world\nNo matter where we roam\nOur hearts will always follow\n\n[Bridge]\nEvery moment in this life\nWith you to share and feel\nAll tomorrows will be better\nBecause with you I'm invincible",
  "generation_type": "TEXT",
  "tags": "electronic, pop",
  "negative_tags": "",
  "mv": "chirp-v4",
  "title": "Darling",
  "task": "artist_consistency",
  "persona_id": "0f6e8077-a7ba-4fc8-8f60-de02c66e56ce",
  "artist_clip_id": "a5fa604c-18b8-4e7f-8d25-9412d4ba8163"
}
{
  "prompt": "[Verse]\nFrom dawn to dusk you've been by my side so warm\nRain or shine I'm not afraid\nHolding hands we'll never part\n\n[Verse 2]\nWith you I'm never alone\nLike stars shining in the night\nNo road feels too long\nBecause you are my light\n\n[Chorus]\nDarling darling I love you\nYou're the only one in my world\nNo matter where we roam\nOur hearts will always follow\n\n[Verse 3]\nYou're my safe harbor\nEvery night my dreams are of you\nEven if the road ahead is hard\nWith you everything's beautiful\n\n[Chorus]\nDarling darling I love you\nYou're the only one in my world\nNo matter where we roam\nOur hearts will always follow\n\n[Bridge]\nEvery moment in this life\nWith you to share and feel\nAll tomorrows will be better\nBecause with you I'm invincible",
  "generation_type": "TEXT",
  "tags": "electronic, pop",
  "negative_tags": "",
  "mv": "chirp-v4",
  "title": "Darling",
  "task": "artist_consistency",
  "persona_id": "0f6e8077-a7ba-4fc8-8f60-de02c66e56ce",
  "artist_clip_id": "a5fa604c-18b8-4e7f-8d25-9412d4ba8163"
}

Response:

json
{
  "id": "2d453a5f-c539-4fe0-9a66-24058c5dfb6a",
  "clips": [
    {
      "id": "0e6937df-64d8-41f9-82c6-b6dadc4426a8",
      "video_url": "",
      "audio_url": "",
      "major_model_version": "v4",
      "model_name": "chirp-v4",
      "metadata": {
        "tags": "electronic, pop",
        "prompt": "...(lyrics)...",
        "type": "gen",
        "stream": true,
        "has_vocal": false,
        "artist_clip_id": "a5fa604c-18b8-4e7f-8d25-9412d4ba8163",
        "persona_id": "0f6e8077-a7ba-4fc8-8f60-de02c66e56ce",
        "task": "artist_consistency"
      },
      "is_liked": false,
      "user_id": "a3da04d5-0442-4bd3-b837-4c73ff600914",
      "display_name": "TwinklingVenue1595",
      "handle": "twinklingvenue1595",
      "is_handle_updated": false,
      "avatar_image_url": "https://cdn1.suno.ai/defaultPink.webp",
      "is_trashed": false,
      "created_at": "2024-12-23T10:37:43.596Z",
      "status": "submitted",
      "title": "Darling",
      "play_count": 0,
      "upvote_count": 0,
      "is_public": false
    },
    {
      "id": "fff58de4-7ccc-4b95-937b-3b66ec07cc65",
      "video_url": "",
      "audio_url": "",
      "major_model_version": "v4",
      "model_name": "chirp-v4",
      "metadata": {
        "tags": "electronic, pop",
        "prompt": "...(lyrics)...",
        "type": "gen",
        "stream": true,
        "has_vocal": false,
        "artist_clip_id": "a5fa604c-18b8-4e7f-8d25-9412d4ba8163",
        "persona_id": "0f6e8077-a7ba-4fc8-8f60-de02c66e56ce",
        "task": "artist_consistency"
      },
      "is_liked": false,
      "user_id": "a3da04d5-0442-4bd3-b837-4c73ff600914",
      "display_name": "TwinklingVenue1595",
      "handle": "twinklingvenue1595",
      "is_handle_updated": false,
      "avatar_image_url": "https://cdn1.suno.ai/defaultPink.webp",
      "is_trashed": false,
      "created_at": "2024-12-23T10:37:43.596Z",
      "status": "submitted",
      "title": "Darling",
      "play_count": 0,
      "upvote_count": 0,
      "is_public": false
    }
  ],
  "metadata": {
    "tags": "electronic, pop",
    "prompt": "...(lyrics)...",
    "type": "gen",
    "stream": true,
    "has_vocal": false,
    "artist_clip_id": "a5fa604c-18b8-4e7f-8d25-9412d4ba8163",
    "persona_id": "0f6e8077-a7ba-4fc8-8f60-de02c66e56ce",
    "task": "artist_consistency"
  },
  "major_model_version": "v4",
  "status": "complete",
  "created_at": "2024-12-23T10:37:43.581Z",
  "batch_size": 1
}
{
  "id": "2d453a5f-c539-4fe0-9a66-24058c5dfb6a",
  "clips": [
    {
      "id": "0e6937df-64d8-41f9-82c6-b6dadc4426a8",
      "video_url": "",
      "audio_url": "",
      "major_model_version": "v4",
      "model_name": "chirp-v4",
      "metadata": {
        "tags": "electronic, pop",
        "prompt": "...(lyrics)...",
        "type": "gen",
        "stream": true,
        "has_vocal": false,
        "artist_clip_id": "a5fa604c-18b8-4e7f-8d25-9412d4ba8163",
        "persona_id": "0f6e8077-a7ba-4fc8-8f60-de02c66e56ce",
        "task": "artist_consistency"
      },
      "is_liked": false,
      "user_id": "a3da04d5-0442-4bd3-b837-4c73ff600914",
      "display_name": "TwinklingVenue1595",
      "handle": "twinklingvenue1595",
      "is_handle_updated": false,
      "avatar_image_url": "https://cdn1.suno.ai/defaultPink.webp",
      "is_trashed": false,
      "created_at": "2024-12-23T10:37:43.596Z",
      "status": "submitted",
      "title": "Darling",
      "play_count": 0,
      "upvote_count": 0,
      "is_public": false
    },
    {
      "id": "fff58de4-7ccc-4b95-937b-3b66ec07cc65",
      "video_url": "",
      "audio_url": "",
      "major_model_version": "v4",
      "model_name": "chirp-v4",
      "metadata": {
        "tags": "electronic, pop",
        "prompt": "...(lyrics)...",
        "type": "gen",
        "stream": true,
        "has_vocal": false,
        "artist_clip_id": "a5fa604c-18b8-4e7f-8d25-9412d4ba8163",
        "persona_id": "0f6e8077-a7ba-4fc8-8f60-de02c66e56ce",
        "task": "artist_consistency"
      },
      "is_liked": false,
      "user_id": "a3da04d5-0442-4bd3-b837-4c73ff600914",
      "display_name": "TwinklingVenue1595",
      "handle": "twinklingvenue1595",
      "is_handle_updated": false,
      "avatar_image_url": "https://cdn1.suno.ai/defaultPink.webp",
      "is_trashed": false,
      "created_at": "2024-12-23T10:37:43.596Z",
      "status": "submitted",
      "title": "Darling",
      "play_count": 0,
      "upvote_count": 0,
      "is_public": false
    }
  ],
  "metadata": {
    "tags": "electronic, pop",
    "prompt": "...(lyrics)...",
    "type": "gen",
    "stream": true,
    "has_vocal": false,
    "artist_clip_id": "a5fa604c-18b8-4e7f-8d25-9412d4ba8163",
    "persona_id": "0f6e8077-a7ba-4fc8-8f60-de02c66e56ce",
    "task": "artist_consistency"
  },
  "major_model_version": "v4",
  "status": "complete",
  "created_at": "2024-12-23T10:37:43.581Z",
  "batch_size": 1
}

10. stems: Vocals/Instrumental Separation

  • After separation: Vocals (vocals track)
  • After separation: Instrumental (backing track / pure music)

A. Generate Music

Use scenarios 1, 2, or 3 to generate music and get one song's clip_id with value a624123d-22cc-4d4d-bf28-78d312f61597

B. Separate Vocals/Instrumental (Deprecated)

B. Separate Vocals/Instrumental (New)

post https://api.openai-hk.com/suno/generate

Request body:

  • Note: mv must be chirp-auk
  • task must be gen_stem
  • stem_task must be two
  • stem_type_group_name must be Two
  • continue_clip_id is the clip_id from Step A
  • Cross-account supported
  • Billing: cost of one generation
json
{
  "task": "gen_stem",
  "generation_type": "TEXT",
  "title": "Safety String",
  "mv": "chirp-auk",
  "prompt": "",
  "make_instrumental": true,
  "continue_clip_id": "4720ad51-6d31-417c-a3a7-346b0b99abbc",
  "continued_aligned_prompt": null,
  "continue_at": null,
  "stem_type_id": 91,
  "stem_type_group_name": "Two",
  "stem_task": "two"
}
{
  "task": "gen_stem",
  "generation_type": "TEXT",
  "title": "Safety String",
  "mv": "chirp-auk",
  "prompt": "",
  "make_instrumental": true,
  "continue_clip_id": "4720ad51-6d31-417c-a3a7-346b0b99abbc",
  "continued_aligned_prompt": null,
  "continue_at": null,
  "stem_type_id": 91,
  "stem_type_group_name": "Two",
  "stem_task": "two"
}
  • Response:
json
{
  "clips": [
    {
      "id": "5f3587e2-75fb-4c36-84b3-3ec113897a4c",
      "video_url": "",
      "audio_url": "",
      "major_model_version": "",
      "model_name": "",
      "metadata": {
        "tags": "Chinese",
        "prompt": "...(lyrics)...",
        "stem_from_id": "a624123d-22cc-4d4d-bf28-78d312f61597",
        "type": "stem",
        "duration": 217.24
      },
      "is_liked": false,
      "user_id": "58387c47-dc80-466f-a7b1-a2eed61c24fb",
      "display_name": "FluidXylophone2289",
      "handle": "fluidxylophone2289",
      "is_handle_updated": false,
      "avatar_image_url": "https://cdn1.suno.ai/defaultPink.webp",
      "is_trashed": false,
      "created_at": "2024-12-25T16:51:36.619Z",
      "status": "queued",
      "title": "Riding the Dream Dragon - Vocals",
      "play_count": 0,
      "upvote_count": 0,
      "is_public": false
    },
    {
      "id": "9c85d619-4cac-4561-8fa3-604c116fa1c5",
      "video_url": "",
      "audio_url": "",
      "major_model_version": "",
      "model_name": "",
      "metadata": {
        "tags": "Chinese",
        "prompt": "",
        "stem_from_id": "a624123d-22cc-4d4d-bf28-78d312f61597",
        "type": "stem",
        "duration": 217.24
      },
      "is_liked": false,
      "user_id": "58387c47-dc80-466f-a7b1-a2eed61c24fb",
      "display_name": "FluidXylophone2289",
      "handle": "fluidxylophone2289",
      "is_handle_updated": false,
      "avatar_image_url": "https://cdn1.suno.ai/defaultPink.webp",
      "is_trashed": false,
      "created_at": "2024-12-25T16:51:36.625Z",
      "status": "queued",
      "title": "Riding the Dream Dragon - Instrumental",
      "play_count": 0,
      "upvote_count": 0,
      "is_public": false
    }
  ]
}
{
  "clips": [
    {
      "id": "5f3587e2-75fb-4c36-84b3-3ec113897a4c",
      "video_url": "",
      "audio_url": "",
      "major_model_version": "",
      "model_name": "",
      "metadata": {
        "tags": "Chinese",
        "prompt": "...(lyrics)...",
        "stem_from_id": "a624123d-22cc-4d4d-bf28-78d312f61597",
        "type": "stem",
        "duration": 217.24
      },
      "is_liked": false,
      "user_id": "58387c47-dc80-466f-a7b1-a2eed61c24fb",
      "display_name": "FluidXylophone2289",
      "handle": "fluidxylophone2289",
      "is_handle_updated": false,
      "avatar_image_url": "https://cdn1.suno.ai/defaultPink.webp",
      "is_trashed": false,
      "created_at": "2024-12-25T16:51:36.619Z",
      "status": "queued",
      "title": "Riding the Dream Dragon - Vocals",
      "play_count": 0,
      "upvote_count": 0,
      "is_public": false
    },
    {
      "id": "9c85d619-4cac-4561-8fa3-604c116fa1c5",
      "video_url": "",
      "audio_url": "",
      "major_model_version": "",
      "model_name": "",
      "metadata": {
        "tags": "Chinese",
        "prompt": "",
        "stem_from_id": "a624123d-22cc-4d4d-bf28-78d312f61597",
        "type": "stem",
        "duration": 217.24
      },
      "is_liked": false,
      "user_id": "58387c47-dc80-466f-a7b1-a2eed61c24fb",
      "display_name": "FluidXylophone2289",
      "handle": "fluidxylophone2289",
      "is_handle_updated": false,
      "avatar_image_url": "https://cdn1.suno.ai/defaultPink.webp",
      "is_trashed": false,
      "created_at": "2024-12-25T16:51:36.625Z",
      "status": "queued",
      "title": "Riding the Dream Dragon - Instrumental",
      "play_count": 0,
      "upvote_count": 0,
      "is_public": false
    }
  ]
}

C. Get Results

get https://api.openai-hk.com/sunoapi/feed/5f3587e2-75fb-4c36-84b3-3ec113897a4c,9c85d619-4cac-4561-8fa3-604c116fa1c5

Response:

json
[
  {
    "audio_url": "https://cdn1.suno.ai/5f3587e2-75fb-4c36-84b3-3ec113897a4c.mp3",
    "avatar_image_url": "https://cdn1.suno.ai/defaultPink.webp",
    "created_at": "2024-12-25T16:51:36.619Z",
    "display_name": "FluidXylophone2289",
    "handle": "fluidxylophone2289",
    "id": "5f3587e2-75fb-4c36-84b3-3ec113897a4c",
    "image_large_url": "https://cdn2.suno.ai/image_large_5f3587e2-75fb-4c36-84b3-3ec113897a4c.jpeg",
    "image_url": "https://cdn2.suno.ai/image_5f3587e2-75fb-4c36-84b3-3ec113897a4c.jpeg",
    "is_handle_updated": false,
    "is_liked": false,
    "is_public": false,
    "is_trashed": false,
    "major_model_version": "",
    "metadata": {
      "duration": 217.24,
      "prompt": "...(lyrics)...",
      "stem_from_id": "a624123d-22cc-4d4d-bf28-78d312f61597",
      "tags": "Chinese",
      "type": "stem"
    },
    "model_name": "",
    "play_count": 0,
    "status": "complete",
    "title": "Riding the Dream Dragon - Vocals",
    "upvote_count": 0,
    "video_url": "https://cdn1.suno.ai/5f3587e2-75fb-4c36-84b3-3ec113897a4c.mp4"
  },
  {
    "audio_url": "https://cdn1.suno.ai/9c85d619-4cac-4561-8fa3-604c116fa1c5.mp3",
    "avatar_image_url": "https://cdn1.suno.ai/defaultPink.webp",
    "created_at": "2024-12-25T16:51:36.625Z",
    "display_name": "FluidXylophone2289",
    "handle": "fluidxylophone2289",
    "id": "9c85d619-4cac-4561-8fa3-604c116fa1c5",
    "image_large_url": "https://cdn2.suno.ai/image_large_9c85d619-4cac-4561-8fa3-604c116fa1c5.jpeg",
    "image_url": "https://cdn2.suno.ai/image_9c85d619-4cac-4561-8fa3-604c116fa1c5.jpeg",
    "is_handle_updated": false,
    "is_liked": false,
    "is_public": false,
    "is_trashed": false,
    "major_model_version": "",
    "metadata": {
      "duration": 217.24,
      "prompt": "",
      "stem_from_id": "a624123d-22cc-4d4d-bf28-78d312f61597",
      "tags": "Chinese",
      "type": "stem"
    },
    "model_name": "",
    "play_count": 0,
    "status": "complete",
    "title": "Riding the Dream Dragon - Instrumental",
    "upvote_count": 0,
    "video_url": "https://cdn1.suno.ai/9c85d619-4cac-4561-8fa3-604c116fa1c5.mp4"
  }
]
[
  {
    "audio_url": "https://cdn1.suno.ai/5f3587e2-75fb-4c36-84b3-3ec113897a4c.mp3",
    "avatar_image_url": "https://cdn1.suno.ai/defaultPink.webp",
    "created_at": "2024-12-25T16:51:36.619Z",
    "display_name": "FluidXylophone2289",
    "handle": "fluidxylophone2289",
    "id": "5f3587e2-75fb-4c36-84b3-3ec113897a4c",
    "image_large_url": "https://cdn2.suno.ai/image_large_5f3587e2-75fb-4c36-84b3-3ec113897a4c.jpeg",
    "image_url": "https://cdn2.suno.ai/image_5f3587e2-75fb-4c36-84b3-3ec113897a4c.jpeg",
    "is_handle_updated": false,
    "is_liked": false,
    "is_public": false,
    "is_trashed": false,
    "major_model_version": "",
    "metadata": {
      "duration": 217.24,
      "prompt": "...(lyrics)...",
      "stem_from_id": "a624123d-22cc-4d4d-bf28-78d312f61597",
      "tags": "Chinese",
      "type": "stem"
    },
    "model_name": "",
    "play_count": 0,
    "status": "complete",
    "title": "Riding the Dream Dragon - Vocals",
    "upvote_count": 0,
    "video_url": "https://cdn1.suno.ai/5f3587e2-75fb-4c36-84b3-3ec113897a4c.mp4"
  },
  {
    "audio_url": "https://cdn1.suno.ai/9c85d619-4cac-4561-8fa3-604c116fa1c5.mp3",
    "avatar_image_url": "https://cdn1.suno.ai/defaultPink.webp",
    "created_at": "2024-12-25T16:51:36.625Z",
    "display_name": "FluidXylophone2289",
    "handle": "fluidxylophone2289",
    "id": "9c85d619-4cac-4561-8fa3-604c116fa1c5",
    "image_large_url": "https://cdn2.suno.ai/image_large_9c85d619-4cac-4561-8fa3-604c116fa1c5.jpeg",
    "image_url": "https://cdn2.suno.ai/image_9c85d619-4cac-4561-8fa3-604c116fa1c5.jpeg",
    "is_handle_updated": false,
    "is_liked": false,
    "is_public": false,
    "is_trashed": false,
    "major_model_version": "",
    "metadata": {
      "duration": 217.24,
      "prompt": "",
      "stem_from_id": "a624123d-22cc-4d4d-bf28-78d312f61597",
      "tags": "Chinese",
      "type": "stem"
    },
    "model_name": "",
    "play_count": 0,
    "status": "complete",
    "title": "Riding the Dream Dragon - Instrumental",
    "upvote_count": 0,
    "video_url": "https://cdn1.suno.ai/9c85d619-4cac-4561-8fa3-604c116fa1c5.mp4"
  }
]

11. Timing: Lyrics & Audio Timeline

A. Generate Music

Use scenarios 1, 2, or 3 to generate music and get one song's clip_id with value 54834687-5e79-4f08-8e14-cf188f15b598

B. Get Lyrics

Response:

json
{
  "aligned_words": [
    {
      "word": "[Verse]\nWinter ",
      "success": true,
      "start_s": 8.38,
      "end_s": 8.78,
      "p_align": 0.982
    },
    {
      "word": "winds ",
      "success": true,
      "start_s": 8.78,
      "end_s": 9.54,
      "p_align": 0.961
    },
    {
      "word": "they ",
      "success": true,
      "start_s": 9.54,
      "end_s": 9.93,
      "p_align": 0.99
    },
    {
      "word": "cut ",
      "success": true,
      "start_s": 9.93,
      "end_s": 10.41,
      "p_align": 0.998
    },
    {
      "word": "so ",
      "success": true,
      "start_s": 10.41,
      "end_s": 10.93,
      "p_align": 0.996
    },
    {
      "word": "deep\n",
      "success": true,
      "start_s": 10.93,
      "end_s": 11.93,
      "p_align": 0.997
    },
    ....
  ],
  "waveform_data": [
    0.001, 0.00109, 0.04219, 0.03597, ....
  ],
  "hoot_cer": 0.03556771545827633,
  "is_streamed": false
}
{
  "aligned_words": [
    {
      "word": "[Verse]\nWinter ",
      "success": true,
      "start_s": 8.38,
      "end_s": 8.78,
      "p_align": 0.982
    },
    {
      "word": "winds ",
      "success": true,
      "start_s": 8.78,
      "end_s": 9.54,
      "p_align": 0.961
    },
    {
      "word": "they ",
      "success": true,
      "start_s": 9.54,
      "end_s": 9.93,
      "p_align": 0.99
    },
    {
      "word": "cut ",
      "success": true,
      "start_s": 9.93,
      "end_s": 10.41,
      "p_align": 0.998
    },
    {
      "word": "so ",
      "success": true,
      "start_s": 10.41,
      "end_s": 10.93,
      "p_align": 0.996
    },
    {
      "word": "deep\n",
      "success": true,
      "start_s": 10.93,
      "end_s": 11.93,
      "p_align": 0.997
    },
    ....
  ],
  "waveform_data": [
    0.001, 0.00109, 0.04219, 0.03597, ....
  ],
  "hoot_cer": 0.03556771545827633,
  "is_streamed": false
}

12. WAV: Get WAV Format File

A. Generate Music

Use scenarios 1, 2, or 3 to generate music and get one song's clip_id with value a624123d-22cc-4d4d-bf28-78d312f61597

B. Get WAV File

get https://api.openai-hk.com/sunoapi/act/wav/a624123d-22cc-4d4d-bf28-78d312f61597

  • If wav_file_url in the response is null, try requesting again
  • To prevent abuse, 100 credits will be deducted
  • Cross-account not supported; unavailable if account expires
  • Response:
json
{
  "wav_file_url": "https://cdn1.suno.ai/a624123d-22cc-4d4d-bf28-78d312f61597.wav"
}
{
  "wav_file_url": "https://cdn1.suno.ai/a624123d-22cc-4d4d-bf28-78d312f61597.wav"
}

13. MP4: Generate MP4 MV Video

A. Generate Music

Use scenarios 1, 2, or 3 to generate music and get one song's clip_id with value a624123d-22cc-4d4d-bf28-78d312f61597

B. Get MP4 File

get https://api.openai-hk.com/sunoapi/act/mp4/a624123d-22cc-4d4d-bf28-78d312f61597

  • The song must have status complete for this to work
  • After execution, wait ~30 seconds before the URL becomes accessible
  • To prevent abuse, 100 credits will be deducted
  • Cross-account not supported; unavailable if account expires
  • Response:
json
{
  "mp4": "https://cdn1.suno.ai/a624123d-22cc-4d4d-bf28-78d312f61597.mp4"
}
{
  "mp4": "https://cdn1.suno.ai/a624123d-22cc-4d4d-bf28-78d312f61597.mp4"
}

14. all-stems: Full Track Separation

A. Generate Music

Use scenarios 1, 2, or 3 to generate music and get one song's clip_id with value a624123d-22cc-4d4d-bf28-78d312f61597

B. Full Track Separation

post https://api.openai-hk.com/suno/generate

  • Note: mv must be chirp-auk
  • task must be gen_stem
  • stem_task must be twelve
  • stem_type_group_name must be Twelve
  • continue_clip_id is the clip_id from Step A
  • Cross-account supported
  • Billing: 5× base price — cost of 5 requests / 10 songs
json
{
  "task": "gen_stem",
  "generation_type": "TEXT",
  "title": "Safety String",
  "mv": "chirp-auk",
  "prompt": "",
  "make_instrumental": true,
  "continue_clip_id": "4720ad51-6d31-417c-a3a7-346b0b99abbc",
  "continued_aligned_prompt": null,
  "continue_at": null,
  "stem_type_id": 91,
  "stem_type_group_name": "Twelve",
  "stem_task": "twelve"
}
{
  "task": "gen_stem",
  "generation_type": "TEXT",
  "title": "Safety String",
  "mv": "chirp-auk",
  "prompt": "",
  "make_instrumental": true,
  "continue_clip_id": "4720ad51-6d31-417c-a3a7-346b0b99abbc",
  "continued_aligned_prompt": null,
  "continue_at": null,
  "stem_type_id": 91,
  "stem_type_group_name": "Twelve",
  "stem_task": "twelve"
}
  • Returns 24 clip_ids

  • Query all 24 clip_ids at once

  • Response example:

json
{
  "id": "b19ee87f-574d-42c7-9761-df6aafc0fd9c",
  "clips": [
    {
      "id": "0e5be1db-4834-4890-acfb-2fea7fd24eb9",
      "entity_type": "song_schema",
      "video_url": "",
      "audio_url": "",
      "major_model_version": "",
      "model_name": "chirp-stem",
      "metadata": {
        "prompt": "",
        "history": [
          {
            "id": "4720ad51-6d31-417c-a3a7-346b0b99abbc",
            "type": "gen",
            "source": "web",
            "infill": false,
            "stem_type_id": 91,
            "stem_type_group_name": "Twelve",
            "stem_task": "twelve",
            "stem_from_id": "4720ad51-6d31-417c-a3a7-346b0b99abbc"
          }
        ],
        "stem_from_id": "4720ad51-6d31-417c-a3a7-346b0b99abbc",
        "stem_task": "twelve",
        "stem_type_id": 91,
        "stem_type_group_name": "Vocals",
        "edited_clip_id": "4720ad51-6d31-417c-a3a7-346b0b99abbc",
        "type": "gen",
        "stream": true,
        "infill": false,
        "task": "gen_stem",
        "can_remix": true,
        "is_remix": false,
        "priority": 10
      },
      "is_liked": false,
      "user_id": "a8a4d117-d5aa-4a9f-ab5b-88cc2c2eb79d",
      "display_name": "ugknurymt91r",
      "handle": "ugknurymt91r",
      "is_handle_updated": false,
      "avatar_image_url": "https://cdn1.suno.ai/sAura20.jpg",
      "is_trashed": false,
      "flag_count": 0,
      "created_at": "2025-06-06T11:22:30.753Z",
      "status": "submitted",
      "title": "Safety String (Vocals)",
      "play_count": 0,
      "upvote_count": 0,
      "is_public": false,
      "allow_comments": true
    },
    {
      "more": "24 similar items in total"
    }
  ],
  "metadata": {
    "prompt": "",
    "history": [
      {
        "id": "4720ad51-6d31-417c-a3a7-346b0b99abbc",
        "type": "gen",
        "source": "web",
        "infill": false,
        "stem_type_id": 91,
        "stem_type_group_name": "Twelve",
        "stem_task": "twelve",
        "stem_from_id": "4720ad51-6d31-417c-a3a7-346b0b99abbc"
      }
    ],
    "stem_from_id": "4720ad51-6d31-417c-a3a7-346b0b99abbc",
    "stem_task": "twelve",
    "stem_type_id": 91,
    "stem_type_group_name": "Twelve",
    "edited_clip_id": "4720ad51-6d31-417c-a3a7-346b0b99abbc",
    "type": "gen",
    "stream": true,
    "infill": false,
    "task": "gen_stem",
    "can_remix": true,
    "is_remix": false,
    "priority": 10
  },
  "major_model_version": "",
  "status": "complete",
  "created_at": "2025-06-06T11:22:30.737Z",
  "batch_size": 1
}
{
  "id": "b19ee87f-574d-42c7-9761-df6aafc0fd9c",
  "clips": [
    {
      "id": "0e5be1db-4834-4890-acfb-2fea7fd24eb9",
      "entity_type": "song_schema",
      "video_url": "",
      "audio_url": "",
      "major_model_version": "",
      "model_name": "chirp-stem",
      "metadata": {
        "prompt": "",
        "history": [
          {
            "id": "4720ad51-6d31-417c-a3a7-346b0b99abbc",
            "type": "gen",
            "source": "web",
            "infill": false,
            "stem_type_id": 91,
            "stem_type_group_name": "Twelve",
            "stem_task": "twelve",
            "stem_from_id": "4720ad51-6d31-417c-a3a7-346b0b99abbc"
          }
        ],
        "stem_from_id": "4720ad51-6d31-417c-a3a7-346b0b99abbc",
        "stem_task": "twelve",
        "stem_type_id": 91,
        "stem_type_group_name": "Vocals",
        "edited_clip_id": "4720ad51-6d31-417c-a3a7-346b0b99abbc",
        "type": "gen",
        "stream": true,
        "infill": false,
        "task": "gen_stem",
        "can_remix": true,
        "is_remix": false,
        "priority": 10
      },
      "is_liked": false,
      "user_id": "a8a4d117-d5aa-4a9f-ab5b-88cc2c2eb79d",
      "display_name": "ugknurymt91r",
      "handle": "ugknurymt91r",
      "is_handle_updated": false,
      "avatar_image_url": "https://cdn1.suno.ai/sAura20.jpg",
      "is_trashed": false,
      "flag_count": 0,
      "created_at": "2025-06-06T11:22:30.753Z",
      "status": "submitted",
      "title": "Safety String (Vocals)",
      "play_count": 0,
      "upvote_count": 0,
      "is_public": false,
      "allow_comments": true
    },
    {
      "more": "24 similar items in total"
    }
  ],
  "metadata": {
    "prompt": "",
    "history": [
      {
        "id": "4720ad51-6d31-417c-a3a7-346b0b99abbc",
        "type": "gen",
        "source": "web",
        "infill": false,
        "stem_type_id": 91,
        "stem_type_group_name": "Twelve",
        "stem_task": "twelve",
        "stem_from_id": "4720ad51-6d31-417c-a3a7-346b0b99abbc"
      }
    ],
    "stem_from_id": "4720ad51-6d31-417c-a3a7-346b0b99abbc",
    "stem_task": "twelve",
    "stem_type_id": 91,
    "stem_type_group_name": "Twelve",
    "edited_clip_id": "4720ad51-6d31-417c-a3a7-346b0b99abbc",
    "type": "gen",
    "stream": true,
    "infill": false,
    "task": "gen_stem",
    "can_remix": true,
    "is_remix": false,
    "priority": 10
  },
  "major_model_version": "",
  "status": "complete",
  "created_at": "2025-06-06T11:22:30.737Z",
  "batch_size": 1
}

C. Get Results

GET https://api.openai-hk.com/suno/feed/4f72cbf2-44ec-4afa-8e54-9ac1d8fad362,9d6b3790-e460-4d86-9dac-0f365de79a13,7bace6af-0424-481d-b11b-285d976a68bc,5edf410a-98bd-4d65-8b5d-85dc823c92d2,90fdb909-6e4c-4b84-950d-de0871ba5f8e,958cf624-4021-4c48-a455-7ef2471cbfb5,9b4e6452-d39b-4071-b25f-b3003058bd5f,d9f39a13-ba39-41d6-abaf-c7035535021d,09a6ad16-c5f7-4a24-9873-0d21d03324d3,6c1138ea-68f5-43fc-a34b-65f0bd7ca3a3,a7004238-4570-4480-8542-698131dcfd9a,9975eda4-551d-48c7-b840-490c59ac7fa1,88860fc9-b09e-44fc-acb8-9373885c0b6b,fa327c28-0468-4a6b-862b-c68e6929f002,300295af-b31a-41de-a21c-c8ed4af45d63,0c9de950-1fc2-44b5-ac1a-71605273ccfd,96c6b96e-a596-4c1c-bda5-bcdbc243030b,d2029f8e-e43a-4bbc-910f-7ca97903caa0,643cc7ee-5f14-47d3-889e-a27a6a764542,f5570d79-2a88-436e-8341-620b7594a47d,37a8686a-5269-46a5-ac9b-5c48486639f3,f6dda4cb-ba98-4498-9735-3fba4a4c1db0,20f6db47-429f-421a-a16c-1a9aeb3d5a98,d93cd7df-cf79-4eaa-8ab9-cbe6215c8b1d

  • Concatenate all 24 clip_ids into one request

15. Advanced Parameters

  • In June 2025, Suno added 3 new advanced parameters
  • Parameters: weirdness_constraint, style_weight, audio_weight
  • audio_weight only appears during cover, Add Instrumental, and Add Vocals
  • All values range from 0 to 1
  • In September 2025, vocal_gender was added: female f, male m

A. Standard Generation

post https://api.openai-hk.com/suno/generate

json
{
  "prompt": "[Verse]\nI got a plate of dreams piled high\nA world of flavors I wanna try\nSpices dancing under the sky\nTaste buds soaring I won't deny\n\n[Chorus]\nCrunch and sizzle sweet and sour\nEvery bite holds a little power\nBite by bite I'm feeling bold\nLife's a buffet can't be controlled\n\n[Verse 2]\nFrom tacos wrapped so tight with love\nTo noodles swimming skies above\nPizza slices like a dove\nFlying straight to my tastebud glove\n\n[Bridge]\nOh the crunch of chips so loud\nPopcorn popping in a cloud\nChocolate melting makes me proud\nIn this feast I'm unbowed\n\n[Chorus]\nCrunch and sizzle sweet and sour\nEvery bite holds a little power\nBite by bite I'm feeling bold\nLife's a buffet can't be controlled\n\n[Verse 3]\nSaucy rivers on a plate\nFlavors whispering don't be late\nEvery meal's a twist of fate\nI'll devour till it's too great",
  "generation_type": "TEXT",
  "tags": "house, tight drums",
  "negative_tags": "modern",
  "mv": "chirp-auk",
  "title": "Savor the Flavor",
  "metadata": {
    "create_mode": "custom",
    "control_sliders": {
      "style_weight": 0.4,
      "weirdness_constraint": 0.7
    },
    "can_control_sliders": ["weirdness_constraint", "style_weight"],
    "vocal_gender": "f"
  }
}
{
  "prompt": "[Verse]\nI got a plate of dreams piled high\nA world of flavors I wanna try\nSpices dancing under the sky\nTaste buds soaring I won't deny\n\n[Chorus]\nCrunch and sizzle sweet and sour\nEvery bite holds a little power\nBite by bite I'm feeling bold\nLife's a buffet can't be controlled\n\n[Verse 2]\nFrom tacos wrapped so tight with love\nTo noodles swimming skies above\nPizza slices like a dove\nFlying straight to my tastebud glove\n\n[Bridge]\nOh the crunch of chips so loud\nPopcorn popping in a cloud\nChocolate melting makes me proud\nIn this feast I'm unbowed\n\n[Chorus]\nCrunch and sizzle sweet and sour\nEvery bite holds a little power\nBite by bite I'm feeling bold\nLife's a buffet can't be controlled\n\n[Verse 3]\nSaucy rivers on a plate\nFlavors whispering don't be late\nEvery meal's a twist of fate\nI'll devour till it's too great",
  "generation_type": "TEXT",
  "tags": "house, tight drums",
  "negative_tags": "modern",
  "mv": "chirp-auk",
  "title": "Savor the Flavor",
  "metadata": {
    "create_mode": "custom",
    "control_sliders": {
      "style_weight": 0.4,
      "weirdness_constraint": 0.7
    },
    "can_control_sliders": ["weirdness_constraint", "style_weight"],
    "vocal_gender": "f"
  }
}

B. Cover Generation

  • During a cover, there is an additional audio_weight parameter

post https://api.openai-hk.com/suno/generate

json
{
  "prompt": "[Verse]\nNew Year's bell is ringing\nFireworks light up the night\nLaughter spreading everywhere\nGood fortune by your side\n\n[Chorus]\nHappy New Year joy and cheer\nRed lanterns glow along the street\nFamily reunion happiness blooms\nMay wishes come true and blessings meet\n\n[Verse 2]\nSpring breeze gently blowing\nBringing luck and flowers in bloom\nNew clothes new shoes new expectations\nDreams begin to unfold\n\n[Chorus]\nHappy New Year joy and cheer\nRed lanterns glow along the street\nFamily reunion happiness blooms\nMay wishes come true and blessings meet\n\n[Bridge]\nFirecracker sounds exploding\nWelcoming new opportunities\nEvery household filled with joy\nThe spirit of the new year spreading\n\n[Chorus]\nHappy New Year joy and cheer\nRed lanterns glow along the street\nFamily reunion happiness blooms\nMay wishes come true and blessings meet",
  "generation_type": "TEXT",
  "tags": "",
  "negative_tags": "",
  "mv": "chirp-auk",
  "title": "Happy New Year (Remix)",
  "task": "cover",
  "cover_clip_id": "f31754fc-2c83-4fc1-8a07-70ae218dd0a6",
  "metadata": {
    "create_mode": "custom",
    "control_sliders": {
      "style_weight": 0.68,
      "audio_weight": 0.48,
      "weirdness_constraint": 0.37
    },
    "can_control_sliders": [
      "weirdness_constraint",
      "style_weight",
      "audio_weight"
    ],
    "is_remix": true
  }
}
{
  "prompt": "[Verse]\nNew Year's bell is ringing\nFireworks light up the night\nLaughter spreading everywhere\nGood fortune by your side\n\n[Chorus]\nHappy New Year joy and cheer\nRed lanterns glow along the street\nFamily reunion happiness blooms\nMay wishes come true and blessings meet\n\n[Verse 2]\nSpring breeze gently blowing\nBringing luck and flowers in bloom\nNew clothes new shoes new expectations\nDreams begin to unfold\n\n[Chorus]\nHappy New Year joy and cheer\nRed lanterns glow along the street\nFamily reunion happiness blooms\nMay wishes come true and blessings meet\n\n[Bridge]\nFirecracker sounds exploding\nWelcoming new opportunities\nEvery household filled with joy\nThe spirit of the new year spreading\n\n[Chorus]\nHappy New Year joy and cheer\nRed lanterns glow along the street\nFamily reunion happiness blooms\nMay wishes come true and blessings meet",
  "generation_type": "TEXT",
  "tags": "",
  "negative_tags": "",
  "mv": "chirp-auk",
  "title": "Happy New Year (Remix)",
  "task": "cover",
  "cover_clip_id": "f31754fc-2c83-4fc1-8a07-70ae218dd0a6",
  "metadata": {
    "create_mode": "custom",
    "control_sliders": {
      "style_weight": 0.68,
      "audio_weight": 0.48,
      "weirdness_constraint": 0.37
    },
    "can_control_sliders": [
      "weirdness_constraint",
      "style_weight",
      "audio_weight"
    ],
    "is_remix": true
  }
}

16. Add Instrumental

  • Version must be v4.5+ or higher
  • Introduced by Suno in August 2025
  • Upload an a cappella (vocals-only, no music) track, and let Suno add the instrumentation
  • task must be underpainting
  • underpainting_clip_id is the upload_clip_id
  • underpainting_end_s must be less than or equal to the upload's duration
  • Billing: cost of one song generation
  • Cross-account not allowed

A. Upload A Cappella Track

post https://api.openai-hk.com/suno/uploads/audio-url

shell
curl --request POST \
  --url https://api.openai-hk.com/suno/uploads/audio-url \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Connection: keep-alive' \
  --header 'Content-Type: application/json' \
  --data '{
  "url": "http://cdnimg.exbapp.com/ai/2024-06-18/d416d9c3c34eb22c7d8c094831d8dbd0.mp3"
}'
curl --request POST \
  --url https://api.openai-hk.com/suno/uploads/audio-url \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Connection: keep-alive' \
  --header 'Content-Type: application/json' \
  --data '{
  "url": "http://cdnimg.exbapp.com/ai/2024-06-18/d416d9c3c34eb22c7d8c094831d8dbd0.mp3"
}'

Returns clip_id as upload_clip_id:

json
{
  "clip_id": "9b1d2e8d-a365-4bfd-8a18-8989e159b29f",
  "code": "success",
  "data": "9b1d2e8d-a365-4bfd-8a18-8989e159b29f",
  "message": ""
}
{
  "clip_id": "9b1d2e8d-a365-4bfd-8a18-8989e159b29f",
  "code": "success",
  "data": "9b1d2e8d-a365-4bfd-8a18-8989e159b29f",
  "message": ""
}

B. Get Song Duration and Parameters

get http://api.openai-hk.com/suno/feed/9b1d2e8d-a365-4bfd-8a18-8989e159b29f

  • Use the feed API to get metadata.duration

C. Execute Add Instrumental

post https://api.openai-hk.com/suno/generate

  • task must be underpainting
  • underpainting_clip_id is the upload_clip_id
  • underpainting_end_s must be less than or equal to the upload's duration
  • It's best to leave the lyrics empty since this is for adding music
  • Request body:
json
{
  "mv": "chirp-bluejay",
  "tags": "Pop rap, uplifting, magnetic male vocals, piano, synth, electric guitar, driving bass, clear structure",
  "title": "Hi Instrumental",
  "underpainting_clip_id": "9b1d2e8d-a365-4bfd-8a18-8989e159b29f",
  "underpainting_start_s": 0,
  "underpainting_end_s": 57.9,
  "task": "underpainting",
  "prompt": "",
  "override_fields": ["prompt", "tags"]
}
{
  "mv": "chirp-bluejay",
  "tags": "Pop rap, uplifting, magnetic male vocals, piano, synth, electric guitar, driving bass, clear structure",
  "title": "Hi Instrumental",
  "underpainting_clip_id": "9b1d2e8d-a365-4bfd-8a18-8989e159b29f",
  "underpainting_start_s": 0,
  "underpainting_end_s": 57.9,
  "task": "underpainting",
  "prompt": "",
  "override_fields": ["prompt", "tags"]
}

17. Add Vocals

  • Version must be v4.5+ or higher
  • Introduced by Suno in August 2025
  • Upload an instrumental track and let Suno write lyrics and add vocals
  • task must be overpainting
  • overpainting_clip_id is the upload_clip_id
  • overpainting_end_s must be less than or equal to the upload's duration
  • Billing: cost of one song generation
  • Cross-account not allowed

A. Upload Instrumental Track

post https://api.openai-hk.com/suno/uploads/audio-url

shell
curl --request POST \
  --url https://api.openai-hk.com/suno/uploads/audio-url \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Connection: keep-alive' \
  --header 'Content-Type: application/json' \
  --data '{
  "url": "http://cdnimg.exbapp.com/ai/2024-06-18/d416d9c3c34eb22c7d8c094831d8dbd0.mp3"
}'
curl --request POST \
  --url https://api.openai-hk.com/suno/uploads/audio-url \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Connection: keep-alive' \
  --header 'Content-Type: application/json' \
  --data '{
  "url": "http://cdnimg.exbapp.com/ai/2024-06-18/d416d9c3c34eb22c7d8c094831d8dbd0.mp3"
}'

Returns clip_id as upload_clip_id:

json
{
  "clip_id": "9b1d2e8d-a365-4bfd-8a18-8989e159b29f",
  "code": "success",
  "data": "9b1d2e8d-a365-4bfd-8a18-8989e159b29f",
  "message": ""
}
{
  "clip_id": "9b1d2e8d-a365-4bfd-8a18-8989e159b29f",
  "code": "success",
  "data": "9b1d2e8d-a365-4bfd-8a18-8989e159b29f",
  "message": ""
}

B. Get Song Duration and Parameters

get http://api.openai-hk.com/suno/feed/9b1d2e8d-a365-4bfd-8a18-8989e159b29f

  • Use the feed API to get metadata.duration
  • Also retrieve metadata.tags (Tags)

C. Execute Add Vocals

post https://api.openai-hk.com/suno/generate

  • task must be overpainting
  • overpainting_clip_id is the upload_clip_id
  • overpainting_end_s must be less than or equal to the upload's metadata.duration
  • tags should match the upload's metadata.tags
  • Request body:
json
{
  "mv": "chirp-bluejay",
  "tags": "A smooth, soulful R&B track with a moderate tempo and a relaxed, laid-back feel. The instrumentation features a clean electric guitar playing arpeggiated chords, a prominent bass guitar providing a walking bass line, and a drum kit with a soft, brushed snare sound. The male lead vocal is smooth and melodic, with a baritone range and a slightly melancholic tone. The song is in a minor key, contributing to its introspective mood. Production elements include a subtle reverb on the vocals and guitar, creating a spacious and intimate atmosphere. The song structure follows a typical verse-chorus format with a clear melodic progression.",
  "title": "Hi Vocal",
  "overpainting_clip_id": "9b1d2e8d-a365-4bfd-8a18-8989e159b29f",
  "overpainting_start_s": 0,
  "overpainting_end_s": 57.9,
  "task": "overpainting",
  "prompt": "Write the lyrics yourself",
  "override_fields": ["prompt", "tags"]
}
{
  "mv": "chirp-bluejay",
  "tags": "A smooth, soulful R&B track with a moderate tempo and a relaxed, laid-back feel. The instrumentation features a clean electric guitar playing arpeggiated chords, a prominent bass guitar providing a walking bass line, and a drum kit with a soft, brushed snare sound. The male lead vocal is smooth and melodic, with a baritone range and a slightly melancholic tone. The song is in a minor key, contributing to its introspective mood. Production elements include a subtle reverb on the vocals and guitar, creating a spacious and intimate atmosphere. The song structure follows a typical verse-chorus format with a clear melodic progression.",
  "title": "Hi Vocal",
  "overpainting_clip_id": "9b1d2e8d-a365-4bfd-8a18-8989e159b29f",
  "overpainting_start_s": 0,
  "overpainting_end_s": 57.9,
  "task": "overpainting",
  "prompt": "Write the lyrics yourself",
  "override_fields": ["prompt", "tags"]
}

18. Get MIDI

A. Full-Track Separated clip_id

  • Obtain a clip_id from 14. all-stems: Full Track Separation with value a624123d-22cc-4d4d-bf28-78d312f61597
  • Note: regular music clip_id can also be used, but on the official site only full-track separated clips have this feature
  • Billing: 100 credits
  • Cross-account not supported; unavailable if account expires

B. Get MIDI

get https://api.openai-hk.com/suno/act/midi/c5bffd3a-96ad-4e83-9fbe-4720a5b9a664

  • While still processing:
json
{ "state": "running" }
{ "state": "running" }
  • On completion:
json
{
    "state": "complete",
    "instruments": [
        {
            "name": "String Ensembles 1",
            "notes": [
             {
                    "pitch": 60,
                    "start": 1.1041666666666667,
                    "end": 1.9583333333333333,
                    "velocity": 0.7165354330708661
                },
               ......
            ]

        },
        ......
    ]
}
{
    "state": "complete",
    "instruments": [
        {
            "name": "String Ensembles 1",
            "notes": [
             {
                    "pitch": 60,
                    "start": 1.1041666666666667,
                    "end": 1.9583333333333333,
                    "velocity": 0.7165354330708661
                },
               ......
            ]

        },
        ......
    ]
}

19. Expand Style Tags

  • Tags are the same as style
  • If you don't know how to write a style, use this API
  • Billing: 100 credits

post https://api.openai-hk.com/suno/act/tags

shell
curl --request POST \
  --url https://api.openai-hk.com/suno/act/tags \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Connection: keep-alive' \
  --header 'Content-Type: application/json' \
  --header 'myuid: 123' \
  --data '{"original_tags":"student"}'
curl --request POST \
  --url https://api.openai-hk.com/suno/act/tags \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Connection: keep-alive' \
  --header 'Content-Type: application/json' \
  --header 'myuid: 123' \
  --data '{"original_tags":"student"}'
  • original_tags: pass in a relevant prompt keyword

  • Response:

json
{
  "upsampled_tags": "Laid-back indie pop driven by a clean guitar riff, tight bass, and crisp drums. Verses feature subtle synth textures and gentle background vocals. A catchy chorus lifts with layered harmonies and handclaps. Bridge introduces a bright Rhodes piano before a dynamic final chorus.",
  "request_id": "507acd16-8b84-4e55-be2b-4329d82efb26"
}
{
  "upsampled_tags": "Laid-back indie pop driven by a clean guitar riff, tight bass, and crisp drums. Verses feature subtle synth textures and gentle background vocals. A catchy chorus lifts with layered harmonies and handclaps. Bridge introduces a bright Rhodes piano before a dynamic final chorus.",
  "request_id": "507acd16-8b84-4e55-be2b-4329d82efb26"
}

20. Remaster

post https://api.openai-hk.com/suno/generate

  • model_name: chirp-carp for v5, chirp-bass for v4.5+

  • clip_id: the ID to remaster

  • variation_category is only supported on v5+, and has only 3 values: high, normal, subtle

  • Cross-account not allowed

  • Billing: cost of one generation

  • Request body:

json
{
  "clip_id": "e8bd1ba8-63cd-45f9-b340-7d00f5cfd25b",
  "model_name": "chirp-carp",
  "variation_category": "high"
}
{
  "clip_id": "e8bd1ba8-63cd-45f9-b340-7d00f5cfd25b",
  "model_name": "chirp-carp",
  "variation_category": "high"
}

21. Persona-v2-vox: Singer Style

A. Generate Music

Use scenarios 1, 2, or 3 to generate music and get one song's clip_id with value 7b5a87af-d567-4444-97c2-387ba5c816d5

B. Get Vox

post https://api.openai-hk.com/suno/act/vox/{clip_id}

json
{
  "vocal_start_s": 45,
  "vocal_end_s": 74
}
{
  "vocal_start_s": 45,
  "vocal_end_s": 74
}

Response: the id field is vox_audio_id = e044ac0d-7eb1-4014-b134-3ff7656886be

json
{
	"id": "e044ac0d-7eb1-4014-b134-3ff7656886be",
	"source_clip_id": "7b5a87af-d567-4444-97c2-387ba5c816d5",
	"status": "complete",
	"vocal_audio_url": "https://cdn1.suno.ai/processed_e044ac0d-7eb1-4014-b134-3ff7656886be_vocals.m4a",
	"vocal_end_s": 74,
	"vocal_start_s": 45,
	"wave_response": {
		"waveform_aggregates": [
			{
				"data": [
					[
						-54,
						60,
						-146,
            ...
          ]
        ]
      }
    ]
  }
}
{
	"id": "e044ac0d-7eb1-4014-b134-3ff7656886be",
	"source_clip_id": "7b5a87af-d567-4444-97c2-387ba5c816d5",
	"status": "complete",
	"vocal_audio_url": "https://cdn1.suno.ai/processed_e044ac0d-7eb1-4014-b134-3ff7656886be_vocals.m4a",
	"vocal_end_s": 74,
	"vocal_start_s": 45,
	"wave_response": {
		"waveform_aggregates": [
			{
				"data": [
					[
						-54,
						60,
						-146,
            ...
          ]
        ]
      }
    ]
  }
}

C. Create Persona

post https://api.openai-hk.com/sunoapi/persona/create/

  • root_clip_id must exist in the system and cannot be an uploaded clip; obtained from Step A
  • Cross-account not supported — may be unavailable if account expires
  • To prevent abuse, 100 credits will be deducted
  • vocal_end_s - vocal_start_s must be less than 30
  • persona_type must be vox

Request body:

json
{
  "root_clip_id": "7b5a87af-d567-4444-97c2-387ba5c816d5",
  "name": "food",
  "description": "123",
  "is_public": true,
  "persona_type": "vox",
  "vox_audio_id": "e044ac0d-7eb1-4014-b134-3ff7656886be",
  "vocal_start_s": 66.3,
  "vocal_end_s": 95.3,
  "user_input_styles": "Style: Verse—Chinese Folk narrative + Chorus—explosive rock + Hook—catchy, repetitive loop. A breezy guitar riff kicks in with building drum intensity, blended with \"keyboard typing sounds + faint vocal samples,\" followed by electronic effects layering after 15 seconds. The intro cuts abruptly into the verse with a sharp, punchy \"Lao Xu!\" to instantly grab attention."
}
{
  "root_clip_id": "7b5a87af-d567-4444-97c2-387ba5c816d5",
  "name": "food",
  "description": "123",
  "is_public": true,
  "persona_type": "vox",
  "vox_audio_id": "e044ac0d-7eb1-4014-b134-3ff7656886be",
  "vocal_start_s": 66.3,
  "vocal_end_s": 95.3,
  "user_input_styles": "Style: Verse—Chinese Folk narrative + Chorus—explosive rock + Hook—catchy, repetitive loop. A breezy guitar riff kicks in with building drum intensity, blended with \"keyboard typing sounds + faint vocal samples,\" followed by electronic effects layering after 15 seconds. The intro cuts abruptly into the verse with a sharp, punchy \"Lao Xu!\" to instantly grab attention."
}

Response: the key id value fd213afd-ac1c-4822-9802-c1c0ea45e77b is the persona_id for the next step

json
{
  "id": "fd213afd-ac1c-4822-9802-c1c0ea45e77b",
  "name": "food",
  "description": "123",
  "root_clip_id": "54834687-5e79-4f08-8e14-cf188f15b598",
  "clip": {
    "id": "54834687-5e79-4f08-8e14-cf188f15b598"
  }
}
{
  "id": "fd213afd-ac1c-4822-9802-c1c0ea45e77b",
  "name": "food",
  "description": "123",
  "root_clip_id": "54834687-5e79-4f08-8e14-cf188f15b598",
  "clip": {
    "id": "54834687-5e79-4f08-8e14-cf188f15b598"
  }
}

D. Create Using persona_id

post https://api.openai-hk.com/suno/generate

  • task must be vox (previously artist_consistency)
  • Note: mv only supports chirp-crow (v5+)
  • persona_id is obtained from Step C
  • artist_clip_id is the clip_id from Step A
  • Cross-account supported
  • To use chirp-v4-tau, chirp-auk, or chirp-bluejay, task must be artist_consistency
json
{
  "prompt": "[Verse]\nThe noise finally steps aside,\nMoonlight quietly climbs the window frame.\nWeary soul, put down your disguise,\nHide in the soft world of dreams.\n[Chorus] (recommend soft breathy vocals, extremely gentle)\nGoodnight, starlight by the pillow,\nTake you drifting through the Milky Way.\nForget the panic of the daylight,\nSleep now, the night is long.",
  "generation_type": "TEXT",
  "tags": "Ethereal Lullaby, Acoustic Piano, Ambient, Healing, Slow Tempo",
  "negative_tags": "",
  "mv": "chirp-crow",
  "title": "Goodnight",
  "task": "vox",
  "persona_id": "88cca736-7263-4794-8480-360c0123b6fc",
  "artist_clip_id": "6c983654-7ee9-4e1f-b195-47259a5bed48"
}
{
  "prompt": "[Verse]\nThe noise finally steps aside,\nMoonlight quietly climbs the window frame.\nWeary soul, put down your disguise,\nHide in the soft world of dreams.\n[Chorus] (recommend soft breathy vocals, extremely gentle)\nGoodnight, starlight by the pillow,\nTake you drifting through the Milky Way.\nForget the panic of the daylight,\nSleep now, the night is long.",
  "generation_type": "TEXT",
  "tags": "Ethereal Lullaby, Acoustic Piano, Ambient, Healing, Slow Tempo",
  "negative_tags": "",
  "mv": "chirp-crow",
  "title": "Goodnight",
  "task": "vox",
  "persona_id": "88cca736-7263-4794-8480-360c0123b6fc",
  "artist_clip_id": "6c983654-7ee9-4e1f-b195-47259a5bed48"
}

22. Mashup

A. Generate Music

Use scenarios 1, 2, or 3 to generate music and get two songs: clip_id_1 = 9f102969-0024-479e-b38f-c0c5db21383dclip_id_2 = 6aebb715-701c-433f-b976-a7ff5cf16255

B. Generate Mashup

  • task must be mashup_condition
  • mashup_clip_ids is the array ['clip_id_1', 'clip_id_2'] from Step A
  • prompt is the lyrics; if you want to mix lyrics from both songs, refer to 23. Lyrics Mashup
  • Billing: base cost of one song generation

post https://api.openai-hk.com/suno/generate

json
{
  "task": "mashup_condition",
  "generation_type": "TEXT",
  "title": "Banban83 vs bluespawn x Orphan of Guangzhou (Mashup)",
  "tags": "",
  "negative_tags": "",
  "mv": "chirp-crow",
  "prompt": "You keep turning back inside the station\nI can't bring myself to leave outside\nI have an ominous feeling\nToday's farewell feels like a breakup\n \nYou disappear into the crowd\nLike a dream scattered by the wind\nGuangzhou South Station, crowds surging\nWho cares about the pain in my heart\n \nI'm like an orphan of Guangzhou\nI'm like a superfluous orphan\nI'm like a helpless orphan\nAlone again now\n \nSafe travels my loved one\nTake care my loved one\nSafe travels the one who left\nTake care the one gone far away",

  "mashup_clip_ids": [
    "9f102969-0024-479e-b38f-c0c5db21383d",
    "6aebb715-701c-433f-b976-a7ff5cf16255"
  ]
}
{
  "task": "mashup_condition",
  "generation_type": "TEXT",
  "title": "Banban83 vs bluespawn x Orphan of Guangzhou (Mashup)",
  "tags": "",
  "negative_tags": "",
  "mv": "chirp-crow",
  "prompt": "You keep turning back inside the station\nI can't bring myself to leave outside\nI have an ominous feeling\nToday's farewell feels like a breakup\n \nYou disappear into the crowd\nLike a dream scattered by the wind\nGuangzhou South Station, crowds surging\nWho cares about the pain in my heart\n \nI'm like an orphan of Guangzhou\nI'm like a superfluous orphan\nI'm like a helpless orphan\nAlone again now\n \nSafe travels my loved one\nTake care my loved one\nSafe travels the one who left\nTake care the one gone far away",

  "mashup_clip_ids": [
    "9f102969-0024-479e-b38f-c0c5db21383d",
    "6aebb715-701c-433f-b976-a7ff5cf16255"
  ]
}

23. Lyrics Mashup: Lyrics Mashup

json
{
  "lyrics_a": "Sambuy come back bluespawn greenspawn are making you a spawn",
  "lyrics_b": "You keep turning back inside the station\nI can't bring myself to leave outside\nI have an ominous feeling\nToday's farewell feels like a breakup\n \nYou disappear into the crowd\nLike a dream scattered by the wind\nGuangzhou South Station, crowds surging\nWho cares about the pain in my heart\n \nI'm like an orphan of Guangzhou\nI'm like a superfluous orphan\nI'm like a helpless orphan\nAlone again now\n \nSafe travels my loved one\nTake care my loved one\nSafe travels the one who left\nTake care the one gone far away"
}
{
  "lyrics_a": "Sambuy come back bluespawn greenspawn are making you a spawn",
  "lyrics_b": "You keep turning back inside the station\nI can't bring myself to leave outside\nI have an ominous feeling\nToday's farewell feels like a breakup\n \nYou disappear into the crowd\nLike a dream scattered by the wind\nGuangzhou South Station, crowds surging\nWho cares about the pain in my heart\n \nI'm like an orphan of Guangzhou\nI'm like a superfluous orphan\nI'm like a helpless orphan\nAlone again now\n \nSafe travels my loved one\nTake care my loved one\nSafe travels the one who left\nTake care the one gone far away"
}

Result:

json
{
  "lyrics_request_id": "04edfa84-290e-4a08-bd35-73906079b26e",
  "mashup_id": "1c250665-a7c9-4852-97d1-3d291ebb9565",
  "response": {
    "error_message": "",
    "status": "complete",
    "tags": [],
    "text": "You keep turning back inside the station  \nI can't bring myself to leave outside  \nI have an ominous feeling  \nToday's farewell feels like a breakup  \n\nSambuy come back  \nbluespawn greenspawn are making you a spawn  \nSambuy come back  \nbluespawn greenspawn are making you a spawn  \n\nYou disappear into the crowd  \nLike a dream scattered by the wind  \nGuangzhou South Station, crowds surging  \nWho cares about the pain in my heart  \n\nSambuy come back  \nbluespawn greenspawn  \nare making you a spawn  \n\nI'm like an orphan of Guangzhou  \nI'm like a superfluous orphan  \nI'm like a helpless orphan  \nAlone again now  \n\nSafe travels my loved one  \nTake care my loved one  \nSafe travels the one who left  \nTake care the one gone far away  \n\nSambuy come back  \nbluespawn greenspawn are making you a spawn  \nSambuy don't go  \nbluespawn greenspawn are making you a spawn",
    "title": "Lyrics Mashup"
  }
}
{
  "lyrics_request_id": "04edfa84-290e-4a08-bd35-73906079b26e",
  "mashup_id": "1c250665-a7c9-4852-97d1-3d291ebb9565",
  "response": {
    "error_message": "",
    "status": "complete",
    "tags": [],
    "text": "You keep turning back inside the station  \nI can't bring myself to leave outside  \nI have an ominous feeling  \nToday's farewell feels like a breakup  \n\nSambuy come back  \nbluespawn greenspawn are making you a spawn  \nSambuy come back  \nbluespawn greenspawn are making you a spawn  \n\nYou disappear into the crowd  \nLike a dream scattered by the wind  \nGuangzhou South Station, crowds surging  \nWho cares about the pain in my heart  \n\nSambuy come back  \nbluespawn greenspawn  \nare making you a spawn  \n\nI'm like an orphan of Guangzhou  \nI'm like a superfluous orphan  \nI'm like a helpless orphan  \nAlone again now  \n\nSafe travels my loved one  \nTake care my loved one  \nSafe travels the one who left  \nTake care the one gone far away  \n\nSambuy come back  \nbluespawn greenspawn are making you a spawn  \nSambuy don't go  \nbluespawn greenspawn are making you a spawn",
    "title": "Lyrics Mashup"
  }
}

24. Samples: Sample-Based Song Generation

A. Generate Music

  • Use scenarios 1, 2, or 3 to generate music and get one song's clip_id with value 0fa07665-6b8e-4a8b-8bd3-7e0cfcdada88
  • Or obtain a clip_id via the upload API

B. Generate Samples

  • task must be chop_sample_condition
  • chop_sample_clip_id is the clip_id from Step A
  • chop_sample_start_s: sample start time
  • chop_sample_end_s: sample end time
  • Billing: base cost of one song generation
  • Cross-account allowed

post https://api.openai-hk.com/suno/generate

json
{
  "task": "chop_sample_condition",
  "generation_type": "TEXT",
  "title": "Breaking My Own News",
  "tags": "",
  "negative_tags": "",
  "mv": "chirp-crow",
  "prompt": "[Verse 1]\nPhone lit up\nHeadline in my hand\nFeels made up\nStill says "you won't understand"\nYour name\nMy name\nSide by side in the scroll\nCold black text\nOn a story I used to hold\n\n[Chorus]\nYou're breaking news\nAnd I'm just breaking\nFront-page truth\nHeart still shaking\nEverybody reads\nWhat we already knew\nYou're a story now\nAnd I'm the one you broke it to\n\n[Verse 2]\nNeighbors talk\nThrough a half-closed door\nCoffee cools\nOn a cracked old floor\nYour suitcase snaps\nLike a camera flash\nOne last quote\nThen you cut to black\n\n[Chorus]\nYou're breaking news\nAnd I'm just breaking\nFront-page truth\nHeart still shaking\nEverybody reads\nWhat we already knew\nYou're a story now\nAnd I'm the one you broke it to\n\n[Bridge]\nIs there a line\nWhere we rewind\nOr just a feed\nThat leaves us behind\nTell me\nWho gets\nThe final view\nWhen I stop trending\nWith you\n\n[Chorus]\nYou're breaking news\nAnd I'm just breaking\nFront-page truth\nHeart still shaking\nEverybody reads\nWhat we already knew\nYou're a story now\nAnd I'm the one you broke it to (yeah)",
  "chop_sample_clip_id": "0fa07665-6b8e-4a8b-8bd3-7e0cfcdada88",
  "chop_sample_start_s": 59.88,
  "chop_sample_end_s": 102.16
}
{
  "task": "chop_sample_condition",
  "generation_type": "TEXT",
  "title": "Breaking My Own News",
  "tags": "",
  "negative_tags": "",
  "mv": "chirp-crow",
  "prompt": "[Verse 1]\nPhone lit up\nHeadline in my hand\nFeels made up\nStill says "you won't understand"\nYour name\nMy name\nSide by side in the scroll\nCold black text\nOn a story I used to hold\n\n[Chorus]\nYou're breaking news\nAnd I'm just breaking\nFront-page truth\nHeart still shaking\nEverybody reads\nWhat we already knew\nYou're a story now\nAnd I'm the one you broke it to\n\n[Verse 2]\nNeighbors talk\nThrough a half-closed door\nCoffee cools\nOn a cracked old floor\nYour suitcase snaps\nLike a camera flash\nOne last quote\nThen you cut to black\n\n[Chorus]\nYou're breaking news\nAnd I'm just breaking\nFront-page truth\nHeart still shaking\nEverybody reads\nWhat we already knew\nYou're a story now\nAnd I'm the one you broke it to\n\n[Bridge]\nIs there a line\nWhere we rewind\nOr just a feed\nThat leaves us behind\nTell me\nWho gets\nThe final view\nWhen I stop trending\nWith you\n\n[Chorus]\nYou're breaking news\nAnd I'm just breaking\nFront-page truth\nHeart still shaking\nEverybody reads\nWhat we already knew\nYou're a story now\nAnd I'm the one you broke it to (yeah)",
  "chop_sample_clip_id": "0fa07665-6b8e-4a8b-8bd3-7e0cfcdada88",
  "chop_sample_start_s": 59.88,
  "chop_sample_end_s": 102.16
}

25. Sound: Sound Tasks

  • task type is sound
  • mv currently only supports chirp-crow
  • Parameters are placed in tags, e.g. loop, BPM 60 becomes tempo: 60, G# becomes key: G#
  • Billing: base cost of one song generation

post https://api.openai-hk.com/suno/generate

json
{
  "task": "sound",
  "generation_type": "TEXT",
  "title": "Ready To Drop Into Anything.",
  "tags": "loop, key: G#, tempo: 60, effects, loops, and one-shots. Ready to drop into anything.",
  "negative_tags": "",
  "mv": "chirp-crow",
  "prompt": "",
  "make_instrumental": true,
  "metadata": {
    "create_mode": "custom"
  }
}
{
  "task": "sound",
  "generation_type": "TEXT",
  "title": "Ready To Drop Into Anything.",
  "tags": "loop, key: G#, tempo: 60, effects, loops, and one-shots. Ready to drop into anything.",
  "negative_tags": "",
  "mv": "chirp-crow",
  "prompt": "",
  "make_instrumental": true,
  "metadata": {
    "create_mode": "custom"
  }
}

26. Inspo: Inspiration Creation

  • task type is playlist_condition or vox_playlist_condition
  • playlist_id is inspiration
  • playlist_clip_ids are reference song clip_id values, up to 4 songs can be selected
  • Cross-account not allowed, clip_id values in playlist_clip_ids must be from the same account
  • To unify playlist_clip_ids under one account, use "specified clip_id" upload
  • When task is vox_playlist_condition, persona_id must not be empty
  • Billing: base cost of one song generation

post https://api.openai-hk.com/suno/generate

json
{
  "task": "playlist_condition",
  "generation_type": "TEXT",
  "title": "Dad, Are You Listening?",
  "tags": "deepstep, harmonizing vocals, improvisation",
  "negative_tags": "",
  "mv": "chirp-crow",
  "prompt": "[Verse 1]\nYou missed my birthday\nSaid you got the days all wrong\nI laughed and said it's okay\nBut it stung all day long\nYou call me \"kiddo\"\nLike I'm still eight years old\nI'm standing in the doorway\nYou're already grabbing your coat\n\n[Chorus]\nDad\nAre you listening?\nOr just hearing me talk?\nI'm standing right beside you\nStill feel across the block\nI'd trade every story\nYou tell about what you did\nFor five quiet minutes\nWhere you ask me how I am\n\n[Verse 2]\nYou fix the hallway light\nAsk if my car's been tuned\nYou never touch the photos\nStacked in the spare room\nYou say you're proud of me\nLike it's something to get through\nI keep saving all my questions\nFor a softer version of you\n\n[Chorus]\nDad\nAre you listening?\nOr just hearing me talk?\nI'm standing right beside you\nStill feel across the block\nI'd trade every story\nYou tell about what you did\nFor five quiet minutes\nWhere you ask me how I am\n\n[Bridge]\nWhat was it like to be your age?\nWho broke your heart\nWho slammed your door?\nDid you ever feel this small\nIn your own kitchen floor? (yeah)\n\n[Chorus]\nDad\nAre you listening?\nI'm not asking you to change\nJust sit here at this table\nSay my name like it's my name\nI'd trade every silence\nEvery shrug and every laugh\nFor one honest moment\nWhere you let me love you back",
  "make_instrumental": false,
  "metadata": {
    "create_mode": "custom"
  },
  "playlist_id": "inspiration",
  "playlist_clip_ids": [
    "150ff04a-496e-4425-9ad7-d878354129de",
    "b09ed072-04c2-485f-a925-9f0cc9db4e26"
  ]
}
{
  "task": "playlist_condition",
  "generation_type": "TEXT",
  "title": "Dad, Are You Listening?",
  "tags": "deepstep, harmonizing vocals, improvisation",
  "negative_tags": "",
  "mv": "chirp-crow",
  "prompt": "[Verse 1]\nYou missed my birthday\nSaid you got the days all wrong\nI laughed and said it's okay\nBut it stung all day long\nYou call me \"kiddo\"\nLike I'm still eight years old\nI'm standing in the doorway\nYou're already grabbing your coat\n\n[Chorus]\nDad\nAre you listening?\nOr just hearing me talk?\nI'm standing right beside you\nStill feel across the block\nI'd trade every story\nYou tell about what you did\nFor five quiet minutes\nWhere you ask me how I am\n\n[Verse 2]\nYou fix the hallway light\nAsk if my car's been tuned\nYou never touch the photos\nStacked in the spare room\nYou say you're proud of me\nLike it's something to get through\nI keep saving all my questions\nFor a softer version of you\n\n[Chorus]\nDad\nAre you listening?\nOr just hearing me talk?\nI'm standing right beside you\nStill feel across the block\nI'd trade every story\nYou tell about what you did\nFor five quiet minutes\nWhere you ask me how I am\n\n[Bridge]\nWhat was it like to be your age?\nWho broke your heart\nWho slammed your door?\nDid you ever feel this small\nIn your own kitchen floor? (yeah)\n\n[Chorus]\nDad\nAre you listening?\nI'm not asking you to change\nJust sit here at this table\nSay my name like it's my name\nI'd trade every silence\nEvery shrug and every laugh\nFor one honest moment\nWhere you let me love you back",
  "make_instrumental": false,
  "metadata": {
    "create_mode": "custom"
  },
  "playlist_id": "inspiration",
  "playlist_clip_ids": [
    "150ff04a-496e-4425-9ad7-d878354129de",
    "b09ed072-04c2-485f-a925-9f0cc9db4e26"
  ]
}
  • task type is vox_playlist_condition
json
{
  "task": "vox_playlist_condition",
  "generation_type": "TEXT",
  "title": "Wind and Rain",
  "tags": "dark orchestral, heavy dense percussion, suspenseful, intense, dynamic tempo, brass, strings, synths, D minor, 120 BPM, massive soundstage, no distortion",
  "mv": "chirp-fenix",
  "prompt": "[Verse 1]\nWater marks still on the windowsill\nYou left and I never wiped them dry\nI kept the umbrella by the door\nLike words taken back halfway\n\nThe tree on the corner keeps swaying\nLeaves answer for me first\nIf you're also on the road\nWould you look up at me?\n\n[Pre-Chorus]\nWind blows old letters open\nRain soaks the names\nI stand in place\nListening to thoughts drip one by one\n\n[Chorus]\nWind and rain, wind and rain\nBoth searching for you\nWind and rain, wind and rain\nTurning silence into memory\nIf you turn back and see me\nDon't hide in the past again\nWind and rain, wind and rain\nI'm still here",
  "make_instrumental": false,
  "metadata": {
    "create_mode": "custom"
  },
  "persona_id": "eaa7f82b-c617-4f1f-a5ec-5ce241b8845a",
  "playlist_clip_ids": [
    "b5af4274-52f9-44c7-b1a7-0fad16da7649",
    "bf6cb6a3-b71a-4680-8a1c-87361036b7b4"
  ]
}
{
  "task": "vox_playlist_condition",
  "generation_type": "TEXT",
  "title": "Wind and Rain",
  "tags": "dark orchestral, heavy dense percussion, suspenseful, intense, dynamic tempo, brass, strings, synths, D minor, 120 BPM, massive soundstage, no distortion",
  "mv": "chirp-fenix",
  "prompt": "[Verse 1]\nWater marks still on the windowsill\nYou left and I never wiped them dry\nI kept the umbrella by the door\nLike words taken back halfway\n\nThe tree on the corner keeps swaying\nLeaves answer for me first\nIf you're also on the road\nWould you look up at me?\n\n[Pre-Chorus]\nWind blows old letters open\nRain soaks the names\nI stand in place\nListening to thoughts drip one by one\n\n[Chorus]\nWind and rain, wind and rain\nBoth searching for you\nWind and rain, wind and rain\nTurning silence into memory\nIf you turn back and see me\nDon't hide in the past again\nWind and rain, wind and rain\nI'm still here",
  "make_instrumental": false,
  "metadata": {
    "create_mode": "custom"
  },
  "persona_id": "eaa7f82b-c617-4f1f-a5ec-5ce241b8845a",
  "playlist_clip_ids": [
    "b5af4274-52f9-44c7-b1a7-0fad16da7649",
    "bf6cb6a3-b71a-4680-8a1c-87361036b7b4"
  ]
}

27. Voice: Voice Cloning

  • Voice cloning essentially creates a personal voice library (persona), which can be used to generate songs
  • Persona only needs one audio file containing the user's voice, must have text or lyrics
  • No secondary verification required

A. Generate Persona

  • No secondary verification required
  • Billing: 500 credits/request
  • singer_skill_level options: Advanced Intermediate Beginner Professional
  • url user's recording, must read some text or sing, supports formats mp3 wav

post https://api.openai-hk.com/suno/persona/voice/one

json
{
  "url": "http://cos.aitutu.cc/mp4/ru-user-voice.mp3",
  "singer_skill_level": "Intermediate",
  "name": "mytitle",
  "vocal_end_s": 120,
  "vocal_start_s": 0
}
{
  "url": "http://cos.aitutu.cc/mp4/ru-user-voice.mp3",
  "singer_skill_level": "Intermediate",
  "name": "mytitle",
  "vocal_end_s": 120,
  "vocal_start_s": 0
}
  • Returns id as persona_id
json
{
  "id": "5d8772c3-f901-48b4-a966-96e360930351",
  "name": "mytitle",
  "description": "",
  "image_s3_id": "https://cdn1.suno.ai/d41a1c49.jpeg",
  "is_suno_persona": false,
  "is_trashed": false,
  "is_hidden": false,
  "is_owned": true,
  "is_public": false,
  "is_public_approved": false,
  "is_loved": false,
  "upvote_count": 0,
  "clip_count": 0,
  "is_following": false,
  "follower_count": 0,
  "persona_type": "vox",
  "source": "recording",
  "user_input_styles": "pop",
  "vocal_start_s": 0,
  "vocal_end_s": 120,
  "vocal_clip_id": "60c14c78-3aec-436e-b0bf-c8007c2653e9"
}
{
  "id": "5d8772c3-f901-48b4-a966-96e360930351",
  "name": "mytitle",
  "description": "",
  "image_s3_id": "https://cdn1.suno.ai/d41a1c49.jpeg",
  "is_suno_persona": false,
  "is_trashed": false,
  "is_hidden": false,
  "is_owned": true,
  "is_public": false,
  "is_public_approved": false,
  "is_loved": false,
  "upvote_count": 0,
  "clip_count": 0,
  "is_following": false,
  "follower_count": 0,
  "persona_type": "vox",
  "source": "recording",
  "user_input_styles": "pop",
  "vocal_start_s": 0,
  "vocal_end_s": 120,
  "vocal_clip_id": "60c14c78-3aec-436e-b0bf-c8007c2653e9"
}

B. Use persona_id to Generate Music

post https://api.openai-hk.com/suno/generate

  • persona_id obtained from Step A
  • Cross-account not allowed
json
{
  "task": "vox",
  "generation_type": "TEXT",
  "title": "New Year",
  "tags": "",
  "negative_tags": "",
  "mv": "chirp-fenix",
  "prompt": "[Verse 1]\nRed paper on the old door frame\nSteam rising white from the pot\nMessages pouring into my phone\n'Coming back?' just like before, so eager\n\n[Chorus]\nHappy New Year joy all around\nRed lanterns hanging bright downtown\nFamily reunion happiness blooms\nWishes coming true blessings abound\nHappy New Year\n\n[Verse 2]\nSpring breeze gently blowing in\nBringing lucky flowers to bloom\nNew clothes new shoes new hopes\nDreams unfold from this room",
  "make_instrumental": false,
  "metadata": {
    "create_mode": "custom"
  },
  "persona_id": "5d8772c3-f901-48b4-a966-96e360930351"
}
{
  "task": "vox",
  "generation_type": "TEXT",
  "title": "New Year",
  "tags": "",
  "negative_tags": "",
  "mv": "chirp-fenix",
  "prompt": "[Verse 1]\nRed paper on the old door frame\nSteam rising white from the pot\nMessages pouring into my phone\n'Coming back?' just like before, so eager\n\n[Chorus]\nHappy New Year joy all around\nRed lanterns hanging bright downtown\nFamily reunion happiness blooms\nWishes coming true blessings abound\nHappy New Year\n\n[Verse 2]\nSpring breeze gently blowing in\nBringing lucky flowers to bloom\nNew clothes new shoes new hopes\nDreams unfold from this room",
  "make_instrumental": false,
  "metadata": {
    "create_mode": "custom"
  },
  "persona_id": "5d8772c3-f901-48b4-a966-96e360930351"
}

27. Voice: Voice Cloning - Requires Secondary Verification

  • Voice cloning essentially creates a personal voice library (persona), which can be used to generate songs
  • Persona requires 2 audio files: one with user's voice, one verification voice
  • Verification: read a passage of text to register your voice

A. Upload Song

post https://api.openai-hk.com/suno/persona/voice/vox

json
{
  "url": "http://cos.aitutu.cc/mp4/c4818ce3-37d6-4b45-8e01-58b750e5fe57.mp3",
  "vocal_end_s": 23.24,
  "vocal_start_s": 0
}
{
  "url": "http://cos.aitutu.cc/mp4/c4818ce3-37d6-4b45-8e01-58b750e5fe57.mp3",
  "vocal_end_s": 23.24,
  "vocal_start_s": 0
}
  • Returns:
json
{
  "id": "9e196fa1-20f3-43c1-8066-06a2a6b6bea9",
  "status": "submitted",
  "voice_recording_id": "575023b1-b071-4dbd-9f0d-176665c60768"
}
{
  "id": "9e196fa1-20f3-43c1-8066-06a2a6b6bea9",
  "status": "submitted",
  "voice_recording_id": "575023b1-b071-4dbd-9f0d-176665c60768"
}
  • The returned id is vox_audio_id for the next step
  • Billing: 100 credits/request

B. Get Sample Sentence

post https://api.openai-hk.com/suno/act/phrase

  • language options: zh en es fr pt de ja ko hi ru
  • voice_recording_id from Step A return
  • Cross-account not allowed
  • Billing: 100 credits/request
shell
curl --request POST \
  --url https://api.openai-hk.com/suno/act/phrase \
  --header 'Authorization: Bearer sk-youkey' \
  --header 'Content-Type: application/json' \
  --data '{
	 "language":"zh","voice_recording_id": "575023b1-b071-4dbd-9f0d-176665c60768"
}
'
curl --request POST \
  --url https://api.openai-hk.com/suno/act/phrase \
  --header 'Authorization: Bearer sk-youkey' \
  --header 'Content-Type: application/json' \
  --data '{
	 "language":"zh","voice_recording_id": "575023b1-b071-4dbd-9f0d-176665c60768"
}
'
  • Body:
json
{
  "language": "zh",
  "voice_recording_id": "575023b1-b071-4dbd-9f0d-176665c60768"
}
{
  "language": "zh",
  "voice_recording_id": "575023b1-b071-4dbd-9f0d-176665c60768"
}
  • Returns phrase_id sentence ID for next step (can only be used once)
json
{
  "phrase_id": "45d639aa-ad8a-41cd-a356-f81207491d3a",
  "phrase_text": "轻快的歌声在空气中自由飘扬"
}
{
  "phrase_id": "45d639aa-ad8a-41cd-a356-f81207491d3a",
  "phrase_text": "轻快的歌声在空气中自由飘扬"
}

C. Voice Verification

post https://api.openai-hk.com/suno/persona/voice/verify

  • url user's recording, ask user to record the text from phrase_text and upload as url, supports formats mp3 wav
  • voice_recording_id from Step A return
  • phrase_id from Step B return
  • Cross-account not allowed
  • Note: this request can only be used once; if it fails, you need to get a new phrase
  • Billing: 100 credits/request
json
{
  "url": "https://cdn1.suno.ai/28fc2b84-07d3-45d7-85f3-3db6684801aa.mp3",
  "phrase_id": "45d639aa-ad8a-41cd-a356-f81207491d3a",
  "voice_recording_id": "575023b1-b071-4dbd-9f0d-176665c60768"
}
{
  "url": "https://cdn1.suno.ai/28fc2b84-07d3-45d7-85f3-3db6684801aa.mp3",
  "phrase_id": "45d639aa-ad8a-41cd-a356-f81207491d3a",
  "voice_recording_id": "575023b1-b071-4dbd-9f0d-176665c60768"
}
  • Returns id as verification_id
json
{
  "id": "979282b1-8968-46bc-b599-ea14946be48e",
  "status": "approved",
  "voice_recording_id": "575023b1-b071-4dbd-9f0d-176665c60768",
  "verification_recording_id": "286df4b3-c10d-42ab-b757-f6381ae34853",
  "verification_prompt_text": "轻快的歌声在空气中自由飘扬",
  "rejection_reason": "",
  "created_at": "2026-03-29T12:51:51.030983Z",
  "updated_at": "2026-03-29T12:51:52.016067Z"
}
{
  "id": "979282b1-8968-46bc-b599-ea14946be48e",
  "status": "approved",
  "voice_recording_id": "575023b1-b071-4dbd-9f0d-176665c60768",
  "verification_recording_id": "286df4b3-c10d-42ab-b757-f6381ae34853",
  "verification_prompt_text": "轻快的歌声在空气中自由飘扬",
  "rejection_reason": "",
  "created_at": "2026-03-29T12:51:51.030983Z",
  "updated_at": "2026-03-29T12:51:52.016067Z"
}

D. Create Persona

post https://api.openai-hk.com/suno/persona/voice/create

  • vox_audio_id from Step A return
  • voice_recording_id from Step A return
  • verification_id from Step C return
  • singer_skill_level options: Advanced Intermediate Beginner Professional
  • image_s3_id must be base64 format of the image
  • Note: regardless of is_public being true or false, it will automatically be set to false
  • is_public being false means the created persona_id cannot be used cross-account
  • Cross-account not allowed
  • Billing: 100 credits/request
json
{
  "name": "mytitle",
  "description": "god",
  "image_s3_id": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/ base64 image....",
  "is_public": true,
  "persona_type": "vox",
  "vocal_start_s": 0,
  "vocal_end_s": 23.24,
  "user_input_styles": "pop",
  "source": "random_song",
  "singer_skill_level": "Intermediate",
  "is_voice_recording": true,
  "vox_audio_id": "9e196fa1-20f3-43c1-8066-06a2a6b6bea9",
  "voice_recording_id": "575023b1-b071-4dbd-9f0d-176665c60768",
  "verification_id": "979282b1-8968-46bc-b599-ea14946be48e"
}
{
  "name": "mytitle",
  "description": "god",
  "image_s3_id": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/ base64 image....",
  "is_public": true,
  "persona_type": "vox",
  "vocal_start_s": 0,
  "vocal_end_s": 23.24,
  "user_input_styles": "pop",
  "source": "random_song",
  "singer_skill_level": "Intermediate",
  "is_voice_recording": true,
  "vox_audio_id": "9e196fa1-20f3-43c1-8066-06a2a6b6bea9",
  "voice_recording_id": "575023b1-b071-4dbd-9f0d-176665c60768",
  "verification_id": "979282b1-8968-46bc-b599-ea14946be48e"
}
  • Returns id as persona_id
json
{
  "id": "dde0be60-5280-4bd2-89a0-4020ddd3db52",
  "name": "mytitle",
  "description": "god",
  "image_s3_id": "https://cdn1.suno.ai/d81b5898.jpeg",
  "is_suno_persona": false,
  "is_trashed": false,
  "is_hidden": false,
  "is_owned": true,
  "is_public": false,
  "is_public_approved": false,
  "is_loved": false,
  "upvote_count": 0,
  "clip_count": 0,
  "is_following": false,
  "follower_count": 0,
  "persona_type": "vox",
  "source": "recording",
  "user_input_styles": "pop",
  "vocal_start_s": 0,
  "vocal_end_s": 23.24,
  "vocal_clip_id": "9e196fa1-20f3-43c1-8066-06a2a6b6bea9"
}
{
  "id": "dde0be60-5280-4bd2-89a0-4020ddd3db52",
  "name": "mytitle",
  "description": "god",
  "image_s3_id": "https://cdn1.suno.ai/d81b5898.jpeg",
  "is_suno_persona": false,
  "is_trashed": false,
  "is_hidden": false,
  "is_owned": true,
  "is_public": false,
  "is_public_approved": false,
  "is_loved": false,
  "upvote_count": 0,
  "clip_count": 0,
  "is_following": false,
  "follower_count": 0,
  "persona_type": "vox",
  "source": "recording",
  "user_input_styles": "pop",
  "vocal_start_s": 0,
  "vocal_end_s": 23.24,
  "vocal_clip_id": "9e196fa1-20f3-43c1-8066-06a2a6b6bea9"
}

E. Use persona_id to Generate Music

post https://api.openai-hk.com/suno/generate

  • persona_id obtained from Step D
  • Cross-account not allowed
json
{
  "task": "vox",
  "generation_type": "TEXT",
  "title": "New Year",
  "tags": "",
  "negative_tags": "",
  "mv": "chirp-fenix",
  "prompt": "[Verse 1]\nRed paper on the old door frame\nSteam rising white from the pot\nMessages pouring into my phone\n'Coming back?' just like before, so eager",
  "make_instrumental": false,
  "metadata": {
    "create_mode": "custom"
  },
  "persona_id": "dde0be60-5280-4bd2-89a0-4020ddd3db52"
}
{
  "task": "vox",
  "generation_type": "TEXT",
  "title": "New Year",
  "tags": "",
  "negative_tags": "",
  "mv": "chirp-fenix",
  "prompt": "[Verse 1]\nRed paper on the old door frame\nSteam rising white from the pot\nMessages pouring into my phone\n'Coming back?' just like before, so eager",
  "make_instrumental": false,
  "metadata": {
    "create_mode": "custom"
  },
  "persona_id": "dde0be60-5280-4bd2-89a0-4020ddd3db52"
}

28. Custom-Model: Custom Model

  • 2026.03.28 Suno introduced custom-model
  • Upload at least 6 of your own songs to build a custom model
  • Limit: one account can only build 3 models

A. Upload Music

post https://api.openai-hk.com/suno/uploads/audio-url

  • Body:
json
{
  "url": "http://cdnimg.exbapp.com/ai/2024-06-18/d416d9c3c34eb22c7d8c094831d8dbd0.mp3"
}
{
  "url": "http://cdnimg.exbapp.com/ai/2024-06-18/d416d9c3c34eb22c7d8c094831d8dbd0.mp3"
}
  • First, get clip_id value 7173c086-844d-4b9e-9cee-e771f7ded3eb via upload API

  • Starting from the second upload, need to include clip_id to unify under one account

  • Body for second upload onwards:

json
{
  "url": "http://cdnimg.exbapp.com/ai/2024-06-18/d416d9c3c34eb22c7d8c094831d8dbd0.mp3",
  "clip_id": "7173c086-844d-4b9e-9cee-e771f7ded3eb"
}
{
  "url": "http://cdnimg.exbapp.com/ai/2024-06-18/d416d9c3c34eb22c7d8c094831d8dbd0.mp3",
  "clip_id": "7173c086-844d-4b9e-9cee-e771f7ded3eb"
}
  • Upload at least 6 songs

B. Create Custom-Model

post https://api.openai-hk.com/suno/custom-model

  • clip_ids are uploaded song clip_id values, must be under the same account, at least 6 uploads, optimally 24
  • Billing: 10× song generation cost
  • Body:
json
{
  "clip_ids": [
    "7173c086-844d-4b9e-9cee-e771f7ded3eb",
    "c87451ec-8e09-4358-b93b-99a0f59374b3",
    "9c58ae41-4364-4995-827c-8033109abb5d",
    "92022750-af59-44e1-a559-74d6f2503f5e",
    "06215aa7-7725-4741-91d2-cc316e2454fe",
    "f7a1e392-e659-4376-8b24-f267ba4f6e30"
  ],
  "name": "Your Model Name"
}
{
  "clip_ids": [
    "7173c086-844d-4b9e-9cee-e771f7ded3eb",
    "c87451ec-8e09-4358-b93b-99a0f59374b3",
    "9c58ae41-4364-4995-827c-8033109abb5d",
    "92022750-af59-44e1-a559-74d6f2503f5e",
    "06215aa7-7725-4741-91d2-cc316e2454fe",
    "f7a1e392-e659-4376-8b24-f267ba4f6e30"
  ],
  "name": "Your Model Name"
}
  • Returns id as model_id
json
{
  "id": "3f788ae1-4646-4d20-aa76-c33035bf12e6",
  "status": "pending"
}
{
  "id": "3f788ae1-4646-4d20-aa76-c33035bf12e6",
  "status": "pending"
}

C. Query Custom-Model Task

get https://api.openai-hk.com/suno/custom-model/feed/{model_id}

  • model_id is the returned id from above
  • Returns on success:
json
{
  "id": "3f788ae1-4646-4d20-aa76-c33035bf12e6",
  "status": "complete"
}
{
  "id": "3f788ae1-4646-4d20-aa76-c33035bf12e6",
  "status": "complete"
}

D. Use Custom-Model

post https://api.openai-hk.com/suno/generate

  • mv is chirp-custom:{model_id}, i.e. chirp-custom:3f788ae1-4646-4d20-aa76-c33035bf12e6
  • Cross-account not supported, will query account based on model_id
  • Body:
json
{
  "generation_type": "TEXT",
  "title": "Dook",
  "tags": "dungeon neo soul, bass music",
  "negative_tags": "",
  "mv": "chirp-custom:3f788ae1-4646-4d20-aa76-c33035bf12e6",
  "prompt": "[Verse]\nSunrise creepin' up again\nAnother day another spin\nMy head is buzzin' like a wire\nFuelin' up this inner fire",
  "metadata": {
    "create_mode": "custom"
  }
}
{
  "generation_type": "TEXT",
  "title": "Dook",
  "tags": "dungeon neo soul, bass music",
  "negative_tags": "",
  "mv": "chirp-custom:3f788ae1-4646-4d20-aa76-c33035bf12e6",
  "prompt": "[Verse]\nSunrise creepin' up again\nAnother day another spin\nMy head is buzzin' like a wire\nFuelin' up this inner fire",
  "metadata": {
    "create_mode": "custom"
  }
}

29. Speed: Speed Change

  • Get a clip_id through creation or upload

post https://api.openai-hk.com/suno/act/speed/{clip_id}

A. Create Speed Change

  • speed_multiplier is speed multiplier, value range 0.25~4.0
  • keep_pitch when true maintains pitch, when false changes pitch
  • title is the title after speed change
shell
curl --request POST \
  --url https://api.openai-hk.com/suno/act/speed/6718cf1e-fa9f-433f-b859-a71f994cd3b8 \
  --header 'Accept: */*' \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Content-Type: application/json' \
  --data '{
    "speed_multiplier": 0.9439,
    "keep_pitch": false,
    "title": "Good News (0.94x)"
}'
curl --request POST \
  --url https://api.openai-hk.com/suno/act/speed/6718cf1e-fa9f-433f-b859-a71f994cd3b8 \
  --header 'Accept: */*' \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Content-Type: application/json' \
  --data '{
    "speed_multiplier": 0.9439,
    "keep_pitch": false,
    "title": "Good News (0.94x)"
}'

Returns an id as the new clip_id for later queries:

json
{
  "id": "01a4c72b-db63-4be2-a0db-008fe0f105a4",
  "status": "processing",
  "title": "Good News (0.94x)",
  "play_count": 0,
  "upvote_count": 0
}
{
  "id": "01a4c72b-db63-4be2-a0db-008fe0f105a4",
  "status": "processing",
  "title": "Good News (0.94x)",
  "play_count": 0,
  "upvote_count": 0
}

B. Query Speed Change

get https://api.openai-hk.com/suno/feed/{clip_id}

shell
curl --request GET \
  --url https://api.openai-hk.com/suno/feed/01a4c72b-db63-4be2-a0db-008fe0f105a4 \
  --header 'Accept: */*' \
  --header 'Authorization: Bearer hk-your-key'
curl --request GET \
  --url https://api.openai-hk.com/suno/feed/01a4c72b-db63-4be2-a0db-008fe0f105a4 \
  --header 'Accept: */*' \
  --header 'Authorization: Bearer hk-your-key'

30. Add Stem: Add Instrument

post https://api.openai-hk.com/suno/generate

json
{
  "task": "stem_condition",
  "generation_type": "TEXT",
  "title": "Good News",
  "tags": "Pop with bright four-on-the-floor drums",
  "negative_tags": "",
  "mv": "chirp-fenix",
  "prompt": "[Verse 1]\nI got a note in my hand",
  "make_instrumental": false,
  "metadata": {
    "create_mode": "custom",
    "is_remix": true
  },
  "stem_condition_clip_id": "d4b0af45-c974-4197-abdf-d51f6619ab6d",
  "stem_control_tags": "add Drums",
  "batch_size": 2
}
{
  "task": "stem_condition",
  "generation_type": "TEXT",
  "title": "Good News",
  "tags": "Pop with bright four-on-the-floor drums",
  "negative_tags": "",
  "mv": "chirp-fenix",
  "prompt": "[Verse 1]\nI got a note in my hand",
  "make_instrumental": false,
  "metadata": {
    "create_mode": "custom",
    "is_remix": true
  },
  "stem_condition_clip_id": "d4b0af45-c974-4197-abdf-d51f6619ab6d",
  "stem_control_tags": "add Drums",
  "batch_size": 2
}
  • Cross-account allowed

  • Parameter notes:

    • make_instrumental must be true if it's instrumental music
    • task must be stem_condition
    • stem_condition_clip_id is uploaded or regular Suno generated clip_id
    • stem_control_tags is add Strings, also add Drums add Bass etc., refer to suno-studio
    • batch_size is 2
  • Billing: 1.2× base cost due to Suno risk control on stem_condition

  • Returns standard create API data

json
{
  "id": "8fb0a232-aef3-4f8a-82ad-72a3fde0bcc6",
  "clips": [
    {
      "id": "clipsId1"
    },
    {
      "id": "clipsId2"
    }
  ]
}
{
  "id": "8fb0a232-aef3-4f8a-82ad-72a3fde0bcc6",
  "clips": [
    {
      "id": "clipsId1"
    },
    {
      "id": "clipsId2"
    }
  ]
}

31. Extract Stems and MIDI: Extract Stems and MIDI

post https://api.openai-hk.com/suno/generate

  • Cross-account not allowed
  • Parameter notes:
    • task must be gen_stem
    • stem_task must be extract
    • stem_type_id must be 91
    • stem_type_group_name and stem_name have same value, reference values: Lead Vocal Drum Kit Kick Snare Risers Bass Backing Vocals Piano Electric Guitar Percussion String Section Synth Acoustic Guitar Sound Effects Synth Pad Synth Bass Guitar Brass Section Organ Electronic Drum Kit Lead Electric Guitar Synth Keys Rhythm Electric Guitar Electric Piano Upright Bass Keyboards Distorted Electric Guitar Synth Strings Synth Lead Woodwinds Rhythm Acoustic Guitar Flute Harp Tambourine Trumpet Arpeggiator Accordion Fiddle Pedal Steel Guitar Synth Voice Violin Digital Piano Synth Brass Mandolin Choir Banjo Bells Clarinet Tenor Saxophone Trombone Shaker French Horn Glockenspiel Electric Bass Cello Timpani Harmonica Marimba Vibraphone Lap Steel Guitar Saxophone Orchestra Horns Cymbals Hand Clap Oboe Celesta Congas Drone Alto Saxophone Double Bass Ukulele Harpsichord Baritone Saxophone Xylophone Tuba Bass Guitar Whistle Lead Guitar Rhodes 808 Bongos Bassoon Cowbell Viola Sitar Steel Drums Piccolo Theremin Bagpipes Hi-Hat Music Box Melodica Tabla Koto Djembe Taiko Didgeridoo
  • Billing: 1× base cost
json
{
  "task": "gen_stem",
  "generation_type": "TEXT",
  "title": "my title",
  "tags": "pop",
  "negative_tags": "",
  "mv": "chirp-v3-0",
  "prompt": "",
  "make_instrumental": true,
  "metadata": {
    "create_mode": "custom",
    "is_remix": true
  },
  "continue_clip_id": "fcd7be5e-f907-4fce-a47f-f0784a139be3",
  "stem_type_id": 91,
  "stem_type_group_name": "Piano",
  "stem_task": "extract",
  "stem_name": "Piano"
}
{
  "task": "gen_stem",
  "generation_type": "TEXT",
  "title": "my title",
  "tags": "pop",
  "negative_tags": "",
  "mv": "chirp-v3-0",
  "prompt": "",
  "make_instrumental": true,
  "metadata": {
    "create_mode": "custom",
    "is_remix": true
  },
  "continue_clip_id": "fcd7be5e-f907-4fce-a47f-f0784a139be3",
  "stem_type_id": 91,
  "stem_type_group_name": "Piano",
  "stem_task": "extract",
  "stem_name": "Piano"
}
  • Returns 4 clip_ids
  • Use these 4 clip_ids to get MIDI, refer to 18. Get MIDI

32. Duration Parameter

  • duration is 10~360 seconds
  • Only supported on v5.5+, mv must be chirp-fenix

post https://api.openai-hk.com/suno/generate

json
{
  "generation_type": "TEXT",
  "title": "Good news",
  "tags": "syncopated basslines, modal",
  "negative_tags": "",
  "mv": "chirp-fenix",
  "prompt": "[Verse]\nSunrise creepin\nGold on the floor",
  "make_instrumental": false,
  "metadata": {
    "create_mode": "custom"
  },
  "duration": 330
}
{
  "generation_type": "TEXT",
  "title": "Good news",
  "tags": "syncopated basslines, modal",
  "negative_tags": "",
  "mv": "chirp-fenix",
  "prompt": "[Verse]\nSunrise creepin\nGold on the floor",
  "make_instrumental": false,
  "metadata": {
    "create_mode": "custom"
  },
  "duration": 330
}

33. Nice Upload

  • To solve copyright issues with uploaded songs, you can use the nice upload API
  • After upload, you can cover/remix across accounts without worrying about account expiry
  • Duration: takes over 2 minutes, implemented as async task
  • Billing: 10,000 credits/request
  • Shorter duration has higher success rate
  • Generated clip_id currently supports:

A. Create Upload Task

post https://api.openai-hk.com/suno/uploads/nice

  • name song name, required
  • url song link, required
shell
curl --request POST \
  --url https://api.openai-hk.com/suno/uploads/nice \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Content-Type: application/json' \
  --data '{
    "url": "https://myfile.aibeke.com/dong-feng-po.mp3",
    "name":"Dong Feng Po"
} '
curl --request POST \
  --url https://api.openai-hk.com/suno/uploads/nice \
  --header 'Authorization: Bearer hk-your-key' \
  --header 'Content-Type: application/json' \
  --data '{
    "url": "https://myfile.aibeke.com/dong-feng-po.mp3",
    "name":"Dong Feng Po"
} '
  • Returns:
json
{
  "clip_id": "",
  "id": "hkfc3337-8e41-4d30-9fd9-55bfe352876c",
  "message": "",
  "status": "submitted"
}
{
  "clip_id": "",
  "id": "hkfc3337-8e41-4d30-9fd9-55bfe352876c",
  "message": "",
  "status": "submitted"
}

B. Get Upload Task Status

get https://api.openai-hk.com/suno/uploads/nice/{id}

shell
curl --request GET \
  --url https://api.openai-hk.com/suno/uploads/nice/hkfc3337-8e41-4d30-9fd9-55bfe352876c \
  --header 'Authorization: Bearer hk-your-key'
curl --request GET \
  --url https://api.openai-hk.com/suno/uploads/nice/hkfc3337-8e41-4d30-9fd9-55bfe352876c \
  --header 'Authorization: Bearer hk-your-key'
  • Success response: clip_id is the Suno song ID
json
{
  "id": "hkfc3337-8e41-4d30-9fd9-55bfe352876c",
  "status": "complete",
  "clip_id": "e5021b7a-6f9f-4eed-8690-448126593d1f",
  "message": ""
}
{
  "id": "hkfc3337-8e41-4d30-9fd9-55bfe352876c",
  "status": "complete",
  "clip_id": "e5021b7a-6f9f-4eed-8690-448126593d1f",
  "message": ""
}
  • Failure response:
json
{
  "id": "hkfc3337-8e41-4d30-9fd9-55bfe352876c",
  "status": "error",
  "clip_id": "",
  "message": "Song download failed: HTTP Error 404: Not Found"
}
{
  "id": "hkfc3337-8e41-4d30-9fd9-55bfe352876c",
  "status": "error",
  "clip_id": "",
  "message": "Song download failed: HTTP Error 404: Not Found"
}

C. Use clip_id for Cover/Remix

post https://api.openai-hk.com/suno/generate

  • cover_clip_id is the cover clip_id
  • prompt lyrics need Chinese-to-Pinyin conversion, otherwise may have copyright issues
  • tags can control different styles
  • Payload:
json
{
  "prompt": "[Intro]\n[arpeggiated clean electric guitar riff, piano chords]\n\n[Verse 1]\n[breathy male vocals]\nyī zhǎn lí chóu gū dān zhù lì zài chuāng kǒu\nwǒ zài mén hòu jiǎ zhuāng nǐ rén hái méi zǒu\njiù dì rú zhòng yóu yuè yuán gèng jì mò\nyè bàn qīng xǐng de zhú huǒ bù rěn kē zé wǒ\nyī hú piāo pō làng jī tiān yá nán rù hóu\nnǐ zǒu zhī hòu jiǔ nuǎn huí yì sī niàn shòu\nshuǐ xiàng dōng liú shí jiān zěn me tōu\nhuā kāi jiù yī cì chéng shú wǒ què cuò guò\n\n[Chorus]\n[drums and bass enter, full band arrangement]\nshuí zài yòng pí pá dàn zòu yī qū dōng fēng pò\nfēng yè jiāng gù shì rǎn sè jié jú wǒ kàn tòu\nlí bā wài de gǔ dào wǒ qiān zhù nǐ zǒu guò\nhuāng yān màn cǎo de nián tóu jiù lián fēn shǒu dōu hěn shěn mò\nshuí zài yòng pí pá dàn zòu yī qū dōng fēng pò\nfēng yè jiāng gù shì rǎn sè jié jú wǒ kàn tòu\nlí bā wài de gǔ dào wǒ qiān zhù nǐ zǒu guò\nhuāng yān màn cǎo de nián tóu jiù lián fēn shǒu dōu hěn shěn mò",
  "generation_type": "TEXT",
  "tags": "rock, punk",
  "negative_tags": "",
  "mv": "chirp-fenix",
  "title": "My Dong Feng Po",
  "continue_clip_id": null,
  "continue_at": null,
  "continued_aligned_prompt": null,
  "infill_start_s": null,
  "infill_end_s": null,
  "task": "cover",
  "cover_clip_id": "e5021b7a-6f9f-4eed-8690-448126593d1f"
}
{
  "prompt": "[Intro]\n[arpeggiated clean electric guitar riff, piano chords]\n\n[Verse 1]\n[breathy male vocals]\nyī zhǎn lí chóu gū dān zhù lì zài chuāng kǒu\nwǒ zài mén hòu jiǎ zhuāng nǐ rén hái méi zǒu\njiù dì rú zhòng yóu yuè yuán gèng jì mò\nyè bàn qīng xǐng de zhú huǒ bù rěn kē zé wǒ\nyī hú piāo pō làng jī tiān yá nán rù hóu\nnǐ zǒu zhī hòu jiǔ nuǎn huí yì sī niàn shòu\nshuǐ xiàng dōng liú shí jiān zěn me tōu\nhuā kāi jiù yī cì chéng shú wǒ què cuò guò\n\n[Chorus]\n[drums and bass enter, full band arrangement]\nshuí zài yòng pí pá dàn zòu yī qū dōng fēng pò\nfēng yè jiāng gù shì rǎn sè jié jú wǒ kàn tòu\nlí bā wài de gǔ dào wǒ qiān zhù nǐ zǒu guò\nhuāng yān màn cǎo de nián tóu jiù lián fēn shǒu dōu hěn shěn mò\nshuí zài yòng pí pá dàn zòu yī qū dōng fēng pò\nfēng yè jiāng gù shì rǎn sè jié jú wǒ kàn tòu\nlí bā wài de gǔ dào wǒ qiān zhù nǐ zǒu guò\nhuāng yān màn cǎo de nián tóu jiù lián fēn shǒu dōu hěn shěn mò",
  "generation_type": "TEXT",
  "tags": "rock, punk",
  "negative_tags": "",
  "mv": "chirp-fenix",
  "title": "My Dong Feng Po",
  "continue_clip_id": null,
  "continue_at": null,
  "continued_aligned_prompt": null,
  "infill_start_s": null,
  "infill_end_s": null,
  "task": "cover",
  "cover_clip_id": "e5021b7a-6f9f-4eed-8690-448126593d1f"
}