Pricing

Three tiers, because the models are three kinds.

A vision-language model answers from one prompt. An action policy reads one frame per camera and returns a chunk. A world model rolls thirty-three frames forward before it commits to a move. Three kinds of work that differ by orders of magnitude, so one flat rate would price them all wrong — the tier follows the architecture, and the architecture is printed next to every model in the catalogue.

Contact us Log in

Per million tokens

VLM · vision-language
from $0.11 / $0.462
Input / output, priced per model rather than per tier — the spread between a frontier vendor model and a self-hostable one is too wide for one number. Some you can also self-host — Qwen3-VL is Apache-2.0 and Cosmos3-Reason is OpenMDW-1.1, which is what keeps this tier's floor honest over time.
VLA · action policy
$2 / $6
Feed-forward policies reading one frame per camera. A single GPU serves dozens of arms at once, so this is the only tier with ordinary margins.
WAM · world-action
$20 / $60
Models that imagine the next few seconds before acting. One GPU does not finish a single robot's work in real time, and DreamZero needs two. The price is what the hardware costs, not a strategy.
These numbers are placeholders. The structure is real and load-bearing; the figures have not yet been regressed against measured GPU-seconds on our own hardware. They will move before anyone is charged, and this line will disappear when they stop being guesses.

What counts as a token

A robot does not send text, so the unit had to be defined rather than borrowed. It is defined so that the meter tracks the work: an image is 256 tokens, a state dimension is one, and an action chunk is its step count times its width.

SideCounted asRateWhy
observationframes × 256, plus one per state dimension, plus instruction text input Frames dominate, which is exactly right: a world model reading 33 of them is doing an order of magnitude more work than a policy reading one.
actionsteps × action_dimoutput Longer chunks and wider embodiments are more work. It also removes the incentive to stretch the chunk purely to save money, which would cost you control quality.
prompt / completionimages × 256, text at ~4 chars each input / output The vocabulary of the chat half. The action half calls the same two sides observation / action — same structure, words that fit each domain.
World models cost more because of what they hold, not what they read. All of them take one frame in; the seventeen or thirty-three are what they imagine forward. What separates the tiers is how long a card stays occupied: pi05-droid answers in 18 ms and one GPU carries about 57 robots, while dreamzero-agibot takes three seconds, carries 0.53, and wants two cards to do it. A hundredfold spread priced at ten — and the way to close it is distillation, not a discount.

Frames received and frames used

A VLA keeps only the newest frame per camera. Send it thirty and twenty-eight are dropped — but they still crossed the wire and still hit storage, so they are still billed. Rather than hide that, every response reports both numbers.

response.usagethe gap is visible
{
  "observation_tokens": 5133,
  "action_tokens":      480,
  "total_tokens":       5613,
  "frames_received":    20,   // what you sent, and what you pay for
  "frames_used":        2     // what this model actually read
}

// A large gap means check context_frames in the catalogue —
// this model wanted 1 frame per view and you sent 10.

Dedicated capacity

Once a policy is yours and the load is steady, tokens stop being a useful proxy for GPU time. Dedicated containers bill per GPU-hour with scale-to-zero between shifts, and the crossover sits around a third of a GPU held continuously. Nothing in your code changes at that boundary — only the model string.

Dedicated container inference Talk about volume