Short answer
Whether a request gets a cache discount depends on the upstream model, API protocol, and request format. LLMEasy records and displays usage based on the usage information returned by the upstream model. If the upstream model supports prompt caching and returns cache fields in the response, you can check cached tokens in response usage or call logs. Cache behavior differs across models. Do not assume every model automatically receives a cache discount.What cache billing means
Prompt caching lets an upstream model reuse a stable, repeated prefix across requests. When it works, part of the input context can be billed at a lower cached-token rate. It is useful for:- Long system prompts
- Fixed project instructions
- Large stable documentation context
- Repeated repository instructions in multi-turn coding tasks
- Batch tasks that share the same rules and output format
Protocol differences
| Scenario | Common mechanism |
|---|---|
| OpenAI-compatible | Some models automatically cache stable prefixes, and response usage may include cached tokens |
| Anthropic-compatible / Claude | Some models require explicit cache_control markers to receive caching benefits |
How to check whether caching worked
Check theusage field in the response or the dashboard call record. Field names vary by API format:
| API format | Common cache fields |
|---|---|
| OpenAI Chat Completions | usage.prompt_tokens_details.cached_tokens |
| OpenAI Responses API | usage.input_tokens_details.cached_tokens |
| Anthropic Messages API | usage.cache_read_input_tokens / usage.cache_creation_input_tokens |
How to improve cache hit rate
- Put stable content near the beginning of the prompt.
- Put user-specific and frequently changing input later.
- Do not place timestamps, random IDs, or changing instructions inside the stable prefix.
- Use the same model and protocol for the same type of task when possible.
- In Claude-native formats, add
cache_controlto the content blocks that should be cached, following the model documentation. - For batch tasks, run a small sample first and inspect usage fields before estimating total cost.
Common mistakes
- Assuming every model automatically supports cache discounts.
- Assuming the entire request becomes free after a cache hit.
- Switching models frequently, preventing cache reuse.
- Calling Claude through an OpenAI-compatible format and expecting Claude-native cache fields.
- Looking only at total tokens and ignoring cached tokens, cache read, or cache creation fields.

