# Get account details

Returns account, plan, and current API key details, including the
`api_key` and `subscription` fields.

**GET** `/v1/account`

## Responses

### 200 — Account, plan, and current API key details.
- `id`
- `email`
- `name`
- `plan`
- `plan.id`
- `plan.slug`
- `plan.name`
- `plan.included_screenshots`
- `plan.has_overage`
- `plan.overage_price_cents`
- `plan.max_concurrency`
- `plan.rate_limit_per_sec`
- `plan.max_bulk_size`
- `plan.max_monitors`
- `plan.retention_days`
- `api_key`
- `api_key.id`
- `api_key.prefix`
- `api_key.label`
- `api_key.environment`
- `api_key.last_used_at`
- `api_key.created_at`
- `subscription`
- `subscription.status`
- `subscription.plan`
- `subscription.plan.slug`
- `subscription.plan.name`
- `subscription.plan.included_bytes`
- `subscription.plan.included_credits`
- `subscription.plan.topup_price_per_mb_cents`
- `subscription.plan.credit_topup_price_per_k_cents`
- `auto_topup`
- `auto_topup.enabled`
- `auto_topup.threshold_cents`
- `auto_topup.amount_cents`
- `auto_topup.monthly_cap_cents`
- `cancelled_at`
- `grace_period_expires_at`
- `created_at`
- `owner_user_id`
- `notifications`
- `notifications.bandwidth_80_enabled`
- `notifications.bandwidth_100_enabled`
- `terms_version`
- `has_activity`
- `onboarding_completed`
- `user_onboarding_completed`
- `has_subscription`

### 401 — Unauthorized. The request carried no valid credential, and no work was
performed. The unified `Error` envelope carries one of the codes below
in `error.code`; match on the code, never on the prose.

- `invalid_api_key` — a bearer API key was presented and rejected:
  unknown, revoked, expired or malformed. The bearer-only operations
  (`/v1/webhook-deliveries*` among them) also return it when no
  `Authorization` header is sent. `GET /v1/account` is the exception
  to "malformed": it returns `invalid_api_key` only for a key that
  starts `sk_test_` or `sk_live_` and is unknown, revoked or expired.
- `unauthorized` — the `Authorization` header is absent or malformed on
  an operation that also accepts a dashboard session (the dual-auth and
  billing operations). `GET /v1/account` also returns it, for no
  `Authorization` header and for any bearer value that does not start
  `sk_test_` or `sk_live_` (that value is checked as a dashboard
  session token).

Not retryable as-is: supply a valid API key first.
- `status`
- `error`
- `error.code`
- `error.message`
- `error.http_status`
- `error.failed_at`
- `error.details`

### 429 — Rate limit exceeded (`rate_limited`). Only reachable when authenticated via Clerk session (the 60-request/60-second per-user window) — the bearer and in-process auth branches are not rate-limited at this endpoint. Carries a `Retry-After` header derived from the same clock as the window reset.
- `status`
- `error`
- `error.code`
- `error.message`
- `error.http_status`
- `error.failed_at`
- `error.details`