Skip to content

OmnAPI Credits and Billing

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 accounts receive 100 welcome credits automatically on first successful sign-in, enough to try several Producer or Suno operations before topping up.

Published top-up packages:

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

Product pricing is published in OmnAPI credits. Suno song generation with chirp-auk-turbo costs 25 OmnAPI credits; other published models and generative-derive requests remain 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 and Vidu 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.

Fixed and free operations:

Product lineOperationEndpoint / optionCredits
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-auk-turbo/songs with simple, custom, upload-extend, or upload-cover25
Suno DirectSong generation with the other five public models/songs with simple, custom, upload-extend, or upload-cover28
Suno DirectPublic Voice generation/songs with vox and chirp-crow or chirp-fenix28
Suno DirectExisting-clip Extend or Cover/clips/{clipId}/derive28
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 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 Premium V2perform createmanagedVersion="premium-v2", performanceMode="perform"Standard public rate: 42 OmnAPI credits / second
MV Premium V2sing, sing_perform, or dance createExplicit Premium V2 mode at 720pStandard public rate: 48 OmnAPI credits / second
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
Premium MV V2perform, fixed 720p21 Vidu credits/second × 2 OmnAPI credits/Vidu credit60s standard example: 2,520
Premium MV 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.

Premium 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 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 and Vidu, 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 even if the numeric balance is positive. The endpoint requires usage:read for a restricted API key and returns Cache-Control: no-store.

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
startDateNoInclusive ISO date/time lower bound. Defaults to 30 days before endDate.
endDateNoInclusive ISO date/time upper bound. Defaults to the current time.
apiKeyIdNoRestrict the export to one API key owned by the authenticated account. An ID not owned by the account returns an empty export.
formatNojson (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, so poll if you have a taskId, and only treat the request as un-submitted when you do not.

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 and Vidu operations that support a budget guard, use maxCredits; Suno and Producer return the fixed operation price in the receipt and reject the unsupported field.