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 / column | Shows |
|---|---|
| By plan | One block per paid_plan value: total spend, how many users, average spend per user, tokens per request. |
| User | The user_id your app supplied. |
| Plan | The paid_plan value on their calls. |
| Requests / Tokens / Cost | Their traffic in the selected range. |
| Status | Red 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 threadinguser_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.

