┌─────────────────────────────────────────────────────────────────┐
│ Step 1: Request upload authorization │
│ POST /suno/uploads/audio │
│ ↓ Returns: upload_id, upload_url │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Step 2: Upload file to S3 (client direct, not via API) │
│ PUT {upload_url} │
│ ↓ Upload audio file │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Step 3: Report upload completion │
│ POST /suno/uploads/audio/{id}/upload-finish │
│ ↓ Notify server that file has been uploaded │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Step 4: Poll upload status (until status is completed) │
│ GET /suno/uploads/audio/{id} │
│ ↓ Poll every 2-3 seconds │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Step 5: Initialize audio clip │
│ POST /suno/uploads/audio/{id}/initialize-clip │
│ ↓ Returns: clip_id │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Step 6: Use clip_id to create continuation task │
│ POST /suno/submit/music │
│ ↓ Returns: task_id (billing starts) │
└────────────────────────────────────────────────── ───────────────┘
Responses
application/json curl --location --request POST '/suno/uploads/audio//upload-finish'
Response Response Example
Modified at 2026-02-09 05:12:44