MakerNice
← All posts
Film reels stacked neatly on a wooden desk next to an open notebook and a lit desk lampPricing

Estimate Your AI Video and Image Budget with GET /v1/pricing

MakerNice Team · ·

To estimate what a batch of AI generations will cost on MakerNice, read the unit prices from the public GET /v1/pricing endpoint, multiply them by the seconds of video or the number of images you plan, and confirm a sample with a quote. This works the same for ByteDance's Seedance 2.5, Alibaba's Wan 3.0 and Alibaba's Qwen3 Image, with no price table copied by hand.

What does GET /v1/pricing return?

GET /v1/pricing needs no API key and lists the unit prices of the current price version. The response may be cached for up to 60 seconds, which is fine for planning. Each entry in data describes one combination:

FieldWhat it holds
price_versionThe price version the whole list belongs to
modelThe model id, such as seedance-2.5 or wan-3.0
modet2v, i2v, flf, r2v, t2i or i2i
resolutionThe priced resolution, such as 720p or 1k
unitsecond for video, request for images
unit_pricePrice per unit in micro-USD, as a string
unit_price_usdThe same price in US dollars, as a string
# Find the price row for the exact model, mode and resolution you plan to use
curl -s https://api.makernice.com/v1/pricing | jq '.data[] | select(.model == "seedance-2.5" and .mode == "t2v" and .resolution == "720p")'

How do you turn unit prices into a budget?

Multiply the unit price by the quantity each generation consumes, then by how many generations you plan. Keep the arithmetic in integers or decimals, because amounts are micro-USD and 1,000,000 of them make one US dollar.

TypeunitQuantity per generationBudget formula
VideosecondThe duration in secondsunit_price × seconds × clips
Imagerequest1 (one image per generation)unit_price × images
from decimal import Decimal

# row is the matching entry from GET /pricing; unit_price is micro-USD per second
unit_price = Decimal(row["unit_price"])
seconds_per_clip = 8
clip_count = 20

total_micro = unit_price * seconds_per_clip * clip_count
total_usd = total_micro / Decimal(1_000_000)
print(total_usd)
3D clay illustration of three price tags merging into a multiplication sign that flows into a piggy bank
Unit prices, multiplied by seconds or images, add up to the budget your wallet needs.

As a worked example in words: 20 clips of 8 seconds each is 160 seconds of video. Find the row for your model, mode and resolution, multiply its unit price by 160, and divide by 1,000,000 to get US dollars. If the batch mixes models or resolutions, repeat this per group and add the results. Models without a resolution field, such as Kling 3.0 Pro, have a single row per mode, so there is nothing to choose.

Why confirm the estimate with a quote?

The list is for planning; the quote is the binding number. POST /v1/generations/quote with your real input returns the exact amount for that request, valid for 12 minutes and for one generation. Request one quote for each distinct combination of model, mode, resolution and duration in your workload and compare it with your estimate. If they differ, compare the price_version in the quote with the one in the list to see whether prices changed.

How much balance does the wallet need for a batch?

  • Money is held when a generation is created, so the wallet must cover every generation in flight, not only the final total.
  • Failed generations, and generations canceled while queued, release their hold in full, so retrying failed jobs does not double the bill.
  • A single top-up can be anywhere from $15 to $1,000. Plan top-ups around your largest batch.
  • Give each key a spend limit that matches its job; over it, create returns 402 key_spend_limit_reached, and an account over its daily limit gets 402 daily_spend_limit_reached.

Prices change over time, which is why this post quotes none. Use the live list on the Pricing page or GET /v1/pricing, confirm with a quote, and read how video pricing works for the hold, charge and release rules.

Frequently asked questions

Do I need an API key to call GET /v1/pricing?
No. GET /v1/pricing is public, like GET /v1/models. Responses may be cached for up to 60 seconds, so a price change can take up to a minute to show.
How do I estimate the cost of a 10 second Wan 3.0 clip?
Find the row where model is wan-3.0, mode is t2v and resolution is 720p, the default. Multiply its unit_price by 10 and divide by 1,000,000 to get US dollars, then confirm with a quote.
Should I use unit_price or unit_price_usd for calculations?
Use unit_price. It is an integer string of micro-USD, so you can multiply it exactly and convert to dollars once at the end; unit_price_usd is the same price written in dollars for display.
What if my quote does not match the estimate from GET /v1/pricing?
The quote wins, because it is the amount you will be charged. A different price_version in the quote means prices changed after you read the list, so refresh your estimate.

Models in this post