mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-08 00:02:20 +03:00
When OmniRoute translates Claude responses to the OpenAI format,
prompt_tokens was summing input + cache_read + cache_creation. Anthropic
pads short prompts up to a 1024-token minimum to create a cache, so:
Request: {"messages":[{"role":"user","content":"hi"}]}
Claude usage: input=8, cache_read=4, cache_creation=2000
Dashboard "Total In": 8
HTTP response prompt_tokens: 2008 (8 + 4 + 2000)
That 250x inflation broke downstream billing systems (Sub2API, NewAPI,
OneAPI) that trust prompt_tokens as the source of truth.
This change:
- prompt_tokens = input_tokens + cache_read_input_tokens (matches what
the dashboard reports as "Total In", preserves issue #1426's intent
that cache reads are billable input)
- cache_creation_tokens stays visible in
prompt_tokens_details.cache_creation_tokens for auditing — it just no
longer inflates the headline number
Reported by @downdawn with a complete root-cause trace.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>