Usage Information
OpenRouter automatically returns detailed usage information with every response, including:- Input and output token counts using the model’s native tokenizer
- Cost in credits
- Reasoning token counts (if applicable)
- Cached token counts (if available)
response.completed or response.incomplete event for streaming responses, or in the terminal response for non-streaming requests. No additional parameters are required. The examples on this page use the Responses API.
Deprecated ParametersOn Chat Completions, the
usage: { include: true } and stream_options: { include_usage: true } parameters are deprecated and have no effect. The Responses API has no equivalent parameter. Full usage details are always included automatically in every response on both APIs.Response Format
Every response includes ausage object with detailed token information. The field names follow the API you call.
Responses API
Chat Completions
cached_tokens is the number of tokens that were read from the cache. cache_write_tokens is the number of tokens that were written to the cache (only returned for models with explicit caching and cache write pricing).
Cost Breakdown
The usage response includes detailed cost information:cost: The total amount charged to your accountcost_details.upstream_inference_cost: The actual cost charged by the upstream AI provider, split intoupstream_inference_input_costandupstream_inference_output_coston the Responses API (upstream_inference_prompt_costandupstream_inference_completions_coston Chat Completions)
Benefits
- Efficiency: Get usage information without making separate API calls
- Accuracy: Token counts are calculated using the model’s native tokenizer
- Transparency: Track costs and cached token usage in real-time
- Detailed Breakdown: Separate counts for input, output, reasoning, and cached tokens
Best Practices
- Use the usage data to monitor token consumption and costs
- Consider tracking usage in development to optimize token usage before production
- Use the cached token information to optimize your application’s performance
Alternative: Getting Usage via Generation ID
You can also retrieve usage information asynchronously by using the generation ID returned from your API calls. This is particularly useful when you want to fetch usage statistics after the completion has finished or when you need to audit historical usage. To use this method:- Make your Responses API request as normal
- Note the
idfield in the response - Use that ID to fetch usage information via the
/generationendpoint
When obtaining usage information via generation ID, the
upstream_inference_cost field is only available for BYOK (Bring Your Own Key) requests. For all other requests it will be 0 or null.