$0.044). 1 credit = $1 USD.
Quick reference
| Task | How |
|---|---|
| Check balance | Dashboard Credits page or GET /v1/user/billing |
| Preview cost | GET /v1/estimate/{model_identifier} |
| Buy credits | Billing page → Credit packs section |
| View transactions | Dashboard Credits page → transactions table |
| Insufficient credits | Error BSE1004, HTTP 402 |
Permissions
| Action | primary-owner | owner | member |
|---|---|---|---|
| View balance and transactions | ✓ | ✓ | ✓ |
| Purchase credit packs | ✓ | — | — |
How you get credits
| Source | When | Amount |
|---|---|---|
| Welcome credits | Automatically on account creation (once per user) | $1.000 |
| Subscription plan | Added at billing cycle | Matches plan allocation |
| Credit packs | Purchased via Billing | $10, $25, $50, $100, $500, $1,000 |
Plan allocations
| Plan | Monthly | Yearly |
|---|---|---|
| Starter | $9.000 | $90.000 |
| Pro | $29.000 | $290.000 |
| Scale | $99.000 | $990.000 |
| Enterprise | $199.000 | $1,990.000 |
Credit pack requirements
Credit packs require an active Starter, Pro, Scale, or Enterprise subscription andprimary-owner role. Without both, the purchase controls are disabled.
How credits are consumed
Every generation follows an atomic reserve-charge-refund sequence:| Phase | Action | Balance impact |
|---|---|---|
| Reserve | Balance verified, estimated cost deducted atomically | Decreases |
| Process | Generation runs at upstream provider | No change |
| Charge | Generation succeeds, reservation confirmed | No change |
| Refund | Generation fails, reserved credits returned | Increases |
BSE1004 and the generation never starts:
Balance
Navigate to Credits in the console to see your current balance:Check balance via API
Requiresaccount:read scope. See Scopes.
- cURL
- SDK
Terminal
Cost estimate API
Preview what a generation will cost before dispatching it. The estimate endpoint is free — it consumes no GPU compute and deducts nothing from your balance. Requireslibrary:read scope.
- Image model
- Video model
- SDK
Terminal
count (1–100, default 1) to estimate multiple outputs in one call. Values outside that range are clamped.
Response fields
| Field | Description |
|---|---|
cost_per_generation | Cost for one output |
cost_total_consumed | Total cost for the full request |
credit_balance | Your current balance |
credit_balance_can_afford | true if balance covers the generation |
credit_balance_max_affordable | How many generations you can afford at this cost |
duration_seconds, cost_per_second, and resolution.
Image models use a per-generation price. Video models use a per-second price that can vary by resolution or audio mode. See the model pricing page for the full list.
Transactions
Navigate to Credits in the console. The ledger table records every credit operation. Use the fullscreen icon for more space — the table paginates at 300 rows per page.Transaction types
| Type | Badge | Color | When it appears |
|---|---|---|---|
reserve | Reserved | Blue | Credits deducted before a generation starts |
charge | Charged | Green | Generation succeeded, reservation confirmed |
refund | Refunded | Red | Generation failed, credits returned |
add | Added | Teal | Credits added via subscription, credit pack, or welcome bonus |
Amount display
| Type | Prefix | Example |
|---|---|---|
reserve | (none) | 0.044 |
charge | - | -0.044 |
refund | + | +0.044 |
add | + | +29.000 |
Search
Filter by type, model, generation ID, description, or amount. Search applies across all visible columns simultaneously.Reading the ledger
Successful generation — reserve and charge share the same generation ID. Balance doesn’t change between them because credits were already deducted at reservation:| Type | Amount | Balance | Model | Generation ID |
|---|---|---|---|---|
| Reserved | 0.044 | 12.436 | bfl/flux-1.1-pro | 550e8400-… |
| Charged | -0.044 | 12.436 | bfl/flux-1.1-pro | 550e8400-… |
| Type | Amount | Balance | Model | Generation ID |
|---|---|---|---|---|
| Reserved | 0.044 | 12.436 | bfl/flux-1.1-pro | 550e8400-… |
| Refunded | +0.044 | 12.480 | bfl/flux-1.1-pro | 550e8400-… |
| Type | Amount | Balance | Description |
|---|---|---|---|
| Added | +29.000 | 41.480 | Subscription renewal |
Welcome credits, Subscription renewal, Credit pack purchase.
Idempotency
Every transaction is idempotent. Duplicate charge or refund events for the samegeneration_id are silently ignored. Duplicate additions are keyed by account plus description.
Best practices
Always estimate before generating
TypeScript
Monitor balance in your pipeline
TypeScript
Plan for high-volume runs
Calculate total cost before starting a batch. Purchase credit packs first — they are provisioned instantly after payment.TypeScript
Watch for anomalies in your ledger
| Pattern | What it may indicate |
|---|---|
| Repeated refunds | Upstream model or provider instability |
| High charge amounts | Longer video duration or higher resolution than expected |
| Unrecognized generation IDs | Compromised API key — revoke immediately and audit Logs |
| Reserved but never charged | Generation stuck in processing |
Know your audit trail window
Credit transaction history is retained per plan. Export programmatically if your compliance policies require longer retention — native export is not available in the credits UI.| Plan | Credit audit trail |
|---|---|
| Free | 30 days |
| Starter | 90 days |
| Pro | 180 days |
| Scale | 1 year |
| Enterprise | 1 year |
Quick tips
| Do | Don’t |
|---|---|
| Use the estimate API before generating | Assume all models cost the same |
| Monitor balance programmatically | Wait for a BSE1004 error to check balance |
| Purchase credit packs before high-volume runs | Rely solely on subscription credits for spikes |
| Review the model pricing page regularly | Hard-code cost values in your application |
| Review transactions for unexpected charges | Ignore the credits table |