omni-usage-logs — Claude Code skill: call logs and usage analytics
A skill that lets your agent query the OmniRoute usage API for call logs, token spend, latency and budget state across connections.
npx skills add cheaper-inference/OmniRoute --skill omni-usage-logs -a claude-codeWhat omni-usage-logs does
The skill turns the agent into a client of the OmniRoute HTTP API. Ask it what you spent or which calls failed, and it builds the request against the local server on port 20128 and reads the JSON back. No hand-written curl needed.
The routes split by question. /api/usage/call-logs returns the raw calls, and /api/usage/call-logs/filters lists which providers, models, accounts and API keys actually show up in them. /api/usage/cache-health works out the prompt-cache write/read ratio from call_logs over a window, with warm, cold and rewritten counts and a per-model breakdown. /api/usage/model-latency-stats rolls usage_history into p50/p95/p99, standard deviation, TTFT and tokens per second for each provider and model pair. Budget endpoints sit alongside.
Every request needs a Bearer token. Get one from POST /api/auth/login, or set REQUIRE_API_KEY=false when you run locally. Export it as OMNIROUTE_TOKEN — the examples read that variable, so a missing token kills the whole thing.
What it helps with
- pull call logs filtered by provider and status
- total token spend across every connection
- spot the slow model with p95 latency and TTFT per provider
- see how many tokens go into prompt-cache writes
- set a budget limit and check what is left of it
Example prompts for the agent
- Show me the call logs from yesterday, errors only, filtered by provider
- Aggregate latency per model: p95, TTFT and tokens per second
- How much of the budget has the current connection used up?
How to install omni-usage-logs
1Skills CLI (Vercel)
npx skills add cheaper-inference/OmniRoute --skill omni-usage-logs -a claude-code2Manually: put the files in place
~/.claude/skills/omni-usage-logs/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/omni-usage-logs/
1Skills CLI (Vercel)
npx skills add cheaper-inference/OmniRoute --skill omni-usage-logs -a codex2Manually: put the files in place
.agents/skills/omni-usage-logs/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add cheaper-inference/OmniRoute --skill omni-usage-logs -a cursor2Manually: put the files in place
.cursor/skills/omni-usage-logs/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install cheaper-inference/OmniRoute omni-usage-logs2Manually: put the files in place
.github/skills/omni-usage-logs/SKILL.md1Skills CLI (Vercel)
npx skills add cheaper-inference/OmniRoute --skill omni-usage-logs -a gemini-cli2Platform CLI
gemini skills install https://github.com/cheaper-inference/OmniRoute --path skills/omni-usage-logsManually: put the files in place
.devin/skills/omni-usage-logs/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add cheaper-inference/OmniRoute --skill omni-usage-logs -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set34
The whole set →Similar
Questions about omni-usage-logs
How do I install omni-usage-logs in Claude Code?
Run npx skills add cheaper-inference/OmniRoute --skill omni-usage-logs -a claude-code. The skill file lands at ~/.claude/skills/omni-usage-logs/SKILL.md.
What does omni-usage-logs do?
It exposes the OmniRoute /api/usage/* endpoints to the agent: call logs, usage analytics, per-model latency and budget or cache health, filterable by provider, model, time range, status and cost.
What do I need before using it?
A reachable OmniRoute instance and a Bearer token, obtained through POST /api/auth/login or bypassed with REQUIRE_API_KEY=false for local development. Requests without a token are rejected.
Source text
SKILL.md · MIT
---
name: omni-usage-logs
description: Access detailed call logs and usage analytics. Filter by provider, model, time range, status, and cost. Export logs and aggregate token usage across all connections.
---
<!-- generated by src/lib/agentSkills/generator.ts; manual edits will be overwritten -->
## Overview
Access detailed call logs and usage analytics. Filter by provider, model, time range, status, and cost. Export logs and aggregate token usage across all connections.
## Authentication
All requests require a valid Bearer token or session cookie. Obtain a token via `POST /api/auth/login` or configure `REQUIRE_API_KEY=false` for local development.
## Endpoints
### GET /api/usage/analytics
Get usage analytics
```bash
curl http://localhost:20128/api/usage/analytics \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/call-logs
Get call logs
```bash
curl http://localhost:20128/api/usage/call-logs \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/call-logs/filters
Get call log filter options
Distinct providers, models, accounts and API keys seen in call logs, plus every configured API key (id and name only). Feeds the Logs tab filter dropdowns.
```bash
curl http://localhost:20128/api/usage/call-logs/filters \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/call-logs/{id}
Get a specific call log
```bash
curl http://localhost:20128/api/usage/call-logs/{id} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/{connectionId}
Get usage for a specific connection
```bash
curl http://localhost:20128/api/usage/{connectionId} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/history
Get usage history
```bash
curl http://localhost:20128/api/usage/history \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/logs
Get usage logs
```bash
curl http://localhost:20128/api/usage/logs \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/proxy-logs
Get proxy logs
```bash
curl http://localhost:20128/api/usage/proxy-logs \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/request-logs
Get request logs
```bash
curl http://localhost:20128/api/usage/request-logs \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/budget
Get usage budget status
Returns current budget limits and consumption.
```bash
curl http://localhost:20128/api/usage/budget \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### POST /api/usage/budget
Configure usage budget
Set or update budget limits for usage tracking.
```bash
curl -X POST http://localhost:20128/api/usage/budget \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'
```
### GET /api/usage/cache-health
Get prompt-cache health summary
Summarizes the `write/read` cache ratio from `call_logs` for a time window:
distribution (p50/p90/p99/max of cache-write tokens), warm/cold/rewrite/uncached
call counts, the "heavy write" outlier share (10x the window median, floored at
1024 tokens — Anthropic's cache-creation minimum), and a per-model breakdown.
Only successful (`status = 200`) calls with a non-null cache column are counted.
```bash
curl http://localhost:20128/api/usage/cache-health \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/model-latency-stats
Get per-model/provider latency statistics
Aggregates `usage_history` rows into per-(provider, model) latency stats (avg/p50/p95/p99, std-dev, TTFT, tokens/sec) over a rolling window. Falls back from successful-only to all-sample rows when the successful count is below `minSamples`.
```bash
curl http://localhost:20128/api/usage/model-latency-stats \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/budget/bulk
GET usage › budget › bulk
```bash
curl http://localhost:20128/api/usage/budget/bulk \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/codex-reset-credit
GET usage › codex reset credit
```bash
curl http://localhost:20128/api/usage/codex-reset-credit \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### POST /api/usage/codex-reset-credit
POST usage › codex reset credit
```bash
curl -X POST http://localhost:20128/api/usage/codex-reset-credit \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'
```
### GET /api/usage/combo-forecast
GET usage › combo forecast
```bash
curl http://localhost:20128/api/usage/combo-forecast \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/combo-health
GET usage › combo health
```bash
curl http://localhost:20128/api/usage/combo-health \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/combo-health-autopilot
GET usage › combo health autopilot
```bash
curl http://localhost:20128/api/usage/combo-health-autopilot \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/combo-health-dashboard
GET usage › combo health dashboard
```bash
curl http://localhost:20128/api/usage/combo-health-dashboard \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/combo-scoring-inspector
GET usage › combo scoring inspector
```bash
curl http://localhost:20128/api/usage/combo-scoring-inspector \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/combo-trace/{id}
GET usage › combo trace › <id>
```bash
curl http://localhost:20128/api/usage/combo-trace/{id} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/om-usage
GET usage › om usage
```bash
curl http://localhost:20128/api/usage/om-usage \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/provider-limits
GET usage › provider limits
```bash
curl http://localhost:20128/api/usage/provider-limits \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### POST /api/usage/provider-limits
POST usage › provider limits
```bash
curl -X POST http://localhost:20128/api/usage/provider-limits \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'
```
### GET /api/usage/provider-window-costs
GET usage › provider window costs
```bash
curl http://localhost:20128/api/usage/provider-window-costs \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/quota
GET usage › quota
```bash
curl http://localhost:20128/api/usage/quota \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/requests-by-provider-date
GET usage › requests by provider date
```bash
curl http://localhost:20128/api/usage/requests-by-provider-date \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/route-explain/{id}
GET usage › route explain › <id>
```bash
curl http://localhost:20128/api/usage/route-explain/{id} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/token-limits
GET usage › token limits
```bash
curl http://localhost:20128/api/usage/token-limits \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### POST /api/usage/token-limits
POST usage › token limits
Save a per-key token limit. A key holds one limit per scope and reset interval, so daily, weekly and monthly limits for the same scope coexist. Without `id`, a new limit is added (or the key's limit for the same scope and interval is updated); with `id`, that limit is updated.
```bash
curl -X POST http://localhost:20128/api/usage/token-limits \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'
```
### DELETE /api/usage/token-limits
DELETE usage › token limits
```bash
curl -X DELETE http://localhost:20128/api/usage/token-limits \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
### GET /api/usage/utilization
GET usage › utilization
```bash
curl http://localhost:20128/api/usage/utilization \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
```
## Payloads
See the full OpenAPI specification at `GET /api/openapi/spec` or `docs/openapi.yaml` for detailed request/response schemas.
© cheaper-inference · MIT · cheaper-inference/OmniRoute