# 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 the `extra.video_seconds` to send.

## Balance

What you can spend now is your **available** balance:

```text
available = balance you added + included monthly credit left - reserved by running generations
```

A 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`](/vidlab-api/docs/balance); every generation answer also carries `x-wallet-remaining-cents`. Your balance and spend are on [Billing](/vidlab-api/billing) in the dashboard.

## Add credit

On [Billing](/vidlab-api/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](/vidlab-api/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_required` until support clears it. Write to [support@vidlab.ai](mailto:support@vidlab.ai).

## MCP and the creative agent

On the [MCP endpoint](/vidlab-api/docs/mcp) 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.
