Skip to main content

Read the cost-intelligence dashboards

The Analytics API reference documents the aggregate cost endpoints — this guide is the prose walkthrough for the cost-intelligence surfaces that sit on top of them in the Orbit console, and explains what the unit economics actually answer. Use it when a margin question lands: what does a message, a voice minute, an AI token, or a video minute actually cost us per unit, and where is the margin in that? Example requests in this guide use the APIs directly; most operators read the dashboards in the console and use the APIs for export or integration.

What a cost surface is

Every cost surface reads prices that were already recorded on your usage rows — the dashboards never re-price traffic. A message, call, or AI event is priced at the moment it is billed against your wallet, and the cost surfaces aggregate those recorded charges into spend, volume, and unit-cost views. Because the inputs are the same wallet charges in every case, the surfaces reconcile with each other: the “Total spend” headline on the Channel costs page is the same money the Billable usage records panel and the per-conversation P&L draw from. Access is role-scoped per surface. The money-family surfaces — Channel costs, LLM spend, Conversation P&L — restrict to the owner, admin, developer, and billing roles on the console, because they expose aggregate cost and margin analysis. The room-usage analytics API additionally admits the viewer role, as it reports volumes rather than money.

Channel costs — Insights → Channel costs

Console route: /insights/costs, page title “Channel costs”. This is the unit-economics hub: one window (24 hours to 12 months, or a custom range) applied to every outbound channel at once. What the page answers, top to bottom:
  • Headline tiles — total spend, billed messages, and average cost per message across all channels in the window. The average is total spend ÷ billed messages, computed at sub-cent precision, so a channel mix dominated by low-cost SMS still reports a truthful blended unit cost.
  • Spend over time — daily total spend for the window.
  • Cost by channel — per-channel spend, message volume, and average cost per message, with a totals footer. The footer sums every channel — SMS, MMS, voice, WhatsApp, email, and the rest — so it always equals the Total spend headline. Spot the expensive unit here: if WhatsApp’s cost per message runs five times SMS’s, that is the row to act on.
  • Billable usage records — carrier-parity counters (the data export sheets traditionally call usage records) for SMS, MMS, and voice, with an optional per-country split. Voice appears here in minutes; messaging in messages. This panel is deliberately carrier-scoped — it mirrors the bill a carrier would show — so it will not equal Total spend. The panel therefore shows a numeric reconciliation line for the non-carrier spend (email, chat, RCS, and similar) that is included in Total spend but not billed as carrier usage: the gap has an amount, not an apology.
For the endpoint shapes see the Analytics API reference (GET /api/v1/analytics/costs for the per-channel payload, GET /api/v1/messages/usage/records for the carrier counters).

AI spend — Insights → LLM spend

Console route: /insights/llm-spend, page title “LLM spend”. AI cost shows up as token spend, not message spend: the dashboards report tokens and cost per agent, per model, and per conversation, with overview aggregates and a daily timeseries. Read it alongside Channel costs — the blended cost of an AI-handled conversation is its telephony leg (Channel costs, below) plus its token leg (here). For the full endpoint shapes see the LLM spend section of the Insights API reference.

Per-conversation telephony P&L — API

The per-conversation economics endpoint, GET /api/v1/analytics/cost-per-conversation, groups priced message and call charges by conversation over a window you supply and returns the top conversations by telephony spend:
Each row is one conversation: its telephony cost-to-serve (integer cents at sub-cent precision — a fraction of a cent per SMS segment stays a fraction) and its message count, so cost per message per conversation is a division away. Window is capped at 90 days; limit caps the returned rows. Use it to answer “what does a resolved WhatsApp conversation actually cost us in carriage?” without exporting to a spreadsheet.

Video usage — room minutes

Video does not bill per message — it bills per participant-minute, so its economics live on a usage surface of their own: GET /api/v1/video/rooms-analytics/usage, optionally with from / to datetimes (30 days by default). The response gives an org summary — total sessions, total room-minutes (room wall-clock, so a 10-minute room with 4 participants is 10 room-minutes ≈ 40 participant-minutes of metering), average and maximum peak participants, recording success rate, and join failures — plus a daily series for the window. Multiply room-minutes by your participant mix to sanity-check video spend against the rate card. Soft-deleted sessions are excluded.

Put the legs together

Margin per interaction is the assembly: the interaction’s price on your rate card, minus the channel leg (Channel costs per-channel unit costs, or the per-conversation P&L for individual conversations), minus the AI leg (LLM spend per conversation when an agent handled it), minus the video leg (room minutes when the interaction happened in a room). Run the assembly on a 30-day window and two things fall out: which channels carry the volume at the widest per-unit margin, and which conversations cost more to serve than their outcome is worth.

See also