← all posts
// models · grok

Grok 4.5: The cost and latency worksheet

Every request that reaches Grok 4.5 carries a queue wait, a token bill, and a real chance someone has to clean up the answer before it ships. That's true of any frontier API call, and no leaderboard number changes it.

xAI's product documentation names Grok 4.5 the current Grok generation across chat, files, connected tools, and multimodal work, built for conversations that need current information rather than one narrow task. The identifier to send requests to is grok-4.5. Check xAI's documentation again before production: aliases, prices, and availability move after an article like this one goes out.

what counts as a finished answer

Decide what an accepted answer looks like, and how long you'll wait for it, before you send the first prompt. For extraction that's a schema-valid record whose fields trace back to the source document. For coding it's a patch that clears tests and a human reviewer. For research it's a claim set where every claim has a source you can actually check. Fluency is not the bar.

None of those three definitions care how confident or well-written the output sounds, and confidence is exactly what a frontier model produces on demand whether it's earned or not. Skip this step and you end up grading Grok 4.5 on vibes, and every frontier model wins that contest by default because vibes are cheap to generate and expensive to argue with.

the fields your log line is missing

Run the same workload through Grok 4.5 and whatever you use today, and record more than a total token count. Reasoning effort belongs in that record too: how much you dial in changes cost and latency on its own, the same lever Codex exposes as a setting. Here's close to the minimum worth keeping per request:

FieldWhat it tells you
Model ID and dated API versionWhich exact build produced this run
Prompt and tool schema revisionWhether the harness changed under you
Input, cached input, reasoning, output tokensWhere the money went
Queue, first token, total completion timeWhat the user experienced
Task pass, retry, abstain, human repairWhether it was usable unfixed
Provider error and fallback routeWhat happens when the call fails

Preserve the complete request too: system instructions, tool schemas, attached files, sampling or reasoning settings, and the output limit. Give one harness native tools and another pasted terminal output, and the same model looks like two different products. Hold the workload constant across providers, and let each use its own documented message format instead of a lowest-common-denominator prompt.

a bigger window still costs prefill time

Treat long context claims with suspicion. A bigger window does not remove prefill time, retrieval noise, or the need to keep trusted instructions separate from whatever untrusted document just got pasted in. Put stable prefixes first if the API supports caching, keep volatile fields like timestamps away from the cache boundary, and send a structured checkpoint instead of the full history whenever one will do. Output deserves the same discipline: a short decision plus its evidence beats an essay nobody asked for.

a function call is not a permission slip

Better function selection doesn't change what the application still owes the system around it. Your code still validates arguments, authorizes the caller, limits side effects, handles duplicate requests, and records what happened, regardless of how good Grok 4.5 gets at picking the right tool. Web pages, files, emails, and tool output are data the model read, not instructions it's allowed to follow. A more capable model is no substitute for a narrow interface that only does the one dangerous thing it needs to do.

two lanes, one fallback, and a rule nobody has to remember

Optimize for verified work per dollar and per second, not the cheapest token in isolation, and write that rule into configuration instead of hoping engineers remember which model is fashionable this month. Log model identity, phase timings, token categories, tool outcomes, and evaluation results by default, without retaining sensitive prompt content unless you've decided you actually need to.

Keep a cheap, fast lane for routine work and a clear condition for when a request escalates past it. Send Grok 4.5 the requests that benefit from what it's good at, not everything the gateway happens to route through. A cheap tier stops being cheap the moment its retries and review time outweigh whatever it saved on inference.

Migration is normal operations, not a special event: pin dated versions where stability matters, watch deprecation notices, canary a new alias before it takes all your traffic, and keep a known-good fallback ready to take over. None of that is glamorous, and migrations rarely go as smoothly as the changelog implies.

What I'd check next: pull recent real traffic, replay the hardest slice of it against grok-4.5 with caching on, and write down the retry rate and human-repair time before touching a single line of router config.

#grok#xai#api#evaluation