Suno API

Authentication

All endpoints require a Bearer token in the Authorization header:

Authorization: Bearer your-api-key-here

Pricing

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

  • chirp-v3-5 - Version 3.5

  • chirp-v4 - Version 4.0

  • chirp-auk - Version 4.5

  • chirp-bluejay - Version 4.5+

  • chirp-crow - Version 5.0

Lyrics Generation Models:

  • remi-v1 - Primary lyrics model

  • default - 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 description

  • weirdness_constraint (0.0-1.0): Controls experimental/creative freedom (0 = conservative, 1 = experimental)

  • audio_weight (0.0-1.0): Prioritizes audio quality vs style matching

  • vocal_gender ("m" or "f"): Specifies preferred vocal gender

Last updated