cheap, balanced or strong — and we decide which model serves it. That indirection is the product: the day a smaller specialist beats the current cheap model at a fraction of the cost, your call gets cheaper and your code does not change.
Overview
Billing is per token, in six rows: input and output at each of the three capabilities. Output costs several times input on every model worth using, and the strong grade costs several times the cheap one, so a single blended token price would be wrong in both directions at once. Theusage field in each response is exactly what went on your invoice.
It is cheap because of what it does not send. Passage selection scores a long input against what you actually asked for and drops the rest; a thinking budget stops a trivial call from billing eight times its visible answer at the output rate; an exact-result cache answers a repeated call without a vendor round trip. Each of those is measured before it is turned on, and none of them changes what you are charged — the savings are ours to earn, which is why the price is per token submitted rather than per cent we spent.
Everything is priced at the model’s published rate, computed from tokens on our side rather than read back from the vendor, so what we charge you and what the envelope allows can never disagree with each other. A call that fails after the model ran still consumed tokens and is still billed for them; a call that never reached a vendor costs nothing.
usage.truncated is true when the model stopped because it hit maxOutputTokens rather than because it had finished. It is not an error — the tokens were spent, the partial answer is often still what you wanted, and the ceiling was yours — but a truncated answer is indistinguishable from a short one without it, and a truncated JSON object will not parse. Raise the ceiling and call again, or accept the prefix; a truncated result is deliberately not cached, so the retry is a real one.
What it does not do: there are no tools, no function calling and no multi-turn conversation state — one system prompt, one user message, one answer. That is a deliberate containment boundary, not a roadmap gap: the inputs here are frequently scraped pages, and a model that reads untrusted text and can also act on it is a different risk product. It does not stream, and it does not let you name a model directly — if you need a specific model id, you want that vendor, not us.
Endpoints
POST /v1/inference — One model call, priced per token, at three grades — with the routing, compression and caching that make the cheap grade cheap.usage — the quantity you were metered for this call.
Request options
Pricing
Only calls that returned a result are billed. Failures cost nothing. Billed monthly in arrears — see Billing.
Authentication
Send a key as a bearer token. This service’s operations require theinference:run scope, granted independently — and the project must have Ember enabled. See Authentication.
