From 11668af83d349e4cb09052b9463bd544ae956d10 Mon Sep 17 00:00:00 2001 From: Christiaan Arnoldus Date: Thu, 12 Jun 2025 05:19:24 +0200 Subject: [PATCH] Fix OpenRouter cost calculation with BYOK (#4543) Currently, when you use OpenRouter with your own key for the underlying service, the costs shown by Roo Code are way off what it actually costs. With bring your own key, OpenRouter charges 5% of what it normally would (see https://openrouter.ai/docs/use-cases/byok) so we have to multiply the reported cost by 20 to get an estimate of what it actually costs. Co-authored-by: Johan Otten Co-authored-by: Eamon Nerbonne --- src/api/providers/openrouter.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/api/providers/openrouter.ts b/src/api/providers/openrouter.ts index 31300b868b..26019ce34a 100644 --- a/src/api/providers/openrouter.ts +++ b/src/api/providers/openrouter.ts @@ -48,8 +48,13 @@ interface CompletionUsage { } total_tokens?: number cost?: number + is_byok?: boolean } +// with bring your own key, OpenRouter charges 5% of what it normally would: https://openrouter.ai/docs/use-cases/byok +// so we multiply the cost reported by OpenRouter to get an estimate of what the request actually cost +const BYOK_COST_MULTIPLIER = 20 + export class OpenRouterHandler extends BaseProvider implements SingleCompletionHandler { protected options: ApiHandlerOptions private client: OpenAI @@ -164,7 +169,7 @@ export class OpenRouterHandler extends BaseProvider implements SingleCompletionH // and how to best support it. // cacheReadTokens: lastUsage.prompt_tokens_details?.cached_tokens, reasoningTokens: lastUsage.completion_tokens_details?.reasoning_tokens, - totalCost: lastUsage.cost || 0, + totalCost: (lastUsage.is_byok ? BYOK_COST_MULTIPLIER : 1) * (lastUsage.cost || 0), } } }