Skip to content

Suno API

Suno is the direct music provider surface. It uses the same authentication, credit reservation and polling model as Producer:

  • Authenticate with x-api-key
  • Create a task with one of the POST /api/v1/suno/* endpoints
  • Receive { taskId, status, creditsReserved }
  • Poll GET /api/v1/tasks/{taskId} until terminal

Default model: suno/chirp-fenix/*. You can override model on generation and derive endpoints when you need a specific Suno model.


Every task-creating endpoint accepts an optional config object:

{
"config": {
"priority": 5,
"tags": ["campaign-42"],
"metadata": { "customerId": "cus_123" },
"webhookUrl": "https://yourapp.com/webhooks/omnapi"
}
}

webhookUrl is per-task. If omitted, poll GET /api/v1/tasks/{taskId}.

Creation endpoints return immediately:

{
"taskId": "task_01H...",
"status": "PENDING",
"creditsReserved": 30,
"estimatedCompletionTime": null
}

Read-style Suno endpoints such as clip detail and timeline use the same task system but wait briefly for a result. If they do not finish during that window, poll the returned taskId like any other task.


Create a new song. Dispatch is controlled by mode.

ModePurposeRequired fields
simplePrompt-only generationprompt
customLyrics + style generationlyrics or prompt
mashupBlend source clipsseed.clipIds with 2-4 clips
sampleCondition on a clip regionseed.sampleClipId, seed.sampleStartS, seed.sampleEndS
inspoGenerate from reference playlist clipsseed.playlistClipIds; prompt for simple inspo

If personaId is present, the request routes to persona music regardless of mode.

Terminal window
curl -X POST https://api.omnapi.com/api/v1/suno/songs \
-H "x-api-key: $OMNAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"mode": "simple",
"prompt": "bright city pop about a late train home",
"instrumental": false
}'

Create a derivative from an existing clip.

actionWhat it doesCommon fields
extendContinue a clipcontinueAt, prompt, tags, title
coverReinterpret a clipprompt, tags, title
overpaintReplace vocals, keep backingprompt, tags, vocalGender
underpaintReplace instruments, keep vocalsprompt, tags, vocalGender
Terminal window
curl -X POST https://api.omnapi.com/api/v1/suno/clips/clip_123/derive \
-H "x-api-key: $OMNAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"action": "extend",
"continueAt": 92.5,
"prompt": "add a bigger final chorus",
"tags": "anthemic pop rock"
}'

Export generated assets.

formatOutputNotes
wavWAV audioPremium Suno account required upstream
videoMP4 visualizerCreates or returns the clip video
stemsSeparated audiostemsMode: "two" or "twelve"
Terminal window
curl -X POST https://api.omnapi.com/api/v1/suno/clips/clip_123/export \
-H "x-api-key: $OMNAPI_KEY" \
-H "Content-Type: application/json" \
-d '{ "format": "stems", "stemsMode": "two" }'

Generate Suno lyrics. Set candidates: 2 for paired candidates, or wait: true to block briefly for the result.

Terminal window
curl -X POST https://api.omnapi.com/api/v1/suno/lyrics \
-H "x-api-key: $OMNAPI_KEY" \
-H "Content-Type: application/json" \
-d '{ "prompt": "bittersweet indie pop about moving away", "candidates": 2 }'
EndpointPurpose
GET /api/v1/suno/clips/{clipId}Single clip detail, including viewer-scoped fields
GET /api/v1/suno/clips?ids=a,b,cBatch clip query
GET /api/v1/suno/clips/{clipId}/timelineAligned lyrics timeline
GET /api/v1/suno/styles/recommendRecommended styles
Terminal window
curl https://api.omnapi.com/api/v1/suno/clips/clip_123/timeline \
-H "x-api-key: $OMNAPI_KEY"

Create a persona either from an existing rootClipId, or from two remote audio URLs that OmnAPI uploads and verifies for you.

Terminal window
curl -X POST https://api.omnapi.com/api/v1/suno/personas \
-H "x-api-key: $OMNAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Demo Voice",
"voiceAudioUrl": "https://example.com/voice.mp3",
"verificationAudioUrl": "https://example.com/verification.mp3"
}'

Use GET /api/v1/suno/personas to list personas and GET /api/v1/suno/personas/{personaId} for details.

Upload a remote audio URL into Suno. URLs must use http or https; private network addresses and oversized files are rejected.

Terminal window
curl -X POST https://api.omnapi.com/api/v1/suno/uploads \
-H "x-api-key: $OMNAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/source.mp3",
"title": "Imported Demo",
"describeAudio": true
}'

For minimal client changes, legacy Suno Cloud clients can call the /v1/* facade with the old api-key header. x-api-key is also accepted. The facade submits normal OmnAPI tasks and returns task identifiers; poll GET /api/v1/tasks/{taskId} for the canonical result.

Legacy suno-cloud endpointNew OmnAPI endpoint
POST /v1/generate-gptPOST /api/v1/suno/songs with mode: "simple"
POST /v1/generatePOST /api/v1/suno/songs with mode: "custom"
POST /v1/generate/lyricPOST /api/v1/suno/lyrics
GET /v1/songsGET /api/v1/suno/clips?ids=...
GET /v1/songs/lyric-stampGET /api/v1/suno/clips/{clipId}/timeline
POST /v1/uploadPOST /api/v1/suno/uploads
POST /v1/stemsPOST /api/v1/suno/clips/{clipId}/export with format: "stems"
POST /v1/generate-wavPOST /api/v1/suno/clips/{clipId}/export with format: "wav"
POST /v1/concatenatePOST /api/v1/suno/clips/{clipId}/derive with action: "extend" plus auto-concat configuration
POST /v1/create-personaPOST /api/v1/suno/personas
POST /v1/extend-and-concatCompatibility facade that submits an extend task
GET /v1/extend-and-concat/{jobId}GET /api/v1/tasks/{taskId}