Suno API

TTAPI Suno service, building a future where anyone can make great music.

Extend Music

POST https://api.ttapi.io/suno/v1/extend


Extend one of the two songs returned by the generated music. Task results is async

Headers

NameTypeRequiredDescription
TT-API-KEYStringtrueYour API Key in TT API used for request authorization

Request Body

NameTypeRequiredDescription
promptStringfalseLyrics, for custom mode only
titleStringfalseTitle, for custom mode only
music_idStringtruemusicId, use this field when you need to extend the song
continue_atinttrueThe time in seconds to continue the existing audio. unit: seconds
tagsStringfalseStyle tag, for custom mode only
generateVideoBooleanfalseWhether to generate video, optional value true false, default is false
hookUrlStringfalseSend a request to the address for task completion or failed notification. If not set you need to request fetch endpoint to get response

Example Request

import requests
endpoint = "https://api.ttapi.io/suno/v1/extend"
headers = {
    "TT-API-KEY": your_key
}
data = {
    "music_id": "a7d3712d-2507-4d87-80d0-b60bb375a049",
    "continue_at": 100
}
response = requests.post(endpoint, headers=headers, json=data)
print(response.status_code)
print(response.json())

Example Response

{
    "status": "SUCCESS",
    "message": "",
    "data": {
        "jobId": "ed1a1b01-7d64-4c8a-acaa-71185d23a2f3"
    }
}

Get whole extend music

POST https://api.ttapi.io/suno/v1/concat


Get the complete music content after the extended music, free endpoint. Task results is async

Headers

NameTypeRequiredDescription
TT-API-KEYStringtrueYour API Key in TT API used for request authorization

Request Body

NameTypeRequiredDescription
music_idStringtruemusicId, use this field when you need to extend the song
hookUrlStringfalseSend a request to the address for task completion or failed notification. If not set you need to request fetch endpoint to get response

Example Request

import requests
endpoint = "https://api.ttapi.io/suno/v1/extend"
headers = {
    "TT-API-KEY": your_key
}
data = {
    "music_id": "a7d3712d-2507-4d87-80d0-b60bb375a049",
}
response = requests.post(endpoint, headers=headers, json=data)
print(response.status_code)
print(response.json())

Example Response

{
    "status": "SUCCESS",
    "message": "",
    "data": {
        "jobId": "ed1a1b01-7d64-4c8a-acaa-71185d23a2f3"
    }
}

Get lyrics timeline

POST https://api.ttapi.io/suno/v1/alignedLyrics


Get lyrics timeline according to music_id, free endpoint

Headers

NameTypeRequiredDescription
TT-API-KEYStringtrueYour API Key in TT API used for request authorization

Request Body

NameTypeRequiredDescription
music_idStringtrueReturns the music_id in each song array, not the jobId

Example Request

import requests
endpoint = "https://api.ttapi.io/suno/v1/alignedLyrics"
headers = {
    "TT-API-KEY": your_key
}
data = {
    "music_id":"a7d3712d-2507-4d87-80d0-b60bb375a049"
}
response = requests.post(endpoint, headers=headers, json=data)
print(response.status_code)
print(response.json())

Example Response

{
    "status": "SUCCESS",
    "message": "success",
    "data": {
    "alignment": [
        {
            "end_s": 0.4787234042553192,
            "p_align": 1,
            "start_s": 0.39893617021276595,
            "success": true,
            "word": "[female voice][female vocals][verse]\nЧто"
        },
        {
            "end_s": 0.5585106382978724,
            "p_align": 1,
            "start_s": 0.4787234042553192,
            "success": true,
            "word": "б"
        },
            ...
        ]
    }
}

Generate music video

POST https://api.ttapi.io/suno/v1/generateVideo


Generate the video corresponding to the music according to the task results. free endpoint

Headers

NameTypeRequiredDescription
TT-API-KEYStringtrueYour API Key in TT API used for request authorization

Request Body

NameTypeRequiredDescription
music_idStringtrueReturns the music_id in each song array, not the jobId

Example Request

import requests
endpoint = "https://api.ttapi.io/suno/v1/generateVideo"
headers = {
    "TT-API-KEY": your_key
}
data = {
    "music_id":"a7d3712d-2507-4d87-80d0-b60bb375a049"
}
response = requests.post(endpoint, headers=headers, json=data)
print(response.status_code)
print(response.json())

Example Response

{
    "status": "SUCCESS",
    "message": "success",
    "data": {
        "videoUrl": "https://cdn1.suno.ai/f01dcb24-d479-4f00-9a71-958792e23212.mp4",
        "status": "complete"
    }
}

Separation of lyrics and music

POST https://api.ttapi.io/suno/v1/stems


According to the task results, 4 audios are generated to separate lyrics from background music.

Headers

NameTypeRequiredDescription
TT-API-KEYStringtrueYour API Key in TT API used for request authorization

Request Body

NameTypeRequiredDescription
music_idStringtrueReturns the music_id in each song array, not the jobId
hookUrlStringfalseSend a request to the address for task completion or failed notification. If not set you need to request fetch endpoint to get response

Example Request

import requests
endpoint = "https://api.ttapi.io/suno/v1/stems"
headers = {
    "TT-API-KEY": your_key
}
data = {
    "music_id":"a7d3712d-2507-4d87-80d0-b60bb375a049"
}
response = requests.post(endpoint, headers=headers, json=data)
print(response.status_code)
print(response.json())

Example Response

{
    "status": "SUCCESS",
    "message": "",
    "data": {
        "jobId": "ed1a1b01-7d64-4c8a-acaa-71185d23a2f3"
    }
}

Separate lyrics and music for the entire track

POST https://api.ttapi.io/suno/v1/stems-all


According to the task results, 24 audios are generated to separate lyrics from background music, and all instruments and lyrics in the music are separated.

Headers

NameTypeRequiredDescription
TT-API-KEYStringtrueYour API Key in TT API used for request authorization

Request Body

NameTypeRequiredDescription
music_idStringtrueReturns the music_id in each song array, not the jobId
hookUrlStringfalseSend a request to the address for task completion or failed notification. If not set you need to request fetch endpoint to get response

Example Request

import requests
endpoint = "https://api.ttapi.io/suno/v1/stems-all"
headers = {
    "TT-API-KEY": your_key
}
data = {
    "music_id":"a7d3712d-2507-4d87-80d0-b60bb375a049"
}
response = requests.post(endpoint, headers=headers, json=data)
print(response.status_code)
print(response.json())

Example Response

{
    "status": "SUCCESS",
    "message": "",
    "data": {
        "jobId": "ed1a1b01-7d64-4c8a-acaa-71185d23a2f3"
    }
}

Get music WAV files

POST https://api.ttapi.io/suno/v1/wav


Generate the wav file corresponding to the music according to the task results. free endpoint

Headers

NameTypeRequiredDescription
TT-API-KEYStringtrueYour API Key in TT API used for request authorization

Request Body

NameTypeRequiredDescription
music_idStringtrueReturns the music_id in each song array, not the jobId

Example Response

{
    "status": "SUCCESS",
    "message": "success",
    "data": {
        "wavUrl": "https://cdn1.suno.ai/2ecd43e6-7a6a-4eb1-b203-1125493ed887.wav"
    }
}

Music knockoffs

POST https://api.ttapi.io/suno/v1/cover


Music remake, modified style, you can use music generated by suno or upload your own music

Headers

NameTypeRequiredDescription
TT-API-KEYStringtrueYour API Key in TT API used for request authorization

Request Body

NameTypeRequiredDescription
music_idStringtrueReturns the musicId in each song array or your own music_id by use upload music endpoint, not the jobId
mvStringtrueThe model used to generate the music audio ,
chirp-v3-0
chirp-v3-5
chirp-v4
chirp-v4-5
chirp-v4-5+
default is chirp-v4
promptStringtrueLyrics
titleStringfalseMusic title
tagsStringfalseStyle tag
negative_tagsStringfalseUnwanted style tags
style_weightStringfalseAudio style weight between 0-1
weirdness_constraintStringfalseAudio Wonderfulness Weight between 0-1
audio_weightStringfalseAudio weight between 0-1
isStorageStringfalsetrue or false
false Return to the official address,
default is true
hookUrlStringfalseSend a request to the address for task completion or failed notification. If not set you need to request fetch endpoint to get response

Example Response

{
    "status": "SUCCESS",
    "message": "",
    "data": {
        "jobId": "ed1a1b01-7d64-4c8a-acaa-71185d23a2f3"
    }
}

Adding voice lines

POST https://api.ttapi.io/suno/v1/add-vocals


Add music sound line, this endpoint can only be performed on music uploaded by yourself

Headers

NameTypeRequiredDescription
TT-API-KEYStringtrueYour API Key in TT API used for request authorization

Request Body

NameTypeRequiredDescription
music_idStringtrueYour own music_id by use upload music endpoint, not the jobId
mvStringtrueThe model used to generate the music audio ,
Only can use chirp-v4-5++ this endpoint
promptStringtrueLyrics
titleStringfalseMusic title
tagsStringfalseStyle tag
negative_tagsStringfalseUnwanted style tags
style_weightStringfalseAudio style weight between 0-1
weirdness_constraintStringfalseAudio Wonderfulness Weight between 0-1
audio_weightStringfalseAudio weight between 0-1
isStorageStringfalsetrue or false
false Return to the official address,
default is true
hookUrlStringfalseSend a request to the address for task completion or failed notification. If not set you need to request fetch endpoint to get response

Example Response

{
    "status": "SUCCESS",
    "message": "",
    "data": {
        "jobId": "ed1a1b01-7d64-4c8a-acaa-71185d23a2f3"
    }
}

Add accompaniment

POST https://api.ttapi.io/suno/v1/add-instrumental


Add musical accompaniment, this endpoint can only be performed on music uploaded by yourself

Headers

NameTypeRequiredDescription
TT-API-KEYStringtrueYour API Key in TT API used for request authorization

Request Body

NameTypeRequiredDescription
music_idStringtrueYour own music_id by use upload music endpoint, not the jobId
mvStringtrueThe model used to generate the music audio ,
Only can use chirp-v4-5++ this endpoint
promptStringtrueLyrics
titleStringfalseMusic title
tagsStringfalseStyle tag
negative_tagsStringfalseUnwanted style tags
style_weightStringfalseAudio style weight between 0-1
weirdness_constraintStringfalseAudio Wonderfulness Weight between 0-1
audio_weightStringfalseAudio weight between 0-1
isStorageStringfalsetrue or false
false Return to the official address,
default is true
hookUrlStringfalseSend a request to the address for task completion or failed notification. If not set you need to request fetch endpoint to get response

Example Response

{
    "status": "SUCCESS",
    "message": "",
    "data": {
        "jobId": "ed1a1b01-7d64-4c8a-acaa-71185d23a2f3"
    }
}