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. For compatibility with earlier Suno Cloud integrations, common paid Suno music-generation requests are priced at 28 OmnAPI credits.

Use the published tables below for fixed-price operations and 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 maxCredits on create when you need a hard charge cap.

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/songs simple, custom, mashup, sample, inspo, persona song28
Suno DirectDerive clip/clips/:clipId/derive extend, cover, overpaint, underpaint28
Suno DirectLyrics generation/lyrics, including paired candidates0
Suno DirectReadsclip detail, batch clips, timeline, styles, persona list/detail0
Suno DirectUpload audioPOST /api/v1/suno/uploads5
Suno DirectWAV exportformat=wav5
Suno DirectMP4 visualizer exportformat=video10
Suno DirectStems basic / fullstemsMode=two / stemsMode=twelve28 / 140
Suno DirectCreate personaPOST /api/v1/suno/personas5
MVQuotePOST /api/v1/mv/quote0
MVPreflightPOST /api/v1/mv/preflight0
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

Dynamic MV pricing depends on 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.

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
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.

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.

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 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, 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.

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

Use the dashboard for balance and usage 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; use maxCredits when you need the API to reject any create request above your own budget cap.