> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Read the LLM spend dashboard

> Walk the /insights/llm-spend dashboard end to end: the per-agent, per-model, and per-conversation token-spend tables, the daily-cap progress ring, the month-end projection, preset model comparison, spend alarms, and exporting cost rows into billing chargeback.

# Read the LLM spend dashboard

Every AI conversation you run has a token leg: which model answered, how
many tokens it consumed, and what the tokens cost. The **LLM spend**
dashboard ([/insights/llm-spend](https://orbit.devotel.io/en/insights/llm-spend))
is where you watch that leg — per agent, per model, and per conversation —
and where you set the caps that keep a goosed preset or a runaway agent
from landing on your month-end statement.

All money on the page is integer cents rendered in your org wallet currency.

## 1. Read the spend tables

Four stat cards sit on top of the page: **Today's spend**,
**This month** (with the projected month-end total underneath),
**Vs previous 30 days** (a signed percentage), and **Daily cap used**.
Below them, a trend chart plots spend over the selected window, and
three tabbed tables cut the same window three ways:

| Tab                   | One row is                                                                                                                                  |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| **By agent**          | One draft or live agent, with its model, total tokens, total cost, and conversation count.                                                  |
| **By model**          | One model id (e.g. Claude Sonnet 4.6), aggregated across every agent that ran it.                                                           |
| **Top conversations** | The most expensive single conversations, with the agent, model, tokens, cost, and start time — each row links into the conversation record. |

Use **By agent** to answer "which line is spending", **By model** to
answer "which model does the spending", and **Top conversations** to
catch outliers (an agent stuck in a long tool-call loop shows up here
first). The window defaults to 30 days; the date-range filter at the top
of the page accepts 24 hours to 12 months, or a custom range. Up to 50
rows per tab.

Sample numbers, By-agent view over the last 30 days:

| Agent                  | Model             | Tokens     | Cost       | Conversations |
| ---------------------- | ----------------- | ---------- | ---------- | ------------- |
| Triage line            | Claude Haiku 4.5  | 4,214,000  | \$118.32   | 1,902         |
| Support assistant      | Claude Sonnet 4.6 | 11,803,500 | \$1,096.40 | 3,117         |
| Collections negotiator | Claude Opus 4.7   | 2,945,100  | \$874.05   | 481           |

The spend-trend chart above the tables buckets the window daily, or
hourly when the window is 14 days or shorter. Day buckets resolve in
your organization's timezone, so the chart and the conversation rows
agree on what "today" means.

## 2. The daily-cap progress ring

The ring next to the cards shows how much of today's cap you have
consumed: `today's spend ÷ daily cap`, to one decimal. Colors track the
breach distance — green under 70%, amber 70–90%, red above 90% — and at
100% a banner tells you new agent runs are blocked until midnight in
your organization's timezone.

Caps are set at two levels, both in the **AI budget** form at the bottom
of this same page:

* **Org-level** — the **Daily cap** and **Monthly cap** fields in the
  form apply to the whole organization and drive the ring. Leave a field
  blank for no cap.
* **Per API key** — if a key integrates AI usage, bound *that key* with
  a monthly spend ceiling via
  `PUT /api/v1/developer/budgets/:keyId`, as covered in
  [Per-API-key spend budgets](/guides/per-api-key-spend-budgets). Key
  budgets are separate from this dashboard's org-level caps and apply to
  all usage on that key, not just LLM tokens.

The role gates around page reads and budget writes are described in
the roles note below.

## 3. The month-end projection

The projection card backfills the question "if the last week's pace
holds, where does the month land?" The formula is:

```
projected = month-to-date + (last-7-day average daily) × (days remaining − 1)
```

The minus-one avoids double-counting today, which is already included in
the month-to-date total. When the last seven days are empty (a new org,
or an idle month) the projection shows `—` rather than a fabricated
zero-based figure.

Worked example — today is the 12th of a 31-day month, month-to-date is
$1,842.00, last-7-day spend is $693.00:

* Average daily = $693.00 ÷ 7 = $99.00
* Days remaining = 31 − 12 + 1 = 20, so remaining-after-today = 19
* Projected month-end = $1,842.00 + ($99.00 × 19) = **\$3,723.00**

Read the projection as a run-rate estimate, not a forecast: it assumes
the last week's mix of agents and models holds. A preset change or a
campaign launch today moves the number tomorrow — that is the point of
having it on the page.

## 4. Compare spend across presets

The **By model** tab is the realized-cost counterpart of the picker card
estimates from the
[voice-agent model presets](/guides/agents-model-presets) guide. Preset
cards quote per-minute comparison estimates; this tab tells you what the
choice actually costs on your own traffic.

A practical loop for a re-tier question:

1. Run two agents side by side on the candidate presets (the before/after
   loop from [Safely Roll Out an AI Agent](/guides/ai-agent-rollout-pipeline)).
2. Set a window that covers the comparison, open **By model**, and read
   cost per conversation: `total cost ÷ conversation count`. In the
   sample table above, Sonnet costs $0.35 per conversation while Haiku
   costs $0.06 — a 6× gap, wider than the per-minute estimates on the
   picker cards imply, because Sonnet conversations in this org run
   longer tool loops.
3. Keep the cheaper preset only if quality metrics hold; the token leg
   is one side of the decision.

## 5. Alarm when a preset gooses token rates

Retiering to a bigger model multiplies your per-conversation cost, so an
alarm should watch the spending-rate, not just a fixed amount. Set three
things in the **AI budget** form on this page:

1. **Monthly cap** and/or **Daily cap** — the ceiling the alerts measure
   against.
2. **Alert threshold (%)** — the share of a cap at which the per-feature
   breach warnings fire (default 80). After a retier, 80% of your old
   cap arrives much earlier in the month, which is exactly the early
   warning you want.
3. **Automatic model downshift** — optionally switch agents to a fallback
   model id (e.g. `claude-haiku-4-5`) once spend crosses the trigger
   percent. At trigger 100 the downshift fires only on an actual breach;
   set it lower to degrade gracefully before the cap hits. This is an
   org-wide default; each agent can override it.

Below the form, the **Billed spend by AI feature** panel lists threshold
breaches the moment a feature (voice agent, inbox assist, KB-RAG, and so
on) crosses its configured channel cap — the in-page alarm.

For velocity alarms independent of a fixed cap — "today's spend is 4×
the trailing average" — wire the
[usage anomaly alert rules](/guides/usage-anomaly-alert-rules); the page
reloads its figures every 60 seconds, so either mechanism surfaces a
goose within minutes.

## 6. Export into billing chargeback

Nothing on the page stays on the page: export the window you are looking
at and hand it to the chargeback workflow.

From the API (the same routes the dashboard reads):

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/insights/llm-spend/summary?groupBy=agent" \
  -H "X-API-Key: dv_live_sk_..."
```

Fold the rows into your export pipeline — the
[reverse ETL warehouse exports](/guides/reverse-etl-warehouse-exports)
guide covers scheduled pulls — and attribute the cost to a department by
tagging outbound sends with a `metadata.cost_center` label, per
[Cost-center chargeback](/guides/cost-center-chargeback). The AI leg
aggregates under the tag just like the telephony leg.

One caveat for the rollup: the **Billed spend by AI feature** panel is
the billed (invoiced, includes markup) measure, while the per-agent /
per-model / per-conversation tables are raw token cost. The totals
deliberately don't reconcile — pick one basis per report.

## Roles and permissions

* **Read the dashboard** — owner, admin, developer, or billing. Agent
  and viewer roles do not see the page at all.
* **Save the AI budget form** (caps, alert threshold, downshift) —
  restricted to roles that can reach the page; on the API the budget
  PUT is an authenticated, org-scoped write, so every eligible
  operator's writes land in the same single org-level config.
* **Per-API-key budgets** — owner, admin, or developer scope on the
  developer API.

Every budget write is audit-logged with the org, the caps, and the
thresholds.

## Troubleshooting

| Symptom                                                  | Fix                                                                                                                                                                 |
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| "No AI usage in the selected window" but agents are live | Widen the date range. The empty state only counts tokens billed in the selected window.                                                                             |
| The ring shows "No daily cap configured"                 | Set **Daily cap** in the AI budget form (owner/admin). Until then the dashboard reports usage without a ceiling.                                                    |
| Projection shows `—`                                     | Both month-to-date and last-7-day spend are zero; the page never fabricates a projection from no signal.                                                            |
| A table says the fetch failed                            | Each table retries independently. A sub-table outage does not hide the stat cards, and a stat-card outage blocks the page with an explicit error instead of zeroes. |
| Feature panel and agent table totals differ              | Expected: the feature panel is the billed (with markup) basis; the tables are raw token cost.                                                                       |

## See also

* [Cost intelligence](/guides/cost-intelligence) — the broader unit-economics surface this dashboard is one leg of (telephony + tokens).
* [AI agent cost controls](/agents/cost-controls) — the hard-cap behavior behind the budget form.
* [Voice-agent model presets](/guides/agents-model-presets) — the picker cards this dashboard validates with realized cost.
* [Per-API-key spend budgets](/guides/per-api-key-spend-budgets) — per-key monthly ceilings from the developer API.
* [Usage anomaly alert rules](/guides/usage-anomaly-alert-rules) — velocity alarms on spend rate.
* [Safely Roll Out an AI Agent](/guides/ai-agent-rollout-pipeline) — the side-by-side preset comparison loop.
