AI video API billing units: per clip, per second, credits or tokens
Luma bills per generation, LTX per second, Runway and Vidu in credits, Google in tokens, MiniMax per second plus inputs, Sume in USD. Worked examples.

Seven video APIs this week use seven different billing units, so their price pages cannot be compared until you convert them to dollars for one clip. Luma bills per generation, LTX and MiniMax per second, Runway in credits worth one cent, Vidu in credits worth 0.03125 RMB, Google in tokens, and Sume in a USD wallet balance with a reservation at submit.
| Service | Unit | Worked example from the page |
|---|---|---|
| Luma Ray 3.2 | Per generation, by type, resolution, dynamic range and duration | 720p, 5 s, SDR: $0.30 |
| LTX-2.5 | Per second of output, by resolution | 1080p Fast: $0.13 per second |
| Runway | Credits at $0.01 each | gen4.5: 12 credits per second = $0.12 |
| Vidu Q4 Preview | Credits; 1 credit = 0.03125 RMB | 540p: 9 credits per second |
| Google Omni Flash | Output tokens at $17.50 per million | 5,792 tokens per second of 720p video |
| MiniMax H3 | Per second plus input materials | 768P: $0.08 per second; images after the first 5 cost $0.04 |
| Sume | USD balance, reserved at submit | wan-3.0 720p: $0.125 per second |
Converting to one clip
Pick a clip, then convert each row. For a 5-second 720p clip: Luma $0.30, LTX Fast 5 x $0.09 = $0.45, Runway 5 x 12 credits = 60 credits = $0.60, Google Omni 5 x 5,792 = 28,960 tokens x $17.50 / 1,000,000 = $0.5068, MiniMax 5 x $0.08 = $0.40. Vidu's 720p row is 19 credits per second in our reading of its table, so 95 credits, or 2.97 RMB (95 x 0.03125); convert RMB to dollars at your own rate because Vidu's page does not do it.
What changes in your code
Per-second and per-generation units can be estimated before you send a request. Token billing needs a token estimate, and credit billing needs a conversion constant that vendors can change. Sume's docs say the estimated price is reserved at submit, captured on success and released or refunded on failure, so your client can compare the reserve with the final charge. Use the Idempotency-Key header on submits that you may retry, so a retry returns the original job instead of a second billable one.
- Store the unit with every price you log.
- Convert to USD per output second for comparison only after you have confirmed the clip length and resolution.
- Re-read the vendor page before each budget, since the figures are as of 2026-10-09.
A small converter
Keep one helper that turns each vendor's rate card into dollars per output second at a stated resolution, and store the date you read the page. Vendors change prices without notice, and the Sume docs say that GET /v1/videos/models is the live source for capabilities and pricing SKUs. A spreadsheet row per vendor with unit, rate, date and URL is enough to keep a budget honest.
Sources
Related posts
More in Developers
- Video fields Sume rejects: size, seed, provider.options, audio off
Sume's /v1/videos refuses size, seed and non-empty provider.options on every model, and Omni refuses generate_audio false. What to send in their place.
- AI voiceover too loud: three Sume gain knobs and what each one costs
TTS generation_config.volume (0.5-2), Timeline audio.gain_db (-60 to 12) and soundtrack.duck_db (0-20). Which to change, and which means paying for new audio.
- Alibaba Wan 3.0 Model Studio request to a Sume /v1/videos body
Map a Model Studio wan3.0-video call (input.media, parameters, X-DashScope-Async) to POST /v1/videos with model wan-3.0. Field by field.
- Wan 3.0 workspace-id region hosts vs Sume's one API base URL
Alibaba's Wan 3.0 URLs carry a workspace id and a region host, in six regions. Sume's video API is one base URL; what to change when you port the call.
Written by Sume