Omn V1 pricing and scheduling
Omn V1 quickstart · Compare music video options
Render tiers and price
Section titled “Render tiers and price”Omn V1 prices the video by render tier and delivery resolution, in credits per
second of output. The machine-readable source for these numbers is the
Omn V1 price card in GET /api/v1/pricing/catalog:
generation.renderTier | 540p | 720p | 1080p | 1440p | Minimum credits per full MV |
|---|---|---|---|---|---|
draft | 9 | — | — | — | 0 |
standard | — | 12 | — | — | 0 |
hd | — | — | 20 | — | 0 |
ultra | — | 28 | 35 | 48 | 0 |
New 540p purchases use Draft. Existing Standard 540p MVs remain readable, editable and composable; new scene edits use the current Standard rate of 12 credits/second. Their original receipts and refunds are unchanged. New upgrades to Standard use 720p.
A dash marks a combination that is not offered. Video credits equal the tier’s per-second price × effective output seconds rounded up. Full MVs require at least 5 seconds of effective audio; shorter inputs are rejected before charging. There is no minimum credit charge, and no duration is added to meet a spending floor. Singing, performance and dance shots cost the same as story shots. Visual Board images, subtitles and other add-ons keep their separate public prices. All customers pay the same credits for an Omn order, without account or economy discounts. Credit recharge packages are unchanged; their cash price per credit can still differ. Purchased Tasks keep their original charge.
For example, a 44.8-second song is billed as 45 seconds: Draft 405, Standard 540, HD 900 or Ultra 1260/1575/2160 (720p/1080p/1440p) video credits, before add-ons. Use quote or preflight for the complete amount and availability.
draft is a lower-cost 540p pass for reviewing a video before you
upgrade it. Choose
a tier explicitly, or omit generation.renderTier and let resolution and
quality select it:
| Request | Render tier |
|---|---|
resolution: "1440p", or generation.quality: "high" at 720p or 1080p | ultra |
| Standard quality at 540p | draft |
| Standard quality at 720p | standard |
| Standard quality at 1080p | hd |
When you set a tier without resolution, draft uses 540p, hd 1080p and
ultra and standard 720p. A tier with a resolution it does not deliver returns
400 MV_RESOLUTION_INVALID. New 540p purchases require Draft. Legacy request
profiles can expose a different tier matrix; see Read capabilities.
generation.quality: "high" with a tier other than
ultra returns 400 VALIDATION_ERROR, and at 540p returns
400 MV_RESOLUTION_INVALID. resolution: "1440p" is available only on Omn V1;
other engines return 400 MV_RESOLUTION_INVALID.
Both managed request profiles can use the Omn render tiers offered by
native.selectableContractDetails and preflight. OneClick V1 accepts up to
600 seconds where available; premium-v2 accepts up to 300 seconds. Vidu
OneClick V2 retains its 720p limit.
Quote with the same options you will create:
curl -X POST https://api.omnapi.com/api/v1/mv/quote \ -H "x-api-key: $OMNAPI_KEY" \ -H "Content-Type: application/json" \ -d '{"mode":"fast","engineVersion":"omn-v1","durationSec":60,"renderTier":"draft","schedule":"economy"}'The Omn V1 quote accepts performanceMode, lipSync,
quality, resolution, referenceImageCount, hasMotionReferenceVideo and
the Visual Board quote fields. It applies the same option rules as preflight and
returns 422 MV_ENGINE_UNSUPPORTED instead of a price for an unsupported
request. Preflight is the authoritative check because it also validates your
media and the capacity that will run the video.
Read the price card
Section titled “Read the price card”GET /api/v1/pricing/catalog is public, cacheable and needs no API key. Its
mvOmnV1 section is the Omn V1 price card, generated from the same
configuration that prices Omn V1 Tasks. Read prices from it rather than
copying the table above:
curl https://api.omnapi.com/api/v1/pricing/catalog{ "updatedAt": "2026-10-15", "mvOmnV1": { "engineVersion": "omn-v1", "pricingVersion": "omn-v1-public-2026-10-15-v7", "pricingPolicy": "omn-render-tiers-v7", "unit": "credits_per_output_second", "customerDiscounts": false, "renderTiers": [ { "renderTier": "draft", "minimumOrderCredits": 0, "prices": [{ "resolution": "540p", "creditsPerSecond": 9 }] }, { "renderTier": "standard", "minimumOrderCredits": 0, "prices": [ { "resolution": "720p", "creditsPerSecond": 12 } ] }, { "renderTier": "hd", "minimumOrderCredits": 0, "prices": [{ "resolution": "1080p", "creditsPerSecond": 20 }] }, { "renderTier": "ultra", "minimumOrderCredits": 0, "prices": [ { "resolution": "720p", "creditsPerSecond": 28 }, { "resolution": "1080p", "creditsPerSecond": 35 }, { "resolution": "1440p", "creditsPerSecond": 48 } ] } ], "generation": { "minimumBilledSeconds": 5 }, "economySchedule": { "videoMultiplier": 1, "timeZone": "Asia/Shanghai", "windowStart": "00:00", "windowEnd": "08:00", "lastShotStart": "07:40" }, "sceneEdit": { "minimumBilledSeconds": 1, "economyDiscount": false }, "upgrade": { "minimumBilledSeconds": 5, "economyDiscount": false }, "composeCreditsPerOperation": 2 }}| Field | Meaning |
|---|---|
engineVersion | Always omn-v1 |
pricingVersion, pricingPolicy | Identify the card; a changed card has a new pricingVersion. Purchased Tasks keep the price they were created with |
unit | credits_per_output_second: every price is in credits per second of delivered video |
renderTiers[] | Each generation.renderTier with its prices[]: the delivery resolution values the tier offers and their creditsPerSecond. A resolution that is not listed is not offered at that tier |
renderTiers[].minimumOrderCredits | Zero: no minimum credit charge for new full generations or upgrades |
customerDiscounts | false: Omn orders use public component prices for every customer |
generation.minimumBilledSeconds | Minimum billed length of a new MV, in seconds; output seconds are rounded up |
economySchedule | videoMultiplier for the video item of a schedule: "economy" MV; the off-peak window from windowStart to windowEnd (HH:MM) in the IANA timeZone; and lastShotStart, the latest time a new shot starts in that window |
sceneEdit | Shot-edit pricing: minimumBilledSeconds, whether the economy multiplier applies (economyDiscount), and the rule as text in rule |
upgrade | Render-tier upgrade pricing, with the same fields; recomposition is included |
composeCreditsPerOperation | Credits for each recomposition with POST /api/v1/mv/{mvId}/finalize after edits |
notes | The card’s billing rules as text |
The card lists standard prices. Visual Board images, subtitles and other
add-ons are priced separately. Omn orders do not apply account discounts. For a concrete request, use the amount from
quote, preflight or upgrade preflight.
A purchased Task itemizes its Omn V1 charge in pricing.components; see
Omn V1 price items.
Complete order examples
Section titled “Complete order examples”The video table is not necessarily the order total. A full generation includes
its initial assembly; subsequent scene edits and recomposition are separate
purchases. Use the complete preflight creditsRequired (also quote.credits)
as the amount to review, then set maxCredits on create.
| Input choice | Effect on the bill |
|---|---|
Caller references with generation.referenceStrategy: "direct" | Does not request generated Visual Board references |
No caller references, or referenceStrategy: "synthesize" | Can add Visual Board planning and image charges; preflight includes them |
generation.visualBoard.preset: "off" | Disables generated Visual Board references; the remaining request must still pass media and capability checks |
subtitles: false with no automatic subtitle policy | Does not request subtitle extraction/alignment |
subtitles: true, subtitle.mode: "auto", without usable timing | Adds the quoted automatic subtitle component |
A valid caller srtUrl | Supplies timing; automatic timing extraction is unnecessary |
Do not combine preset: "off" with a request to synthesize caller references.
Do not assume disabling Visual Board disables every kind of automatic character
preparation. Internal repairs of system-generated materials do not add customer
charges. Subtitle request bodies.
For illustration, take 60 seconds of Draft 540p and suppose the chosen Visual Board add-ons quote 20 credits and automatic subtitles quote 10 credits. These two add-on amounts are example returned prices, not fixed rates for all image options or subtitle requests. Assume no other components or settlement rounding in these examples:
| Order | Video | Visual Board | Automatic subtitles | Total deducted at creation |
|---|---|---|---|---|
| Caller references, subtitles off | 60 × 9 = 540 | 0 | 0 | 540 |
| Generated references, subtitles off | 540 | 20 | 0 | 560 |
| Generated references and automatic subtitles | 540 | 20 | 10 | 570 |
HTTP 200 preflight excerpt for the third example:
{ "preflightId": "0199a000-0000-7000-8000-000000000002", "expiresAt": "2026-10-15T02:10:00.000Z", "quoteType": "validated_estimate", "creditsRequired": 570, "warningCodes": [], "quote": { "credits": 570, "calculatedSubtotalCredits": 570, "settlementRoundingCredits": 0, "breakdown": { "duration": 60, "visualBoard": 20 } }}breakdown is a summary, not an exhaustive component ledger. Its duration
is seconds, not credits; it may omit the Omn video or subtitle line. Do not
sum all its values to calculate the charge. Use quote.credits; when present,
calculatedSubtotalCredits plus settlementRoundingCredits explains the total.
After purchase, GET /api/v1/tasks/{taskId} provides pricing.components[]
with each item’s key, label and credits in the purchased price snapshot.
For the 570-credit example:
- All requested outputs delivered: final net charge 570.
- Video delivered without the paid subtitles: refund 10, final net charge
560. The Task stays
COMPLETED; the video and Visual Board remain payable. - Technical failure with a full refund: refund 570, final net charge 0, once settlement completes. Do not report the refund from Task failure alone.
Use settlement status and amounts to determine the actual outcome. If there was no paid subtitle component, a subtitle warning does not create a credit refund.
A later 4.2-second Draft shot edit costs ceil(4.2) × 9 = 45 credits.
Recomposing after that edit costs 2, so that change adds 47 credits.
Quote both operations against the saved MV. A compose quote is zero when the
current final already matches the selected scene composition.
An upgrade buys the whole video at the target tier, with recomposition included.
For a 60-second Draft → Standard purchase, the upgrade video price is
60 × 12 = 720; the two video purchases total 540 + 720 = 1260, plus any
earlier add-ons or edits. It is not a 180-credit difference payment. Visible
subtitles and motion-transfer purchases can prevent upgrading; check
upgrade eligibility before
choosing a first-pass workflow.
For a cash estimate, multiply the credit total by your actual paid price per credit. Recharge packages and checkout fees can change that conversion; see Credit value. The API’s budget and settlement fields are in credits, not dollars.
Economy scheduling
Section titled “Economy scheduling”generation.schedule is standard (default) or economy. An economy MV
renders its shots only during the daily off-peak window, 00:00–08:00 Beijing
time (UTC+8), which is 16:00–24:00 UTC:
- The video item costs the same as standard scheduling (multiplier 1), with no minimum credit charge. A 60-second Draft video costs 540 credits.
- Where economy is offered, its delivery deadline is normally 48 hours after
creation. Standard scheduling can have a 30-minute or 24-hour deadline,
depending on the accepted request. Use the active operation’s returned
deliveryDeadlineAt, not a hard-coded timeout. A shorter-deadline purchase may offer standard scheduling only. At the deadline, terminal handling and eligible refunds follow the Task timeout rules; verify settlement separately. - Shot edits and upgrades are not discounted and start immediately.
The price card publishes the multiplier, the window and
the 07:40 last shot start in mvOmnV1.economySchedule.
New shots start only between 00:00 and 07:40 Beijing time, so that no shot
runs into the peak period; a shot that has started finishes normally. Expect
an MV created outside those hours to wait until the next window before its
shots begin. Shots that have not started by 07:40 wait for the next window. capabilities.schedules lists economy when the deployment
offers it. Economy also needs off-peak rendering for every shot type in the
MV; otherwise the request returns 422 MV_ENGINE_UNSUPPORTED with
reason: "not_eligible". Resend it with schedule: "standard".
Track an economy MV with GET /api/v1/mv/{mvId}. generation.scheduleWindow
gives the off-peak window the waiting shots will use: the current window until
07:40, otherwise the next one. offPeakEndsAt is the 08:00 end of that
window; the last shot starts 20 minutes earlier. The field becomes null once
every shot has started:
{ "mvId": "mv_01J...", "generation": { "engineVersion": "omn-v1", "renderTier": "draft", "schedule": "economy", "scheduleWindow": { "nextOffPeakStartAt": "2026-10-01T16:00:00.000Z", "offPeakEndsAt": "2026-10-02T00:00:00.000Z" } }}In GET /api/v1/mv/{mvId}/operations, each active item adds progress
(0–100) and deliveryDeadlineAt; the economy generation also adds
estimatedStartAt, when its shots are expected to start (now until 07:40,
otherwise the next 00:00 Beijing time):
{ "items": [ { "operation": "create", "taskId": "task_01J...", "taskStatus": "PROCESSING", "progress": 10, "deliveryDeadlineAt": "2026-10-03T09:00:00.000Z", "estimatedStartAt": "2026-10-01T16:00:00.000Z" } ]}estimatedStartAt and the schedule window are planning estimates, not promised
delivery times. deliveryDeadlineAt is the operation’s hard deadline; follow
the Task and settlement outcome if delivery does not finish by then.
A 25-second order with a partial refund
Section titled “A 25-second order with a partial refund”For Standard 720p, standard scheduling, no lip-sync, three generated reference images and automatic subtitles, an illustrative complete quote is:
| Item | Calculation | Credits |
|---|---|---|
| Video | 25 × 12 | 300 |
| Visual Board plan | 1 × 10 | 10 |
| Reference images | 3 × 10 | 30 |
| Automatic subtitles | Quoted add-on for this request | 5 |
| Total deducted on creation | 300 + 10 + 30 + 5 | 345 |
If automatic subtitles cannot be delivered and the request allowed
continue_without_subtitles, the video may complete with
MV_AUTO_SUBTITLE_FALLBACK_SKIPPED. The paid subtitle item is refunded:
345 deducted − 5 returned = 340 net credits. Task reports
creditsRequired: 345, creditsCharged: 340, refunded: true,
refundedCredits: 5, refundType: "partial",
refundReason: "subtitle_not_delivered", settlementStatus: "CHARGED".
The operation ledger reports chargedCredits: 345, refundedCredits: 5,
netCredits: 340. Task pricing.components still sums to the original 345.
These numbers illustrate one order; reference-image count and add-ons depend on the validated request. Use your preflight total and current price card for purchase approval. A 25-second output does not mean 25 seconds of processing.