The Ad Account Resource
Chapter 14 — The Ad Account Resource
GET /ad_account returns metadata for the ad account scoped to the current API key. It takes no body and no query parameters.
Request
curl -X GET "https://api.ads.openai.com/v1/ad_account"
-H "Authorization: Bearer $OPENAI_ADS_API_KEY" Response
{
"id": "act_123",
"name": "Acme Ads",
"url": "https://www.acme.example",
"preview_url": "https://preview.acme.example",
"timezone": "UTC",
"currency_code": "USD"
} Field reference
| Field | Notes |
|---|---|
id | Ad account identifier. |
name | Display name. |
url | Primary destination URL. |
preview_url | Optional preview destination. |
timezone | Account timezone. All time-bound parameters (campaign start/end, insights buckets) respect this. |
currency_code | Account currency. All *_micros fields are denominated in this currency. |
When to use it
This endpoint is the standard “is my key working?” check. Use it as the first call in any new integration. If it returns 200, your key is provisioned and scoped correctly. If it returns 401, the key is invalid or the bearer header is malformed. If it returns 403, the key is valid but the account is suspended or unauthorised.
The response is also the source of truth for two pieces of state every other call depends on:
timezone— when you build campaigns withstart_timeandend_time, those Unix timestamps are interpreted in this zone. Insights buckets (readable_time,start_time,end_time) come back in this zone.currency_code— every*_microsfield in the API is denominated here. Alifetime_spend_limit_microsof25000000is $25 in a USD account, €25 in a EUR account, £25 in a GBP account.
Cache the response at integration startup. There’s no reason to call it on every request.
Account-scope insights
The same path also exposes account-level insights at GET /ad_account/insights — see Chapter 19 for the query parameters and response shape.
Multi-account integrations
A single API key is scoped to one ad account. Agencies and tools managing multiple advertisers need a separate key per account, with the integration storing them keyed by id (returned here). OpenAI offers a contact path at openai.com/advertisers/ for advertisers needing a different model.