Documentation 29
Anthropic Admin API quickstart · 3 min read
The org telemetry your connector reads. No enterprise onboarding.
The Admin API surface engineering-intelligence tools document — members, workspaces, API-key metadata, usage & cost reports, and Claude Code analytics — for a simulated org whose numbers reconcile with its git history, exactly.
Coverage, hosts and pinned snapshots for Anthropic — 13 of 13 read surfaces served and verified.
01 / Base URL
The Admin API, mirrored.
Point requests at https://anthropic.sandboxapis.dev. Paths, envelopes, and both pagination families mirror api.anthropic.com — including the REQUIRED anthropic-version header (requests without it get the real API's 400, so your client's error handling exercises honestly).
curl "https://anthropic.sandboxapis.dev/v1/organizations/usage_report/claude_code?starting_at=2026-05-01&limit=5" \
-H 'x-api-key: any-key-works' \
-H 'anthropic-version: 2023-06-01'02 / Drop in the official SDK
@anthropic-ai/sdk works unmodified.
The only change is baseURL — pointed here at the pinned *.snap. host, so the values below are the values you get. The SDK injects auth and the version header itself, and its typed error classes fire on the sandbox's provider-shaped envelopes (a write raises PermissionDeniedError, as read-only should).
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "any-key-works",
baseURL: "https://anthropic-2023-06.snap.sandboxapis.dev",
});
// The walk the connector docs name: analytics + the org roster.
const report = await client.get("/v1/organizations/usage_report/claude_code", {
query: { starting_at: "2026-05-01", limit: 1000 },
});
const users = await client.get("/v1/organizations/users", { query: { limit: 100 } });03 / A real response
Live from the universe.
{
"data": [
{
"date": "2026-05-02",
"actor": {
"type": "user_actor",
"email_address": "hermes@olympus-labs.dev"
},
"organization_id": "506ffe58-5370-4311-a527-0017e5570063",
"customer_type": "api",
"terminal_type": "tmux",
"core_metrics": {
"num_sessions": 2,
"lines_of_code": {
"added": 87,
"removed": 13
},
"commits_by_claude_code": 1,
"pull_requests_by_claude_code": 0
},
"tool_actions": {
"edit_tool": {
"accepted": 9,
"rejected": 1
},
"multi_edit_tool": {
"accepted": 3,
"rejected": 1
},
"write_tool": {
"accepted": 2,
"rejected": 1
},
"notebook_edit_tool": {
"accepted": 0,
"rejected": 0
}
},
"model_breakdown": [
{
"model": "claude-haiku-4-5",
"tokens": {
"input": 70000,
"output": 8000,
"cache_read": 350000,
"cache_creation": 3500
},
"estimated_cost": {
"currency": "USD",
"amount": 14.94
}
},
{
"model": "claude-sonnet-4-6",
"tokens": {
"input": 468000,
"output": 51000,
"cache_read": 2340000,
"cache_creation": 23400
},
"estimated_cost": {
"currency": "USD",
"amount": 295.88
}
}
]
},
{
"date": "2026-05-03",
"actor": {
"type": "user_actor",
"email_address": "hermes@olympus-labs.dev"
},
"organization_id": "506ffe58-5370-4311-a527-0017e5570063",
"customer_type": "api",
"terminal_type": "tmux",
"core_metrics": {
"num_sessions": 3,
"lines_of_code": {
"added": 124,
"removed": 19
},
"commits_by_claude_code": 1,
"pull_requests_by_claude_code": 0
},
"tool_actions": {
"edit_tool": {
"accepted": 8,
"rejected": 1
},
"multi_edit_tool": {
"accepted": 3,
"rejected": 1
},
"write_tool": {
"accepted": 3,
"rejected": 1
},
"notebook_edit_tool": {
"accepted": 0,
"rejected": 0
}
},
"model_breakdown": [
{
"model": "claude-haiku-4-5",
"tokens": {
"input": 112000,
"output": 9000,
"cache_read": 224000,
"cache_creation": 5600
},
"estimated_cost": {
"currency": "USD",
"amount": 18.64
}
},
{
"model": "claude-sonnet-4-6",
"tokens": {
"input": 818000,
"output": 65000,
"cache_read": 1636000,
"cache_creation": 40900
},
"estimated_cost": {
"currency": "USD",
"amount": 407.32
}
}
]
}
],
"has_more": true,
"next_page": "page_bzoy"
}04 / Pin a snapshot
Deterministic CI.
The *.snap. baseURL is the whole of it — byte-identical on every request, with model IDs and pricing frozen at the pin's snapshot date. Your FinOps reconciliation logic gets a fixture that never moves.
# reproducible in CI
export ANTHROPIC_BASE_URL=https://anthropic-2023-06.snap.sandboxapis.devTour the universe → · Coverage manifest → · Versioning & pinning →