zoxaAI
Homepage
API ReferenceUsage

Daily spend breakdown

GET /api/v1/wallet/dashboard/daily-spend — per-day spend split by cost category over a date window.

GET /api/v1/wallet/dashboard/daily-spend

Day-by-day spend across a date window, broken down by cost category (LLM, TTS, STT, telephony, and platform fee). Useful for trend charts and dashboards.

The series is dense

The response has one point per day in the [from, to) range — days with no calls are still returned, with zeros. You never have to fill gaps client-side.

Query parameters

ParamTypeRequiredNotes
fromdate (YYYY-MM-DD)✓Inclusive start day.
todate (YYYY-MM-DD)✓Exclusive end day. The window is half-open: [from, to).

Response

{
  "points": [
    {
      "date":             "2026-06-15",
      "llm_usd":          "3.1200",
      "tts_usd":          "2.4500",
      "stt_usd":          "1.8000",
      "telephony_usd":    "1.6400",
      "platform_fee_usd": "0.4000",
      "total_usd":        "9.4100",
      "call_count":       142
    }
  ]
}
FieldTypeNotes
points[].datestring YYYY-MM-DDOne entry per day in the requested range.
points[].llm_usdstringLLM cost that day (decimal string).
points[].tts_usdstringText-to-speech cost that day.
points[].stt_usdstringSpeech-to-text cost that day.
points[].telephony_usdstringTelephony/carrier cost that day.
points[].platform_fee_usdstringPlatform fee applied that day.
points[].total_usdstringSum of the category costs for that day.
points[].call_countintNumber of calls attributed to that day.

USD fields are decimal strings

Every *_usd field is a decimal string (e.g. "9.4100"). Parse them as decimals, not floats.

Examples

curl "https://dashboard.zoxa.ai/api/v1/wallet/dashboard/daily-spend?from=2026-06-01&to=2026-06-15" \
  -H "X-API-Key: zsk_..."
import httpx

r = httpx.get(
    "https://dashboard.zoxa.ai/api/v1/wallet/dashboard/daily-spend",
    params={"from": "2026-06-01", "to": "2026-06-15"},
    headers={"X-API-Key": "zsk_..."},
)
for p in r.json()["points"]:
    print(p["date"], p["total_usd"], p["call_count"])

Errors

StatusdetailWhen
400"No organization selected"The key's user has no organization selected.
422arrayfrom or to missing or not a valid YYYY-MM-DD date.
  • Usage summary — aggregate totals for a window
  • GET /calls — per-call list with date, agent, and status filters

On this page