> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usesynth.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# account

# `synth_ai.research.account`

`client.research.account` — org account, billing, usage, and BYOK reads.

These backend routes live under `/api/v1` (and `/api/members`), not under
`/smr`, so this namespace calls them through the session client's internal
`_request_json` layer, which applies the same base URL and
`Authorization: Bearer <api_key>` header as every other SDK call.

Mutations are limited to BYOK key management and `subscription.cancel`.

## Classes

### `AccountBalance` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L29" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Typed `BalanceResponse` (org\_id, balance\_cents, balance\_dollars).

**Methods:**

#### `from_wire` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L39" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
from_wire(cls, payload: object) -> AccountBalance
```

### `AccountTierLimits` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L51" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Typed `TierLimitsResponse` (tier name plus its limits payload).

**Methods:**

#### `from_wire` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L59" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
from_wire(cls, payload: object) -> AccountTierLimits
```

### `AccountByokStatus` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L72" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Typed BYOK status (byok\_enabled, plan\_type, provider key coverage).

**Methods:**

#### `from_wire` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L83" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
from_wire(cls, payload: object) -> AccountByokStatus
```

### `AccountReadinessCta` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L104" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Typed `AccountReadinessCta` (call-to-action for a failing check).

**Methods:**

#### `from_wire` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L112" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
from_wire(cls, payload: object) -> AccountReadinessCta
```

### `AccountReadinessCheck` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L122" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Typed `AccountReadinessCheck` (one readiness gate with optional CTA).

**Methods:**

#### `from_wire` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L133" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
from_wire(cls, payload: object) -> AccountReadinessCheck
```

### `AccountReadiness` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L152" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Typed `AccountReadinessResponse` (org-level launch readiness with CTAs).

**Methods:**

#### `from_wire` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L160" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
from_wire(cls, payload: object) -> AccountReadiness
```

### `AccountIdentity` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L172" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Typed `MeResponse` (org and user resolution for the API key).

**Methods:**

#### `from_wire` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L182" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
from_wire(cls, payload: object) -> AccountIdentity
```

### `ResearchAccountBalanceAPI` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L198" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Org credit balance and usage summary.

**Methods:**

#### `get` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L204" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
get(self) -> AccountBalance
```

Read the current credit balance. Backend route: `GET /api/v1/balance/current`.

#### `usage` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L209" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
usage(self) -> dict[str, Any]
```

Read the token/GPU usage summary. Backend route: `GET /api/v1/balance/usage`.

### `ResearchAccountCreditsAPI` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L219" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Credits ledger reads.

**Methods:**

#### `transactions` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L225" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
transactions(self) -> dict[str, Any]
```

List purchase/usage transactions, most recent first.

Backend route: `GET /api/v1/credits/transactions` (query `cursor`, `limit`).

### `ResearchAccountTiersAPI` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L250" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Default rate limits per subscription tier.

**Methods:**

#### `list` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L256" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
list(self) -> tuple[AccountTierLimits, ...]
```

List default limits for all tiers. Backend route: `GET /api/v1/usage/tiers`.

#### `get` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L263" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
get(self, tier: str) -> AccountTierLimits
```

Read default limits for one tier. Backend route: `GET /api/v1/usage/tiers/&#123;tier&#125;`.

### `ResearchAccountByokAPI` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L269" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Bring-your-own-key provider key management.

**Methods:**

#### `list` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L275" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
list(self) -> dict[str, Any]
```

List stored provider key metadata. Backend route: `GET /api/v1/byok/keys`.

#### `create` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L284" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
create(self) -> dict[str, Any]
```

Store a provider key (ciphertext encrypted with `crypto.public_key`).

Backend route: `POST /api/v1/byok/keys`.

#### `get` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L303" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
get(self, provider: str) -> dict[str, Any]
```

Read stored key metadata for one provider.

Backend route: `GET /api/v1/byok/keys/&#123;provider&#125;`.

#### `delete` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L315" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
delete(self, provider: str) -> dict[str, Any]
```

Delete the stored key for one provider.

Backend route: `DELETE /api/v1/byok/keys/&#123;provider&#125;`.

#### `validate` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L327" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
validate(self, provider: str) -> dict[str, Any]
```

Validate the stored key against the provider's API.

Backend route: `POST /api/v1/byok/keys/&#123;provider&#125;/validate`.

#### `status` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L342" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
status(self) -> AccountByokStatus
```

Read BYOK enablement and provider key coverage.

Backend route: `GET /api/v1/byok/status`.

### `ApiKeyRedactedRow` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L353" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Typed redacted key row (`prefix` + `last4` only; never the secret).

**Methods:**

#### `from_wire` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L366" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
from_wire(cls, payload: object) -> ApiKeyRedactedRow
```

### `MintedApiKey` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L381" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

ONE-TIME mint/rotate result.

`key` is the full `sk_synth_user_...` secret and is shown exactly
once — the backend never returns it again (listings are redacted).
Store it immediately; treat this object as sensitive material.

**Methods:**

#### `from_wire` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L398" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
from_wire(cls, payload: object) -> MintedApiKey
```

### `ApiKeyDeactivated` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L412" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Typed delete result (soft deactivation; the row is kept inactive).

**Methods:**

#### `from_wire` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L420" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
from_wire(cls, payload: object) -> ApiKeyDeactivated
```

### `ResearchAccountKeysAPI` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L429" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Synth API-key lifecycle (list redacted, mint, rotate, deactivate).

Requires backend routes `/api/v1/auth/keys` (backend PR
feat/api-key-lifecycle-routes-20260720); the caller's API key is the
principal, and every operation is scoped to that key's (user, org).

**Methods:**

#### `list` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L440" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
list(self) -> tuple[ApiKeyRedactedRow, ...]
```

List the caller's active keys, redacted (prefix + last4 only).

Backend route: `GET /api/v1/auth/keys`.

#### `create` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L451" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
create(self) -> MintedApiKey
```

Mint a new key; the full secret is returned exactly once.

Backend route: `POST /api/v1/auth/keys`. Returns 409 if an active
key already exists (use :meth:`rotate`). `name` is refused by the
backend today (no name column); pass it only once naming ships.

#### `rotate` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L469" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
rotate(self, key_id: str) -> MintedApiKey
```

Rotate: deactivate `key_id` and mint a replacement.

The old secret stops validating within the backend auth-cache TTL.
Backend route: `POST /api/v1/auth/keys/&#123;key_id&#125;/rotate`. The new
secret is returned exactly once.

#### `delete` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L480" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
delete(self, key_id: str) -> ApiKeyDeactivated
```

Deactivate `key_id` (soft delete; the backend keeps the row inactive).

Backend route: `DELETE /api/v1/auth/keys/&#123;key_id&#125;`.

### `ResearchAccountMembersAPI` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L490" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Org member listing.

**Methods:**

#### `list` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L496" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
list(self) -> dict[str, Any]
```

List org members with app-user details.

Backend route: `GET /api/members` (mounted with the `/api` prefix,
not `/api/v1`; query `limit`, `offset`).

### `ResearchAccountSubscriptionAPI` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L514" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Subscription lifecycle (cancel only).

**Methods:**

#### `cancel` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L520" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
cancel(self) -> dict[str, Any]
```

Cancel the subscription at the end of the current billing period.

Backend route: `POST /api/v1/subscription/cancel`.

### `ResearchAccountCryptoAPI` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L533" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Public-key material for client-side key encryption.

**Methods:**

#### `public_key` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L539" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
public_key(self) -> dict[str, Any]
```

Read the app public key used to encrypt BYOK keys.

Backend route: `GET /api/v1/crypto/public-key`.

### `ResearchAccountAPI` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L552" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Org account namespace: balance, credits, usage, BYOK, members, identity.

**Methods:**

#### `balance` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L567" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
balance(self) -> ResearchAccountBalanceAPI
```

Org credit balance and usage summary.

#### `credits` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L574" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
credits(self) -> ResearchAccountCreditsAPI
```

Credits ledger transactions.

#### `tiers` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L581" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
tiers(self) -> ResearchAccountTiersAPI
```

Default per-tier rate limits.

#### `byok` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L588" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
byok(self) -> ResearchAccountByokAPI
```

Provider key (BYOK) management.

#### `keys` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L595" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
keys(self) -> ResearchAccountKeysAPI
```

Synth API-key lifecycle (list redacted / mint / rotate / deactivate).

#### `members` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L602" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
members(self) -> ResearchAccountMembersAPI
```

Org member listing.

#### `subscription` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L609" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
subscription(self) -> ResearchAccountSubscriptionAPI
```

Subscription lifecycle (cancel).

#### `crypto` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L616" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
crypto(self) -> ResearchAccountCryptoAPI
```

Public-key material for BYOK encryption.

#### `usage` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L622" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
usage(self) -> dict[str, Any]
```

Read current org usage counters. Backend route: `GET /api/v1/usage`.

#### `user_limits` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L631" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
user_limits(self) -> dict[str, Any]
```

Read effective limits for the authenticated user.

Backend route: `GET /api/v1/usage/user-limits`.

#### `overview` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L643" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
overview(self) -> dict[str, Any]
```

Read the entitlements + usage + spend overview.

Backend route: `GET /api/v1/usage/overview` (query `days` 1-365,
`include_projects`).

#### `readiness` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L668" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
readiness(self) -> AccountReadiness
```

Read org account readiness checks (balance, runway, tier headroom, BYOK).

Backend route: `GET /api/v1/account/readiness`.

#### `me` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/account.py#L677" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
me(self) -> AccountIdentity
```

Resolve the org/user identity for the API key.

Backend route: `GET /api/v1/me`.
