MakerNice
← All posts
The beam of an old film projector cutting through a dark screening room, dust floating in the lightPricing

How AI Video API Pricing Works: Per Second, Locked by a Quote

MakerNice Team · ·

MakerNice prices AI video per second: the cost of a request is a unit price multiplied by the duration you ask for. The unit price depends on the model, such as ByteDance's Seedance 2.5, Alibaba's Wan 3.0 or Kuaishou's Kling 3.0 Pro, plus the mode and the resolution. A quote locks that price for 12 minutes, and the money comes from a prepaid US dollar wallet.

How is the price of an AI video calculated?

Price equals unit price times seconds. For video the billing unit is second and the quantity is the duration, so with the model, mode and resolution fixed, a 10 second clip costs exactly twice a 5 second clip. If you leave duration out, the model default applies, which is 5 seconds for Seedance 2.5, Wan 3.0 and Kling 3.0 Pro. Amounts are strings of micro-USD, where 1,000,000 equal 1 US dollar, so parse them as integers or decimals, never as floating point numbers.

Which request fields change the price of a video?

Only the fields that pick a price row or set the quantity count. The quote records them, and create checks that they did not change:

FieldChanges the price?Why
modelYesEach model has its own unit prices
modeYest2v, i2v, flf and r2v are separate price rows
resolutionYesEach resolution is its own price row
durationYesIt is the quantity, in seconds
promptNoNot part of the price; edit it after quoting
aspect_ratioNoA creative choice, not a price input

What if a video model has no resolution option?

Some models let you choose the resolution and some do not. When a model lists no resolutions, the request must not include the field, otherwise you get 400 invalid_request, and the price comes from a single fixed tier. Duration limits differ per model too:

ModelResolution you can requestDuration range
Seedance 2.5480p, 720p, 1080p, 4k (default 720p)4 to 30 seconds
Wan 3.0480p, 720p, 1080p (default 720p)2 to 30 seconds
Kling 3.0 ProNone, priced at 1080p3 to 15 seconds
Kling 3.0 StandardNone, priced at 720p3 to 15 seconds

How does a quote lock the video price?

Before you create a generation, call POST /v1/generations/quote with the exact input. The response holds the amount, the price_version, an expires_at timestamp 12 minutes ahead and a facts object that shows what was priced. Create with that quote and you pay the quoted amount even if prices change in between. Each quote works for one generation only.

{
  "id": "qt_...",
  "amount": "<micro-USD as a string>",
  "price_version": 3,
  "expires_at": "<12 minutes after the quote>",
  "facts": { "model": "seedance-2.5", "mode": "t2v", "resolution": "720p", "variant": "default", "unit": "second", "quantity": 5 }
}

When is your wallet charged for a video?

Creating a generation holds the quoted amount from your balance, and the generation's billing field shows held. The final status decides what happens to that money:

3D clay illustration of equal-width blocks rising step by step on a base, with a padlock, a wallet and a coin in a tray
Every second adds an equal step to the price; the quote locks it, and an unused hold goes back to the wallet.
StatusbillingWhat happens to the money
queued or generatingheldThe quoted amount is reserved
succeededchargedThe held amount is charged on delivery
failedreleasedThe hold is returned in full
canceled (only while queued)releasedThe hold is returned in full
checkingheldStays held until the result is confirmed

How do you fund the wallet and cap spending?

Top up from the console; a single top-up is between $15 and $1,000. Each API key can carry its own spend limit, so a leaked or runaway key cannot drain the wallet. When a hold would exceed the balance, create returns 402 insufficient_balance; a key over its limit returns 402 key_spend_limit_reached, and an account over its daily spend limit returns 402 daily_spend_limit_reached until it resets at 00:00 UTC.

For live unit prices, open the Pricing page or call GET /v1/pricing, which needs no key. The estimate your generation budget post shows how to turn those prices into a budget for a whole batch.

Frequently asked questions

Does a longer prompt cost more with Seedance 2.5?
No. The prompt is not part of the price, so a detailed prompt costs the same as a short one. Only the model, mode, resolution and duration in seconds set the amount.
How is Kling 3.0 Pro priced if it has no resolution parameter?
Kling 3.0 Pro is priced per second at a single fixed 1080p tier, and every request includes audio. Sending a resolution field returns 400 invalid_request.
What does billing: released mean on a generation?
It means the held amount went back to your wallet in full. You see it when a generation fails or when you cancel it while it is still queued.
Why does create return 402 daily_spend_limit_reached?
Your account has a daily spend limit, and the new hold would take the day's spending past it. The limit resets at 00:00 UTC.

Models in this post