Skip to content

Suno API Quickstart

Use /api/v1/suno/* for new Suno-compatible music workflows. Existing Suno Cloud clients can find migration mappings in the full Suno API guide. For the complete 16-operation directory, response contracts, lifecycle, errors, and webhook behavior, start with the guide’s Endpoints section.

Terminal window
curl -X POST https://api.omnapi.com/api/v1/suno/songs \
-H "x-api-key: $OMNAPI_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"mode": "simple",
"prompt": "upbeat city pop, bright guitars, summer night drive",
"model": "chirp-fenix",
"config": {
"metadata": { "source": "suno-quickstart" }
}
}'

Response:

{
"taskId": "task_01J...",
"generationId": "task_01J...",
"status": "PROCESSING",
"clipIds": ["clip_a", "clip_b"],
"deliveryStatus": "submitted",
"pollUrl": "/api/v1/tasks/task_01J...",
"viewUrl": "/api/v1/suno/generations/task_01J...",
"creditsRequired": 28
}

This example explicitly selects chirp-fenix, so it costs 28 standard credits. chirp-auk-turbo costs 25; other published models remain 28. suno/chirp-v3-5 is retired. Always treat the task receipt as authoritative.

The endpoint normally waits briefly for Suno to acknowledge real clipIds. Send Prefer: respond-async when even that short wait is undesirable. The receipt never contains a Suno /stream link.

Terminal window
curl https://api.omnapi.com/api/v1/suno/generations/task_01J... \
-H "x-api-key: $OMNAPI_KEY"

Each entry in clips[] has an independent submitted | queued | streaming | complete | error state. Start buffering when a clip is playable: true and has an audioUrl; it does not need to wait for sibling candidates or the overall Task to complete. Use GET /api/v1/tasks/{taskId} separately for billing and execution diagnostics. For model identity, use modelCode for the OmnAPI request model, providerModelName for the exact clip model name, and majorModelVersion for the exact major version reported for that clip. model remains a compatibility label.

Terminal window
curl "https://api.omnapi.com/api/v1/suno/clips/clip_123" \
-H "x-api-key: $OMNAPI_KEY"

Clip detail is a free direct 200 lookup and creates no Task. For multiple external Suno clip IDs, use GET /api/v1/suno/clips?clipIds=clip_a,clip_b; these values are legacy mid values, never internal OmnAPI row IDs. Owned clips expose style tags and prompts. Shared public or remixable clips expose style tags but keep prompts private; merely readable external clips return only minimal media fields. Missing tags or duration are repaired on later Clip and Generation reads when the metadata becomes available.

Terminal window
curl -X POST https://api.omnapi.com/api/v1/suno/clips/clip_123/derive \
-H "x-api-key: $OMNAPI_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"action": "extend",
"continueAt": 55,
"prompt": "continue into a larger final chorus"
}'

This is one 28-standard-credit task. It automatically concatenates the selected continuation; use the completed resource with role: "final". There is no separate public Concat request.

Terminal window
curl -X POST https://api.omnapi.com/api/v1/suno/clips/clip_123/export \
-H "x-api-key: $OMNAPI_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{ "format": "wav" }'

WAV export costs 3 standard credits and uses managed delivery automatically. Existing/native output is preferred; when direct delivery is unavailable, an eligible remixable clip is rehomed without a second customer charge. This also covers an owner account with missing subscription entitlement, an explicit insufficient-balance rejection, or an exhausted WAV allowance. OmnAPI also checks the replacement account’s live balance and rotates to another eligible account when a derivative request is definitively rejected for insufficient balance.

Terminal window
curl -X POST https://api.omnapi.com/api/v1/suno/clips/clip_123/export \
-H "x-api-key: $OMNAPI_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{ "format": "stems", "stemsMode": "twelve" }'

Twelve returns 24 clips for one source: 12 fixed stem groups with separator variants V1 and V2. Suno’s UI may show only the eight groups it detected and calls FX “Other”; UI selectors 1 and 2 are candidates, not source clips.

To isolate one instrument, send stemsMode: "extract" with one of the 98 stemName values published in OpenAPI and the pricing catalog. For example:

Terminal window
curl -X POST https://api.omnapi.com/api/v1/suno/clips/clip_123/export \
-H "x-api-key: $OMNAPI_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{ "format": "stems", "stemsMode": "extract", "stemName": "Drum Kit" }'

This is native Suno separation. There is no reliable instrument-presence preflight; a missing instrument can produce a near-silent stem and the accepted 56-credit request is still billed.

Standalone Upload is not exposed. Submit customer-owned audio together with the song operation:

Terminal window
curl -X POST https://api.omnapi.com/api/v1/suno/songs \
-H "x-api-key: $OMNAPI_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"mode": "upload-extend",
"audio": {
"url": "https://example.com/source.wav",
"extensionType": "wav"
},
"prompt": "continue into a larger final chorus"
}'
OperationCredits
Song generation with chirp-auk-turbo25
Song generation with another published model, including Upload + Extend/Cover28
Existing-clip Extend or Cover28
WAV native / managed fallback3
Lyrics generation0
Clip, analysis, style, and Voice reads0
Aligned lyrics timeline1; 0 for the legacy Suno 55,000 plan
Owned completed clip → reusable public Voice5
Verified recordings → reusable public Voice66
Twelve-stem export140
Named stem extract (98 native Suno names)56

See Suno API endpoints for the complete route directory, then use the Interactive API Reference for exact generated schemas.