Skip to content

🎧 Watermark-Free Suno Music Model

  • 2026.02.04 Suno version suno-v4.5-all with mv chirp-auk-turbo is priced the same as suno-v3.5
  • 2025.09.23 Suno supports version v5 with mv chirp-crow
  • 2025.07.17 Suno supports version v4.5+ with mv chirp-bluejay
  • 2025.05.03 Suno supports version v4.5 with mv chirp-auk
  • 2024.12.17 Suno supports all versions v4 v3.5 v3.0 — watermark-free, extended duration, high concurrency, high quality
  • 2024.11.06 Suno is now nearly watermark-free; we have a solution for watermark removal; ~promotional price as low as ¥0.04 per song (offer has ended)~
  • 2024.03.27 This platform now supports the music model suno
  • Available in 2 modes: chat and unofficial API — recommended: unofficial API
  • chat mode follows the OpenAI format; for unofficial API see Unofficial Suno API
  • One prompt generates 2 songs
  • Billing is per request, not per song
  • To try it out, visit https://suno.ddaiai.com and see Online Trial below

Versions & Features

VersionmvRelease DatePrompt LimitTag LimitMax Song Duration
v5chirp-crow2025.09.23500010008 minutes
v4.5+chirp-bluejay2025.07.17500010008 minutes
v4.5-allchirp-auk-turbo2025.05.03500010004 minutes
v4.5chirp-auk2025.05.03500010004 minutes
v4chirp-v42024.12.173000200150 seconds
v3.5chirp-v3-5---3000200120 seconds

Note 1. Visit https://suno.ddaiai.com (if blocked, try changing the subdomain prefix to suibian)


2. If you find it blocked, you can change the URL yourself — replace suibian in https://suibian.ddaiai.com with something else, e.g. https://2025.ddaiai.com — all subdomains are accessible

Online Trial

cover

Result preview: cover

Suno API

Create Lyrics Task

post https://api.openai-hk.com/sunoapi/generate/lyrics/

Request body

json
{ "prompt": "ocean" }
{ "prompt": "ocean" }

Response

json
{ "id": "9561baee-2d64-48fe-8318-d7e82e86712b" }
{ "id": "9561baee-2d64-48fe-8318-d7e82e86712b" }

Create Lyrics Task V2

post https://api.openai-hk.com/sunoapi/generate/lyrics/

Request body

  • lyrics_model supports values remi-v1 and default
json
{ "prompt": "ocean", "lyrics_model": "remi-v1" }
{ "prompt": "ocean", "lyrics_model": "remi-v1" }

Returns 2 lyrics IDs

json
{
  "lyrics_request_id": "e9da46a0-7331-4e7c-bebf-488791033aa8",
  "lyrics_a_id": "281e5626-5165-4de3-83ab-ddea1c4904b1",
  "lyrics_b_id": "a83395f6-f1e4-4655-86db-3d57eeabbe43"
}
{
  "lyrics_request_id": "e9da46a0-7331-4e7c-bebf-488791033aa8",
  "lyrics_a_id": "281e5626-5165-4de3-83ab-ddea1c4904b1",
  "lyrics_b_id": "a83395f6-f1e4-4655-86db-3d57eeabbe43"
}

Fetch each set of lyrics separately

get https://api.openai-hk.com/sunoapi/lyrics/{lyrics_a_id}

Second lyrics

get https://api.openai-hk.com/sunoapi/lyrics/{lyrics_b_id}

Get Lyrics

Retrieve lyrics using the ID from above

get https://api.openai-hk.com/sunoapi/lyrics/{id}

Response

json
{
  "text": "lyrics content",
  "title": "lyrics title",
  "status": "complete"
}
{
  "text": "lyrics content",
  "title": "lyrics title",
  "status": "complete"
}

Create Song Task — Custom Model

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

Request body

json
{
  "prompt": "string",
  "mv": "chirp-v4",
  "title": "string",
  "tags": "string",
  "continue_at": 120,
  "continue_clip_id": "string"
}
{
  "prompt": "string",
  "mv": "chirp-v4",
  "title": "string",
  "tags": "string",
  "continue_at": 120,
  "continue_clip_id": "string"
}
ParameterDescriptionTypeDefault
mvModel. Valid values: chirp-v4 chirp-v3-0 chirp-v3-5 chirp-auk chirp-bluejaystringchirp-v3-5
titleSong titlestring
tagsSong style tags — separate multiple styles with spacesstring
continue_atStart time (seconds)integer(int64)
continue_clip_idID of the previous song clipstring

Response

json
{
  "id": "8fb0a232-aef3-4f8a-82ad-72a3fde0bcc6",
  "clips": [
    {
      "id": "e9f2a77a-07d7-444a-a1f7-575477b0ff18",
      "video_url": "",
      "audio_url": "",
      "image_url": null,
      "image_large_url": null,
      "is_video_pending": false,
      "major_model_version": "v3",
      "model_name": "chirp-v3",
      "metadata": {
        "tags": "infectious house",
        "prompt": "[Verse]\nBlue waves crashing on the shore\nSunshine smiling evermore\n\n[Verse 2]\nSailboats drifting far from land\nSalt and sand go hand in hand\n\n[Chorus]\nOh the ocean holds my dreams\nIn its tide sun's golden beams\nLet the sea set me free\nIn its waves I find my peace\n\n[Verse 3]\nSeagulls flying by the pier\nWhispers of the water clear\n\n[Bridge]\nEndless horizon meets my eyes\nWhere the sea and sky collide\n\n[Verse 4]\nMoonlight dances on the waves\nIn the ocean's arms we lay",
        "gpt_description_prompt": null,
        "audio_prompt_id": null,
        "history": null,
        "concat_history": null,
        "type": "gen",
        "duration": null,
        "refund_credits": null,
        "stream": true,
        "infill": null,
        "error_type": null,
        "error_message": null
      },
      "is_liked": false,
      "user_id": "f60cf781-3c2e-4000-918c-73f68de2a28c",
      "display_name": "MercurialMetronomes303",
      "handle": "mercurialmetronomes303",
      "is_handle_updated": false,
      "avatar_image_url": null,
      "is_trashed": false,
      "reaction": null,
      "created_at": "2024-06-06T02:21:26.175Z",
      "status": "submitted",
      "title": "Ocean",
      "play_count": 0,
      "upvote_count": 0,
      "is_public": false
    },
    {
      "id": "399f0745-0168-463c-a18a-f681f5711280",
      "video_url": "",
      "audio_url": "",
      "image_url": null,
      "image_large_url": null,
      "is_video_pending": false,
      "major_model_version": "v3",
      "model_name": "chirp-v3",
      "metadata": {
        "tags": "infectious house",
        "prompt": "[Verse]\nBlue waves crashing on the shore\nSunshine smiling evermore\n\n[Verse 2]\nSailboats drifting far from land\nSalt and sand go hand in hand\n\n[Chorus]\nOh the ocean holds my dreams\nIn its tide sun's golden beams\nLet the sea set me free\nIn its waves I find my peace\n\n[Verse 3]\nSeagulls flying by the pier\nWhispers of the water clear\n\n[Bridge]\nEndless horizon meets my eyes\nWhere the sea and sky collide\n\n[Verse 4]\nMoonlight dances on the waves\nIn the ocean's arms we lay",
        "gpt_description_prompt": null,
        "audio_prompt_id": null,
        "history": null,
        "concat_history": null,
        "type": "gen",
        "duration": null,
        "refund_credits": null,
        "stream": true,
        "infill": null,
        "error_type": null,
        "error_message": null
      },
      "is_liked": false,
      "user_id": "f60cf781-3c2e-4000-918c-73f68de2a28c",
      "display_name": "MercurialMetronomes303",
      "handle": "mercurialmetronomes303",
      "is_handle_updated": false,
      "avatar_image_url": null,
      "is_trashed": false,
      "reaction": null,
      "created_at": "2024-06-06T02:21:26.176Z",
      "status": "submitted",
      "title": "Ocean",
      "play_count": 0,
      "upvote_count": 0,
      "is_public": false
    }
  ],
  "metadata": {
    "tags": "infectious house",
    "prompt": "[Verse]\nBlue waves crashing on the shore\nSunshine smiling evermore\n\n[Verse 2]\nSailboats drifting far from land\nSalt and sand go hand in hand\n\n[Chorus]\nOh the ocean holds my dreams\nIn its tide sun's golden beams\nLet the sea set me free\nIn its waves I find my peace\n\n[Verse 3]\nSeagulls flying by the pier\nWhispers of the water clear\n\n[Bridge]\nEndless horizon meets my eyes\nWhere the sea and sky collide\n\n[Verse 4]\nMoonlight dances on the waves\nIn the ocean's arms we lay",
    "gpt_description_prompt": null,
    "audio_prompt_id": null,
    "history": null,
    "concat_history": null,
    "type": "gen",
    "duration": null,
    "refund_credits": null,
    "stream": true,
    "infill": null,
    "error_type": null,
    "error_message": null
  },
  "major_model_version": "v3",
  "status": "complete",
  "created_at": "2024-06-06T02:21:26.168Z",
  "batch_size": 1
}
{
  "id": "8fb0a232-aef3-4f8a-82ad-72a3fde0bcc6",
  "clips": [
    {
      "id": "e9f2a77a-07d7-444a-a1f7-575477b0ff18",
      "video_url": "",
      "audio_url": "",
      "image_url": null,
      "image_large_url": null,
      "is_video_pending": false,
      "major_model_version": "v3",
      "model_name": "chirp-v3",
      "metadata": {
        "tags": "infectious house",
        "prompt": "[Verse]\nBlue waves crashing on the shore\nSunshine smiling evermore\n\n[Verse 2]\nSailboats drifting far from land\nSalt and sand go hand in hand\n\n[Chorus]\nOh the ocean holds my dreams\nIn its tide sun's golden beams\nLet the sea set me free\nIn its waves I find my peace\n\n[Verse 3]\nSeagulls flying by the pier\nWhispers of the water clear\n\n[Bridge]\nEndless horizon meets my eyes\nWhere the sea and sky collide\n\n[Verse 4]\nMoonlight dances on the waves\nIn the ocean's arms we lay",
        "gpt_description_prompt": null,
        "audio_prompt_id": null,
        "history": null,
        "concat_history": null,
        "type": "gen",
        "duration": null,
        "refund_credits": null,
        "stream": true,
        "infill": null,
        "error_type": null,
        "error_message": null
      },
      "is_liked": false,
      "user_id": "f60cf781-3c2e-4000-918c-73f68de2a28c",
      "display_name": "MercurialMetronomes303",
      "handle": "mercurialmetronomes303",
      "is_handle_updated": false,
      "avatar_image_url": null,
      "is_trashed": false,
      "reaction": null,
      "created_at": "2024-06-06T02:21:26.175Z",
      "status": "submitted",
      "title": "Ocean",
      "play_count": 0,
      "upvote_count": 0,
      "is_public": false
    },
    {
      "id": "399f0745-0168-463c-a18a-f681f5711280",
      "video_url": "",
      "audio_url": "",
      "image_url": null,
      "image_large_url": null,
      "is_video_pending": false,
      "major_model_version": "v3",
      "model_name": "chirp-v3",
      "metadata": {
        "tags": "infectious house",
        "prompt": "[Verse]\nBlue waves crashing on the shore\nSunshine smiling evermore\n\n[Verse 2]\nSailboats drifting far from land\nSalt and sand go hand in hand\n\n[Chorus]\nOh the ocean holds my dreams\nIn its tide sun's golden beams\nLet the sea set me free\nIn its waves I find my peace\n\n[Verse 3]\nSeagulls flying by the pier\nWhispers of the water clear\n\n[Bridge]\nEndless horizon meets my eyes\nWhere the sea and sky collide\n\n[Verse 4]\nMoonlight dances on the waves\nIn the ocean's arms we lay",
        "gpt_description_prompt": null,
        "audio_prompt_id": null,
        "history": null,
        "concat_history": null,
        "type": "gen",
        "duration": null,
        "refund_credits": null,
        "stream": true,
        "infill": null,
        "error_type": null,
        "error_message": null
      },
      "is_liked": false,
      "user_id": "f60cf781-3c2e-4000-918c-73f68de2a28c",
      "display_name": "MercurialMetronomes303",
      "handle": "mercurialmetronomes303",
      "is_handle_updated": false,
      "avatar_image_url": null,
      "is_trashed": false,
      "reaction": null,
      "created_at": "2024-06-06T02:21:26.176Z",
      "status": "submitted",
      "title": "Ocean",
      "play_count": 0,
      "upvote_count": 0,
      "is_public": false
    }
  ],
  "metadata": {
    "tags": "infectious house",
    "prompt": "[Verse]\nBlue waves crashing on the shore\nSunshine smiling evermore\n\n[Verse 2]\nSailboats drifting far from land\nSalt and sand go hand in hand\n\n[Chorus]\nOh the ocean holds my dreams\nIn its tide sun's golden beams\nLet the sea set me free\nIn its waves I find my peace\n\n[Verse 3]\nSeagulls flying by the pier\nWhispers of the water clear\n\n[Bridge]\nEndless horizon meets my eyes\nWhere the sea and sky collide\n\n[Verse 4]\nMoonlight dances on the waves\nIn the ocean's arms we lay",
    "gpt_description_prompt": null,
    "audio_prompt_id": null,
    "history": null,
    "concat_history": null,
    "type": "gen",
    "duration": null,
    "refund_credits": null,
    "stream": true,
    "infill": null,
    "error_type": null,
    "error_message": null
  },
  "major_model_version": "v3",
  "status": "complete",
  "created_at": "2024-06-06T02:21:26.168Z",
  "batch_size": 1
}

Create Song Task — Description Model

post https://api.openai-hk.com/sunoapi/generate or post https://api.openai-hk.com/sunoapi/generate/description-mode (deprecated)

Request body

json
{
  "gpt_description_prompt": "description content",
  "make_instrumental": false,
  "mv": "chirp-v4",
  "prompt": "description content 2"
}
{
  "gpt_description_prompt": "description content",
  "make_instrumental": false,
  "mv": "chirp-v4",
  "prompt": "description content 2"
}

Response

json
{
  "id": "344ec7d6-c976-4100-9804-f348bbf38422",
  "clips": [
    {
      "id": "0c60de63-fba7-4207-94ea-6a240c64f928",
      "video_url": "",
      "audio_url": "",
      "image_url": null,
      "image_large_url": null,
      "is_video_pending": false,
      "major_model_version": "v3",
      "model_name": "chirp-v3",
      "metadata": {
        "tags": null,
        "prompt": "ocean",
        "gpt_description_prompt": "ocean",
        "audio_prompt_id": null,
        "history": null,
        "concat_history": null,
        "type": "gen",
        "duration": null,
        "refund_credits": null,
        "stream": true,
        "infill": null,
        "error_type": null,
        "error_message": null
      },
      "is_liked": false,
      "user_id": "f60cf781-3c2e-4000-918c-73f68de2a28c",
      "display_name": "MercurialMetronomes303",
      "handle": "mercurialmetronomes303",
      "is_handle_updated": false,
      "avatar_image_url": null,
      "is_trashed": false,
      "reaction": null,
      "created_at": "2024-06-06T02:17:12.340Z",
      "status": "submitted",
      "title": "",
      "play_count": 0,
      "upvote_count": 0,
      "is_public": false
    },
    {
      "id": "28f4a72c-6a50-452f-a67c-5ab2354512c7",
      "video_url": "",
      "audio_url": "",
      "image_url": null,
      "image_large_url": null,
      "is_video_pending": false,
      "major_model_version": "v3",
      "model_name": "chirp-v3",
      "metadata": {
        "tags": null,
        "prompt": "ocean",
        "gpt_description_prompt": "ocean",
        "audio_prompt_id": null,
        "history": null,
        "concat_history": null,
        "type": "gen",
        "duration": null,
        "refund_credits": null,
        "stream": true,
        "infill": null,
        "error_type": null,
        "error_message": null
      },
      "is_liked": false,
      "user_id": "f60cf781-3c2e-4000-918c-73f68de2a28c",
      "display_name": "MercurialMetronomes303",
      "handle": "mercurialmetronomes303",
      "is_handle_updated": false,
      "avatar_image_url": null,
      "is_trashed": false,
      "reaction": null,
      "created_at": "2024-06-06T02:17:12.340Z",
      "status": "submitted",
      "title": "",
      "play_count": 0,
      "upvote_count": 0,
      "is_public": false
    }
  ],
  "metadata": {
    "tags": null,
    "prompt": "ocean",
    "gpt_description_prompt": "ocean",
    "audio_prompt_id": null,
    "history": null,
    "concat_history": null,
    "type": "gen",
    "duration": null,
    "refund_credits": null,
    "stream": true,
    "infill": null,
    "error_type": null,
    "error_message": null
  },
  "major_model_version": "v3",
  "status": "complete",
  "created_at": "2024-06-06T02:17:12.330Z",
  "batch_size": 1
}
{
  "id": "344ec7d6-c976-4100-9804-f348bbf38422",
  "clips": [
    {
      "id": "0c60de63-fba7-4207-94ea-6a240c64f928",
      "video_url": "",
      "audio_url": "",
      "image_url": null,
      "image_large_url": null,
      "is_video_pending": false,
      "major_model_version": "v3",
      "model_name": "chirp-v3",
      "metadata": {
        "tags": null,
        "prompt": "ocean",
        "gpt_description_prompt": "ocean",
        "audio_prompt_id": null,
        "history": null,
        "concat_history": null,
        "type": "gen",
        "duration": null,
        "refund_credits": null,
        "stream": true,
        "infill": null,
        "error_type": null,
        "error_message": null
      },
      "is_liked": false,
      "user_id": "f60cf781-3c2e-4000-918c-73f68de2a28c",
      "display_name": "MercurialMetronomes303",
      "handle": "mercurialmetronomes303",
      "is_handle_updated": false,
      "avatar_image_url": null,
      "is_trashed": false,
      "reaction": null,
      "created_at": "2024-06-06T02:17:12.340Z",
      "status": "submitted",
      "title": "",
      "play_count": 0,
      "upvote_count": 0,
      "is_public": false
    },
    {
      "id": "28f4a72c-6a50-452f-a67c-5ab2354512c7",
      "video_url": "",
      "audio_url": "",
      "image_url": null,
      "image_large_url": null,
      "is_video_pending": false,
      "major_model_version": "v3",
      "model_name": "chirp-v3",
      "metadata": {
        "tags": null,
        "prompt": "ocean",
        "gpt_description_prompt": "ocean",
        "audio_prompt_id": null,
        "history": null,
        "concat_history": null,
        "type": "gen",
        "duration": null,
        "refund_credits": null,
        "stream": true,
        "infill": null,
        "error_type": null,
        "error_message": null
      },
      "is_liked": false,
      "user_id": "f60cf781-3c2e-4000-918c-73f68de2a28c",
      "display_name": "MercurialMetronomes303",
      "handle": "mercurialmetronomes303",
      "is_handle_updated": false,
      "avatar_image_url": null,
      "is_trashed": false,
      "reaction": null,
      "created_at": "2024-06-06T02:17:12.340Z",
      "status": "submitted",
      "title": "",
      "play_count": 0,
      "upvote_count": 0,
      "is_public": false
    }
  ],
  "metadata": {
    "tags": null,
    "prompt": "ocean",
    "gpt_description_prompt": "ocean",
    "audio_prompt_id": null,
    "history": null,
    "concat_history": null,
    "type": "gen",
    "duration": null,
    "refund_credits": null,
    "stream": true,
    "infill": null,
    "error_type": null,
    "error_message": null
  },
  "major_model_version": "v3",
  "status": "complete",
  "created_at": "2024-06-06T02:17:12.330Z",
  "batch_size": 1
}

Get Song

The above responses both return clips containing 2 IDs: clipsId1, clipsId2

get https://api.openai-hk.com/sunoapi/feed/clipsId1,clipsId2

Response

json
[
  {
    "id": "e9f2a77a-07d7-444a-a1f7-575477b0ff18",
    "video_url": "",
    "audio_url": "https://audiopipe.suno.ai/?item_id=e9f2a77a-07d7-444a-a1f7-575477b0ff18",
    "image_url": "https://cdn1.suno.ai/image_e9f2a77a-07d7-444a-a1f7-575477b0ff18.png",
    "image_large_url": "https://cdn1.suno.ai/image_large_e9f2a77a-07d7-444a-a1f7-575477b0ff18.png",
    "is_video_pending": false,
    "major_model_version": "v3",
    "model_name": "chirp-v3",
    "metadata": {
      "tags": "infectious house",
      "prompt": "[Verse]\nBlue waves crashing on the shore\nSunshine smiling evermore\n\n[Verse 2]\nSailboats drifting far from land\nSalt and sand go hand in hand\n\n[Chorus]\nOh the ocean holds my dreams\nIn its tide sun's golden beams\nLet the sea set me free\nIn its waves I find my peace\n\n[Verse 3]\nSeagulls flying by the pier\nWhispers of the water clear\n\n[Bridge]\nEndless horizon meets my eyes\nWhere the sea and sky collide\n\n[Verse 4]\nMoonlight dances on the waves\nIn the ocean's arms we lay",
      "gpt_description_prompt": null,
      "audio_prompt_id": null,
      "history": null,
      "concat_history": null,
      "type": "gen",
      "duration": null,
      "refund_credits": null,
      "stream": true,
      "infill": null,
      "error_type": null,
      "error_message": null
    },
    "is_liked": false,
    "user_id": "f60cf781-3c2e-4000-918c-73f68de2a28c",
    "display_name": "MercurialMetronomes303",
    "handle": "mercurialmetronomes303",
    "is_handle_updated": false,
    "avatar_image_url": null,
    "is_trashed": false,
    "reaction": null,
    "created_at": "2024-06-06T02:21:26.175Z",
    "status": "streaming",
    "title": "Ocean",
    "play_count": 0,
    "upvote_count": 0,
    "is_public": false
  },
  {
    "id": "399f0745-0168-463c-a18a-f681f5711280",
    "video_url": "",
    "audio_url": "https://audiopipe.suno.ai/?item_id=399f0745-0168-463c-a18a-f681f5711280",
    "image_url": "https://cdn1.suno.ai/image_399f0745-0168-463c-a18a-f681f5711280.png",
    "image_large_url": "https://cdn1.suno.ai/image_large_399f0745-0168-463c-a18a-f681f5711280.png",
    "is_video_pending": false,
    "major_model_version": "v3",
    "model_name": "chirp-v3",
    "metadata": {
      "tags": "infectious house",
      "prompt": "[Verse]\nBlue waves crashing on the shore\nSunshine smiling evermore\n\n[Verse 2]\nSailboats drifting far from land\nSalt and sand go hand in hand\n\n[Chorus]\nOh the ocean holds my dreams\nIn its tide sun's golden beams\nLet the sea set me free\nIn its waves I find my peace\n\n[Verse 3]\nSeagulls flying by the pier\nWhispers of the water clear\n\n[Bridge]\nEndless horizon meets my eyes\nWhere the sea and sky collide\n\n[Verse 4]\nMoonlight dances on the waves\nIn the ocean's arms we lay",
      "gpt_description_prompt": null,
      "audio_prompt_id": null,
      "history": null,
      "concat_history": null,
      "type": "gen",
      "duration": null,
      "refund_credits": null,
      "stream": true,
      "infill": null,
      "error_type": null,
      "error_message": null
    },
    "is_liked": false,
    "user_id": "f60cf781-3c2e-4000-918c-73f68de2a28c",
    "display_name": "MercurialMetronomes303",
    "handle": "mercurialmetronomes303",
    "is_handle_updated": false,
    "avatar_image_url": null,
    "is_trashed": false,
    "reaction": null,
    "created_at": "2024-06-06T02:21:26.176Z",
    "status": "streaming",
    "title": "Ocean",
    "play_count": 0,
    "upvote_count": 0,
    "is_public": false
  }
]
[
  {
    "id": "e9f2a77a-07d7-444a-a1f7-575477b0ff18",
    "video_url": "",
    "audio_url": "https://audiopipe.suno.ai/?item_id=e9f2a77a-07d7-444a-a1f7-575477b0ff18",
    "image_url": "https://cdn1.suno.ai/image_e9f2a77a-07d7-444a-a1f7-575477b0ff18.png",
    "image_large_url": "https://cdn1.suno.ai/image_large_e9f2a77a-07d7-444a-a1f7-575477b0ff18.png",
    "is_video_pending": false,
    "major_model_version": "v3",
    "model_name": "chirp-v3",
    "metadata": {
      "tags": "infectious house",
      "prompt": "[Verse]\nBlue waves crashing on the shore\nSunshine smiling evermore\n\n[Verse 2]\nSailboats drifting far from land\nSalt and sand go hand in hand\n\n[Chorus]\nOh the ocean holds my dreams\nIn its tide sun's golden beams\nLet the sea set me free\nIn its waves I find my peace\n\n[Verse 3]\nSeagulls flying by the pier\nWhispers of the water clear\n\n[Bridge]\nEndless horizon meets my eyes\nWhere the sea and sky collide\n\n[Verse 4]\nMoonlight dances on the waves\nIn the ocean's arms we lay",
      "gpt_description_prompt": null,
      "audio_prompt_id": null,
      "history": null,
      "concat_history": null,
      "type": "gen",
      "duration": null,
      "refund_credits": null,
      "stream": true,
      "infill": null,
      "error_type": null,
      "error_message": null
    },
    "is_liked": false,
    "user_id": "f60cf781-3c2e-4000-918c-73f68de2a28c",
    "display_name": "MercurialMetronomes303",
    "handle": "mercurialmetronomes303",
    "is_handle_updated": false,
    "avatar_image_url": null,
    "is_trashed": false,
    "reaction": null,
    "created_at": "2024-06-06T02:21:26.175Z",
    "status": "streaming",
    "title": "Ocean",
    "play_count": 0,
    "upvote_count": 0,
    "is_public": false
  },
  {
    "id": "399f0745-0168-463c-a18a-f681f5711280",
    "video_url": "",
    "audio_url": "https://audiopipe.suno.ai/?item_id=399f0745-0168-463c-a18a-f681f5711280",
    "image_url": "https://cdn1.suno.ai/image_399f0745-0168-463c-a18a-f681f5711280.png",
    "image_large_url": "https://cdn1.suno.ai/image_large_399f0745-0168-463c-a18a-f681f5711280.png",
    "is_video_pending": false,
    "major_model_version": "v3",
    "model_name": "chirp-v3",
    "metadata": {
      "tags": "infectious house",
      "prompt": "[Verse]\nBlue waves crashing on the shore\nSunshine smiling evermore\n\n[Verse 2]\nSailboats drifting far from land\nSalt and sand go hand in hand\n\n[Chorus]\nOh the ocean holds my dreams\nIn its tide sun's golden beams\nLet the sea set me free\nIn its waves I find my peace\n\n[Verse 3]\nSeagulls flying by the pier\nWhispers of the water clear\n\n[Bridge]\nEndless horizon meets my eyes\nWhere the sea and sky collide\n\n[Verse 4]\nMoonlight dances on the waves\nIn the ocean's arms we lay",
      "gpt_description_prompt": null,
      "audio_prompt_id": null,
      "history": null,
      "concat_history": null,
      "type": "gen",
      "duration": null,
      "refund_credits": null,
      "stream": true,
      "infill": null,
      "error_type": null,
      "error_message": null
    },
    "is_liked": false,
    "user_id": "f60cf781-3c2e-4000-918c-73f68de2a28c",
    "display_name": "MercurialMetronomes303",
    "handle": "mercurialmetronomes303",
    "is_handle_updated": false,
    "avatar_image_url": null,
    "is_trashed": false,
    "reaction": null,
    "created_at": "2024-06-06T02:21:26.176Z",
    "status": "streaming",
    "title": "Ocean",
    "play_count": 0,
    "upvote_count": 0,
    "is_public": false
  }
]
  • The key field to watch is [0].status — when it equals complete, generation is finished
  • status values: submitted pending complete streaming queued

Concat Song

post https://api.openai-hk.com/sunoapi/generate/concat

Request body

json
{
  "clip_id": "song ID after extend",
  "is_infill": false
}
{
  "clip_id": "song ID after extend",
  "is_infill": false
}

Use the returned id with the Get Song endpoint to check status and retrieve the result; metadata.type will be concat

json
{
  "id": "e193aa39-e97b-464d-938f-cd150f7fb05a",
  "video_url": "",
  "audio_url": "",
  "image_url": "https://cdn1.suno.ai/image_ea8b867f-d072-4a13-9418-eb687cfd956f.png",
  "image_large_url": "https://cdn1.suno.ai/image_large_ea8b867f-d072-4a13-9418-eb687cfd956f.png",
  "is_video_pending": false,
  "major_model_version": "v3.5",
  "model_name": "chirp-v3.5",
  "metadata": {
    "tags": "romantic country",
    "prompt": "[Verse]\nIn the dream of red mansions\nDeep in the quiet night\nCandlelight flickering\n\n[Verse 2]\nDancers among the flowers\nTelling stories of farewell\nSorrow hidden in the heart\n\n[Chorus]\nThe dream of red mansions shattered\nWho awakens from the dream\nHelpless and silent\n\n[Verse 3]\nThe past like smoke\nWind scatters the clouds\nOnly longing remains\n\n[Bridge]\nDreams rise and fall\nWhere to search\nFor that old affection\n\n[Chorus]\nThe dream of red mansions shattered\nWho awakens from the dream\nHelpless and silent\n\n[Verse]\nNightfall descends upon the city\nStreet lights illuminate the dark\nDreams awaken, crowds emerge\nHeartbeat follows the rhythm\n\n[Verse 2]\nNeon lights shine bright\nSilence whispers in my ear\nFootsteps echo all around\nLost, unable to see through\n\n[Chorus]\nThe night makes us dependent\nStarlight lights up the windowsill\nTogether watching the half-hidden moon\nHeartbeat so joyful\n\n[Verse 3]\nMemories in the deep night\nDimly meeting in my mind\nEmbrace soft as the wind\nThe night makes my heart stir\n\n[Chorus]\nThe night makes us dependent\nStarlight lights up the windowsill\nTogether watching the half-hidden moon\nHeartbeat so joyful\n\n[Bridge]\nCold wind cuts through the street\nThoughts take flight with the night\nThis moment dreams have no regrets\nThe night intoxicates deeply",
    "gpt_description_prompt": null,
    "audio_prompt_id": null,
    "history": null,
    "concat_history": [
      {
        "id": "a015205b-43ef-4374-b334-b3a78ef977aa",
        "continue_at": 60,
        "type": "gen",
        "source": "web",
        "infill": false
      },
      {
        "id": "ea8b867f-d072-4a13-9418-eb687cfd956f",
        "continue_at": null
      }
    ],
    "type": "concat",
    "duration": null,
    "refund_credits": null,
    "stream": null,
    "infill": null,
    "has_vocal": null,
    "is_audio_upload_tos_accepted": null,
    "error_type": null,
    "error_message": null
  },
  "is_liked": false,
  "user_id": "7d44c563-4d66-449b-8de1-131e062baf43",
  "display_name": "HeavyHipHop606",
  "handle": "heavyhiphop606",
  "is_handle_updated": false,
  "avatar_image_url": "https://cdn1.suno.ai/defaultPink.jpg",
  "is_trashed": false,
  "reaction": null,
  "created_at": "2024-07-05T07:32:37.286Z",
  "status": "queued",
  "title": "Red Mansion",
  "play_count": 0,
  "upvote_count": 0,
  "is_public": false
}
{
  "id": "e193aa39-e97b-464d-938f-cd150f7fb05a",
  "video_url": "",
  "audio_url": "",
  "image_url": "https://cdn1.suno.ai/image_ea8b867f-d072-4a13-9418-eb687cfd956f.png",
  "image_large_url": "https://cdn1.suno.ai/image_large_ea8b867f-d072-4a13-9418-eb687cfd956f.png",
  "is_video_pending": false,
  "major_model_version": "v3.5",
  "model_name": "chirp-v3.5",
  "metadata": {
    "tags": "romantic country",
    "prompt": "[Verse]\nIn the dream of red mansions\nDeep in the quiet night\nCandlelight flickering\n\n[Verse 2]\nDancers among the flowers\nTelling stories of farewell\nSorrow hidden in the heart\n\n[Chorus]\nThe dream of red mansions shattered\nWho awakens from the dream\nHelpless and silent\n\n[Verse 3]\nThe past like smoke\nWind scatters the clouds\nOnly longing remains\n\n[Bridge]\nDreams rise and fall\nWhere to search\nFor that old affection\n\n[Chorus]\nThe dream of red mansions shattered\nWho awakens from the dream\nHelpless and silent\n\n[Verse]\nNightfall descends upon the city\nStreet lights illuminate the dark\nDreams awaken, crowds emerge\nHeartbeat follows the rhythm\n\n[Verse 2]\nNeon lights shine bright\nSilence whispers in my ear\nFootsteps echo all around\nLost, unable to see through\n\n[Chorus]\nThe night makes us dependent\nStarlight lights up the windowsill\nTogether watching the half-hidden moon\nHeartbeat so joyful\n\n[Verse 3]\nMemories in the deep night\nDimly meeting in my mind\nEmbrace soft as the wind\nThe night makes my heart stir\n\n[Chorus]\nThe night makes us dependent\nStarlight lights up the windowsill\nTogether watching the half-hidden moon\nHeartbeat so joyful\n\n[Bridge]\nCold wind cuts through the street\nThoughts take flight with the night\nThis moment dreams have no regrets\nThe night intoxicates deeply",
    "gpt_description_prompt": null,
    "audio_prompt_id": null,
    "history": null,
    "concat_history": [
      {
        "id": "a015205b-43ef-4374-b334-b3a78ef977aa",
        "continue_at": 60,
        "type": "gen",
        "source": "web",
        "infill": false
      },
      {
        "id": "ea8b867f-d072-4a13-9418-eb687cfd956f",
        "continue_at": null
      }
    ],
    "type": "concat",
    "duration": null,
    "refund_credits": null,
    "stream": null,
    "infill": null,
    "has_vocal": null,
    "is_audio_upload_tos_accepted": null,
    "error_type": null,
    "error_message": null
  },
  "is_liked": false,
  "user_id": "7d44c563-4d66-449b-8de1-131e062baf43",
  "display_name": "HeavyHipHop606",
  "handle": "heavyhiphop606",
  "is_handle_updated": false,
  "avatar_image_url": "https://cdn1.suno.ai/defaultPink.jpg",
  "is_trashed": false,
  "reaction": null,
  "created_at": "2024-07-05T07:32:37.286Z",
  "status": "queued",
  "title": "Red Mansion",
  "play_count": 0,
  "upvote_count": 0,
  "is_public": false
}

Audio-to-Audio Generation

You can try this at https://suno.ddaiai.com — see the preview below

suno

The API involves 6 steps

1. Upload Request

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

Request body

json
{ "extension": "mp3" }
{ "extension": "mp3" }

Response

json
{
  "id": "c25a8c59-000a-481f-ac28-efde2dc9e677",
  "url": "https://suno-uploads.s3.amazonaws.com/",
  "fields": {
    "Content-Type": "audio/mpeg",
    "key": "raw_uploads/c25a8c59-000a-481f-ac28-efde2dc9e677.mp3",
    "AWSAccessKeyId": "AKIA2V4GXGDKJMTPWLXO",
    "policy": "eyJleHBpcmF0aW9uIjogIjIwMjQtMDYtMTdUMDY6MTg6MzJaIiwgImNvbmRpdGlvbnMiOiBbWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsIDAsIDEwNDg1NzYwMF0sIFsic3RhcnRzLXdpdGgiLCAiJENvbnRlbnQtVHlwZSIsICJhdWRpby9tcGVnIl0sIHsiYnVja2V0IjogInN1bm8tdXBsb2FkcyJ9LCB7ImtleSI6ICJyYXdfdXBsb2Fkcy9jMjVhOGM1OS0wMDBhLTQ4MWYtYWMyOC1lZmRlMmRjOWU2NzcubXAzIn1dfQ==",
    "signature": "yjfB/HTNgPHURNLRdeizNMVgG6k="
  }
}
{
  "id": "c25a8c59-000a-481f-ac28-efde2dc9e677",
  "url": "https://suno-uploads.s3.amazonaws.com/",
  "fields": {
    "Content-Type": "audio/mpeg",
    "key": "raw_uploads/c25a8c59-000a-481f-ac28-efde2dc9e677.mp3",
    "AWSAccessKeyId": "AKIA2V4GXGDKJMTPWLXO",
    "policy": "eyJleHBpcmF0aW9uIjogIjIwMjQtMDYtMTdUMDY6MTg6MzJaIiwgImNvbmRpdGlvbnMiOiBbWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsIDAsIDEwNDg1NzYwMF0sIFsic3RhcnRzLXdpdGgiLCAiJENvbnRlbnQtVHlwZSIsICJhdWRpby9tcGVnIl0sIHsiYnVja2V0IjogInN1bm8tdXBsb2FkcyJ9LCB7ImtleSI6ICJyYXdfdXBsb2Fkcy9jMjVhOGM1OS0wMDBhLTQ4MWYtYWMyOC1lZmRlMmRjOWU2NzcubXAzIn1dfQ==",
    "signature": "yjfB/HTNgPHURNLRdeizNMVgG6k="
  }
}

The id here is the audio_id used below, and url is the request URL for step 2

2. Upload File

post https://suno-uploads.s3.amazonaws.com/

shell
curl --request POST \
  --url https://suno-uploads.s3.amazonaws.com/ \
  --header 'content-type: multipart/form-data' \
  --form Content-Type=audio/mpeg \
  --form key=raw_uploads/c25a8c59-000a-481f-ac28-efde2dc9e677.mp3 \
  --form AWSAccessKeyId=AKIA2V4GXGDKJMTPWLXO \
  --form policy=eyJleHBpcmF0aW9uIjogIjIwMjQtMDYtMTdUMDY6MTg6MzJaIiwgImNvbmRpdGlvbnMiOiBbWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsIDAsIDEwNDg1NzYwMF0sIFsic3RhcnRzLXdpdGgiLCAiJENvbnRlbnQtVHlwZSIsICJhdWRpby9tcGVnIl0sIHsiYnVja2V0IjogInN1bm8tdXBsb2FkcyJ9LCB7ImtleSI6ICJyYXdfdXBsb2Fkcy9jMjVhOGM1OS0wMDBhLTQ4MWYtYWMyOC1lZmRlMmRjOWU2NzcubXAzIn1dfQ== \
  --form signature=yjfB/HTNgPHURNLRdeizNMVgG6k= \
  --form file=@/you_mp3_dir_file.mp3
curl --request POST \
  --url https://suno-uploads.s3.amazonaws.com/ \
  --header 'content-type: multipart/form-data' \
  --form Content-Type=audio/mpeg \
  --form key=raw_uploads/c25a8c59-000a-481f-ac28-efde2dc9e677.mp3 \
  --form AWSAccessKeyId=AKIA2V4GXGDKJMTPWLXO \
  --form policy=eyJleHBpcmF0aW9uIjogIjIwMjQtMDYtMTdUMDY6MTg6MzJaIiwgImNvbmRpdGlvbnMiOiBbWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsIDAsIDEwNDg1NzYwMF0sIFsic3RhcnRzLXdpdGgiLCAiJENvbnRlbnQtVHlwZSIsICJhdWRpby9tcGVnIl0sIHsiYnVja2V0IjogInN1bm8tdXBsb2FkcyJ9LCB7ImtleSI6ICJyYXdfdXBsb2Fkcy9jMjVhOGM1OS0wMDBhLTQ4MWYtYWMyOC1lZmRlMmRjOWU2NzcubXAzIn1dfQ== \
  --form signature=yjfB/HTNgPHURNLRdeizNMVgG6k= \
  --form file=@/you_mp3_dir_file.mp3
  • The request body consists of the fields from above plus the file (mp3 file)
  • A 20x response indicates success

3. Report Upload Complete

post https://api.openai-hk.com/sunoapi/uploads/audio/{id}/upload-finish

Request body

json
{ "upload_type": "file_upload", "upload_filename": "you_mp3_name.mp3" }
{ "upload_type": "file_upload", "upload_filename": "you_mp3_name.mp3" }

4. Check Processing Status

get https://api.openai-hk.com/sunoapi/uploads/audio/{id}

Response body

json
{
  "id": "c25a8c59-000a-481f-ac28-efde2dc9e677",
  "status": "complete",
  "error_message": null,
  "s3_id": "m_05c9b477-4519-4810-9ffa-00580c082067",
  "title": "S-100096-100096-84069F8B",
  "image_url": "https://cdn1.suno.ai/image_05c9b477-4519-4810-9ffa-00580c082067.png"
}
{
  "id": "c25a8c59-000a-481f-ac28-efde2dc9e677",
  "status": "complete",
  "error_message": null,
  "s3_id": "m_05c9b477-4519-4810-9ffa-00580c082067",
  "title": "S-100096-100096-84069F8B",
  "image_url": "https://cdn1.suno.ai/image_05c9b477-4519-4810-9ffa-00580c082067.png"
}

When status equals complete, processing is done

5. Initialize Audio Clip

post https://api.openai-hk.com/sunoapi/uploads/audio/{id}/initialize-clip

Request body

json
{}
{}

Response body

json
{
  "clip_id": "05c9b477-4519-4810-9ffa-00580c082067"
}
{
  "clip_id": "05c9b477-4519-4810-9ffa-00580c082067"
}

6. Retrieve and Remix

  • Use the Get Song endpoint with the clip_id from above as the id
  • Deprecated: Use Create Song Task — Custom Model and fill continue_clip_id with the clip_id value, set mv to chirp-v3-5-upload
  • Using different versions:
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"
}

Audio-to-Audio Generation — URL Upload

  • The audio-to-audio method above is quite cumbersome
  • The following endpoint handles all the steps above in one call
  • Only supports mp3
  • Resource-intensive — deducts 200 credits

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

Request body

json
{
  "url": "http://cdnimg.exbapp.com/ai/2024-06-18/d416d9c3c34eb22c7d8c094831d8dbd0.mp3"
}
{
  "url": "http://cdnimg.exbapp.com/ai/2024-06-18/d416d9c3c34eb22c7d8c094831d8dbd0.mp3"
}

Response body

json
{
  "clip_id": "f4e624c0-b018-4933-8f35-be2bcc79a0c8",
  "code": "success",
  "data": "f4e624c0-b018-4933-8f35-be2bcc79a0c8",
  "message": ""
}
{
  "clip_id": "f4e624c0-b018-4933-8f35-be2bcc79a0c8",
  "code": "success",
  "data": "f4e624c0-b018-4933-8f35-be2bcc79a0c8",
  "message": ""
}
  • Use the returned clip_id for remixing — see 6. Retrieve and Remix
  • Compatible with newapi format — data equals clip_id
  • curl demo
shell
curl --request POST \
  --url https://api.openai-hk.com/sunoapi/uploads/audio-url \
  --header 'Authorization: Bearer hk-yourKey' \
  --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/sunoapi/uploads/audio-url \
  --header 'Authorization: Bearer hk-yourKey' \
  --header 'content-type: application/json' \
  --data '{
	"url": "http://cdnimg.exbapp.com/ai/2024-06-18/d416d9c3c34eb22c7d8c094831d8dbd0.mp3"
}'

NewAPI Compatibility

  • A. Already compatible with newapi format
  • B. Already compatible with god format
  • C. For other format compatibility, please contact customer support

Chat-Mode Invocation

  • Invoke via chat mode using model suno-v3

Setup

cover

Result

  • Set the model to suno-v3cover
  • Enter a prompt in the chat box to receive 2 music tracks, lyrics, and album cover covercover

Chat Integration Demo

Already aligned with the OpenAI API — simply change the model to suno-v3

shell
curl --request POST \
  --url https://api.openai-hk.com/v1/chat/completions \
  --header 'Authorization: Bearer hk-yourKey' \
  --header 'content-type: application/json' \
  --data '{
    "max_tokens": 800,
    "model": "suno-v3",
    "temperature": 0.8,
    "top_p": 1,
    "presence_penalty": 1,
    "stream":false,
    "messages": [
        {
            "role": "user",
            "content": "childhood memories"
        }
    ]
}'
curl --request POST \
  --url https://api.openai-hk.com/v1/chat/completions \
  --header 'Authorization: Bearer hk-yourKey' \
  --header 'content-type: application/json' \
  --data '{
    "max_tokens": 800,
    "model": "suno-v3",
    "temperature": 0.8,
    "top_p": 1,
    "presence_penalty": 1,
    "stream":false,
    "messages": [
        {
            "role": "user",
            "content": "childhood memories"
        }
    ]
}'