Skip to content

fix: correct cache cost for OpenRouter and other OpenAI-compatible providers - #4256

Merged
rekram1-node merged 1 commit into
anomalyco:devfrom
boatri:fix/openrouter-cache-cost
Nov 12, 2025
Merged

rekram1-node merged 1 commit into
anomalyco:devfrom
boatri:fix/openrouter-cache-cost

Conversation

@boatri

@boatri boatri commented Nov 12, 2025

Copy link
Copy Markdown
Contributor

fixes #534, #454, #2020

Problem: There's a significant mismatch in costs displayed in OpenCode vs OpenRouter.

OpenRouter provides inputTokens as the total count of input tokens (including cached).
AFAIK other providers (OpenRouter/OpenAI/Gemini etc.) do it the same way e.g. vercel/ai#8794 (comment)

Anthropic does it differently though - inputTokens doesn't include cached tokens.
It looks like OpenCode's cost calculation assumes all providers return inputTokens the same way Anthropic does (I'm guessing getUsage logic was originally implemented with anthropic), so it's causing incorrect cost calculation for OpenRouter and others.

Testing:
Verified against OpenRouter data - costs are now matching almost perfectly.
Why almost - cache.write costs are not included in OpenRouter's metadata, so there may be minor discrepancies for the messages with cache writes. This seems to be an upstream limitation that needs to be addressed by ai-sdk/openrouter.

@rekram1-node

Copy link
Copy Markdown
Collaborator

good job finding this

@rekram1-node
rekram1-node merged commit c8bda59 into anomalyco:dev Nov 12, 2025
3 checks passed
Rwanbt pushed a commit to Rwanbt/unifia that referenced this pull request May 5, 2026
AIALRA-0 pushed a commit to AIALRA-0/opencode-turn-engine that referenced this pull request Jun 10, 2026
Rwanbt pushed a commit to Rwanbt/unifia that referenced this pull request Jun 14, 2026
meSingh pushed a commit to meSingh/opencode that referenced this pull request Sep 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[0.1.162] Openrouter price calculations likely does not consider cache read

2 participants