Most teams pick one number for every endpoint, usually the largest value the model will allow, and then forget it. That choice looks safe but it hides three different problems at once.
First, output is priced differently from input. In the pricing tables that both major providers publish, output costs several times what input costs per token, and on Anthropic's and OpenAI's current lineups output is consistently the expensive meter (OpenAI token categories, token optimization cost analysis). Output is a smaller share of total volume but a larger share of the bill per token, so sloppy caps get expensive.
Second, the cap interacts with the context window. A model's context is finite, and a request that is already wide on input has less room for output; if you leave the output cap at the model maximum, long prompts can fail outright when the combined total exceeds the window (Redis: context window overflow, Ordway Labs: token limits). The practical ceiling is context_window - input_tokens, not the model's advertised maximum output (context length explained).
Third, reasoning tokens are invisible but billed. On reasoning models, internal thinking tokens count toward output usage and are charged as output tokens, so a short visible answer can consume far more output than its text suggests (OpenAI token categories). A cap sized for the visible answer will silently cut the reasoning short.
Reasoning changes the shape of the distribution, too. Evaluations built for non-reasoning models routinely hit their token limit once a reasoning model is dropped in, and the truncation is often not visible in the logs (inspect_ai issue 3582). That is the failure mode you are designing against.



