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

# Ad Account

> Retrieve your organization's default ad account — the top-level scope every campaign, ad group, and ad belongs to.

Every advertiser organization has exactly one default ad account. It is the parent scope for all of your campaigns and the account the Thrad Platform charges. This endpoint returns that account so you can confirm scope, currency, and timezone before creating campaigns.

> [!NOTE]
>
> The ad account is read-only over the API. There is no create, update, or list operation — an organization always has a single default account, provisioned for you in the Thrad Platform dashboard.

## Authorizations

**Authorization** `string` *required*

Bearer token using your organization's API key: `Authorization: Bearer ak_...`. There is **one active key per organization** — create or rotate it in the Thrad Platform dashboard under **Settings → API keys**. Store it as the `THRAD_ADS_API_KEY` environment variable.

## Request

`GET /v1/ad_account`

This endpoint takes no path, query, or body parameters.

```bash cURL theme={null}
curl https://api.thrad.ai/v1/ad_account \
  -H "Authorization: Bearer $THRAD_ADS_API_KEY"
```

```python Python theme={null}
import os
import requests

resp = requests.get(
    "https://api.thrad.ai/v1/ad_account",
    headers={"Authorization": f"Bearer {os.environ['THRAD_ADS_API_KEY']}"},
)
account = resp.json()
print(account["id"])
```

```json 200 - OK theme={null}
{
  "id": "f3a1c2d4-5b6e-47a8-9c0d-1e2f3a4b5c6d",
  "name": "Acme Inc.",
  "url": "https://acme.com",
  "timezone": "UTC",
  "currency": "usd",
  "archived_at": null,
  "preview_url": "https://cdn.thrad.ai/uploads/2026/04/acme-logo.png"
}
```

```json 401 - Unauthorized theme={null}
{
  "error": {
    "message": "Invalid API key.",
    "type": "authentication_error",
    "param": null,
    "code": "invalid_api_key"
  }
}
```

## Response

**id** `string`

The ad account's identifier (a UUID). Use this value as `ad_account_id` when creating a campaign for a non-default account; omit it to target the default account.

**name** `string`

Display name of the ad account. May be an empty string if no name is set.

**url** `string`

The advertiser's website URL. Falls back to your organization's domain when the account has none, and may be an empty string if neither is set.

**timezone** `string`

The account timezone. Always `"UTC"` — every timestamp in the API is an ISO 8601 string in UTC.

**currency** `string`

The **lowercase** ISO code every amount under this account is denominated in — `"usd"` today. Currency is an account-level invariant: campaigns, ad groups, and ads inherit it and never carry their own.

> [!NOTE]
>
> This is the *pricing* currency (what budgets, bids, and insights spend are denominated in), which is distinct from an organization's billing currency — an invoicing concept that can be set independently.

**archived\_at** `string | null`

ISO 8601 timestamp if the account has been reversibly archived, otherwise `null`.

**preview\_url** `string`

Optional. A URL to the account's logo image, returned only when a logo has been set. Absent otherwise.

## Errors

Errors use the bare error shape — `{ "error": { "message", "type", "param", "code" } }` — not the platform envelope.

| Status | Type | Code | When |
| - | - | - | - |
| `401 Unauthorized` | `authentication_error` | `auth_required` | The `Authorization` header is missing entirely. |
| `401 Unauthorized` | `authentication_error` | `invalid_api_key` | The `Authorization: Bearer ak_...` key is malformed, unknown, or revoked. |
| `429 Too Many Requests` | `rate_limit_error` | `rate_limit_exceeded` | Exceeded the per-key limit of 1000 requests/hour. |

> [!TIP]
>
> Money and timestamps elsewhere in this API follow strict conventions: every amount — budgets, bids, and insights spend — is in **integer micros** (`$1 = 1,000,000`), and every timestamp is an **ISO 8601 string** in UTC. The ad account confirms the scope those conventions apply in: `timezone` is UTC and `currency` is `usd`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.