Skip to content

OmnAPI Credits and Billing

Concept

OmnAPI bills in credits. You purchase credit packages from the dashboard; each paid task deducts its quoted credit amount when the task is created. If the task fails or is cancelled before producing billable output, eligible credits are refunded automatically.

New website accounts start with zero credits. Eligible accounts can claim a one-time 100-credit trial after verifying their email, subject to trial availability. Signing in alone does not grant credits. Existing accounts and purchased-credit allowances retain their previous behavior. Trial-only accounts have a limited feature set and separate task limits.

Published top-up packages (base price before checkout fees):

PackageCreditsBase priceBase rate
Starter3,500$10$0.002857 / credit
Pro40,000$100$0.002500 / credit
Enterprise500,000$1000$0.002000 / credit

Checkout can add a platform fee. The displayed checkout total is the amount payable; the base rates above exclude that fee. For a cost comparison, divide the actual amount paid by the credits purchased. See current packages and checkout pricing.

Product pricing is published in OmnAPI credits. Suno song generation with chirp-goose costs 25 OmnAPI credits; chirp-hawk and chirp-hawk-wild generation requests cost 28 credits. suno/chirp-v3-5 is no longer available for new requests.

Use the published tables below, or read the runtime catalog from GET /api/v1/pricing/catalog, for fixed-price operations. Use POST /api/v1/mv/quote for dynamic MV quotes before creating the task. MV quote is an estimate; use POST /api/v1/mv/preflight when you also need remote resource validation and a reusable create-time estimate. Use POST /api/v1/vidu/quote for Vidu operations. maxCredits is available on MV Vidu, and Subtitle creates; Suno and Producer do not expose it.

Terminal window
curl https://api.omnapi.com/api/v1/pricing/catalog

/api/v1/pricing/catalog is public and cacheable. It returns the customer-facing credit catalog generated from the same runtime pricing functions used during task credit deduction. Its mvOmnV1 section is the Omn V1 Music Video price card: credits per output second for each render tier and delivery resolution, the minimum billed seconds, the economy schedule and the shot-edit, upgrade and recomposition rules. See Read the price card for its fields. updatedAt is the catalog’s effective date, and version changes whenever the catalog content changes.

Fixed and free operations:

Product lineOperationEndpoint / optionCredits
LyricsStructured lyric packagePOST /api/v1/lyrics/generate8 standard; see Lyrics
SubtitlesTiming extractionQuote, then POST /api/v1/subtitles/Dynamic; see Subtitles
Suno storageLong-term ordinary audioExplicit storage subscriptionPublished rate when available; see Storage
ProducerGenerate imagePOST /api/v1/producer/generate/image8
ProducerGenerate lyricsPOST /api/v1/producer/generate/lyrics1
ProducerCompose musicPOST /api/v1/producer/generate/music/compose28
ProducerModify musicPOST /api/v1/producer/generate/music/modify28
Suno DirectSong generation with chirp-goose/songs with simple, custom, upload-extend, or upload-cover25
Suno DirectSong generation with chirp-hawk or chirp-hawk-wild/songs with simple, custom, upload-extend, or upload-cover28
Suno DirectPublic Voice generation/songs with vox25 with chirp-goose; 28 with either Pro model
Suno DirectExisting-clip Extend or Cover/clips/{clipId}/derive25 with chirp-goose; 28 with either Pro model
Suno DirectLyrics generation/lyrics, including paired candidates0
Suno DirectReadsclip detail, batch clips, audio analysis, styles, Voice list/detail0
Suno DirectAligned lyrics timelineGET /api/v1/suno/clips/:clipId/timeline1 standard; 0 for the legacy Suno 55,000 plan
Suno DirectExplicit M4A export/clips/{clipId}/export with format=m4a1 standard; 0.9615 for legacy 52,000; 0 for legacy 55,000
Suno DirectMP3 export/clips/{clipId}/export with format=mp32 standard; 1.9231 for legacy 52,000; 1.8182 for legacy 55,000
Suno DirectManaged WAV export/clips/{clipId}/export with format=wav3 standard before customer pricing
Suno DirectTwelve stems / named extractstemsMode=twelve / extract (98 native Suno names)140 / 56
Suno DirectCreate public Voice from owned clipPOST /api/v1/suno/voices/from-clip5
Suno DirectCreate verified public Voice from recordingsObtain a verification phrase, then POST /api/v1/suno/voices with both recordings66
MVQuotePOST /api/v1/mv/quote0
MVPreflightPOST /api/v1/mv/preflight0
MV OneClick V2perform createmanagedVersion="premium-v2", performanceMode="perform"Standard public rate: 42 OmnAPI credits / second
MV OneClick V2sing, sing_perform, or dance createExplicit OneClick V2 mode at 720pStandard public rate: 48 OmnAPI credits / second
MV Omn V1 (pilot)Fast create by render tiergeneration.engineVersion="omn-v1"6–68 credits / output second by tier and resolution, 10-second minimum; read mvOmnV1 in the catalog
MV Omn V1 (pilot)Shot edit / render-tier upgradePOST /api/v1/mv/{mvId}/scenes/{sceneIndex}/render / POST /api/v1/mv/{mvId}/upgradeTier price × billed seconds; see Omn V1 edits and upgrades
MV FastRecompose final after Fast scene editsPOST /api/v1/mv/{mvId}/finalizeDynamic; returned on the task receipt
MV Studio BetaStoryboard + scene stillsPOST /api/v1/mv with mode="studio"250 + optional Visual Board add-on
MV Studio BetaRegenerate scene imagePOST /api/v1/mv/{mvId}/scenes/{sceneIndex}/regenerate-image15
MV Studio BetaFinalize selected scenesPOST /api/v1/mv/{mvId}/finalize50
ViduQuotePOST /api/v1/vidu/quote0
ViduVideo, image, audio, motion, template, and film tasksPOST /api/v1/vidu/tasksDynamic; 2 OmnAPI credits × Vidu credits

Dynamic MV pricing depends on managed version, performance mode, duration, resolution, add-ons, Fast recompose pricing, and selected Studio rendering options. Always call POST /api/v1/mv/quote before creating or rendering an MV when the operation supports quotes; otherwise rely on the creditsRequired value returned on the task receipt.

Vidu quotes vary by operation, model, resolution, duration, and off-peak selection. For media tools that price by the length of a supplied URL, include pricingContext.durationSec. See the Vidu API guide.

ModeResolution / add-onPublic formulaExample
Fast MV540pDynamic per-second pricingUse quote API
Fast MV720pDynamic per-second pricingUse quote API
Fast MV1080pDynamic per-second pricingUse quote API
Fast MVLip-syncDynamic per-second surchargeUse quote API
OneClick V2perform, fixed 720p21 Vidu credits/second × 2 OmnAPI credits/Vidu credit60s standard example: 2,520
OneClick V2sing, sing_perform, or dance, fixed 720p24 Vidu credits/second × 2 OmnAPI credits/Vidu credit60s standard example: 2,880
Fast MVRecompose final after Fast scene editsDynamic recompose pricingReturned on task receipt
Studio MVScene renderDynamic by selected render option, model, resolution, fps, and durationUse quote API

MV quote and preflight responses return credits as the final estimate and breakdown as the customer-facing pricing summary. breakdown.duration is billable duration in seconds, not a credit amount. The charged amount for a paid create is the creditsRequired value returned on the task receipt.

OneClick V2 scene edit and compose do not inherit the OneClick V1 price. They remain unavailable until the deployment separately enables those capabilities with approved rates. Read MVView.capabilities before exposing either action.

Every task descriptor carries up to three credit fields:

FieldSet whenMeaning
creditsRequiredTask creationThe credit amount authorized and deducted to start the task.
creditsChargedTask reaches a terminal stateThe final billed amount after completion, failure, cancellation, or partial output handling.
refundedIf credits are returnedtrue when OmnAPI returned credits for this task.

Most successful tasks have creditsCharged === creditsRequired. Failed or cancelled tasks usually have creditsCharged: 0 and refunded: true. Partial output scenarios may keep a smaller final charge when usable assets were generated before a later packaging failure.

Customer-specific pricing is calculated at 1/10,000-credit precision, then settled once for the complete order. Ordinary quoteVersion: 2 receipts use the versioned whole-credit-v1 policy and report billingIncrementCredits: 1:

chargedCredits =
ceil(calculatedCredits / billingIncrementCredits)
* billingIncrementCredits

Commercial prices that explicitly preserve decimals use quoteVersion: 3 with credit-unit-exact-v1. For example, a 28-credit operation under the exact 10/11 contract ratio charges 25.4545 credits:

{
"baseCredits": 28,
"calculatedCredits": 25.4545,
"chargedCredits": 25.4545,
"adjustmentCredits": -2.5455,
"settlementRoundingCredits": 0,
"settlementPolicyVersion": "credit-unit-exact-v1",
"billingIncrementCredits": 0.0001,
"quoteVersion": 3
}

The selected settlement policy is deliberate and frozen with the Task. Under whole-credit-v1, 2.7273 calculated credits still settle at 3; under credit-unit-exact-v1, they charge 2.7273. Always use chargedCredits or the create receipt’s creditsRequired; do not derive the debit from baseCredits or quoteVersion alone.

Persist settlementPolicyVersion and billingIncrementCredits with the quote when forecasting costs. The meaning of a named policy is stable for tasks that use it, but clients should not assume every future policy will use a one-credit increment. A future settlement rule must identify itself in the receipt, and a task’s frozen quote is not repriced after creation.

Historical quoteVersion: 1 tasks used fractional-legacy-v1. Reads such as a Task or Suno Generation may therefore return a fractional chargedCredits for those existing tasks. This preserves their original ledger amount; it does not change the whole-credit rule for new creates.

Cancellation refunds are evidence-based. A task cancelled before Provider submission is refunded immediately. After submission, OmnAPI writes CANCELLED/REFUNDED only when the Provider explicitly confirms remote cancellation. A 409 cancellation response means the task is still active and no refund occurred; keep polling it. This applies to submitted direct Suno, Producer, Vidu, and MV tasks today.

POST /producer/generate/music/compose
-> Response: { taskId, status: "PENDING", creditsRequired: 28 }
Balance immediately decreases by 28 credits.
GET /tasks/{taskId} -> status: "PROCESSING"
GET /tasks/{taskId} -> status: "COMPLETED"
{ creditsRequired: 28, creditsCharged: 28 }
END

If the task fails before producing billable output:

{
"taskId": "task_01H...",
"status": "FAILED",
"creditsRequired": 28,
"creditsCharged": 0,
"refunded": true,
"errorCode": "PROVIDER_ERROR"
}
StatuscodeWhen it happens
402INSUFFICIENT_CREDITSThe quoted charge exceeds your available balance, or an MV/Vidu/Subtitle create quote exceeds the maxCredits cap you provided.
402BALANCE_NOT_INITIALIZEDThe account balance is not ready yet. Open the dashboard once, then retry.

For MV, Vidu, and Subtitles, a maxCredits rejection happens before task creation and before any credit deduction. The error details include the final creditsRequired and the submitted maxCredits value.

Most failures are generation errors or validation errors. In those cases the task reports creditsCharged: 0 and refunded: true. The exception is partial output: if usable assets were generated but a later packaging step failed, the final task descriptor may show creditsCharged > 0. The descriptor’s errorMessage and resources fields indicate what, if anything, can still be used.

For low-balance monitors and scheduled alerts, read the exact current balance:

Terminal window
curl https://api.omnapi.com/api/v1/account/credits \
-H "x-api-key: $OMNAPI_KEY"
{
"balanceCredits": 42.5,
"balanceUnits": "425000",
"tier": "PREMIUM",
"billingStatus": "ACTIVE",
"updatedAt": "2026-08-05T08:00:00.000Z"
}

balanceUnits is the exact billing value represented as a string; one credit equals 10,000 units. billingStatus: "ON_HOLD" means paid task creation is blocked by payment review or payment reversal debt, even if the numeric balance is positive. The endpoint requires usage:read for a restricted API key and returns Cache-Control: no-store.

A card authorization or pending payment does not by itself make credits available. Where card payments are offered, use the confirmed balance and billing status after processing completes. Pending refunds, disputes, and reconciliation of a payment can keep an account on hold while the payment is reviewed. A restored balance does not necessarily mean that the review has ended.

While billingStatus is ON_HOLD, stop creating paid tasks and follow the payment status in the dashboard or contact support. Paid creation returns 403 FORBIDDEN. For compatibility, details.reason may be PAYMENT_REVERSAL_DEBT even when paymentDebtCredits is 0; use the billing status rather than interpreting that reason as proof of a positive debt. Do not repeatedly retry the same blocked payment.

Task refunds and payment refunds are different: task refunds adjust credits; payment refunds follow the payment’s status. Check the completed account update before assuming either restored spending capacity.

The dashboard surfaces:

  • Total purchased — sum of all packages bought
  • Available balance — credits available for new requests
  • Used credits — final charged credits across completed or partially billed tasks
  • Refunded credits — credits returned after failures or cancellations
  • Recent activity — task-level billing and usage history

For automated reporting, use GET /api/v1/usage/export with an API key that has usage-read access:

Terminal window
curl "https://api.omnapi.com/api/v1/usage/export?startDate=2026-07-01&endDate=2026-07-31&format=csv" \
-H "x-api-key: $OMNAPI_KEY"

Query parameters:

FieldRequiredMeaning
startDateOptionalInclusive ISO date/time lower bound. Defaults to 30 days before endDate.
endDateOptionalInclusive ISO date/time upper bound. Defaults to the current time.
apiKeyIdOptionalRestrict the export to one API key owned by the authenticated account. An ID not owned by the account returns an empty export.
formatOptionaljson (default) or csv; takes precedence over the Accept header.

The default export format is JSON. Send format=csv or Accept: text/csv for a CSV stream. The date range defaults to the last 30 days when omitted and may span at most 366 days. Large exports are streamed, so clients should read the response incrementally.

JSON returns {"items":[...]}. CSV uses the same fields in the following fixed column order:

FieldTypeMeaning
idstringUsage-record identifier.
apiKeyIdstringAPI key that made the request.
endpointstringRecorded request endpoint.
methodstringHTTP method.
statusCodenumberHTTP response status.
responseTimeMsnumberRecorded request latency in milliseconds.
creditsUsednumberCredits attributed to the request.
ipAddressstring or nullRecorded caller IP address, when available.
userAgentstring or nullRecorded caller user agent, when available.
createdAtISO date-timeUsage-record creation time.

The CSV header is exactly id,apiKeyId,endpoint,method,statusCode,responseTimeMs,creditsUsed,ipAddress,userAgent,createdAt.

Use /api/v1/account/credits for automated balance alerts, the dashboard for interactive account review, and the usage export endpoint for reconciliation, invoices, and tenant-level back-office reporting.

Send an Idempotency-Key header on any paid create POST and a retried request replays the original response instead of charging twice — see The Task Model → Idempotency. Either way, never blindly re-POST after a network timeout without a key: the submission may have succeeded silently. Poll a returned taskId. Without a receipt, the outcome is unknown: recover with the original route, body, and saved key. Never infer that no task was created merely because no task ID reached you.

You always see creditsRequired before the task runs. The dashboard and pricing catalog publish per-feature credit costs, and MV exposes quote and preflight endpoints for dynamic estimates. OmnAPI will not charge more than the create-time creditsRequired amount for a task. For MV, Vidu, and Subtitle operations that support a budget guard, use maxCredits; Suno and Producer return the fixed operation price in the receipt and reject the unsupported field.

Optional long-term resource storage combines final files across products into one monthly credit charge based on actual size and storage time after included retention. An administrator must explicitly enroll the account; existing users are disabled by default. Read the accepted rate and bills from /api/v1/storage and /api/v1/storage/charges. Generation charges remain separate.