TokenPolice
Docs
Dashboard

Users

Spend per end user, what plan they're on, and what to do when everyone shows up as anonymous.

Users ranks the people and agents using your app by what they cost you. It's the tab that turns "we spent $900" into "these eleven accounts spent $900".

What it's for

Finding the account that needs a cap, checking whether a plan tier is paying for itself, and confirming your app is identifying users at all.

The list

Panel / columnShows
By planOne block per paid_plan value: total spend, how many users, average spend per user, tokens per request.
UserThe user_id your app supplied.
PlanThe paid_plan value on their calls.
Requests / Tokens / CostTheir traffic in the selected range.
StatusRed Blocked if a rule currently has them stopped, otherwise a muted ok.

Filter by user id, and sort by Cost, Requests or Tokens.

Plan names are shown exactly as your app sent them, never tidied up — because rules match byte-for-byte, so Free and free really are two different plans with two separate budgets. Seeing both in the By plan panel is a bug in your app, not in the display. The list returns at most 50 users.

The user detail view

Click any row for one user's history: spend, requests, plan and audit-event tiles; a spend trend; the models they used; their recent sessions and recent calls; and an audit history of every firewall decision about them.

That audit table spells out the distinction that trips people up: "An Enforce event acted on the call (blocked or rerouted it); a Dry-run event did NOT affect the call — it only records what the rule would have done if it were enforcing."

What to look for

  • Every user shows as anonymous — your app isn't threading user_id, so per-user rules pool everyone into one bucket and per-user caps do nothing. Fix it with Identity and anonymous users.
  • One user is a large share of total spend — cap them with a Cap spend per user rule.
  • The By plan panel shows a plan you don't have — usually a typo, a case difference, or calls your app never stamped (those are recorded as free).
  • A user's Status reads Blocked and you didn't expect it — open their audit history to see which rule armed them and when the window resets.
  • Spend concentrated on free-plan users — the Stop free-tier abuse template exists for exactly this.

Next