# Anthropic Console — Internal API Reference

Captured 2026-04-07 from `platform.claude.com` (formerly `console.anthropic.com`).

These are undocumented internal endpoints used by the Console's React frontend. They are not part of Anthropic's public API and may change without notice.

## Authentication

Cookie-based via `sessionKey` cookie:
- Domain: `.platform.claude.com`
- Flags: `httpOnly`, `secure`, `SameSite=Lax`
- Expiry: 7 days from sign-in

The cookie is set during the OAuth sign-in flow (Google or email verification). Because it is `httpOnly`, it cannot be read by JavaScript — but `fetch()` with `credentials: 'include'` sends it automatically.

Common request headers (set by the Console frontend, not required for API auth):
- `content-type: application/json`
- `anthropic-client-platform: web_console`

## Org Discovery

The Console is org-scoped. All billing and key management endpoints require an org UUID. A user may have multiple orgs (e.g., a consumer chat org and an API org).

### GET /api/organizations

Returns all orgs the user belongs to.

```json
[
  {
    "id": 55730262,
    "uuid": "1882f41b-...",
    "name": "Neo's Individual Org",
    "billing_type": "prepaid",
    "capabilities": ["api", "api_individual"],
    "created_at": "2025-06-28T06:40:26.071676Z"
  }
]
```

**Selecting the API org:** Filter for the org whose `capabilities` array contains `"api"`. Consumer orgs have `capabilities: ["claude_max", "chat"]` and no API key management.

### GET /api/bootstrap

Returns current user account info and org memberships. Useful for getting the user's name and email.

```json
{
  "account": {
    "tagged_id": "user_01YW5...",
    "uuid": "ff1a722d-...",
    "email_address": "user@example.com",
    "full_name": "Neo Aeon",
    "memberships": [
      { "organization": { "uuid": "...", "name": "..." }, "role": "admin" }
    ]
  }
}
```

## Billing Endpoints

All GET, org-scoped. Replace `{orgId}` with the org UUID.

### GET /api/organizations/{orgId}/prepaid/credits

Credit balance.

```json
{
  "amount": 504,
  "currency": "USD",
  "auto_reload_settings": {
    "enabled": true,
    "threshold_in_minor_units": 500,
    "reload_to_in_minor_units": 1500
  },
  "pending_invoice_amount_cents": null
}
```

`amount` is in **cents** (minor currency units). 504 = $5.04.

### GET /api/organizations/{orgId}/current_spend

Current billing period spend.

```json
{
  "amount": 39,
  "resets_at": "2026-05-01T00:00:00Z"
}
```

`amount` is in **cents**. 39 = $0.39.

### GET /api/organizations/{orgId}/prepaid/auto_recharge

Auto-recharge configuration.

```json
{
  "status": "active",
  "stripe_error_code": null,
  "target_amount": 1500,
  "threshold_amount": 500
}
```

Amounts in **cents**.

### GET /api/organizations/{orgId}/payment_method

Payment method on file.

```json
{
  "brand": null,
  "country": null,
  "last4": null,
  "type": "link"
}
```

## API Key Endpoints

### GET /api/console/organizations/{orgId}/api_keys

List all API keys for the org.

```json
[
  {
    "id": "apikey_01XY5wjo397BKKLjHNgvHATx",
    "type": "api_key",
    "name": "maxy",
    "workspace_id": null,
    "created_at": "2026-03-22T19:08:25.868735Z",
    "created_by": { "id": "user_01YW5...", "type": "user" },
    "partial_key_hint": "sk-ant-api03-kNh...HAAA",
    "status": "active",
    "expires_at": null
  }
]
```

`status` values: `"active"`, `"inactive"` (disabled), `"archived"` (deleted).

### POST /api/console/organizations/{orgId}/workspaces/default/api_keys

Create a new API key. The `raw_key` is only returned once at creation time.

**Request:**
```json
{ "name": "Maxy" }
```

**Response (200):**
```json
{
  "id": "apikey_01Hkz...",
  "type": "api_key",
  "name": "Maxy",
  "workspace_id": null,
  "created_at": "2026-04-07T11:05:39.949811Z",
  "created_by": { "id": "user_01YW5...", "type": "user" },
  "partial_key_hint": "sk-ant-api03-cPs...1AAA",
  "status": "active",
  "expires_at": null,
  "raw_key": "sk-ant-api03-cPsiih...ewev1AAA"
}
```

### POST /api/console/organizations/{orgId}/workspaces/default/api_keys/{keyId}

Update key status.

**Disable:**
```json
{ "status": "inactive" }
```

**Archive (delete):**
```json
{ "status": "archived" }
```
