Skip to content

Producer API

Producer is the launched generation surface. All four endpoints share the same contract:

  • Authenticate with x-api-key
  • POST a JSON body
  • Receive a task descriptor (status, id, creditsRequired)
  • Poll GET /api/v1/tasks/{id} until terminal

Default model across the family: producer/lyria-3-preview/*.


Every POST returns:

{
"id": "task_01H...",
"status": "PENDING",
"model": "producer/<model>/<feature>",
"inputParameters": { /* echoed inputs */ },
"creditsRequired": 50,
"createdAt": "2026-05-23T10:00:00Z"
}

statusPENDING | PROCESSING | COMPLETED | FAILED | CANCELLED (uppercase, see Async Jobs).

Every endpoint accepts an optional config block for cross-cutting concerns:

{
"prompt": "...",
"config": {
"priority": 5, // 1..10, default 5
"tags": ["alpha"], // your own labels
"metadata": { "userId": "u_123" },
"webhookUrl": "https://yourapp.com/callbacks/omnapi"
}
}

webhookUrl is reserved for v2 — webhook delivery isn’t shipped yet; track Changelog.


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": { /* model-specific metadata */ }
}

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. The largest field surface in the catalog.

FieldTypeRequiredLimitDefault
soundPromptstring≤ 500 chars
lyricsstring≤ 3000 charsempty (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"
}
}

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
modifyModestringextend / cover / inpaint / swap_vocals / swap_sound
transformstringMode-specific transform name
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
modifyModeWhat 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...",
"modifyMode": "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)

Per-key RPS / daily / monthly limits are configured per plan — see Rate Limits.