Usage and Logs
Every call through the LLM Gateway is recorded with its tokens, cost, model, provider, and the person who made it. The Usage tab totals those records, and the audit log keeps one entry per call.
Seeing usage needs the Monitoring & Shadow AI > View permission. Without it, the Usage tab is hidden and spend does not appear on the Overview and Budgets tabs.
The Usage tab
Open Control > LLM Gateway > Usage.
Choose a breakdown, By model, By user, By provider, or By day, and a period: This month, Last 7 days, Last 30 days, or Last 90 days. Days and months are in UTC.
Four cards total the period:
| Card | Shows |
|---|---|
| Spend | Cost of all calls, from your model prices |
| Requests | Number of calls |
| Tokens | Input plus output tokens, with each shown separately |
| Blocked | Calls refused by a guard or a budget |
The table below has one row per model, user, provider, or day, with its spend, requests, input tokens, cached input tokens, output tokens, and blocked calls. Rows are sorted by spend, except By day, which is in date order.
Spend is only as accurate as your prices. A model without a price records its calls at $0. Changing a price applies to new calls; calls already recorded keep the cost they were recorded with.
The audit log
Each call is written to the audit log with the action llm_call, under the user who made it. The entry records:
- The client that made the call, such as
claude-code, shown as the AI agent - The API, the model alias that was asked for, the provider, and the provider model id
- The HTTP status, whether the answer was streamed, and how long it took
- Input, cached input, and output tokens, and the cost
- The caller's groups
- For a refused call, the guards or budget that refused it
- For a rerouted call, the budget and the model that was originally asked for
Search and export these entries from Monitor > Logs. See Logs.
Only calls that reach the provider, and calls blocked by a guard or a budget, are recorded. Calls refused earlier are not: an invalid token, a gateway that is off, an unknown model, a model the caller may not use, or a model called on the wrong API. The client receives the error, but there is no log entry and nothing on the Usage tab.