Suno API
Authentication
All endpoints require a Bearer token in the Authorization header:
Authorization: Bearer your-api-key-herePricing
Suno Music - $0.06 Suno Add Vocals - $0.06 Suno Add Instrumental - $0.06 Suno Extend - $0.06 Suno Cover -$0.06 Suno Stems - $0.05 Suno Stems All - $0.20 Suno Lyrics - $0.012
Available Models
Music Generation Models:
chirp-v3-0- Version 3.0chirp-v3-5- Version 3.5chirp-v4- Version 4.0chirp-auk- Version 4.5chirp-bluejay- Version 4.5+chirp-crow- Version 5.0
Lyrics Generation Models:
remi-v1- Primary lyrics modeldefault- Default lyrics model
Model Limits:
v3.5, v4 - Prompt 3,000 characters, Style 200 characters
v4.5, 4.5 Plus & v5 - Prompt 5,000 characters, Style 1,000 characters
In simple mode prompt regardless of the model can not be more than 500 characters
Available Endpoints
1. Music Generation
Generate music using simple or custom mode in a unified endpoint.
Endpoint: POST /suno/music
Simple Mode Example:
curl -X POST "https://api.unifically.com/suno/music" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"mv": "chirp-bluejay",
"custom": false,
"gpt_description_prompt": "[Verse 1]\nHello world\n[Chorus]\nThis is my song",
"make_instrumental": true,
"title": "My First Song"
}'Custom Mode Example:
curl -X POST "https://api.unifically.com/suno/music" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"mv": "chirp-bluejay",
"custom": true,
"make_instrumental": true,
"prompt": "An upbeat pop song with electronic elements",
"title": "Custom Song",
"negative_tags": "metal, jazz",
"advanced_settings": {
"style_weight": 0.7,
"weirdness_constraint": 0.3,
"vocal_gender": "f"
}
}'Response:
{
"code": 200,
"data": {
"task_id": "68c911ac-c8f4-4a4f-b7c4-eb6fa4f8ae92",
"clips": [
{
"status": "submitted",
"title": "",
"id": "5fa5430f-df6f-40e5-b19a-59a9244977b9",
"major_model_version": "v4.5+",
"model_name": "chirp-bluejay",
"prompt": "",
"gpt_description_prompt": "Hip-hop beats with 808 bass",
"created_at": "2025-10-13T21:11:41.114Z"
},
{
"status": "submitted",
"title": "",
"id": "dce3b5e9-7460-49ca-b06e-3e7b09f87b73",
"major_model_version": "v4.5+",
"model_name": "chirp-bluejay",
"prompt": "",
"gpt_description_prompt": "Hip-hop beats with 808 bass",
"created_at": "2025-10-13T21:11:41.114Z"
}
],
"error": {}
}
}2. Extend Music
Extend an existing song or upload audio to extend it.
Endpoint: POST /suno/extend
Extend Existing Clip Example (Simple):
curl -X POST "https://api.unifically.com/suno/extend" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"make_instrumental": true,
"custom": false,
"mv": "chirp-bluejay",
"clip_id": "69ad968a-23c4-40e0-9cdc-80f9649c5209",
"continue_at": 99.6,
"gpt_description_prompt": "prompt"
}'Upload and Extend Example (Custom):
curl -X POST "https://api.unifically.com/suno/extend" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"custom": true,
"mv": "chirp-bluejay",
"audio_url": "https://example.com/audio.mp3",
"continue_at": 60,
"prompt": "Lyrics",
"title": "Extended Version",
"advanced_settings": {
"audio_weight": 0.8,
"vocal_gender": "m"
}
}'Response: Same format as Music Generation
3. Cover Generation
Generate a cover version of an existing song or uploaded audio.
Endpoint: POST /suno/cover
Request Body:
Cover Existing Clip Example (Simple)
curl -X POST "https://api.unifically.com/suno/cover" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"make_instrumental": true,
"custom": false,
"clip_id": "5a6bb955-1536-4f43-877a-b4aa9fb18a4e",
"gpt_description_prompt": "My custom cover lyrics"
}'Upload and Cover Example (Custom)
curl -X POST "https://api.unifically.com/suno/cover" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"make_instrumental": true,
"custom": true,
"audio_url": "https://example.com/audio.mp3",
"prompt": "Jazz style cover",
"title": "My Cover Version",
"advanced_settings": {
"audio_weight": 0.8,
"vocal_gender": "m"
}
}'Response: Same format as Music Generation
4. Add Vocals
Add vocals to uploaded music (only works with uploaded audio, not Suno-generated).
Endpoint: POST /suno/add-vocals
Request Body:
{
"mv": "required", // Model version (see Available Models above)
"clip_id": "required", // ID of audio clip
"audio_url": "https://example.com/audio.mp3", // Audio url you want to use
"prompt": "optional", // prompt
"make_instrumental": "optional", // Boolean: Generate instrumental version
"title": "optional", // Title for the result
"start_s": "optional", // Number: Start time in seconds for vocal overlay
"end_s": "optional", // Number: End time in seconds for vocal overlay
"advanced_settings": { // Optional advanced controls
"style_weight": "optional", // Number 0.0-1.0: Style adherence
"weirdness_constraint": "optional", // Number 0.0-1.0: Experimental level
"audio_weight": "optional", // Number 0.0-1.0: Audio quality priority
"vocal_gender": "optional" // String: "m" or "f"
}
}Example Request:
curl -X POST "https://api.unifically.com/suno/add-vocals" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"mv": "chirp-bluejay",
"clip_id": "ec0be483-2de2-4abc-a5ce-3d8258f52ed4",
"gpt_description_prompt": "[Verse 1]\nNew vocal lyrics here",
"start_s": 10,
"end_s": 60
}'Response: Same format as Music Generation
5. Add Instrumental
Add instrumental backing to uploaded music (only works with uploaded audio, not Suno-generated).
Endpoint: POST /suno/add-instrumental
Request Body, Custom mode:
{
"mv": "required", // Model version (see Available Models above)
"clip_id": "required", // ID of audio clip
"audio_url": "https://example.com/audio.mp3", // Audio url you want to use
"prompt": "optional", // Description
"make_instrumental": "optional", // Boolean: Generate instrumental version
"title": "optional", // Title for the result
"start_s": "optional", // Number: Start time in seconds for instrumental overlay
"end_s": "optional", // Number: End time in seconds for instrumental overlay
"advanced_settings": { // Optional advanced controls
"style_weight": "optional", // Number 0.0-1.0: Style adherence
"weirdness_constraint": "optional", // Number 0.0-1.0: Experimental level
"audio_weight": "optional", // Number 0.0-1.0: Audio quality priority
"vocal_gender": "optional" // String: "m" or "f"
}
}Simple mode:
curl -X POST "https://api.unifically.com/suno/add-instrumental" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"mv": "chirp-bluejay",
"clip_id": "ec0be483-2de2-4abc-a5ce-3d8258f52ed4",
"gpt_description_prompt": "Hip-hop beats with 808 bass",
"start_s": "optional",
"end_s": "optional"
}'Response: Same format as Music Generation
6. Extract Stems (Vocals and Instrumental)
Extract vocals and instrumental tracks from a song.
Endpoint: POST /suno/stems
Request Body:
{
"clip_id": "required", // ID of song to extract stems from
"title": "optional" // Title for stem extraction
}Example Request:
curl -X POST "https://api.unifically.com/suno/stems" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"clip_id": "1901ec96-72c6-4c26-8e56-91028ca6070d",
"title": "My Stems"
}'Response:
{
"code": 200,
"data": {
"task_id": "f2cea77d-44e9-4e40-a75b-a1ba2bb81f31",
"clips": [
{
"title": "My Stems (Vocals)",
"id": "d70dd355-1b85-4ce6-890b-914ffcb600e5",
"stem_type_group_name": "Vocals"
},
{
"title": "My Stems (Backing Vocals)",
"id": "8fa8d5bb-99fb-4d26-8ead-990615885c66",
"stem_type_group_name": "Backing_Vocals"
},
{
"title": "My Stems (Drums)",
"id": "43b396a8-904f-4e51-b28b-8ff5d2519638",
"stem_type_group_name": "Drums"
},
{
"title": "My Stems (Bass)",
"id": "185c3a15-d169-466f-af9d-83ef8f6f34bb",
"stem_type_group_name": "Bass"
},
{
"title": "My Stems (Guitar)",
"id": "3ffbdd91-413c-484c-8c0e-a0d167ccea53",
"stem_type_group_name": "Guitar"
},
{
"title": "My Stems (Keyboard)",
"id": "730fd722-d9ad-43bd-9fe0-6a710748798a",
"stem_type_group_name": "Keyboard"
},
{
"title": "My Stems (Percussion)",
"id": "3fa15b57-bebf-47b7-98d1-862f62416821",
"stem_type_group_name": "Percussion"
},
{
"title": "My Stems (Strings)",
"id": "26101cc2-3531-4b1c-8007-43136900fcfa",
"stem_type_group_name": "Strings"
},
{
"title": "My Stems (Synth)",
"id": "702def7d-2b13-407a-a184-26bff1fd854c",
"stem_type_group_name": "Synth"
},
{
"title": "My Stems (FX)",
"id": "821cedaf-8cdb-49c2-bd42-e4e7e78f327c",
"stem_type_group_name": "FX"
},
{
"title": "My Stems (Brass)",
"id": "8cb03352-0517-4b61-a152-0a8a0e762171",
"stem_type_group_name": "Brass"
},
{
"title": "My Stems (Woodwinds)",
"id": "6e055b03-24cc-4b8f-bcef-6bc7907be3cb",
"stem_type_group_name": "Woodwinds"
},
{
"title": "My Stems (Vocals)",
"id": "fa8e19ca-d3e8-461a-a62e-fcef8e813ddc",
"stem_type_group_name": "Vocals"
},
{
"title": "My Stems (Backing Vocals)",
"id": "982dbb4e-a0da-49f1-9138-a5ee0c3b1935",
"stem_type_group_name": "Backing_Vocals"
},
{
"title": "My Stems (Drums)",
"id": "db7e5506-8f9c-4742-a0d9-57992bef440c",
"stem_type_group_name": "Drums"
},
{
"title": "My Stems (Bass)",
"id": "860612ea-d0a8-44b4-b8bb-396618b02a03",
"stem_type_group_name": "Bass"
},
{
"title": "My Stems (Guitar)",
"id": "7fd31577-d706-4a93-9431-6304d16e6665",
"stem_type_group_name": "Guitar"
},
{
"title": "My Stems (Keyboard)",
"id": "7a8b039d-a88b-49ab-8555-2421f8bbf14d",
"stem_type_group_name": "Keyboard"
},
{
"title": "My Stems (Percussion)",
"id": "5ac4d8b9-aa16-45f6-8838-363b40ad3309",
"stem_type_group_name": "Percussion"
},
{
"title": "My Stems (Strings)",
"id": "12ce7b10-934b-444c-a6ff-a3205054d6b1",
"stem_type_group_name": "Strings"
},
{
"title": "My Stems (Synth)",
"id": "4ffe80b6-0335-45ae-90bf-52ab97eee201",
"stem_type_group_name": "Synth"
},
{
"title": "My Stems (FX)",
"id": "d0e03691-6afb-4b07-9e84-63d6b9fbe3e7",
"stem_type_group_name": "FX"
},
{
"title": "My Stems (Brass)",
"id": "f1803a58-d757-4969-9df5-dd370564abb6",
"stem_type_group_name": "Brass"
},
{
"title": "My Stems (Woodwinds)",
"id": "e21ea38a-b090-4b59-ac24-aa2633aacbdb",
"stem_type_group_name": "Woodwinds"
}
],
"error": {}
}
}7. Extract All Stems
Extract all available stems from a song (vocals, instrumental, drums, bass, etc.).
Endpoint: POST /suno/stems-all
Request Body:
{
"clip_id": "required", // ID of song to extract all stems from
"title": "optional" // Title for stem extraction
}Example Request:
curl -X POST "https://api.unifically.com/suno/stems-all" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"clip_id": "1901ec96-72c6-4c26-8e56-91028ca6070d",
"title": "All My Stems"
}'Response: Same format as Extract Stems
8. Generate Lyrics
Generate lyrics based on a description. Returns IDs that can be used to fetch the completed lyrics.
Endpoint: POST /suno/lyrics
Request Body:
{
"prompt": "required", // Description of lyrics to generate
"mv": "required" // Lyrics model version (see Available Models above)
}Example Request:
curl -X POST "https://api.unifically.com/suno/lyrics" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"prompt": "A chill rock song about summer days",
"mv": "remi-v1"
}'Response:
{
"code": 200,
"data": {
"task_id": "fd743167-d03d-4c48-84c1-2ca01002562b",
"error": {}
}
}9. Fetch Lyrics
Fetch the completed lyrics using the lyrics ID from the generate endpoint.
Endpoint: GET /suno/lyrics/:lyricsId
Example Request:
curl "https://api.unifically.com/suno/lyrics/98a79972-43a9-438f-a9ca-d3bf114eea1d" \
-H "Authorization: Bearer your-api-key"Response:
{
"code": 200,
"data": {
"task_id": "fd743167-d03d-4c48-84c1-2ca01002562b",
"a": {
"text": "[Verse]\nOut in the yard\nCrawlin' with all the animals\nWe are animals\nSwimmin' in a pool\nDrinkin' all the drinks with chemicals\nIt's like magic\n\n[Pre-Chorus]\nSun is shinin' every day\nAnd I feel so high\nFor once\nI feel alive\n\n[Chorus]\nI'm high all the days\nI'm high all the days\nI'm high all the days\n\n[Verse 2]\nTurnin' it on\nAll the time\nFeelin' the vibe\nYou can see it in my eyes\nI'm flyin' all the time\nAnd the sky is wide\nAnd I feel so alive\n\n[Pre-Chorus]\nSun is shinin' every day\nAnd I feel so high\nFor once\nI feel alive\n\n[Chorus]\nI'm high all the days\nI'm high all the days\nI'm high all the days",
"title": "All the Days",
"status": "complete",
"error_message": "",
"tags": [
"chill rock",
"rock"
]
},
"b": {
"text": "[Verse]\nGimme those nights on a beach somewhere\nGimme that saltwater and that ocean air\nGimme those yellow and green and blue and pink sunrises\nGimme those ice-cold beers on the water in a boat\nGimme those tan little lines with your friends and a phone\nGimme those July Fourths and three-day weekends\n\n[Chorus]\nYeah\nYou can have them winter months\nI don't need 'em\nTake 'em all\nI don't need that white Christmas\nOr all that snow\nAll I need's that blue sky\nSun rays\nDon't give me no shades of gray\nJust gimme\nGimme\nGimme\nGimme\nGimme\nThose summer days",
"title": "Summer Days",
"status": "complete",
"error_message": "",
"tags": [
"rock",
"electric guitar",
"chill"
]
},
"error": {}
}
}10. Convert to WAV
Convert a song to WAV format and get download URL.
Endpoint: POST /suno/wav
Request Body:
{
"clip_id": "required" // ID of song to convert
}Example Request:
curl -X POST "https://api.unifically.com/suno/wav" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"clip_id": "5e01ffc9-ecf9-431c-b4b0-2f88ed9ffe20"
}'Response:
{
"code": 200,
"data": {
"wav_url": "https://cdn1.suno.ai/d70dd355-1b85-4ce6-890b-914ffcb600e5.wav",
"error": {}
}
}10. Get Feed Info
Get detailed information about generation tasks (includes audio/video URLs when ready).
Endpoint: GET /suno/feed/:taskIds
Example Request:
curl "https://api.unifically.com/suno/feed/taskid" \
-H "Authorization: Bearer your-api-key"Response:
{
"code": 200,
"data": {
"task_id": "68c911ac-c8f4-4a4f-b7c4-eb6fa4f8ae92",
"clips": [
{
"status": "complete",
"title": "Late Night Drive",
"id": "5fa5430f-df6f-40e5-b19a-59a9244977b9",
"video_url": "",
"audio_url": "https://cdn1.suno.ai/5fa5430f-df6f-40e5-b19a-59a9244977b9.mp3",
"image_url": "https://cdn2.suno.ai/image_5fa5430f-df6f-40e5-b19a-59a9244977b9.jpeg",
"image_large_url": "https://cdn2.suno.ai/image_large_5fa5430f-df6f-40e5-b19a-59a9244977b9.jpeg",
"major_model_version": "v4.5+",
"model_name": "chirp-bluejay",
"duration": 169.96,
"prompt": "[Verse]\nStreetlights blur\nWindows down low\nWhere do we go\nGot no curfew\n\n[Prechorus]\nTell me what you want to do\nI'm all ears just for you\n\n[Chorus]\nLate night drive\nJust you and I\nUnderneath the moon\nDriving so soon\nLate night drive\nMakes me feel alive\n\n[Verse 2]\nCity sleeps\nWe stay awake\nFor goodness sake\nSecrets we keep\n\n[Prechorus]\nTell me what you want to do\nI'm all ears just for you\n\n[Chorus]\nLate night drive\nJust you and I\nUnderneath the moon\nDriving so soon\nLate night drive\nMakes me feel alive",
"created_at": "2025-10-13T21:11:41.114Z"
},
{
"status": "complete",
"title": "Late Night Drive",
"id": "dce3b5e9-7460-49ca-b06e-3e7b09f87b73",
"video_url": "",
"audio_url": "https://cdn1.suno.ai/dce3b5e9-7460-49ca-b06e-3e7b09f87b73.mp3",
"image_url": "https://cdn2.suno.ai/image_dce3b5e9-7460-49ca-b06e-3e7b09f87b73.jpeg",
"image_large_url": "https://cdn2.suno.ai/image_large_dce3b5e9-7460-49ca-b06e-3e7b09f87b73.jpeg",
"major_model_version": "v4.5+",
"model_name": "chirp-bluejay",
"duration": 147.92,
"prompt": "[Verse]\nStreetlights blur\nWindows down low\nWhere do we go\nGot no curfew\n\n[Prechorus]\nTell me what you want to do\nI'm all ears just for you\n\n[Chorus]\nLate night drive\nJust you and I\nUnderneath the moon\nDriving so soon\nLate night drive\nMakes me feel alive\n\n[Verse 2]\nCity sleeps\nWe stay awake\nFor goodness sake\nSecrets we keep\n\n[Prechorus]\nTell me what you want to do\nI'm all ears just for you\n\n[Chorus]\nLate night drive\nJust you and I\nUnderneath the moon\nDriving so soon\nLate night drive\nMakes me feel alive",
"created_at": "2025-10-13T21:11:41.114Z"
}
],
"error": {}
}
}11. Get Timestamped Lyrics
Get timestamped/aligned lyrics for a song.
Endpoint: GET /suno/aligned_lyrics/:taskId
Example Request:
curl "https://api.unifically.com/suno/aligned_lyrics/64ea9bb1-e8d0-4395-a4c4-b70d2fa0e3b4" \
-H "Authorization: Bearer your-api-key"Response:
{
"code": 200,
"data": {
"task_id": "68c911ac-c8f4-4a4f-b7c4-eb6fa4f8ae92",
"a": {
"state": "complete",
"alignment": [
{
"word": "[Verse]\nStreet",
"success": true,
"start_s": 9.89362,
"end_s": 10.21277,
"p_align": 1
},
{
"word": "lights",
"success": true,
"start_s": 10.21277,
"end_s": 10.6117,
"p_align": 1
},
{
"word": " blur",
"success": true,
"start_s": 10.6117,
"end_s": 11.01064,
"p_align": 1
}
]
},
"b": {
"state": "complete",
"alignment": [
{
"word": "[Verse]\nStreet",
"success": true,
"start_s": 10.53191,
"end_s": 10.85106,
"p_align": 1
},
{
"word": "lights",
"success": true,
"start_s": 10.85106,
"end_s": 11.25,
"p_align": 1
},
{
"word": " blur",
"success": true,
"start_s": 11.25,
"end_s": 11.64894,
"p_align": 1
}
]
},
"error": {}
}
}12. Get Downbeats
Get timing information for song downbeats.
Endpoint: GET /suno/downbeats/:taskId
Example Request:
curl "https://api.unifically.com/suno/downbeats/3544bab1-ac87-4e27-b632-7aac52150099" \
-H "Authorization: Bearer your-api-key"Response:
{
"code": 200,
"data": {
"task_id": "68c911ac-c8f4-4a4f-b7c4-eb6fa4f8ae92",
"a": {
"state": "complete",
"downbeats": [
[0.00085, 1],
[0.61712, 2],
[1.23598, 3],
[1.85477, 4],
[2.47262, 1],
[3.09252, 2],
[3.71067, 3],
[4.32852, 4],
[4.94744, 1],
[5.56583, 2]
],
"raw_downbeats": [
[0, 1],
[0.62, 2],
[1.24, 3],
[1.86, 4],
[2.48, 1],
[3.08, 2],
[3.7, 3],
[4.32, 4],
[4.94, 1],
[5.56, 2]
]
},
"b": {
"state": "complete",
"downbeats": [
[0.02, 1],
[0.71738, 2],
[1.41473, 3],
[2.11287, 4],
[2.81083, 1],
[3.5081, 2],
[4.20598, 3],
[4.9035, 4],
[5.60088, 1],
[6.29958, 2]
],
"raw_downbeats": [
[0, 1],
[0.7, 2],
[1.4, 3],
[2.1, 4],
[2.8, 1],
[3.5, 2],
[4.2, 3],
[4.9, 4],
[5.6, 1],
[6.3, 2]
]
},
"error": {}
}
}Advanced Settings
For custom mode endpoints, advanced settings provide fine-grained control:
style_weight(0.0-1.0): Controls how closely the generation follows the style descriptionweirdness_constraint(0.0-1.0): Controls experimental/creative freedom (0 = conservative, 1 = experimental)audio_weight(0.0-1.0): Prioritizes audio quality vs style matchingvocal_gender("m" or "f"): Specifies preferred vocal gender
Last updated