Valistry

Claude Enterprise seats

Each member as a code, not a name. Each person's cost and tokens, by model. Claude Code commits, and the skills and connectors used. All but the members need read:analytics. Never conversations, prompts or project names.

Access

Kind
A read-only key you paste
What to give
Claude Enterprise API key
Why that one
A key the primary owner creates in claude.ai under Organization settings → API, with read:members for the roster and read:analytics for activity, cost and usage. Tested first, then stored encrypted; shown only as its last four characters.

What it attributes on its own

From the source
seat holder (hashed); organization role; the day the seat started; seat-days in the period; with an Analytics key: cost and tokens per person, model, product and day; Claude Code commits, pull requests and lines; skills, connectors and projects used
Needs a rule or a trace
who was active, cost and tokens, unless an Analytics key is entered; a dollar figure per seat from Anthropic — on a seat plan the contract price is the price; cost of the last thirty days is not final: Anthropic revises it and each sync reads it again; Claude Code used through Amazon Bedrock, which this API does not report; outcome

The addresses it calls

  • https://api.anthropic.com/v1/organizations/users
  • https://api.anthropic.com/v1/organizations/analytics/

Valistry calls only these addresses. It blocks any other call and logs every call.

Connecting it

  1. Create a key with two scopes. Organization settings → API. Turn on API access, then + Create key. Open ↗
  2. Find your seat price. Look on your Claude Enterprise order form: the monthly price per seat.

Without read:analytics, the seats are counted but an idle seat cannot be told from a busy one. Where your people use Claude Code, the Anthropic usage source has their activity, matched to the same person.