API v1

How billing works

Funds for the upper bound are reserved at creation and settled on actual usage; failed and cancelled tasks are free.

View Markdown
On this page

Video generation is charged by usage, recorded in meters such as video_tokens. Every task goes through two steps: a reservation and a settlement.

Reservation

When you create a task, the platform takes the largest usage the request can produce (quote.estimated_usage_upper_bound.video_tokens) and the current price version, calculates quote.reserved_amount and reserves it from your balance. When the balance is not enough, the answer is 429 insufficient_balance with the reservation needed in error.details, and no task is created.

Settlement

After the task finishes it is settled on actual usage (usage.video_tokens): the charge comes out of the reservation and the rest returns to your balance. Once settlement_status is settled, billing.final_actual_cost is the task's final charge.

Failed and cancelled tasks are free

  • Once a failed or cancelled task is settled, its final charge and amount due are zero and the whole reservation is released.
  • When an HTTPS input cannot be prepared, the task fails with an input_* error, the whole reservation is released and nothing is charged for generation.
  • Refused requests (4xx) are refused before any reservation: nothing is reserved and nothing is charged.

An example

These numbers come from the example task of these docs:

StepUsageAmount (USD)
Reserved at creationUpper bound of 111779 video_tokens0.782453
Charged after completionActual 51652 video_tokens0.361564
Released—0.420889

Amounts

Every amount is in USD, written as a string with six decimal places, such as "0.361564". An amount that is not final yet is null.

Prices

List prices of each model are on the Pricing page; your team's prices and their versions are in the console. These docs never fix a price.

Next steps