Concatenate Audio Endpoint

Overview

Concatenates (combines) all extensions of a clip into a complete song. This generates the final full-length song from all the extended segments.

🔗 Quick Links

Endpoint

POST /api/concat
POST /[accountId]/api/concat

Request

Headers

Content-Type: application/json

Body (JSON)

clip_id (string, required)
ID of the clip to concatenate

Example Request

curl -X POST https://your-domain.com/api/concat \
  -H "Content-Type: application/json" \
  -d '{
    "clip_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  }'
const response = await fetch('/api/concat', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    clip_id: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890'
  })
});

Response

Success Response (200 OK)

Returns an AudioInfo object representing the concatenated song:

{
  "id": "concat-id-12345",
  "title": "Complete Song",
  "image_url": "https://cdn.suno.ai/image-12345.png",
  "lyric": "Full song lyrics",
  "audio_url": "https://cdn.suno.ai/audio-12345.mp3",
  "video_url": "https://cdn.suno.ai/video-12345.mp4",
  "created_at": "2025-12-09T15:30:00.000Z",
  "model_name": "chirp-crow",
  "status": "complete",
  "type": "concatenated",
  "duration": "360"
}

Status Code: 200
Content-Type: application/json

Bad Request (400)

When clip_id is missing:

{
  "error": "Clip id is required"
}

Status Code: 400
Content-Type: application/json

Payment Required (402)

When account credits are insufficient:

{
  "error": "Insufficient credits"
}

Status Code: 402
Content-Type: application/json

Internal Server Error (500)

When an error occurs:

{
  "error": "Internal server error"
}

Status Code: 500
Content-Type: application/json

Method Not Allowed (405)

When using an unsupported HTTP method:

Status Code: 405
Headers: Allow: POST

Notes

  • This combines all extensions created with the extend_audio endpoint
  • The result is a complete, full-length song
  • All responses include CORS headers