I use an OpenAI API to create a model response, which is intended to retrieve some information from the internet. Why, with exactly the same prompt and settings, does GPT 4.1 use 1 118 input tokens, while GPT 5 uses a whopping 120 549? Yeah I know that the prompting should be optimised differently for GPT 5 but still that 100x difference sounds very odd. Can someone explain me why GPT 5 uses so much more input tokens? I tried GPT 5 mini also and it uses almost the same amount than GPT 5 (few thousands less but still way over 100 000 tokens)?
It’s a reasoning model.
To be closer to calling 4.1 from a token count perspective you will need to make sure reasoning effort is set to “minimal”.
Sounds like it was doing a lot of “thinking” ![]()
Yeah, but I thought it uses output tokens to think. The same exact output uses way more tokens too, but not that much more, and I thought that it was because it thinks more. But I guess it uses input tokens to think as well?
Yes, you are right, sorry I missed that. According to the docs it should bill reasoning tokens to output total.
https://platform.openai.com/docs/guides/reasoning#how-reasoning-works
![]()
I think this is because gpt-5 and o-series models price the web_search_preview tool at 1c per web query + token costs. Which is different from 4o and 4.1, which have a flat 2.5c per web query, without additional token costs). So it makes sense that usage data would include the tokens of the raw web text for gpt-5 but not for 4.1. https://platform.openai.com/docs/pricing#built-in-tools
I ran a simple test with 4.1 and 5. This is what I’d expect since any cost calculation function getting the usage data would want token usage only when it is billable.
gpt-4.1
“usage”: {“input_tokens”: 374,“input_tokens_details”: {“cached_tokens”: 0},“output_tokens”: 29,“output_tokens_details”: {“reasoning_tokens”: 0},“total_tokens”: 403},“user”: null,“metadata”: {}
gpt-5
“usage”: {“input_tokens”: 13701,“input_tokens_details”: {“cached_tokens”: 8320},“output_tokens”: 1252,“output_tokens_details”: {“reasoning_tokens”: 1216},“total_tokens”: 14953},“user”: null,“metadata”: {}
Also keep in mind that the model can make multiple web calls until it finds an answer it feels satifies the request. That could mean 5 web searches run behind the scenes (each billed at the 1c or 2.5c rate). You can limit that by setting max_tool_calls.
Also consider setting search_context_size to low, to reduce token usage.
search_context_size (Optional)
Defaults to medium
High level guidance for the amount of context window space to use for the search. One of low, medium, or high. medium is the default.
https://platform.openai.com/docs/api-reference/responses/create
That explanes it. Thanks!