Skip to content
Music Video

Review a finished music video

The optional workflow quality field is part of this development contract preview; use it when present and retain manual review when it is absent.

COMPLETED confirms that the requested operation finished. It does not certify character consistency, story execution, musical timing, or commercial approval. Watch the full video before using it publicly.

human_review_required does not change task success or failure, delay completion, or trigger a refund. A successfully delivered Task remains COMPLETED and is charged normally. Refunds for undelivered components, such as subtitles, are settled independently of the review flag. A completed workflow phase may carry warningCodes for a confirmed fallback; see workflow phases and recovery.

Omn Task and MV reads expose qualityStatus independently of execution and delivery status. pending means review is pending; not_evaluated means no usable assessment was recorded. human_review_required recommends manual playback review; needs_revision identifies findings to review. Task actionRequired and MV customerAction then return review. A video may be COMPLETED and deliveryStatus: "ready" while its quality is needs_revision. Follow qualityReviewUrl to inspect the evidence; do not publish based only on progress: 100 or the presence of a download URL.

GET /api/v1/tasks/{taskId}/workflow may include an optional quality object for that operation. needs_revision indicates visual findings to review; human_review_required recommends manual playback review; not_evaluated means no usable visual review is available. Inspect the coverage and suggestedRepairSceneIndexes before choosing any scene edits. Scene indexes in the API are zero-based.

playbackReviewSceneIndexes identifies story actions that need playback confirmation: an action absent from sampled images may still occur between them. A finding with verification: "insufficient_evidence" is inconclusive: a small, blurred or hidden face, or an unavailable identity reference, cannot establish identity drift. Such findings do not count toward observedMajorCount or the suggested repair list.

internalCutSceneIndexes and frameBorderSceneIndexes identify unexpected cuts within a shot and visible black borders. These defects also produce needs_revision and appear in the suggested repair list, even when observedMajorCount is zero.

Check reviewedSceneCount, unreviewedSceneCount and coverage: sampled review does not cover every shot or every moment. Optional shotChecks reports counts for on-screen text, identity, lip sync, frame borders and internal cuts. Each entry separates evaluated, failed, not-applicable and unevaluated scenes. Missing checks and unevaluated scenes are not passing results; a lip-sync shot check is also separate from the overall video review.

Music timing and lip sync remain unverified by this visual review. Findings do not automatically trigger a new paid generation or change credit settlement.


Music Video overview · Edit scenes

GET /api/v1/mv/{mvId} can return highlight with url, startSec and durationSec. When available, it is a short excerpt of the current final video, without burned-in subtitles. Use it for a preview; review the full video before publishing.

The highlight URL is private and expires. Refresh the MV view to obtain a new URL; do not append your API key to a media URL. Treat highlight: null or an absent field as unavailable. A highlight may be absent when generation fails, the media expires, the final video is no longer current, or an older highlight has not been migrated to private storage. The final video can still be usable.

This is a development contract preview; check the deployed response before offering highlights. See finished-video review for quality coverage and suggested repairs.

Use the Task ID of the operation you are reviewing and an API key with task:read. Each read checks ownership. These paths are included in the public OpenAPI:

EndpointUse
GET /api/v1/tasks/{taskId}/workflowRead stages, settlement, quality findings and coverage
GET /api/v1/tasks/{taskId}/workflow/eventsRead durable events; pass the returned nextCursor as after
GET /api/v1/tasks/{taskId}/workflow/streamReceive SSE events; reconnect with Last-Event-ID or after
GET /api/v1/tasks/{taskId}/workflow/artifactsList customer-visible media; use nextCursor as after for pagination
GET /api/v1/tasks/{taskId}/workflow/artifacts/{assetId}Read availability and a current access URL for a listed artifact

Keep event cursors as strings. When event history requires a reset, reread the workflow snapshot and use the returned cursor to resume. Artifact cursors are opaque and are separate from event cursors. An unavailable artifact or a null URL does not imply a refund; read settlement independently. Download a returned media URL without sending your API key, and refresh its access read if it expires.