Billing
The API is prepaid. You add credit, each generation reserves its price while it runs, and only a success is charged. Nothing is ever billed after the fact. Credits are shown in the dashboard, 100 credits to the dollar; the API speaks dollars.
| Price | Fixed when you submit: the model's price for the option, times the units. POST /v1/generations/quote gives the same number for free. |
|---|---|
| Reserved | reserved_usd is held on your balance when you submit, so parallel generations cannot spend the same money twice. |
| Charged | Only on succeeded, at the quoted price, once. |
| Failed | Never charged. The reservation is released at once. |
Your price never changes with the route that runs the generation.
Reference video
A reference or source clip you send in video is billed too. On a model with a +video_input price, the output seconds and the reference clip's seconds are both counted, at that rate.
- The quote assumes the clip is as long as the output. To quote a longer one, send its length in whole seconds as
extra.video_seconds. - Once the clip is measured, you are charged for its real seconds, never more than the quote.
- A clip longer than the quote fails with
reference_changed, free. The message says theextra.video_secondsto send.
Balance
What you can spend now is your available balance:
available = balance you added + included monthly credit left - reserved by running generationsA submit whose price is more than your available balance answers 429 api_wallet_exhausted and nothing starts. Read it any time with GET /v1/balance; every generation answer also carries x-wallet-remaining-cents. Your balance and spend are on Billing in the dashboard.
Add credit
On Billing, choose an amount and pay by card through a secure checkout. The credit arrives as soon as the payment clears.
- Packs: $20, $50, $100 or $250.
- Or any amount from $10 to $5,000.
- Credit is added at face value: $50 paid is $50 to spend.
Auto-reload
Turn on auto-reload on Billing to top up by card when you run low, so long jobs and pipelines never stop for an empty balance.
| Setting | Default | Range |
|---|---|---|
| Reload when the balance drops below | $10 | $1 to $1,000 |
| Reload amount | $50 | $10 to $5,000 |
| Monthly cap on reloads | $1,000 | the reload amount to $25,000 |
- A reload is tried when a charge leaves you below the threshold, at most once every 10 minutes, and never past the monthly cap.
- A declined reload emails you. After 3 declines in a row, auto-reload switches off until you turn it on again.
Refunds
- Failed generations are never charged, so there is nothing to refund.
- Top-ups: a refunded top-up takes its credit back from the balance (never below zero). A disputed payment pauses the balance for a billing review: generations then answer
503 api_wallet_reconciliation_requireduntil support clears it. Write to support@vidlab.ai.
MCP and the creative agent
On the MCP endpoint the model tools (generate) and the format tools (run_format) bill the API wallet exactly like REST, whether you sign in with a key or with OAuth. The creative agent (ask_vidlab and the VidLab app's other tools, without ?profile=api) bills your plan's credits.