Skip to content
API documentation

Save v2 creative draft

POST/api/v2/mv/drafts/

Authentication · x-api-key

Omn creative draft operation. Drafts retain a version; generation and preview require a new customer charge authorization and an Idempotency-Key. Preview is independently billed.

Request

Unknown fields are not accepted.

  • Request · sourceRequired

    object

    Public audio URL or an accessible Suno clip. The server verifies duration.

    Must match at least one alternative.

    2 fields / alternatives
    • Request · source · anyOf 1Alternative

      object

      Public audio URL or an accessible Suno clip. The server verifies duration.

      Unknown fields are not accepted.

      4 fields
      • Request · source · anyOf 1.typeRequired

        "audio_url"

        audio_url requires url; suno_clip requires clipId.

      • Request · source · anyOf 1.urlRequired

        string

        Public HTTP(S) audio URL.

        Format: uri.

      • Request · source · anyOf 1.lyricsOptional

        string

        Optional original lyrics to guide song understanding and transcription.

        Maximum characters: 5000.

      • Request · source · anyOf 1.rangeOptional

        object

        Audio selection measured in seconds; effective output must be 10–600 seconds.

        Unknown fields are not accepted.

        2 fields
    • Request · source · anyOf 2Alternative

      object

      Public audio URL or an accessible Suno clip. The server verifies duration.

      Unknown fields are not accepted.

      4 fields
      • Request · source · anyOf 2.clipIdRequired

        string

        Accessible Suno clip identifier.

        Minimum characters: 1.

      • Request · source · anyOf 2.typeRequired

        "suno_clip"

        audio_url requires url; suno_clip requires clipId.

      • Request · source · anyOf 2.lyricsOptional

        string

        Optional original lyrics to guide song understanding and transcription.

        Maximum characters: 5000.

      • Request · source · anyOf 2.rangeOptional

        object

        Audio selection measured in seconds; effective output must be 10–600 seconds.

        Unknown fields are not accepted.

        2 fields
  • Request · captionsOptional

    object

    Subtitle policy; captions do not control whether lyrics are analyzed for planning.

    Unknown fields are not accepted.

    4 fields
    • Request · captions.modeRequired

      "off" | "auto" | "provided"

      off, auto or provided. provided requires srtUrl; other modes reject it.

      Default: "off".

    • Request · captions.languageOptional

      "auto" | "en" | "zh"

      Expected subtitle language (auto, en or zh).

      Default: "auto".

    • Request · captions.requiredOptional

      boolean

      When true, do not silently deliver without requested captions. Invalid with mode off.

    • Request · captions.srtUrlOptional

      string

      Public SRT URL with cue times relative to the selected audio segment.

      Format: uri.

  • Request · configOptional

    object

    Standard task configuration: priority, tags, metadata, and webhookUrl.

    4 fields
    • Request · config.metadataOptional

      object

      Free-form caller metadata, echoed back on read. Stored as opaque JSON; the server never mutates it.

    • Request · config.priorityOptional

      number

      Task priority 1-10 (higher = sooner). Default 5.

      Minimum: 1. Maximum: 10. Default: 5.

    • Request · config.tagsOptional

      array<string>

      Free-form labels for filtering. Up to 20, 100 chars each.

      Maximum items: 20.

      1 field
      • Request · config.tags[]Each item

        string

        Maximum characters: 100.

    • Request · config.webhookUrlOptional

      string

      URL to receive task.* lifecycle events via the central webhook service.

      Format: uri.

  • Request · creativeOptional

    object

    Creative intent, independent of output resolution.

    Unknown fields are not accepted.

    5 fields
    • Request · creative.modeRequired

      "auto" | "story" | "mood" | "perform" | "sing" | "dance" | "sing_dance" | "sing_play"

      auto, story, mood, perform, sing, dance, sing_dance or sing_play. All use the same request envelope.

      Default: "auto".

    • Request · creative.briefOptional

      string

      Describe the desired story, subjects, action and mood. Required for a brief-led story.

      Maximum characters: 3000.

    • Request · creative.charactersOptional

      object

      Whether characters may appear and the desired count.

      Unknown fields are not accepted.

      2 fields
      • Request · creative.characters.policyRequired

        "auto" | "required" | "forbidden"

        auto lets the director decide; required mandates characters; forbidden excludes them and conflicts with performance modes or character references.

        Default: "auto".

      • Request · creative.characters.countOptional

        string | integer

        Desired number of main characters (1 or 2); cannot be combined with forbidden.

        Minimum: 1. Maximum: 2. Must match at least one alternative.

        2 fields / alternatives
    • Request · creative.optionsOptional

      object

      Mode-specific choices; irrelevant options are rejected.

      Unknown fields are not accepted.

      3 fields
      • Request · creative.options.combinationOptional

        "alternating" | "simultaneous"

        Required for sing_dance or sing_play. alternating uses separate shots. simultaneous requests same-shot actions and currently returns 422 before debit.

        Default: "alternating".

      • Request · creative.options.instrumentOptional

        string

        Instrument to feature in perform or sing_play.

        Minimum characters: 1. Maximum characters: 100.

      • Request · creative.options.storySourceOptional

        "lyrics" | "brief"

        Required for story: lyrics uses song evidence; brief uses creative.brief.

        Default: "lyrics".

    • Request · creative.styleOptional

      string

      Visual treatment passed to director planning and shot generation.

      Maximum characters: 1000.

  • Request · maxCreditsOptional

    number

    Maximum authorized customer charge. A lower cap rejects the purchase without reducing the requested output.

    Minimum: 1.

  • Request · outputOptional

    object

    Delivery format. No render tier or provider selector is accepted.

    Unknown fields are not accepted.

    2 fields
    • Request · output.aspectRatioOptional

      "16:9" | "9:16" | "1:1" | "4:3" | "3:4"

      Delivery aspect ratio; defaults to 16:9. Motion references require 16:9 or 9:16.

    • Request · output.resolutionOptional

      "540p" | "720p" | "1080p" | "1440p"

      540p, 720p, 1080p or 1440p for every mode. Defaults to 720p. Motion output may be resized from its source resolution.

  • Request · preflightIdOptional

    string

    Unexpired preflight identifier bound to this user, API key and exact creative request.

    Minimum characters: 1. Maximum characters: 100.

  • Request · quoteIdOptional

    string

    Short-lived quote identifier for the matching paid operation.

    Minimum characters: 1. Maximum characters: 100.

  • Request · referencesOptional

    object

    Optional media references. Secondary characters, style and location images together may not exceed six.

    Unknown fields are not accepted.

    4 fields
    • Request · references.charactersOptional

      array<object>

      Up to two ordered identity references; omit to let Omn create characters.

      Maximum items: 2.

      1 field
    • Request · references.locationsOptional

      array<string>

      Up to three scene or location image URLs.

      Maximum items: 3.

      1 field
    • Request · references.motionOptional

      object

      Optional motion reference for dance only; runtime support is checked before debit.

      Unknown fields are not accepted.

      3 fields
    • Request · references.stylesOptional

      array<string>

      Up to three visual style image URLs.

      Maximum items: 3.

      1 field
      • Request · references.styles[]Each item

        string

        Up to three visual style image URLs.

        Format: uri.

  • Request · titleOptional

    string

    Optional customer-facing title.

    Maximum characters: 200.

Responses

200 OK

application/json

  • Response 200 · contractVersionRequired

    "v2"
  • Response 200 · expiresAtRequired

    string
  • Response 200 · idRequired

    string
  • Response 200 · requestRequired

    object

    Unknown fields are not accepted.

    10 fields
    • Response 200 · request.sourceRequired

      object

      Public audio URL or an accessible Suno clip. The server verifies duration.

      Must match at least one alternative.

      2 fields / alternatives
    • Response 200 · request.captionsOptional

      object

      Subtitle policy; captions do not control whether lyrics are analyzed for planning.

      Unknown fields are not accepted.

      4 fields
      • Response 200 · request.captions.modeRequired

        "off" | "auto" | "provided"

        off, auto or provided. provided requires srtUrl; other modes reject it.

        Default: "off".

      • Response 200 · request.captions.languageOptional

        "auto" | "en" | "zh"

        Expected subtitle language (auto, en or zh).

        Default: "auto".

      • Response 200 · request.captions.requiredOptional

        boolean

        When true, do not silently deliver without requested captions. Invalid with mode off.

      • Response 200 · request.captions.srtUrlOptional

        string

        Public SRT URL with cue times relative to the selected audio segment.

        Format: uri.

    • Response 200 · request.configOptional

      object
      4 fields
      • Response 200 · request.config.metadataOptional

        object

        Free-form caller metadata, echoed back on read. Stored as opaque JSON; the server never mutates it.

      • Response 200 · request.config.priorityOptional

        number

        Task priority 1-10 (higher = sooner). Default 5.

        Minimum: 1. Maximum: 10. Default: 5.

      • Response 200 · request.config.tagsOptional

        array<string>

        Free-form labels for filtering. Up to 20, 100 chars each.

        Maximum items: 20.

        1 field
      • Response 200 · request.config.webhookUrlOptional

        string

        URL to receive task.* lifecycle events via the central webhook service.

        Format: uri.

    • Response 200 · request.creativeOptional

      object

      Creative intent, independent of output resolution.

      Unknown fields are not accepted.

      5 fields
      • Response 200 · request.creative.modeRequired

        "auto" | "story" | "mood" | "perform" | "sing" | "dance" | "sing_dance" | "sing_play"

        auto, story, mood, perform, sing, dance, sing_dance or sing_play. All use the same request envelope.

        Default: "auto".

      • Response 200 · request.creative.briefOptional

        string

        Describe the desired story, subjects, action and mood. Required for a brief-led story.

        Maximum characters: 3000.

      • Response 200 · request.creative.charactersOptional

        object

        Whether characters may appear and the desired count.

        Unknown fields are not accepted.

        2 fields
      • Response 200 · request.creative.optionsOptional

        object

        Mode-specific choices; irrelevant options are rejected.

        Unknown fields are not accepted.

        3 fields
        • Response 200 · request.creative.options.combinationOptional

          "alternating" | "simultaneous"

          Required for sing_dance or sing_play. alternating uses separate shots. simultaneous requests same-shot actions and currently returns 422 before debit.

          Default: "alternating".

        • Response 200 · request.creative.options.instrumentOptional

          string

          Instrument to feature in perform or sing_play.

          Minimum characters: 1. Maximum characters: 100.

        • Response 200 · request.creative.options.storySourceOptional

          "lyrics" | "brief"

          Required for story: lyrics uses song evidence; brief uses creative.brief.

          Default: "lyrics".

      • Response 200 · request.creative.styleOptional

        string

        Visual treatment passed to director planning and shot generation.

        Maximum characters: 1000.

    • Response 200 · request.maxCreditsOptional

      number

      Maximum authorized customer charge. A lower cap rejects the purchase without reducing the requested output.

      Minimum: 1.

    • Response 200 · request.outputOptional

      object

      Delivery format. No render tier or provider selector is accepted.

      Unknown fields are not accepted.

      2 fields
      • Response 200 · request.output.aspectRatioOptional

        "16:9" | "9:16" | "1:1" | "4:3" | "3:4"

        Delivery aspect ratio; defaults to 16:9. Motion references require 16:9 or 9:16.

      • Response 200 · request.output.resolutionOptional

        "540p" | "720p" | "1080p" | "1440p"

        540p, 720p, 1080p or 1440p for every mode. Defaults to 720p. Motion output may be resized from its source resolution.

    • Response 200 · request.preflightIdOptional

      string

      Unexpired preflight identifier bound to this user, API key and exact creative request.

      Minimum characters: 1. Maximum characters: 100.

    • Response 200 · request.quoteIdOptional

      string

      Minimum characters: 1. Maximum characters: 100.

    • Response 200 · request.referencesOptional

      object

      Optional media references. Secondary characters, style and location images together may not exceed six.

      Unknown fields are not accepted.

      4 fields
    • Response 200 · request.titleOptional

      string

      Maximum characters: 200.

  • Response 200 · versionRequired

    string | integer

    Must match at least one alternative.

    2 fields / alternatives
400 Bad Request

application/json

  • Response 400 · errorRequired

    object
    3 fields
    • Response 400 · error.codeRequired

      string

      Application-specific error code (see error catalog)

    • Response 400 · error.messageRequired

      string

      Human readable error message

    • Response 400 · error.detailsOptional

      object

      Additional error details (optional)

  • Response 400 · successRequired

    false

    Always false for error responses

401 Unauthorized

application/json

  • Response 401 · errorRequired

    object
    3 fields
    • Response 401 · error.codeRequired

      string

      Application-specific error code (see error catalog)

    • Response 401 · error.messageRequired

      string

      Human readable error message

    • Response 401 · error.detailsOptional

      object

      Additional error details (optional)

  • Response 401 · successRequired

    false

    Always false for error responses

402 Payment Required

application/json

  • Response 402 · errorRequired

    object
    3 fields
    • Response 402 · error.codeRequired

      string

      Application-specific error code (see error catalog)

    • Response 402 · error.messageRequired

      string

      Human readable error message

    • Response 402 · error.detailsOptional

      object

      Additional error details (optional)

  • Response 402 · successRequired

    false

    Always false for error responses

403 Forbidden

application/json

  • Response 403 · errorRequired

    object
    3 fields
    • Response 403 · error.codeRequired

      string

      Application-specific error code (see error catalog)

    • Response 403 · error.messageRequired

      string

      Human readable error message

    • Response 403 · error.detailsOptional

      object

      Additional error details (optional)

  • Response 403 · successRequired

    false

    Always false for error responses

404 Not Found

application/json

  • Response 404 · errorRequired

    object
    3 fields
    • Response 404 · error.codeRequired

      string

      Application-specific error code (see error catalog)

    • Response 404 · error.messageRequired

      string

      Human readable error message

    • Response 404 · error.detailsOptional

      object

      Additional error details (optional)

  • Response 404 · successRequired

    false

    Always false for error responses

409 Conflict

application/json

  • Response 409 · errorRequired

    object
    3 fields
    • Response 409 · error.codeRequired

      string

      Application-specific error code (see error catalog)

    • Response 409 · error.messageRequired

      string

      Human readable error message

    • Response 409 · error.detailsOptional

      object

      Additional error details (optional)

  • Response 409 · successRequired

    false

    Always false for error responses

413 Payload Too Large

application/json

  • Response 413 · errorRequired

    object
    3 fields
    • Response 413 · error.codeRequired

      string

      Application-specific error code (see error catalog)

    • Response 413 · error.messageRequired

      string

      Human readable error message

    • Response 413 · error.detailsOptional

      object

      Additional error details (optional)

  • Response 413 · successRequired

    false

    Always false for error responses

422 Unprocessable Entity

application/json

  • Response 422 · errorRequired

    object
    3 fields
    • Response 422 · error.codeRequired

      string

      Application-specific error code (see error catalog)

    • Response 422 · error.messageRequired

      string

      Human readable error message

    • Response 422 · error.detailsOptional

      object

      Additional error details (optional)

  • Response 422 · successRequired

    false

    Always false for error responses

429 Too Many Requests

Request allowance or task admission capacity exceeded. Follow Retry-After when present; otherwise wait for active tasks and use bounded backoff. Limits do not guarantee throughput. For SSE, this is the HTTP connection response, not an event.

application/json

  • Response 429 · errorRequired

    object
    3 fields
    • Response 429 · error.codeRequired

      string

      RATE_LIMITED for request and task admission rejections.

    • Response 429 · error.messageRequired

      string
    • Response 429 · error.detailsOptional

      object

      Optional and scope-dependent. Request limits supply scope/policy/type/limit/current/retryAfterSec. Task admission supplies inFlight/limit/tier, plus scope=apiKey for a key cap. IP rejection can omit details. In-flight rejection does not promise Retry-After.

      8 fields
  • Response 429 · successRequired

    false

    Default: false.

500 Internal Server Error

application/json

  • Response 500 · errorRequired

    object
    3 fields
    • Response 500 · error.codeRequired

      string

      Application-specific error code (see error catalog)

    • Response 500 · error.messageRequired

      string

      Human readable error message

    • Response 500 · error.detailsOptional

      object

      Additional error details (optional)

  • Response 500 · successRequired

    false

    Always false for error responses

502 Bad Gateway

application/json

  • Response 502 · errorRequired

    object
    3 fields
    • Response 502 · error.codeRequired

      string

      Application-specific error code (see error catalog)

    • Response 502 · error.messageRequired

      string

      Human readable error message

    • Response 502 · error.detailsOptional

      object

      Additional error details (optional)

  • Response 502 · successRequired

    false

    Always false for error responses

503 Service Unavailable

application/json

  • Response 503 · errorRequired

    object
    3 fields
    • Response 503 · error.codeRequired

      string

      Application-specific error code (see error catalog)

    • Response 503 · error.messageRequired

      string

      Human readable error message

    • Response 503 · error.detailsOptional

      object

      Additional error details (optional)

  • Response 503 · successRequired

    false

    Always false for error responses

Interactive API Explorer → · OpenAPI JSON