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.
Credit value
Section titled “Credit value”Published top-up packages:
| Package | Credits | Price | Effective rate |
|---|---|---|---|
| Starter | 3,500 | $10 | $0.002857 / credit |
| Pro | 40,000 | $100 | $0.002500 / credit |
| Enterprise | 500,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.
Current price table
Section titled “Current price table”Fixed and free operations:
| Product line | Operation | Endpoint / option | Credits |
|---|---|---|---|
| Producer | Generate image | POST /api/v1/producer/generate/image | 8 |
| Producer | Generate lyrics | POST /api/v1/producer/generate/lyrics | 1 |
| Producer | Compose music | POST /api/v1/producer/generate/music/compose | 28 |
| Producer | Modify music | POST /api/v1/producer/generate/music/modify | 28 |
| Suno Direct | Song generation | /songs simple, custom, mashup, sample, inspo, persona song | 28 |
| Suno Direct | Derive clip | /clips/:clipId/derive extend, cover, overpaint, underpaint | 28 |
| Suno Direct | Lyrics generation | /lyrics, including paired candidates | 0 |
| Suno Direct | Reads | clip detail, batch clips, timeline, styles, persona list/detail | 0 |
| Suno Direct | Upload audio | POST /api/v1/suno/uploads | 5 |
| Suno Direct | WAV export | format=wav | 5 |
| Suno Direct | MP4 visualizer export | format=video | 10 |
| Suno Direct | Stems basic / full | stemsMode=two / stemsMode=twelve | 28 / 140 |
| Suno Direct | Create persona | POST /api/v1/suno/personas | 5 |
| MV | Quote | POST /api/v1/mv/quote | 0 |
| MV | Preflight | POST /api/v1/mv/preflight | 0 |
| MV Fast | Recompose final after Fast scene edits | POST /api/v1/mv/{mvId}/finalize | Dynamic; returned on the task receipt |
| MV Studio Beta | Storyboard + scene stills | POST /api/v1/mv with mode="studio" | 250 + optional Visual Board add-on |
| MV Studio Beta | Regenerate scene image | POST /api/v1/mv/{mvId}/scenes/{sceneIndex}/regenerate-image | 15 |
| MV Studio Beta | Finalize selected scenes | POST /api/v1/mv/{mvId}/finalize | 50 |
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.
| Mode | Resolution / add-on | Public formula | Example |
|---|---|---|---|
| Fast MV | 540p | Dynamic per-second pricing | Use quote API |
| Fast MV | 720p | Dynamic per-second pricing | Use quote API |
| Fast MV | 1080p | Dynamic per-second pricing | Use quote API |
| Fast MV | Lip-sync | Dynamic per-second surcharge | Use quote API |
| Fast MV | Recompose final after Fast scene edits | Dynamic recompose pricing | Returned on task receipt |
| Studio MV | Scene render | Dynamic by selected render option, model, resolution, fps, and duration | Use 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.
The task credit fields
Section titled “The task credit fields”Every task descriptor carries up to three credit fields:
| Field | Set when | Meaning |
|---|---|---|
creditsRequired | Task creation | The credit amount authorized and deducted to start the task. |
creditsCharged | Task reaches a terminal state | The final billed amount after completion, failure, cancellation, or partial output handling. |
refunded | If credits are returned | true 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.
Lifecycle by example
Section titled “Lifecycle by example”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 }ENDIf the task fails before producing billable output:
{ "taskId": "task_01H...", "status": "FAILED", "creditsRequired": 28, "creditsCharged": 0, "refunded": true, "errorCode": "PROVIDER_ERROR"}Insufficient / uninitialized balance
Section titled “Insufficient / uninitialized balance”| Status | code | When it happens |
|---|---|---|
402 | INSUFFICIENT_CREDITS | The quoted charge exceeds your available balance, or an MV create quote exceeds the maxCredits cap you provided. |
402 | BALANCE_NOT_INITIALIZED | The 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.
When you get charged something on FAILED
Section titled “When you get charged something on FAILED”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.
Reading the balance
Section titled “Reading the balance”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.
Idempotency
Section titled “Idempotency”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.
Credit cost transparency
Section titled “Credit cost transparency”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.