Skip to content

    Music Video

    Omn creative modes and inputs — API v2

    Availability varies by operationOpen App ↗

    Omn quickstart (API v2) · API and product versions

    Compare conceptual shot sequences

    Conceptual shot sequences: story connects events, mood repeats visual motifs, and alternating combinations switch between singing and dance or instrument shots.

    This diagram illustrates creative intent; it is not a generated sample or a guarantee of shot order.

    Use /api/v2/mv at https://api.omnapi.com with an x-api-key. Check /api/v2/mv/capabilities and the requested combination, then preflight the actual media before purchasing. Use the returned preflightId, a saved Idempotency-Key, and your maxCredits limit. See API availability.

    All modes use the same request envelope and support 540p, 720p, 1080p and 1440p output when the requested combination is ready. Account readiness does not change the parameter format: unavailable combinations are rejected before purchase.

    creative.modeIntended result
    autoSong-led direction without required singing shots
    storyA narrative based on lyrics or your brief
    moodAtmosphere and visual motifs; people are allowed
    performStage or instrumental performance without required singing
    singAudio-synchronized singing shots, with optional narrative cutaways
    danceDance-led movement
    sing_danceSinging and dancing, with an explicit combination policy
    sing_playSinging and instrumental performance, with an explicit combination policy

    creative.options.combination is required for sing_dance and sing_play: alternating uses separate shots; simultaneous requests both actions in the same shot. Same-shot execution is not yet verified and is rejected before debit. It is never silently replaced by alternating shots.

    For dance, references.motion accepts videoUrl, optional characterId, and required rightsConfirmed: true. The character id must identify a supplied reference. Motion reference currently requires 16:9 or 9:16. High-resolution motion output can be resized from the motion workflow’s source; output resolution is not a promise of native source generation resolution. Unsupported references are rejected before purchase.

    MV_CREATIVE_BRIEF_SONG_WORLD_CONFLICT is an advisory warning when an explicit setting in your brief conflicts with the period or culture suggested by the song’s lyrics, title or style tags. Omn keeps your explicit requirements and adapts the remaining setting to the song. Review the finished video; this warning does not by itself mean failure or change delivery or billing.

    Use creative.brief for content and creative.style for visual treatment. For story, set creative.options.storySource to lyrics or brief; brief-led stories require a nonempty brief, and lyrics-led stories require available lyrics. creative.options.instrument is accepted for perform and sing_play.

    creative.characters.policy is auto, required or forbidden, with optional count (1–2). Singing, performance and dance require people. Forbidden characters conflict with those modes and with supplied character references.

    references.characters contains up to two {id, imageUrl, description?} entries with unique ids. references.styles and references.locations each accept up to three image URLs. Secondary character, style and location images together must not exceed six. References have the same shape at every resolution. Character images are optional; the service can create identities.

    Use source.type=audio_url with url, or source.type=suno_clip with clipId. Both accept optional lyrics and range: {startSec, endSec}. Effective duration is verified from the audio, with a 10-second minimum and a maximum of 600 seconds subject to runtime admission. Clients do not supply a trusted duration for purchasing.

    An explicit creative.characters.count is used even when the character policy is auto. Use forbidden to prohibit characters; it cannot be combined with a positive count.

    captions.mode is off, auto or provided. Provided captions require captions.srtUrl; other modes reject that field. SRT cue times are relative to the selected audio segment, starting at zero. Optional language is auto, en or zh. required: true prevents delivery from silently dropping requested subtitles; it cannot be combined with off.

    Automatic lyrics and timing remain machine estimates. Supplied lyrics help recognition but do not independently certify timing. Review warnings and the finished video. Disabling captions does not prevent lyric recognition for song understanding.

    These five complete preflight requests keep the song, output resolution and captions unchanged. Replace the URL with your audio, submit only the variant you choose to POST /api/v2/mv/preflight, then use its returned receipt to purchase. Reference images are optional and omitted here.

    GoalChanged creative fieldsWhat stays the same
    Storymode: story, brief and storySource: briefAudio, 720p, 16:9, captions off
    Moodmode: mood, atmosphere briefSame
    Performancemode: perform, instrumentSame
    Singing and dancemode: sing_dance, combination: alternatingSame
    Singing and playingmode: sing_play, instrument and alternatingSame

    For auto, omit creative options and let the song guide the plan. For sing, use mode: sing; for dance alone use mode: dance. Same-shot simultaneous combinations remain rejected before purchase.

    {
    "source": {
    "type": "audio_url",
    "url": "https://media.example.com/song.mp3"
    },
    "creative": {
    "mode": "story",
    "brief": "A traveler follows a paper bird through a rainy hometown",
    "options": {
    "storySource": "brief"
    }
    },
    "output": {
    "resolution": "720p",
    "aspectRatio": "16:9"
    },
    "captions": {
    "mode": "off"
    }
    }
    {
    "source": {
    "type": "audio_url",
    "url": "https://media.example.com/song.mp3"
    },
    "creative": {
    "mode": "mood",
    "brief": "Rain, reflected neon and empty streets at dawn"
    },
    "output": {
    "resolution": "720p",
    "aspectRatio": "16:9"
    },
    "captions": {
    "mode": "off"
    }
    }
    {
    "source": {
    "type": "audio_url",
    "url": "https://media.example.com/song.mp3"
    },
    "creative": {
    "mode": "perform",
    "brief": "A guitarist plays under warm stage lights",
    "options": {
    "instrument": "guitar"
    }
    },
    "output": {
    "resolution": "720p",
    "aspectRatio": "16:9"
    },
    "captions": {
    "mode": "off"
    }
    }
    {
    "source": {
    "type": "audio_url",
    "url": "https://media.example.com/song.mp3"
    },
    "creative": {
    "mode": "sing_dance",
    "brief": "A singer alternates vocal closeups with dance shots",
    "options": {
    "combination": "alternating"
    }
    },
    "output": {
    "resolution": "720p",
    "aspectRatio": "16:9"
    },
    "captions": {
    "mode": "off"
    }
    }
    {
    "source": {
    "type": "audio_url",
    "url": "https://media.example.com/song.mp3"
    },
    "creative": {
    "mode": "sing_play",
    "brief": "A singer alternates vocal closeups with guitar performance",
    "options": {
    "combination": "alternating",
    "instrument": "guitar"
    }
    },
    "output": {
    "resolution": "720p",
    "aspectRatio": "16:9"
    },
    "captions": {
    "mode": "off"
    }
    }

    The current development contract also describes optional creative.continuity. Omit it for an independent request. GET /api/v2/mv/creative-projects lists your reusable projects and revisions with task:read. Reuse a returned projectId and revisionId only with the matching audio source and creative mode; a mismatch returns a conflict. sourceScope declares full_song, fragment or unknown (default). boundaryPolicy is excerpt (default) or standalone, describing how the selected range relates to the song.

    DELETE /api/v2/mv/creative-projects/{id} archives a project with task:create. This does not purchase generation. Check availability in your deployed API before relying on this development-contract addition; it is separate from the verified availability of the core API v2 create workflow.

    For an existing API v1 integration, use generation.creativeMode and API v1 options. These field names cannot be mixed with API v2 requests.