We generate video from an API all day: a persona, a clip, a replacement, an upscale. The bill is the largest line in the product, so when a reader sent us a screenshot showing a ten-second clip for about $2.30 while our own quote for the same thing read $4.62, it was worth a day of measuring rather than a shrug about markups.
What follows is one model, Seedance 2.5, bought two ways on 21 October 2026. No modelling, no estimates from a pricing page: a real generation, the token counter the provider returns in its own response, and the rates as they appear in the console.
AI video API pricing is a token count wearing a per-second costume
Video models are advertised per second and billed per token, and the token is not a word. For this family it is a count of pixel-frames: the width times the height times the frame rate times the seconds, divided by 1024.
We tested the formula against the only authority that matters, the provider's own meter. A four-second clip at 480p, 9:16, came back as a real file of 480×854 at 24 fps with an audio track, and the response reported 38,830 tokens. The formula predicts between 38,430 and 38,880 depending on whether the true frame is 854 or 864 pixels tall. That is agreement to within one percent, which means the arithmetic below is not a guess.
Seedance 2.5 API pricing: one model, two prices
Our rate came off an invoice: $0.0214 per 1,000 tokens through the aggregator we had been using. The console of ByteDance's own ModelArk lists the same model at $0.0107 to $0.011 per 1,000 tokens with no video on the input, and $0.0064 to $0.0070 with one. Exactly double, at every tier.
Here is what that does to a twelve-second clip at 720p, which is a perfectly ordinary thing to want. The bars are dollars for one render.
The cross-check that convinced us was not ours. A public post priced a ten-second 720p clip at about 200 roubles, roughly $2.31. The direct rate times ten seconds at 720p gives $2.31 to the cent. The resellers were not undercutting anyone; they were simply buying at the counter while we bought through a window.
What else you pay for that no pricing page lists
The rate is the smallest part of the surprise. These four cost us real money in a single week, and none of them appears on a pricing page.
None of that is dishonesty on anybody's part. It is what happens when the unit you are billed in is not the unit you think in.
What to do about it
We have not moved everything, and we are not about to recommend you do either. What we did change is that every step in our pipeline now shows its own price before it runs, and the resolution is a choice on the node rather than a default buried in a request.
How a cheap clip becomes an expensive one
The week that produced these numbers went roughly like this, and every stage of it is ordinary.
The fix for the last one is not a cheaper model. It is knowing what the engine refuses before you pay: the clip length window it accepts, what it needs to see in the first frames, and whether it edits your footage or reshoots the scene. We wrote down what each engine actually does when we learned it the expensive way, and the same exercise for text models produced a finding of the same shape: the average hides everything worth knowing.
See the price before the render, not after
Sndwich builds video as a chain of steps. Each one quotes itself from the rate it will actually be billed at, and the engine picker says what each model does and refuses.
5 minHow to create an AI influencer: what the job actually is
6 minAspect ratio is not valid for Reels ads: what Instagram actually measures
5 minLLM cost per request: what 204 production calls actually cost