Skip to main content
POST
/
api
/
v1
/
generate
/
extend
Extend Music
curl --request POST \
  --url https://api.sunoapi.org/api/v1/generate/extend \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "defaultParamFlag": true,
  "audioId": "e231****-****-****-****-****8cadc7dc",
  "model": "V4_5ALL",
  "callBackUrl": "https://api.example.com/callback",
  "prompt": "Extend the music with more relaxing notes",
  "style": "Classical",
  "title": "Peaceful Piano Extended",
  "continueAt": 60,
  "personaId": "persona_123",
  "personaModel": "style_persona",
  "negativeTags": "Relaxing Piano",
  "vocalGender": "m",
  "styleWeight": 0.65,
  "weirdnessConstraint": 0.65,
  "audioWeight": 0.65
}
'
{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "5c79****be8e"
  }
}

Parameter Usage Guide

  • When defaultParamFlag is true (Custom Parameters):
    • prompt, style, title and continueAt are required
    • Prompt length limit:
      • For V4 model: 3000 characters
      • For V4_5, V4_5PLUS, V4_5ALL, V5 and V5_5 models: 5000 characters
    • Style length limit:
      • For V4 model: 200 characters
      • For V4_5, V4_5PLUS, V4_5ALL, V5 and V5_5 models: 1000 characters
    • Title length limit:
      • For V4 and V4_5ALL model: 80 characters
      • For V4_5, V4_5PLUS, V5 and V5_5 models: 100 characters
  • When defaultParamFlag is false (Use Default Parameters):
    • Only audioId is required
    • Other parameters will use the original audio’s parameters

Optional Parameters

  • personaId (string): Persona ID or Suno Voice voiceId to apply when using custom parameters. If you use a Voice-generated ID, set personaModel to voice_persona.
  • personaModel (string): Persona type. Use style_persona for Generate Persona IDs, or voice_persona for Suno Voice IDs.

Developer Notes

  1. Generated files are retained for 15 days
  2. Model version must be consistent with the source music
  3. This feature is ideal for creating longer compositions by extending existing tracks

Authorizations

Authorization
string
header
required

🔑 API Authentication

All endpoints require authentication using Bearer Token.

Get API Key

  1. Visit the API Key Management Page to obtain your API Key

Usage

Add to request headers:

Authorization: Bearer YOUR_API_KEY

⚠️ Note:

  • Keep your API Key secure and do not share it with others
  • If you suspect your API Key has been compromised, reset it immediately from the management page

Body

application/json
defaultParamFlag
boolean
required

Controls parameter usage mode.

  • true: Use custom parameters (requires continueAt, prompt, style, and title).
  • false: Use original audio parameters (only audioId is required).
Example:

true

audioId
string
required

Audio ID of the track to extend. This is the source track that will be continued.

Example:

"e231****-****-****-****-****8cadc7dc"

model
enum<string>
required

Model version to use, must be consistent with the source audio.

  • Available options:
    • V5_5: Unleash Your Voice: Custom Models Tailored to Your Unique Taste.
    • V5: Superior musical expression, faster generation.
    • V4_5PLUS: V4.5+ is richer sound, new waysto create, max 8 min.
    • V4_5ALL: V4.5-all is better song structure, max 8 min.
    • V4_5: V4.5 is smarter prompts, fastergenerations, max 8 min.
    • V4: V4 is improved vocal quality,max 4 min.
Available options:
V4,
V4_5,
V4_5PLUS,
V4_5ALL,
V5,
V5_5
Example:

"V4_5ALL"

callBackUrl
string<uri>
required

The URL to receive task completion notifications when music extension is complete.

  • For detailed callback format and implementation guide, see Music Extension Callbacks
  • Alternatively, you can use the get music generation details endpoint to poll task status
Example:

"https://api.example.com/callback"

prompt
string

Description of how the music should be extended. Required when defaultParamFlag is true.

Example:

"Extend the music with more relaxing notes"

style
string

Music style, e.g., Jazz, Classical, Electronic

Example:

"Classical"

title
string

Music title

Example:

"Peaceful Piano Extended"

continueAt
number

The time point (in seconds) from which to start extending the music.

  • Required when defaultParamFlag is true.
  • Value range: greater than 0 and less than the total duration of the generated audio.
  • Specifies the position in the original track where the extension should begin.
Example:

60

personaId
string

Only available when custom parameters are enabled. Persona ID to apply to the generated music. Optional. You can use either:

  • A Persona ID generated by the Generate Persona endpoint. Use personaModel: style_persona or omit personaModel to use the default.
  • A voiceId generated by the Suno Voice workflow. When using a voice-generated ID, you must set personaModel: voice_persona.
Example:

"persona_123"

personaModel
enum<string>
default:style_persona

Persona model type to apply when using personaId. Optional.

  • style_persona (default): Use this for Persona IDs generated by the Generate Persona endpoint.
  • voice_persona: Use this when personaId is a voiceId generated by Suno Voice. This option is only available with V5 and V5_5 models.
Available options:
style_persona,
voice_persona
Example:

"style_persona"

negativeTags
string

Music styles to exclude from generation

Example:

"Relaxing Piano"

vocalGender
enum<string>

Preferred vocal gender for generated vocals. Optional.

Available options:
m,
f
Example:

"m"

styleWeight
number

Weight of the provided style guidance. Range 0.00–1.00.

Required range: 0 <= x <= 1Must be a multiple of 0.01
Example:

0.65

weirdnessConstraint
number

Constraint on creative deviation/novelty. Range 0.00–1.00.

Required range: 0 <= x <= 1Must be a multiple of 0.01
Example:

0.65

audioWeight
number

Weight of the input audio influence (where applicable). Range 0.00–1.00.

Required range: 0 <= x <= 1Must be a multiple of 0.01
Example:

0.65

Callbacks

POST
{$request.body#/callBackUrl}audioExtend

Body

application/json
code
integer

Status code

Example:

200

msg
string

Response message

Example:

"All generated successfully"

data
object

Response

200

Callback received successfully

Response

Request successful

code
enum<integer>

Status Codes

  • ✅ 200 - Request successful
  • ⚠️ 400 - Invalid parameters
  • ⚠️ 401 - Unauthorized access
  • ⚠️ 404 - Invalid request method or path
  • ⚠️ 405 - Rate limit exceeded
  • ⚠️ 413 - Theme or prompt too long
  • ⚠️ 429 - Insufficient credits
  • ⚠️ 430 - Your call frequency is too high. Please try again later.
  • ⚠️ 455 - System maintenance
  • ❌ 500 - Server error
Available options:
200,
400,
401,
404,
405,
413,
429,
430,
455,
500
Example:

200

msg
string

Error message when code != 200

Example:

"success"

data
object