Skip to content

Suno Music Generation

http
POST /v1/audio/generations

Compatibility endpoint:

http
POST /media/audio/generations

Query and cancel:

http
GET /v1/audio/generations/{id}
POST /v1/audio/generations/{id}/cancel

/media/audio/generations/{id} and /media/audio/generations/{id}/cancel are also supported.

Generate Music

json
{
  "model": "suno-music",
  "mode": "v5_5",
  "generation_type": "music_generation",
  "client_request_id": "suno-demo-001",
  "custom_mode": false,
  "prompt": "uplifting synth pop with bright drums and a confident chorus"
}

Custom instrumental:

json
{
  "model": "suno-music",
  "mode": "v5_5",
  "generation_type": "music_generation",
  "client_request_id": "suno-instrumental-001",
  "custom_mode": true,
  "instrumental": true,
  "style": "cinematic ambient pop, warm analog synths",
  "title": "Soft Horizon"
}

Rules:

  • mode currently supports only v5_5.
  • custom_mode=false requires prompt, max 500 characters.
  • custom_mode=true requires style and title.
  • custom_mode=true with instrumental=false also requires prompt.
  • Custom prompt is limited to 5000 characters, style to 1000 characters, and generation title to 80 characters.
  • duration_seconds, persona_id, persona_model, raw audio_id, raw task_id, and user callback URLs are not supported.

Create responses use 202 Accepted:

json
{
  "code": 0,
  "message": "accepted",
  "data": {
    "id": "task_xxx",
    "status": "queued"
  }
}

Extend Music

Use the platform task_xxx ID as source_generation_id; do not send upstream task IDs.

json
{
  "model": "suno-music",
  "mode": "v5_5",
  "generation_type": "music_extend",
  "client_request_id": "suno-extend-001",
  "source_generation_id": "task_xxx",
  "source_track_index": 0,
  "default_param_flag": false
}

Custom extension:

json
{
  "model": "suno-music",
  "mode": "v5_5",
  "generation_type": "music_extend",
  "client_request_id": "suno-extend-custom-001",
  "source_generation_id": "task_xxx",
  "source_track_index": 0,
  "default_param_flag": true,
  "continue_at_seconds": 42.5,
  "prompt": "continue with a bigger second chorus and tighter drums",
  "style": "cinematic synth pop",
  "title": "Soft Horizon Extended"
}

Completed Result

json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": "task_xxx",
    "kind": "audio",
    "status": "completed",
    "model": "suno-music",
    "mode": "v5_5",
    "family": "suno",
    "generation_type": "music_generation",
    "poll_url": "/v1/audio/generations/task_xxx",
    "cancel_url": "/v1/audio/generations/task_xxx/cancel",
    "result": {
      "outputs": ["https://static.example.com/media/suno-output.mp3"],
      "tracks": [
        {
          "index": 0,
          "title": "Soft Horizon",
          "duration_seconds": 123.4,
          "cover_url": "https://example.com/cover.jpg"
        }
      ]
    }
  }
}

Notes:

  • result.outputs contains playable or downloadable audio URLs.
  • result.tracks contains per-track result metadata such as title, cover, duration, lyrics/prompt, and tags when returned by the upstream provider.