# Show the calling account

`GET /account`

- Base: `GET https://portal.watcheye.com.au/api/v1/account`

Returns the account that this API key belongs to, including the environment, the products
the account can use, and the current billing balance.

This is the recommended first call for any new integration: it lets you confirm that your
credentials work, that you are pointed at the expected environment (`live` or `sandbox`),
and that the products you intend to use are enabled on the account.

## Sub accounts

For a sub account API key:

* `parent_account_uuid` is populated with the parent (reseller) account's UUID.
* `balance`, `credit_limit` and `available_credit` are sourced from the parent account
  because that is the account charges are billed against.
* `products` is the intersection of the parent's products and the sub account's own
  products - that is, the products this sub account can actually use.

## Responses

### 200 Account response

Content type: `application/json`

| Field | Type | Description |
|-------|------|-------------|
| `data` | object |  |
| `data.uuid` | string (uuid) | The account's UUID Example: `7a1f0c8e-2b9f-4f0e-8d1a-1e2b3c4d5e6f` |
| `data.account_name` | string | The display name of the account Example: `Sample Account` |
| `data.company_name` | string | The legal/company name on file for the account Example: `Sample Company Pty Ltd` |
| `data.environment` | string | Which environment this account (and any keys on it) operate in: * `live` - real screening data; calls bill against the account's balance * `sandbox` - sandbox/test data; calls do not bill Enum: `live`, `sandbox` Example: `live` |
| `data.is_reseller` | boolean | Whether this account is a reseller (i.e. has sub accounts under it). The Reseller functionality itself (managing sub accounts) is portal-only - this flag is exposed so integrators can detect that they are operating against a reseller account. Example: `false` |
| `data.parent_account_uuid` | string (uuid) or null | The UUID of the parent account when this account is a sub account of a reseller. `null` for normal (top-level) accounts. |
| `data.expires_at` | string (date-time) or null | ISO 8601 timestamp at which the account is scheduled to expire. `null` means no expiry. After the expiry date the API will reject calls with `401 Account Expired`. Example: `2026-12-31T00:00:00Z` |
| `data.data_retention_days` | integer or null | Account-level data retention in days. `null` means the system default applies. Note: per-program retention is configured separately via `data_retention_months` on each program. Example: `365` |
| `data.balance` | string | Current cash balance for the billing account, as a decimal string with 4 decimal places. For sub accounts this is the parent's balance because charges are billed to the parent. Negative values indicate the account has been billed beyond its cash balance and is consuming credit limit. Example: `1234.5678` |
| `data.credit_limit` | string | Credit limit for the billing account, as a decimal string with 4 decimal places. Calls remain billable while `balance + credit_limit >= cost_of_call`; once that sum drops below the cost, billable endpoints return `402 Insufficient Credit`. Example: `100.0000` |
| `data.available_credit` | string | Convenience field equal to `balance + credit_limit`, expressed as a decimal string with 4 decimal places. This is the actual amount available to spend on billable calls. Example: `1334.5678` |
| `data.products` | array of objects | The list of products this account can actually use. Each entry is a product the account is entitled to call billable endpoints against. For sub accounts, this is the intersection of the parent's products and the sub account's own product entitlements (a sub account cannot use a product the parent does not have, and the reseller can further restrict what the sub account can use). |
| `data.products[].name` | string | Stable machine-readable product key. Use this in code paths that decide which endpoints to call. Example: `pep_sanction_check` |
| `data.products[].label` | string | Human-readable product name. Suitable for display in dashboards. Example: `PEP and Sanction Check` |
| `data.created_at` | string (date-time) | ISO 8601 timestamp at which the account was created Example: `2025-01-01T00:00:00Z` |
| `data.updated_at` | string (date-time) | ISO 8601 timestamp at which the account was last updated Example: `2025-01-01T00:00:00Z` |
| `api_reference` | string (uuid) |  |

**Sample response**

```json
{
    "data": {
        "uuid": "7a1f0c8e-2b9f-4f0e-8d1a-1e2b3c4d5e6f",
        "account_name": "Sample Account",
        "company_name": "Sample Company Pty Ltd",
        "environment": "live",
        "is_reseller": false,
        "parent_account_uuid": null,
        "expires_at": "2026-12-31T00:00:00Z",
        "data_retention_days": 365,
        "balance": "1234.5678",
        "credit_limit": "100.0000",
        "available_credit": "1334.5678",
        "products": [
            {
                "name": "pep_sanction_check",
                "label": "PEP and Sanction Check"
            }
        ],
        "created_at": "2025-01-01T00:00:00Z",
        "updated_at": "2025-01-01T00:00:00Z"
    },
    "api_reference": "00000000-0000-0000-0000-000000000000"
}
```

Standard error responses: 401, 403, 429, 5XX (see [Common error responses](/docs/reference/general/common-error-responses.md))

