# Account profile, balance and settings

`GET /v1/console/account` (operation id `getAccount`)

Authentication: Console session cookie (`__Host-dex_session`). State-changing routes also need the `x-dex-csrf` header.

## Responses

### 200

The signed-in account.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | AccountId | yes | (pattern ^acc_[0-9A-HJKMNP-TV-Z]{26}$) |
| `object` | string | yes | (always "account") |
| `email` | string | yes | (format email) |
| `name` | string \| null | no |  |
| `company` | string \| null | no |  |
| `country` | string \| null | no | (pattern ^[A-Z]{2}$) |
| `vat_id` | string \| null | no |  |
| `created_at` | string | yes | (format date-time) |
| `balance` | Balance | yes |  |
| `balance.object` | string | yes | (always "balance") |
| `balance.account_id` | AccountId | yes | (pattern ^acc_[0-9A-HJKMNP-TV-Z]{26}$) |
| `balance.balance_micro_cents` | integer | yes | Integer micro-cents. Stays below 2^53 for any balance under EUR 90 million, so JavaScript reads it exactly. (format int64) |
| `balance.balance_eur` | string | yes | The same amount as a decimal string with 8 decimals. (pattern ^-?[0-9]+\.[0-9]{8}$) |
| `balance.currency` | string | yes | (always "EUR") |
| `balance.month_to_date_tokens` | integer | yes | Billable tokens in the current UTC calendar month, which set the tier. (format int64) |
| `balance.tier` | string | yes | (one of "t1", "t2", "t3") |
| `balance.unit_price_micro_cents` | integer | yes | (at least 0) |
| `balance.next_tier_at_tokens` | integer \| null | yes | Month-to-date token count at which the next lower price applies; null in t3. (format int64) |
| `balance.updated_at` | string | yes | (format date-time) |
| `content_logging` | object | yes | Opt-in content logging retention in days; 0 means off, which is the default. |
| `content_logging.live_days` | integer | yes | (0 to 30) |
| `content_logging.test_days` | integer | yes | (0 to 30) |
| `top_up_limit_remaining_cents` | integer \| null | yes | Remaining top-up allowance during the first 30 days; null afterwards. |

### 401

Missing, unknown, revoked or expired credentials.

### 403

The credentials are valid but not allowed to do this (missing scope, suspended account or failed CSRF check).

### 500

An unexpected error. Any charge was refunded. Retry with the same idempotency key.

### 503

`maintenance`: the console's database, sign-in or payments are unavailable for a moment. Retry after
`retry-after`. Nothing was changed.


## Examples

Illustrative values. Examples show the shape of requests and responses; the numbers in them are not measured results.

Response: A Dutch company account in its first month

```json
{
  "id": "acc_01M4ZPXYG0F5KZNWJ47TAN9ZT2",
  "object": "account",
  "email": "dev@example.nl",
  "name": "Sanne de Vries",
  "company": "Fietsenwinkel Voorbeeld B.V.",
  "country": "NL",
  "vat_id": "NL000099998B57",
  "created_at": "2026-10-15T09:12:44Z",
  "balance": {
    "object": "balance",
    "account_id": "acc_01M4ZPXYG0F5KZNWJ47TAN9ZT2",
    "balance_micro_cents": 3610145620,
    "balance_eur": "36.10145620",
    "currency": "EUR",
    "month_to_date_tokens": 212450110,
    "tier": "t1",
    "unit_price_micro_cents": 5,
    "next_tier_at_tokens": 1000000000,
    "updated_at": "2026-10-20T12:00:03Z"
  },
  "content_logging": {
    "live_days": 0,
    "test_days": 7
  },
  "top_up_limit_remaining_cents": 45000
}
```
