You pay only for success
Credits are charged when a job reachessucceeded. You are not charged for:
- jobs that
failortimeout, - the time a job spends queued or processing,
- requests rejected before generation (e.g. invalid input, content policy).
Per-model pricing
Each model has a published price, returned byGET /v1/models:
- Images are priced per output image (
credits_per_generation). Most requests return one image and cost that price. A request that returns several — see multiple images per request — is charged per image, so a 3-image result costs3 × credits_per_generation. - Video is priced per second (
credits_per_unitwithunit_type: second), so total cost scales withlength_seconds. Some models (e.g. SeeDance 2.0) charge a different per-second rate per resolution —GET /v1/modelsreturns aresolution_pricingmap, and the cost isthat rate × length_seconds. - Music is a flat price per track (
credits_per_generation) whatever its length — Music 3.0 / 2.6 = 200, Lyria 3 = 100, Mureka V9 = 60 credits — except the two per-second Sonilo models:- Sonilo Music (
sonilo-music) makes instrumental/background music of an exact length and bills per second of the requestedduration:credits_per_unit= 4 with a 10-second minimum — 10 s = 40, 30 s = 120, 60 s = 240, 180 s = 720 credits. - Sonilo Video Music (
sonilo-video-music) composes a soundtrack for an input video and bills the video’s measured length, rounded up to whole seconds, at 15 credits/s with a 10-second minimum — a 30 s clip is 450 credits, a 60 s clip is 900.POST /v1/costreturns the per-second rate for this model (the duration is only known once the video is analyzed at submit time).
- Sonilo Music (
- Sound effects are priced per second (
credits_per_unitwithunit_type: second) with a 3-second minimum (min_billable_seconds):sonilo-sfx(text) bills the requesteddurationat 5 credits/s —5 × max(3, duration): 3 s = 15, 5 s = 25, 10 s = 50, 30 s = 150, 180 s = 900 credits.sonilo-video-sfx(video) bills the input video’s measured length, rounded up to whole seconds, at 15 credits/s — a 4.2 s clip is 5 s = 75 credits, a 60 s clip is 900.POST /v1/costreturns the per-second rate for this model (the duration is only known once the video is analyzed at submit time).
-
flux-2-pro prices by output size:
0.5MP= 15,1MP= 25 (default),2MP= 50,4MP= 80 credits per image. -
grok-imagine-image-2 prices by
quality×size— both parameters move the price together:Omitting either parameter uses the cheapest cell (low/1K= 50 credits). This model has nohighquality tier, and the optional inputimageis free — editing costs the same as generating. Example:{"size": "2K", "quality": "medium"}costs 100 credits. -
seedream-5.0-pro prices by output size and input images:
1K= 55 (default) or2K= 110 credits per image, plus 5 credits perreference_imagesitem after the first (the first input image is free). The input fee applies per generated image — each output is its own generation call carrying its own inputs. Example: a2Krequest with 3 reference images andnum_images: 1costs110 + 2 × 5 = 120credits. -
seedream-5.0-flash is a flat 25 credits per image at
1Kand2K, and itsreference_images(up to 10) are free — a2Kedit with 10 references still costs 25. -
minimax-h3 (video) prices per second of output (160 credits/sec at 2K) plus
per second of reference-video input: each
reference_videosclip is measured and billed at 160 credits per second of input (rounded up on the combined total).reference_images(up to 5) andreference_audiosare free. Example: a 5-second generation guided by a 8.2s reference clip costs5 × 160 + 9 × 160 = 2240credits. -
minimax-h3-max (video) prices per second of output by resolution (480p = 65,
768p = 105, 1080p = 210, 2k = 420 credits/sec — 2k on extension only) plus 170 credits
per second of video input: every
reference_videosclip, or the sourcevideoof an extension (billed on its first 15 seconds), rounded up on the combined total. The first tworeference_imagesare free and each further one adds 50 credits;reference_audiosand theaudiosoundtrack are free. Example: extending a 10.2s clip by 5 seconds at 768p costs5 × 105 + 11 × 170 = 2395credits. -
seedance-2.5 (video) prices per second of output by resolution (480p = 150,
720p = 330, 1080p = 750 credits/sec) plus per second of reference-video input at half
the output rate (480p = 80, 720p = 160, 1080p = 375 credits per input second, rounded
up on the combined total).
reference_images(up to 15) andreference_audiosare free. Example: a 5-second 720p generation guided by a 8.2s reference clip costs5 × 330 + 9 × 160 = 3090credits. -
seedance-2.0 / seedance-2.0-fast / seedance-2.0-mini (video) price video-edit
the same way: when a
videoinput is supplied (2–15s), its measured duration is billed at half the model’s output per-second rate for that resolution on top of the output (rounded up). Example: a 5-second 480pseedance-2.0-miniedit of a 4s clip costs5 × 60 + 4 × 30 = 420credits. Text/image/reference-image requests are unaffected — output seconds only. -
wan-2.7-video prices per second of output by resolution (720p = 100,
1080p = 150 credits/sec). When a
videoinput is supplied the request becomes a video edit, which bills the input clip’s measured duration at the same full per-second rate on top of the output — there is no half-rate discount here. Video edit also takes its output length from the input clip (length_secondsis ignored), so a clip is billed twice over: once as input, once as output. Example: editing an 8.2s clip at 720p costs9 × 100 + 9 × 100 = 1800credits.reference_images(up to 4, video edit only) are free. Text-to-video and image-to-video requests are unaffected — output seconds only. -
wan-3.0-video prices per second of output only, by resolution (480p = 60,
720p = 120, 1080p = 240 credits/sec; the high-speed wan-3.0-video-prime tier is
85 / 170 / 340). All input media is free — reference images,
reference video clips, and reference audio never add to the charge (the only constraint
is that input video duration +
length_secondscan’t exceed 30 seconds). Example: a 5-second 720p edit guided by an 8.2s reference clip costs5 × 120 = 600credits. -
Video upscaling (
POST /v1/video-upscales/topazlabs-video-upscale) is priced per second of the input video (measured server-side, rounded up; input up to 20s) by target tier: 1080p = 15 (30fps) / 30 (60fps), 4K = 60 / 120 credits per second. -
Upscalers (
POST /v1/upscales/{model}) are priced per image: p-image-upscale by itstargetresolution tier — 4 MP = 10, 8 MP = 15, 16 MP = 30, 32 MP = 60 credits (input media never adds to the charge) — and clarity-upscaler at a flat 30 credits.
POST /v1/cost resolves all of this — send the exact body
you plan to generate with.
Your plan’s perks follow you to the API. Model discounts and active promotions
apply to API charges exactly as they do on the web (
POST /v1/cost quotes your
discounted price), and the Pro/Ultra daily free-models allowance — a shared pool
of free generations per day (Pro 100, Ultra 300) across qualified image models like
flux-2-klein and qwen-image — covers API requests too. Once the day’s
pool is used, those models charge their standard price until the reset (midnight UTC).
Other promotional free daily generations remain web/app-only.Utility pricing (conversions & posts)
These endpoints aren’t models, so they don’t appear inGET /v1/models — their
pricing is flat and stated here and on each endpoint’s reference page:
Charged on success only, like generation.
POST /v1/cost also resolves them — send
{ "model": "convert-image" } (or convert-video / convert-audio / create-post).
A post that is later hidden by content review is not refunded — it was published.
Estimating cost up front
To know what a request will cost before running it, POST the same body to/v1/cost
with model added:
exact is true for deterministic pricing; for seedream’s sequential mode (the model decides
how many images, up to max_images) credits is the ceiling and exact is false — the real
charge is always ≤ it.
Checking your balance
total_available is what you can spend right now (monthly remaining plus any
purchased extra credits). If a request would exceed your available balance, it’s
rejected before the job is created. For a multi-image request we reserve the maximum it
could cost (max_images × credits_per_generation) up front, then charge only for the
images actually returned.
Spend limits and alerts
You can put guardrails on API spend in the developer console under Billing. Both controls count programmatic traffic — API keys and the MCP connector — since both can run unattended. Usage in the web app is separate and never blocked by them.- Monthly spend limit — once your API usage reaches this many credits in a
calendar month, new
/v1requests and MCP generations are rejected until you raise or remove the limit, or the month rolls over. Jobs that were already accepted finish and bill normally, so a month can close slightly above the cap. Setting the limit to0pauses all API and MCP traffic immediately (a kill switch for a leaked key — though you should also revoke the key). - Spend alert — an email to your account address when the month’s API usage crosses a threshold. Purely informational, sent at most once per month; nothing is blocked. Set it below your limit to get warning before requests pause.
429 with:
rate_limited, backing off won’t clear this —
don’t retry on monthly_spend_limit_reached; raise the limit (or wait for the
new month) instead.