---
title: "Admin Inbox Stats"
method: GET
path: "/v1/admin/inbox/stats"
---

# Admin Inbox Stats

`GET /v1/admin/inbox/stats`

## Request

- Base URL: `https://api.storyflo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.storyflo.com/v1/admin/inbox/stats`
- Auth: none declared

Classification mix + 24h volume for the admin inbox tile.

Synthetic / smoke senders are excluded via the same
``app.synthetic_accounts.not_synthetic_email`` predicate the
listener KPIs use (2026-07-16 revenue-accuracy fix — stability-cron
and smoke-test mail previously inflated every count here).

2026-08-06 additions (both purely additive — no existing key changed):

* ``by_reply_intent`` / ``unclassified_replies`` — the 5-bucket
  intent mix from :mod:`app.outreach.reply_classifier`. This is the
  read that makes the "replies never reach the classifier" gap
  VISIBLE: a large ``unclassified_replies`` next to a small
  ``by_reply_intent`` means ingestion is not feeding classification.
* ``monday_crm_sync`` — the nightly CRM sweep heartbeat
  (``last_run_at`` + ``last_counts`` + the dispatcher's per-reason
  failure tally), read from the generic ``kv_store`` row the tick
  writes. Before this, a sweep that ran and had every monday write
  rejected looked identical to a sweep that never ran. Extended here
  rather than as a new page — this endpoint is already the inbox /
  correspondence-pipeline tile.

## Headers

- `x-storyflo-email-token` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/storyflo/apis/storyflo-inference-router.md) · [All operations](https://skmtc.dev/storyflo/apis/storyflo-inference-router/llms.txt) · [OpenAPI document](https://skmtc.dev/storyflo/apis/storyflo-inference-router/revisions/c3a1a735ac7a?raw)
