Watermark-Free Suno Music Model
- 2025.07.17 Suno supports the new version
v4.5+
with MV aschirp-bluejay
- 2025.05.03 Suno supports the new version
v4.5
with MV aschirp-auk
- 2024.12.17 Suno supports all versions
v4
,v3.5
,v3.0
with no watermark, long duration, high concurrency, and high quality - 2024.11.06 Suno currently has almost no watermark; we have a solution for watermark removal. ~
Promotional price as low as 4 cents per song (already ended)~ - 2024.03.27 This site now supports the music model
suno
- Two methods:
chat
andunofficial API
. It is recommended to use theunofficial API
- The
chat
method follows the OpenAI format. For theunofficial API
, refer to Using Suno Unofficial API - One prompt generates 2 songs
- Billing is per attempt, not per song
- How to use: Visit https://suno.ddaiai.com and see the
Online Trial
section below
Note
- Visit https://suno.ddaiai.com (if blocked, change the subdomain prefix to
suibian
)
2. If blocked, you can change the address yourself, e.g.,https://suibian.ddaiai.com
. Replacesuibian
with other prefixes likehttps://2025.ddaiai.com
to access.
Online Trial
- Configure the settings as shown below:
- Suno API address:
https://api.openai-hk.com/sunoapi
- Suno KEY:
hk-your-apiKey
Effect preview:
Suno API
Create Lyrics Task
POST
https://api.openai-hk.com/sunoapi/generate/lyrics/
Request Body:
{ "prompt": "大海" }
{ "prompt": "大海" }
Response:
{ "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
supportsremi-v1
ordefault
.
{ "prompt": "大海", "lyrics_model": "remi-v1" }
{ "prompt": "大海", "lyrics_model": "remi-v1" }
Response (2 lyric IDs):
{
"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 lyrics separately:
GET
https://api.openai-hk.com/sunoapi/lyrics/{lyrics_a_id}
Second lyric:
GET
https://api.openai-hk.com/sunoapi/lyrics/{lyrics_b_id}
Fetch Lyrics
Fetch lyrics using the ID from above:
GET
https://api.openai-hk.com/sunoapi/lyrics/{id}
Response:
{
"text": "Lyric content",
"title": "Lyric title",
"status": "complete"
}
{
"text": "Lyric content",
"title": "Lyric title",
"status": "complete"
}
Create Custom Song Task
POST
https://api.openai-hk.com/sunoapi/generate
Request Body:
{
"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"
}
Parameter | Description | Type | Default |
---|---|---|---|
mv | Model options: chirp-v4 , chirp-v3-0 , chirp-v3-5 , chirp-auk , chirp-bluejay | string | chirp-v3-5 |
title | Title | string | |
tags | Song styles (separate multiple styles with spaces) | string | |
continue_at | Start time (seconds) | integer(int64) | |
continue_clip_id | Previous song's ID | string |
Response:
{
"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": "大海",
"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": "大海",
"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": "大海",
"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": "大海",
"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 Mode)
POST
https://api.openai-hk.com/sunoapi/generate
or
POSThttps://api.openai-hk.com/sunoapi/generate/description-mode
(deprecated)
Request Body:
{
"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:
{
"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": "大海",
"gpt_description_prompt": "大海",
"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": "大海",
"gpt_description_prompt": "大海",
"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": "大海",
"gpt_description_prompt": "大海",
"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": "大海",
"gpt_description_prompt": "大海",
"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": "大海",
"gpt_description_prompt": "大海",
"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": "大海",
"gpt_description_prompt": "大海",
"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
}
Fetch Songs
Using the clips
IDs from the response (e.g., clipsId1
, clipsId2
):
GET
https://api.openai-hk.com/sunoapi/feed/clipsId1,clipsId2
Response:
[
{
"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": "大海",
"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": "大海",
"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": "大海",
"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": "大海",
"play_count": 0,
"upvote_count": 0,
"is_public": false
}
]
Check [0].status
—when it is complete
, the task is finished.
Concatenate Songs
POST
https://api.openai-hk.com/sunoapi/generate/concat
Request Body:
{
"clip_id": "extended-song-id",
"is_infill": false
}
{
"clip_id": "extended-song-id",
"is_infill": false
}
Use the returned id
to fetch the status and result via the Fetch Songs endpoint. metadata.type
will be concat
.
{
"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]\n红楼梦里\n夜深人静\n烛光闪耀\n\n[Verse 2]\n花间舞者\n诉说离别\n心中藏愁\n\n[Chorus]\n红楼梦碎\n谁在梦醒\n无奈无声\n\n[Verse 3]\n往事如烟\n风吹云散\n空留思念\n\n[Bridge]\n梦起梦落\n何处寻觅\n那段旧情\n\n[Chorus]\n红楼梦碎\n谁在梦醒\n无奈无声\n\n[Verse]\n夜色 降临城市间\n街灯 照亮黑暗\n梦醒 人潮涌现\n心跳 跟随节拍\n\n[Verse 2]\n霓虹 灯火辉煌\n寂静 在我耳旁\n脚步 声音回荡\n迷失 无法望穿\n\n[Chorus]\n夜晚 让人依赖\n星光 点亮窗台\n一起 看月半掩\n心跳 多么愉快\n\n[Verse 3]\n回忆 在深夜中\n依稀 脑海相逢\n拥抱 柔软如风\n夜色 让我心动\n\n[Chorus]\n夜晚 让人依赖\n星光 点亮窗台\n一起 看月半掩\n心跳 多么愉快\n\n[Bridge]\n街头 冷风穿越\n心事 随夜放飞\n此刻 梦想不悔\n夜色 醉人沉醉",
"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": "红楼",
"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]\n红楼梦里\n夜深人静\n烛光闪耀\n\n[Verse 2]\n花间舞者\n诉说离别\n心中藏愁\n\n[Chorus]\n红楼梦碎\n谁在梦醒\n无奈无声\n\n[Verse 3]\n往事如烟\n风吹云散\n空留思念\n\n[Bridge]\n梦起梦落\n何处寻觅\n那段旧情\n\n[Chorus]\n红楼梦碎\n谁在梦醒\n无奈无声\n\n[Verse]\n夜色 降临城市间\n街灯 照亮黑暗\n梦醒 人潮涌现\n心跳 跟随节拍\n\n[Verse 2]\n霓虹 灯火辉煌\n寂静 在我耳旁\n脚步 声音回荡\n迷失 无法望穿\n\n[Chorus]\n夜晚 让人依赖\n星光 点亮窗台\n一起 看月半掩\n心跳 多么愉快\n\n[Verse 3]\n回忆 在深夜中\n依稀 脑海相逢\n拥抱 柔软如风\n夜色 让我心动\n\n[Chorus]\n夜晚 让人依赖\n星光 点亮窗台\n一起 看月半掩\n心跳 多么愉快\n\n[Bridge]\n街头 冷风穿越\n心事 随夜放飞\n此刻 梦想不悔\n夜色 醉人沉醉",
"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": "红楼",
"play_count": 0,
"upvote_count": 0,
"is_public": false
}
Audio-to-Audio Generation
You can test this feature at https://suno.ddaiai.com. Below is a preview:
The API involves 6 steps:
1. Upload Request
POST
https://api.openai-hk.com/sunoapi/uploads/audio
Request Body:
{ "extension": "mp3" }
{ "extension": "mp3" }
Response:
{
"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
for later steps, and the url
is the endpoint for the next request.
2. Upload File
POST
https://suno-uploads.s3.amazonaws.com/
Example cURL:
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 includes the
fields
from above plus thefile
(MP3). - A
20x
response indicates success.
3. Report Upload Completion
POST
https://api.openai-hk.com/sunoapi/uploads/audio/{id}/upload-finish
Request Body:
{ "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:
{
"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
is complete
, the upload is processed.
5. Initialize Audio Clip
POST
https://api.openai-hk.com/sunoapi/uploads/audio/{id}/initialize-clip
Request Body:
{}
{}
Response:
{
"clip_id": "05c9b477-4519-4810-9ffa-00580c082067"
}
{
"clip_id": "05c9b477-4519-4810-9ffa-00580c082067"
}
6. Fetch and Remix
- Use the Fetch Songs endpoint with the
clip_id
. (Deprecated) Use the Custom Song Task withcontinue_clip_id
set toclip_id
andmv
set tochirp-v3-5-upload
.- For different versions:
{
"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 via URL Upload
- The above method is cumbersome.
- This endpoint simplifies the process.
- Only supports
mp3
. - Consumes more resources (200 credits per request).
POST
https://api.openai-hk.com/sunoapi/uploads/audio-url
Request Body:
{
"url": "http://cdnimg.exbapp.com/ai/2024-06-18/d416d9c3c34eb22c7d8c094831d8dbd0.mp3"
}
{
"url": "http://cdnimg.exbapp.com/ai/2024-06-18/d416d9c3c34eb22c7d8c094831d8dbd0.mp3"
}
Response:
{
"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
clip_id
for remixing (see Step 6). - Compatible with
newapi
format (data
=clip_id
). - cURL example:
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"
}'
Compatibility with NewAPI and Others
- A. Compatible with NewAPI format.
- B. Compatible with
god
format. - C. Contact support for other formats.
Chat-Based Interaction
- Use the chat interface with the model
suno-v3
.
Setup
- Configure as shown below:
- OpenAi API address:
https://api.openai-hk.com
- OpenAi API KEY:
hk-your-apiKey
Demo
- Set the model to
suno-v3
: - Enter a prompt to generate 2 songs, lyrics, and cover art:
Chat API Demo
Aligned with OpenAI's API—just change the model to suno-v3
.
curl --request POST \
--url https://api.openai-hk.com/v1/chat/completions \
--header 'Authorization: Bearer hk-your-key' \
--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": "儿时的回忆"
}
]
}'
curl --request POST \
--url https://api.openai-hk.com/v1/chat/completions \
--header 'Authorization: Bearer hk-your-key' \
--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": "儿时的回忆"
}
]
}'