Skip to content
API documentation

Upgrade an Omn MV to a higher render tier

POST/api/v1/mv/{mvId}/upgrade

Authentication · x-api-key

Re-render every shot of a completed Omn V1 shot-engine MV at a higher render tier (draft → standard/hd/ultra, standard → hd/ultra, hd → ultra) and recompose it. The director shots, timing and each scene's current rendering (prompt, references, shot type) are kept; a fresh admission pins the target routes. One Task is charged the target tier price for the whole MV; a failed or cancelled upgrade is refunded and the MV keeps its current final. Track progress with GET /api/v1/mv/{mvId}/operations and MVView. On success the upgraded final replaces the delivered one; earlier renderings stay in scene history. Requires an Idempotency-Key header (400 VALIDATION_ERROR without it); repeating a request with the same key returns the original upgrade Task. Rejections are returned before any charge: 404 MV_NOT_FOUND when the MV does not exist for this account. 422 MV_ENGINE_UNSUPPORTED with reason not_eligible when the MV cannot be upgraded: it is not an Omn V1 shot-engine MV, it has burned-in subtitles, it was created for motion transfer (a Premium V2 dance MV with generation.motionReferenceVideo on a 16:9 or 9:16 canvas, even if some or all of its dance shots fell back to dancing without the video; on other aspect ratios the video is not used and does not block an upgrade), its shots are longer than the target tier's routes accept, or the target tier is not higher than the current one. reason reference_images_unsupported when a scene (for example one edited with more reference images) would send more reference images than the target tier's route includes without an approved per-image rate. reason output_profile_unsupported when the target renderTier/resolution/quality combination cannot be delivered; Premium V2 MVs are never upgradable because that contract is standard-tier only. Other admission reasons are the same as for a new omn-v1 purchase (422 MV_ENGINE_UNSUPPORTED or 503 MV_PROVIDER_UNAVAILABLE). 409 MV_PRECONDITION_FAILED with reason mv_not_complete (no delivered final, or not every shot is complete) or operation_in_progress (another operation on this MV is running).

Request

mvIdpath · Required
string

MV identifier returned by create or read operations.

Idempotency-Keyheader · Required
string

Unique key for one logical write. Retrying the same body with the same key replays the original result; reusing it with a different body returns 409.

Maximum characters: 255.

Unknown fields are not accepted.

  • Request · renderTierRequired

    "standard" | "hd" | "ultra"

    Target Omn render tier. It must be higher than the MV's current tier (draft → standard/hd/ultra, standard → hd/ultra, hd → ultra).

  • Request · maxCreditsOptional

    number

    Spend ceiling; the upgrade is repriced before direct debit and rejected when it costs more.

    Minimum: 0.

  • Request · qualityOptional

    "standard" | "high"

    Omn quality; "high" requires renderTier="ultra". Defaults to standard.

  • Request · resolutionOptional

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

    Delivery resolution at the target tier. Defaults to the MV's current resolution when the tier delivers it, otherwise the tier default (hd 1080p, ultra 720p).

Responses

202 Accepted

application/json

Unknown fields are not accepted.

  • Response 202 · creditsRequiredRequired

    number

    Minimum: 0.

  • Response 202 · mvIdRequired

    string
  • Response 202 · operationRequired

    "upgrade"
  • Response 202 · statusRequired

    string
  • Response 202 · taskIdRequired

    string
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

Response for status 403 Forbidden: API-key scope/IP restrictions or billing hold. A positive balance does not bypass payment review. Check GET /api/v1/account/credits billingStatus before further paid requests.

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