gin

Gin / OpenRouter usage

OpenRouter usage by feature

OpenRouter reports token usage and spend by key, model and app. Here is how to see it per feature of your product, and track OpenRouter spend every day.

From OpenRouter docs, checked October 2026

Short answer: OpenRouter’s Activity page shows spend, tokens and requests by model, provider, API key and app, and every API response carries a usage object with token counts and cost. It can’t split usage by feature, because it never sees which feature made the call. Use one key per feature, log usage with a feature tag, or wrap your client with Gin.

What OpenRouter shows you

  • Activity page. Spend, tokens and request counts over time, filterable by model, provider, API key and app, with an export.
  • Per response. The usage object: prompt and completion tokens, cached and reasoning tokens, and the cost of the call.
  • Per generation. GET /api/v1/generation?id=… returns the stored stats for one call, including native token counts.
  • Per key. GET /api/v1/key returns the current key’s usage and limit, which is handy for budget alerts.

OpenRouter token usage per feature: three ways

  1. One key per feature. Create a key for each feature, optionally with a credit limit, then filter the Activity page by key. Simple, but keys multiply and shared code paths blur.
  2. Log usage with a tag. Read usage from every response and send it to your analytics with the feature name.
  3. Wrap your client with Gin. One line, and every call is recorded by project and use case, with a free daily email.
// option 2: log usage per feature yourself
const res = await fetch('https://openrouter.ai/api/v1/chat/completions', { method: 'POST', headers, body });
const j = await res.json();
track('llm_call', { feature: 'digest', model: j.model, in: j.usage.prompt_tokens, out: j.usage.completion_tokens, usd: j.usage.cost });

// option 3: the same split, plus graded savings
const client = new OpenAI({ baseURL: 'https://openrouter.ai/api/v1', apiKey, fetch: gin({ useCase: 'digest' }) });

Track OpenRouter spend every morning

Once usage is split by feature, the useful view is a daily one: what each feature cost yesterday, what spiked, and which features a cheaper model could take over. That is Gin’s daily email.

Your daily email

Your AI bill, explained before coffee.

Every morning, to you and your team. Free forever, even if you never route a call.

  • One big number. Yesterday’s AI spend and the trend this week.
  • Spend by project · use case. Two weeks, stacked, so the feature that spiked stands out.
  • What you could save. Counted only from cheaper models that passed grading on your calls.
  • One line per use case. Passed and how much it saves, kept on your model, or still grading.
Oct 7
$38.12

on AI yesterday · ▲ 26% this week

api · Support chatapi · Ticket triageweb · Summariesjobs · Code review

You could save

$417/mo

$934 → $517 a month

✓ 64% of spend passed grading on 212 of your calls

api · Support chatClaude Opus 5.5 → Claude Sonnet 5.5 ✓ 9/10
−50%
api · Ticket triageClaude Sonnet 5.5 → GLM 5.3 Flash ✓ 10/10
−93%
web · SummariesClaude Opus 5.5 ✗ cheaper models failed 4/12
keep
jobs · Code reviewClaude Opus 5.5 → DeepSeek V4.1 Flash ✓ 10/10
−96%
web · Kids’ storiesClaude Opus 5.5 grading…
…

Graded on your calls

“Customer asks why invoice #4821 shows two charges for October…”✓ Same answer · Claude Opus 5.5 $0.0214 → Claude Sonnet 5.5 $0.0107
“Label this ticket: ‘App crashes when I upload a PDF over 20 MB’”✓ Same answer · Claude Sonnet 5.5 $0.0031 → GLM 5.3 Flash $0.0002
Route with Gin →

Acme · Dashboard · Unsubscribe

Sample Illustrative numbers, same layout as the real email. Yours is built from your own calls.

How grading works

Proven on your calls before anything moves.

Gin doesn’t route on a leaderboard or a hunch. Each use case earns a cheaper model by matching your own answers, or it stays where it is.

  1. 1 · Watch

    Record real calls

    One line wraps your AI client. Gin logs each call after it finishes, by project and use case. No latency added.

  2. 2 · Optimize

    Replay and judge

    Gin replays recent calls on cheaper models. A strict judge compares each answer with yours, in both orders, so position can’t tip the verdict.

  3. 3 · Route

    Route what passed

    A use case routes only when ≥90% of its replays come back the same or better. Any error falls back to your model.

api · Support chaton Claude Opus 5.5

  • Claude Sonnet 5.5✓ 9/10−50%
  • DeepSeek V4 Pro✗ 6/9—

→ Routes to Claude Sonnet 5.5: −50% on this use case.

web · Summarieson Claude Opus 5.5

  • Claude Sonnet 5.5✗ 8/12—
  • GLM 5.3 Flash✗ 5/12—

= Stays on your model. Nothing cheaper held up, so nothing changes.

Bars show the share of replays graded the same or better; the tick marks the 90% bar. Example ladders, illustrative.

Benchmarked

Measured against the routers you’d compare us to.

Gin beat Always-Opus quality (93.8% vs 89.5%) for 56% less. OpenRouter Auto (high) came closest: 89.5% for $5.45. OpenRouter Auto is cheaper ($0.42) but passed 74.7%.

−56%cost vs Always Opus
93.8%pass rate, highest of 9 tested
$0.38per 1k exact-answer tasks at 99.1% (Opus: $5.20)
Pass rate against cost per 1,000 tasks for 9 routers on RouteBench. Gin: 93.8% at $4.33. Always Opus 5.5: 89.5% at $9.87.70%75%80%85%90%95%$0.3$1$3$10$ per 1k tasks →Always Opus 5.5: 89.5% pass rate, $9.87 per 1k tasksAlways Sonnet 5.5: 86.4% pass rate, $3.63 per 1k tasksAlways Haiku 5.5: 84.0% pass rate, $0.28 per 1k tasksAlways DeepSeek V4.1 Flash: 84.6% pass rate, $0.51 per 1k tasksOpenRouter Auto: 74.7% pass rate, $0.42 per 1k tasksOpenRouter Auto (medium): 85.2% pass rate, $2.15 per 1k tasksOpenRouter Auto (high): 89.5% pass rate, $5.45 per 1k tasksTypeSafe Jev Router: 86.4% pass rate, $1.23 per 1k tasksGin: 93.8% pass rate, $4.33 per 1k tasksGinOpus 5.5OR AutoOR Auto (high)Jev RouterSonnet 5.5Haiku 5.5DeepSeek V4.1 FlashOR Auto (medium)
GinOther routerSingle modelUp and left is better
Pass rate and cost per 1,000 tasks
RouterPass rate$ / 1kvs Opus
Gin93.8% +4.3$4.33−56%
OpenRouter Auto (high)89.5% +0.0$5.45−45%
Always Opus 5.589.5%$9.87base
TypeSafe Jev Router86.4% −3.1$1.23−88%
OpenRouter Auto (medium)85.2% −4.3$2.15−78%
OpenRouter Auto74.7% −14.8$0.42−96%

RouteBench 1.3 · 162 held-out tasks across 9 app workloads · run October 8, 2026 · 16 experimental variants on the full page. Gin’s routing was tuned with this benchmark in view, so its numbers are partly in-sample. Full RouteBench results and method →

Then lower the bill

With spend per feature in hand, move the expensive, easy features first. The fee isn’t the problem: OpenRouter adds about 5.5% when you buy credits, while the model you pick moves a feature’s cost 10× or more. See OpenRouter pricing, explained and how to reduce LLM costs safely.

FAQ

How do I see my OpenRouter usage?

The Activity page on openrouter.ai shows spend, tokens and requests over time by model, provider, key and app. Programmatically, each response includes a usage object with tokens and cost, and GET /api/v1/key returns usage for the current key.

Can OpenRouter show usage per feature?

Not directly. OpenRouter does not know which feature of your app made a call. Use a separate key per feature, log usage with a feature tag, or wrap your client with Gin, which records usage by project and use case.

Does Gin need a different OpenRouter key?

No. Gin works with your existing OpenRouter key. Watching records calls after they finish, and routing, if you turn it on, still bills your own key.