Omn V1 Music Video engine
GuideAvailability varies by operation
Omn V1 is a pilot generation version for Fast MV. It renders a song as a sequence of short shots, one per MV scene, and joins them over the original audio. Each shot has a type: a story shot, a singing shot, a performance or dance shot, or a continuity shot that starts where the previous shot ended. Omn V1 has its own price card, four render tiers and an off-peak economy schedule. Finished Omn V1 videos support per-shot edits and render-tier upgrades.
Music Video overview · Create a video · Quotes and billing
Select Omn V1
Section titled “Select Omn V1”Set generation.engineVersion to "omn-v1" on POST /api/v1/mv/preflight,
POST /api/v1/mv or the POST /api/v1/tasks MV create bridge, and
engineVersion: "omn-v1" on POST /api/v1/mv/quote. A creative draft selects
it with its own engineVersion. generation.managedVersion still names the
purchase: oneclick-v1 (default) or premium-v2 with a
generation.performanceMode. Studio does not offer an engine choice.
The Omn-only fields generation.renderTier, generation.schedule,
generation.motionReferenceVideo and generation.motionRightsConfirmed return
400 VALIDATION_ERROR without omn-v1 or on Studio.
Default engine
Section titled “Default engine”native.defaultEngine in capabilities reports whether requests that omit
generation.engineVersion are evaluated for Omn V1 first. When enabled is
true and contracts lists the purchase (oneclick-v1,
premium-v2:perform, premium-v2:sing, premium-v2:sing_perform or
premium-v2:dance), accounts included in rolloutPercent are evaluated for
Omn V1 at its price. The rollout percentage defaults to zero and account
selection is stable. The request stays on the existing engine when the account
is outside the rollout or Omn V1 cannot admit it. Default-engine rules:
- An explicit
engineVersionis never changed. - A request that carries a
quoteIdkeeps the engine it was quoted for. - Reusing a saved preflight keeps its original engine, including older Vidu OneClick V1 or Premium V2 preflights issued before Omn rollout.
- With
maxCredits, Omn V1 is used only when its price fits the limit. - A quote without
engineVersionstill prices the existing engine; preflight returns the price that will apply. - When the deployment has closed OneClick V2 on the existing engine, an
implicit OneClick V2 request listed in
contractsis still evaluated for Omn V1 first. It returns503 MV_PROVIDER_UNAVAILABLEonly when it stays on the existing engine.
To stay on the existing engines, set engineVersion to vidu-v1 or vidu-v2;
MVView.generation.engineVersion reports the engine an MV used.
Create an Omn V1 MV
Section titled “Create an Omn V1 MV”-
Read
GET /api/v1/mv/capabilitiesand confirm that the purchase isreadyand lists the tier, schedule, resolution and aspect ratio you need (see Read capabilities). -
Preflight the exact request. Replace the example URLs with your own files:
Terminal window curl -X POST https://api.omnapi.com/api/v1/mv/preflight \-H "x-api-key: $OMNAPI_KEY" \-H "Content-Type: application/json" \-d '{"mode": "fast","source": { "type": "audio", "audioUrl": "https://media.example.com/song.mp3" },"prompt": "rooftop at night, warm neon, handheld camera","resolution": "540p","lipSync": true,"characterImage": "https://media.example.com/singer.jpg","subtitles": false,"generation": { "engineVersion": "omn-v1", "renderTier": "draft", "schedule": "economy" }}' -
Review the validated price and warnings, then create with the same inputs, the returned
preflightId, a reviewedmaxCredits(400 below is illustrative) and a savedIdempotency-Key:Terminal window # Save once for this MV; reuse the saved key and body on retries.export OMN_MV_KEY="$(uuidgen)"curl -X POST https://api.omnapi.com/api/v1/mv \-H "x-api-key: $OMNAPI_KEY" \-H "Idempotency-Key: $OMN_MV_KEY" \-H "Content-Type: application/json" \-d '{"mode": "fast","source": { "type": "audio", "audioUrl": "https://media.example.com/song.mp3" },"prompt": "rooftop at night, warm neon, handheld camera","resolution": "540p","lipSync": true,"characterImage": "https://media.example.com/singer.jpg","subtitles": false,"generation": { "engineVersion": "omn-v1", "renderTier": "draft", "schedule": "economy" },"preflightId": "replace-with-your-preflight-id","maxCredits": 400}' -
Save
taskIdandmvId, poll the Task to a terminal status, then read the final video as in the Fast quickstart.
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 |
|---|---|---|---|---|
draft | 6 | — | — | — |
standard | 12 | 16 | — | — |
hd | — | — | 20 | — |
ultra | — | 48 | 58 | 68 |
A dash marks a combination that is not offered. Output is billed in whole seconds, rounded up, with a 10-second minimum. Singing, performance and dance shots cost the same as story shots. Visual Board images, subtitles and other add-ons are priced separately, and an Omn-specific account discount applies to the video item only. Purchased Tasks keep the price they were created with.
For example, a 50.2-second song at standard 720p is billed as 51 seconds:
51 × 16 = 816 credits for the video. Use quote or preflight for the amount
that applies to your account.
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 or 720p | standard |
| Standard quality at 1080p | hd |
| Only when requested | draft |
When you set a tier without resolution, draft uses 540p, hd 1080p and
ultra 720p; standard keeps the normal Fast default (540p, or 720p with
lipSync). A tier with a resolution it does not deliver returns
400 MV_RESOLUTION_INVALID; a deployment without shot-based rendering treats
standard differently (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. OneClick V2 on Omn V1 uses the
standard tier at 720p only; another tier returns 400 VALIDATION_ERROR.
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 also accepts managedVersion, 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-01", "mvOmnV1": { "engineVersion": "omn-v1", "pricingVersion": "omn-v1-public-2026-09-30-v3", "pricingPolicy": "omn-render-tiers-v3", "unit": "credits_per_output_second", "renderTiers": [ { "renderTier": "draft", "prices": [{ "resolution": "540p", "creditsPerSecond": 6 }] }, { "renderTier": "standard", "prices": [ { "resolution": "540p", "creditsPerSecond": 12 }, { "resolution": "720p", "creditsPerSecond": 16 } ] }, { "renderTier": "hd", "prices": [{ "resolution": "1080p", "creditsPerSecond": 20 }] }, { "renderTier": "ultra", "prices": [ { "resolution": "720p", "creditsPerSecond": 48 }, { "resolution": "1080p", "creditsPerSecond": 58 }, { "resolution": "1440p", "creditsPerSecond": 68 } ] } ], "generation": { "minimumBilledSeconds": 10 }, "economySchedule": { "videoMultiplier": 0.75, "timeZone": "Asia/Shanghai", "windowStart": "00:00", "windowEnd": "08:00", "lastShotStart": "07:40" }, "sceneEdit": { "minimumBilledSeconds": 1, "economyDiscount": false }, "upgrade": { "minimumBilledSeconds": 10, "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 |
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, and account pricing such as an Omn-specific
discount can lower the video item. 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.
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. In exchange:
- The video item costs 0.75 × the tier price. Add-ons are not discounted.
For example, 60 seconds of
draft540p costs 60 × 6 × 0.75 = 270 credits for the video. - The delivery deadline is 48 hours after creation instead of 24 hours. An MV that is not delivered by its deadline fails and is refunded under the normal Task timeout rules.
- 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" } ]}These times are estimates, not delivery guarantees.
Singing, performance and dance
Section titled “Singing, performance and dance”| Purchase | Request | Singers and references |
|---|---|---|
| OneClick V1 story | oneclick-v1 (default) | referenceImages or a generated Visual Board; optional characterImage |
| OneClick V1 singing | lipSync: true | One singer. characterImage is optional; without it, OmnAPI generates a consistent singer identity |
OneClick V2 perform | premium-v2 + performanceMode: "perform" | referenceImages or a generated Visual Board |
OneClick V2 sing, sing_perform | premium-v2 + the mode | One or two ordered portraits in generation.lipReferenceImages, optionally with characterImage; or characterImage alone for one singer |
OneClick V2 dance | premium-v2 + performanceMode: "dance" | referenceImages or a generated Visual Board; optional motion reference video |
Singing shots show the singer performing the vocal with visible mouth
movement; other shots avoid singing and lip movement. When
lipReferenceImages and characterImage are both sent, each singing shot is
led by its singer’s portrait. On Omn V1, OneClick V1 singing is also available
at 540p. characterImage is kept as the identity reference on every shot that
shows the cast. OneClick V2 on Omn V1 costs 16 credits per second at 720p for
every performance mode.
Capabilities report what the deployment offers: lipSync (singing shots),
maxSingers (1 for OneClick V1, up to 2 for OneClick V2), dance,
motionVideo and characterImage. They are checked with reference images. A
text-only request, with no reference images, Visual Board, character image or
singer portraits, also needs text-only rendering for every requested singing,
performance or dance shot type. Omn V1 never renders a requested specialist
shot as a story shot: when the tier, aspect ratio or available capacity cannot
serve it, the request returns 422 MV_ENGINE_UNSUPPORTED with
lip_sync_unsupported, specialist_mode_unsupported or
aspect_ratio_unsupported before any charge.
Dance motion reference
Section titled “Dance motion reference”For OneClick V2 dance, generation.motionReferenceVideo supplies a public
HTTPS video whose moves drive the dance shots. Each dance shot follows the
part of the reference that matches its time in the song, looping a shorter
reference. The reference’s own sound is not used. Send it together with
generation.motionRightsConfirmed: true:
{ "mode": "fast", "source": { "type": "audio", "audioUrl": "https://media.example.com/song.mp3" }, "aspectRatio": "9:16", "referenceImages": ["https://media.example.com/dancer.jpg"], "generation": { "engineVersion": "omn-v1", "managedVersion": "premium-v2", "performanceMode": "dance", "motionReferenceVideo": "https://media.example.com/choreography.mp4", "motionRightsConfirmed": true }}Replace the example URLs with your own files. Motion references are available
at the draft and standard tiers; OneClick V2 on Omn V1 uses standard.
| Requirement | Checked |
|---|---|
Public HTTPS URL that declares a size of at most 128MB and, if it declares a content type, video/* or application/octet-stream | Before any charge |
generation.motionRightsConfirmed: true and OneClick V2 dance | Before any charge |
| 2–660 seconds long, short side at least 240px, long side at most 4096px | While the Task runs |
A failed pre-charge check returns 400 VALIDATION_ERROR, with the field in
details.field (generation.motionReferenceVideo, or
generation.motionRightsConfirmed when the confirmation is missing). Quote the
same request with hasMotionReferenceVideo: true.
Motion transfer applies only to 16:9 and 9:16 videos:
- At 16:9 or 9:16, a request for which motion transfer is not available returns
422 MV_ENGINE_UNSUPPORTEDwithspecialist_mode_unsupportedbefore any charge; checkmotionVideoin capabilities. - At 1:1, 4:3 or 3:4 the request is accepted and planned exactly like OneClick
V2
dancewithout a reference; the video is not used. - A reference that is unusable while the Task runs (unreachable, not decodable or outside the limits above) also dances without motion transfer, at the same price.
Like every OneClick V2 MV, an MV with a motion reference cannot be upgraded.
Duration and long songs
Section titled “Duration and long songs”Omn V1 accepts 10 seconds up to each purchase’s maxDurationSec in
capabilities: at most 600 seconds for OneClick V1 where the deployment permits
it, and 300 seconds for OneClick V2. A longer song is rendered as more shots at
the same per-second rate. Outside the range Omn V1 returns
duration_unsupported; one whose rendering cost would exceed the published
price returns cost_limit_exceeded.
Subtitles
Section titled “Subtitles”Omn V1 burns in visible subtitles only from srtUrl or Suno lyric timing, not
automatic transcription; otherwise visible subtitles return
subtitle_timeline_required. An Omn V1 creative draft with an audio source and
no subtitle choice compiles with subtitles off and returns
MV_SUBTITLE_DISABLED_NO_TIMELINE. An MV with visible subtitles cannot be
upgraded.
Read capabilities
Section titled “Read capabilities”GET /api/v1/mv/capabilities keeps the boolean native.selectableContracts
fields. native.selectableContractDetails.oneclickV1 describes OneClick V1;
premiumV2Perform describes OneClick V2, and its singing, dance and motion
fields cover the other performance modes of that purchase.
{ "native": { "newAdmissionEnabled": true, "defaultEngine": { "enabled": false, "contracts": [] }, "selectableContracts": { "oneclickV1": true, "premiumV2Perform": true }, "selectableContractDetails": { "oneclickV1": { "selectable": true, "ready": true, "minDurationSec": 10, "maxDurationSec": 300, "resolutions": ["540p", "720p", "1080p", "1440p"], "aspectRatios": ["16:9", "9:16", "1:1"], "renderTiers": ["draft", "standard", "hd", "ultra"], "schedules": ["standard", "economy"], "shotTypes": ["narrative", "bridge", "lipsync"], "lipSync": true, "maxSingers": 1, "dance": false, "motionVideo": false, "characterImage": true }, "premiumV2Perform": { "selectable": true, "ready": false, "unavailableReason": "capacity_unavailable", "resolutions": ["720p"], "renderTiers": ["standard"], "shotTypes": ["narrative", "bridge", "performance", "lipsync", "dance"], "lipSync": true, "maxSingers": 2, "dance": true, "motionVideo": true } } }}| Field | Meaning |
|---|---|
selectable, ready, unavailableReason | Whether Omn V1 is open for the purchase and can accept new generations now; the reason matches MV_PROVIDER_UNAVAILABLE |
minDurationSec, maxDurationSec | Accepted effective duration range in seconds; maxDurationSec is 0 when not selectable |
resolutions, aspectRatios | Delivery options a plain request can use, including 1440p and 4:3/3:4 when offered |
renderTiers, schedules | Accepted generation.renderTier and generation.schedule values |
shotTypes | Shot types planning can use: narrative, lipsync, performance, dance, bridge. For the types a finished MV’s shot edits accept, read its MVView.capabilities.editShotTypes |
lipSync, maxSingers | Whether singing shots are available and the largest number of ordered singer portraits |
dance, motionVideo | Whether OneClick V2 dance and a motion reference video are available; motion transfer applies to 16:9 and 9:16 |
characterImage | Whether characterImage is accepted |
These values are hints for a plain request with reference images, not approval
of a specific one; a text-only request may still be rejected. A deployment that offers Omn V1 without shot-based rendering reports only
standard in renderTiers, only narrative in shotTypes, and false for the
singing, dance, motion and character fields; those options then return
422 MV_ENGINE_UNSUPPORTED. There, standard is the single render tier:
an explicit renderTier: "standard" is accepted at every resolution the
capabilities list, including 1080p.
During generation
Section titled “During generation”After the Task is created:
- Shot types appear on each scene’s
renderingHistory[].shotType, with the tier inrenderingHistory[].renderTier. Scene indexes are zero-based. - A shot that fails during rendering is regenerated once at OmnAPI’s cost. Shots rejected by content review are not regenerated; the Task fails.
- If a shot’s outcome cannot be confirmed within 1 hour, or a started shot has not finished within 3 hours, the Task fails and is refunded instead of waiting for the delivery deadline. Time an economy shot spends waiting for the off-peak window does not count.
- Shot prompts carry imagery from the lyrics rather than the lyrics themselves and ask for no on-screen text. Only singing shots show singing or lip movement.
Omn V1 Tasks can also end with these codes. Each stops before any video is rendered, and the Task is refunded:
errorCode | Meaning | Retry |
|---|---|---|
MV_NATIVE_SHOT_PROMPT_TOO_LONG | The planned shot prompts would exceed the video prompt limit. | Shorten the prompt or character descriptions, then create a new Task. |
MV_NATIVE_REFERENCE_REJECTED | The pre-video check found the reference images do not fit the song or story, for example the wrong number of characters. The message says what to change. | Change the reference images or prompt, then create a new Task. |
MV_NATIVE_REFERENCE_REVIEW_UNAVAILABLE | The pre-video check could not finish. | Retry later with a new Idempotency-Key. |
Failure messages describe the problem in OmnAPI terms. When a failure’s
internal details cannot be shown, errorMessage on the Task, the Task list and
webhooks, MVView.lastErrorMessage and failureReason.message, and
failureMessage on GET /api/v1/mv/{mvId}/final read
This MV could not be processed. Please retry later with a new idempotency key.
A failed scene’s scenes[].sourceJob.errorMessage reads
This scene could not be rendered. Edit the scene to render it again. The
errorCode is unchanged. Branch on errorCode, retryable and refunded,
not on the message text.
Rejections
Section titled “Rejections”Every Omn V1 rejection happens before a Task is created or credits are
charged. The message and details.reason never name an internal service.
| HTTP / code | Meaning | details |
|---|---|---|
422 MV_ENGINE_UNSUPPORTED | This request can never run on Omn V1 with the current configuration. Quote and preflight apply the same rules. Change the request or choose another engineVersion; do not retry unchanged. | { "engineVersion": "omn-v1", "reason": "...", "retryable": false } |
503 MV_PROVIDER_UNAVAILABLE | Omn V1 is temporarily unavailable. Retry later when retryable is true. | { "engineVersion": "omn-v1", "reason": "...", "retryable": true } |
MV_ENGINE_UNSUPPORTED reasons:
reason | Change |
|---|---|
specialist_mode_unsupported | The requested performance or dance shots, singer count or motion reference cannot be served, for example for a text-only request; add reference images, or check dance, maxSingers and motionVideo |
lip_sync_unsupported | Singing shots are not available for this tier, aspect ratio or deployment, or for a text-only request; add reference images, remove lipSync or the singing mode, or choose another tier |
character_image_unsupported | Remove characterImage; see characterImage in capabilities |
output_profile_unsupported | Choose a render tier, resolution and quality from the price table and capabilities |
aspect_ratio_unsupported | Choose an aspect ratio listed in capabilities that can render every requested shot type |
duration_unsupported | Stay within the capabilities duration range |
cost_limit_exceeded | Shorten the song, lower the tier or reduce reference images |
subtitle_timeline_required | Provide srtUrl, use a Suno source with timing, or turn subtitles off |
contract_unsupported | Use oneclick-v1 or premium-v2, without providerOverride |
source_unsupported | Use a supported Suno clip or public audio source |
reference_images_unsupported | Reduce the reference images or Visual Board images; for an upgrade, edit the scene with fewer references |
mode_unsupported | Omn V1 is available for Fast only |
not_eligible | Economy is not available for this request (use schedule: "standard"), the MV cannot be upgraded, or Omn V1 is not offered for it; choose another option or engineVersion |
MV_PROVIDER_UNAVAILABLE reasons: engine_closed (Omn V1 is not accepting
new requests; retryable: false), capacity_unavailable,
workers_unavailable, engine_configuration_unavailable and
scheduling_unavailable (all retryable: true).
{ "success": false, "error": { "code": "MV_ENGINE_UNSUPPORTED", "message": "Omn V1 does not support this request: output_profile_unsupported", "details": { "engineVersion": "omn-v1", "reason": "output_profile_unsupported", "retryable": false } }}Unsupported values for the Omn-only fields return 400 before admission:
VALIDATION_ERROR for a field sent without omn-v1, an invalid
renderTier or schedule value, a tier or quality conflict, or any motion
reference problem, and MV_RESOLUTION_INVALID for a tier and resolution
mismatch or 1440p on another engine. Field-level errors for
generation.renderTier, generation.schedule and the motion reference fields
name the field in details.field.
Related operations
Section titled “Related operations”- Create a video and input reference for the shared Fast fields.
- Edit and upgrade Omn V1 videos for
shotTypeedits and render-tier upgrades. - Scene edits and final video for selection, recomposition and final URLs.
- Quotes and billing for quote variants, Omn V1 price items and the operation ledger.
- Credits and billing for the public pricing catalog.
- Errors and recovery for the platform retry matrix.