Skip to content

AI Music, Lyrics, and Image Generation API

Producer provides image, lyrics, and music generation endpoints under the /api/v1/producer/* namespace. All four endpoints follow the standard task model: authenticate with x-api-key, POST a JSON body, receive a task descriptor (taskId, status, creditsRequired), and poll GET /api/v1/tasks/{taskId} until terminal. The shared request config (priority / tags / metadata / webhookUrl), the status enum, and the resources[] output shape are documented in the hub — this page covers only the Producer-specific inputs and outputs.

Producer uses the current default OmnAPI model family unless your request or account configuration specifies otherwise.


Producer uses the same OmnAPI credit balance as Suno and MV. Prices below are per request before any customer-specific pricing profile is applied.

EndpointCredits
POST /api/v1/producer/generate/image8
POST /api/v1/producer/generate/lyrics1
POST /api/v1/producer/generate/music/compose28
POST /api/v1/producer/generate/music/modify28

Generates a single image from a text prompt.

FieldTypeRequiredLimit
promptstring≤ 2000 chars
configobjectshared envelope
Terminal window
curl -X POST https://api.omnapi.com/api/v1/producer/generate/image \
-H "x-api-key: $OMNAPI_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "ultra-detailed isometric vaporwave studio room, soft cyan rim light"}'
{
"resources": [
{ "type": "image", "url": "https://cdn.omnapi.com/...", "mimeType": "image/png" }
],
"outputResults": { /* endpoint-specific details */ }
}

Generates structured lyrics for downstream composition.

FieldTypeRequiredLimit
promptstring≤ 3000 chars
configobjectshared envelope

The prompt should describe theme + genre + language (e.g. “Bittersweet pop, English, about leaving a coastal town”).

{
"resources": [
{ "type": "text", "url": "https://cdn.omnapi.com/...", "mimeType": "text/plain" }
],
"outputResults": {
"lyrics": "[Verse]\nThe lighthouse blinks once for you...",
"tags": ["[Verse]", "[Chorus]", "[Bridge]"]
}
}

POST /api/v1/producer/generate/music/compose

Section titled “POST /api/v1/producer/generate/music/compose”

Generates a complete song with optional lyrics, structure, timing, and artwork controls.

FieldTypeRequiredLimitDefault
soundPromptstring≤ 500 chars
lyricsstring≤ 3000 charsauto-generated when omitted and instrumental: false; empty instrumental fallback if instrumental: true
instrumentalbooleanfalse
bpmnumber1–300model-chosen
lengthnumber1–600 secmodel-chosen (typ. 90–120s)
titlestring≤ 200 charsauto-generated
seedinteger≥ 0random
imagePromptstring≤ 1000 charsnone
imageIdstringnone — references a previously generated image
lyricsIdstringnone — references a previous lyrics task
currentSongIdstringreference frame for refinement workflows
conversationIdstringthread together a multi-turn refinement
configobjectshared envelope
Terminal window
curl -X POST https://api.omnapi.com/api/v1/producer/generate/music/compose \
-H "x-api-key: $OMNAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"soundPrompt": "warm indie pop, jangly guitars, brushed drums",
"lyrics": "[Verse]\nThe lighthouse blinks once for you...",
"title": "Coastal Goodbye",
"bpm": 92,
"length": 120
}'
{
"resources": [
{ "type": "audio", "url": "https://cdn.omnapi.com/...", "mimeType": "audio/mpeg" },
{ "type": "image", "url": "https://cdn.omnapi.com/...", "mimeType": "image/png" }
],
"outputResults": {
"clipId": "clip_01H...",
"duration": 118.4,
"lyrics": "...",
"title": "Coastal Goodbye"
}
}

When instrumental=false and neither lyrics nor lyricsId is supplied, OmnAPI first generates lyrics from soundPrompt, then submits the compose task with those lyrics. Set instrumental=true only when you explicitly want a backing track without vocals. This extra lyrics step keeps non-instrumental requests aligned with the expected vocal workflow.

Producer compose returns normal audio resources. To create an MV from that song, poll GET /api/v1/tasks/{taskId} until the Producer task is COMPLETED, then send the audio resource URL to the MV API with source.type="audio".

Terminal window
curl -X POST https://api.omnapi.com/api/v1/mv \
-H "x-api-key: $OMNAPI_KEY" \
-H "Idempotency-Key: mv-from-producer-01" \
-H "Content-Type: application/json" \
-d '{
"mode": "fast",
"source": {
"type": "audio",
"audioUrl": "https://cdn.omnapi.com/producer-song.mp3",
"durationSec": 118,
"lyrics": "[Verse]\nThe lighthouse blinks once for you..."
},
"prompt": "warm coastal indie pop video, intimate closeups",
"resolution": "540p",
"subtitles": false
}'

For source.type="audio", lyrics is visual planning context only. OmnAPI probes the audio URL server-side for authoritative duration, and exact subtitle timing requires srtUrl on the MV request.


POST /api/v1/producer/generate/music/modify

Section titled “POST /api/v1/producer/generate/music/modify”

Transforms an existing clip — extend, cover, swap vocals, swap sound, inpaint.

FieldTypeRequiredNotes
clipIdstringSource clip — usually from a prior compose’s outputResults.clipId
transformstringextend / cover / inpaint / swap_vocals / swap_sound. The semantic edit to apply.
modifyMode"task" | "conversation"Processing mode. task (default) applies the requested transform directly. conversation lets the model interpret an ambiguous instruction before applying the transform.
promptstringFree-text describing the desired change
soundPromptstringOverride the sonic palette
lyricsstringNew or replacement lyrics (≤ 3000 chars)
lyricsIdstringReference an existing lyrics task
titlestring≤ 200 chars
tagsstring[]Genre/mood hints
cropEndAtnumberSeconds, for extend and inpaint
replaceStartAtnumberSeconds, for inpaint
replaceEndAtnumberSeconds, for inpaint
conversationId, currentSongIdstringWorkflow continuity
configobjectshared envelope
transformWhat it doesTypical fields
extendAppend more audio to the end of a clipcropEndAt, prompt
coverRe-record the song with a different style / arrangementsoundPrompt, prompt
inpaintReplace a time range within the clipreplaceStartAt, replaceEndAt, prompt
swap_vocalsChange the vocal performance, keep the backingprompt
swap_soundChange the instrumental, keep the vocalsoundPrompt
Terminal window
curl -X POST https://api.omnapi.com/api/v1/producer/generate/music/modify \
-H "x-api-key: $OMNAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"clipId": "clip_01H...",
"transform": "extend",
"cropEndAt": 90,
"prompt": "More uplifting bridge, brighter chords"
}'

LimitValue
prompt (image)2000 chars
prompt (lyrics)3000 chars
soundPrompt (compose)500 chars
lyrics3000 chars
length1–600 seconds
bpm1–300
priority1–10 (default 5)
Per-IP rate limit2000 req / 60 s (default)

Rate limiting is documented in Rate Limits.