What Does a ChatGPT Ads Account Control in 2026?
An ad account owns campaigns, creative assets, feeds, audiences and conversion sources, and its brand name and advertiser icon identify the advertiser in ads. It is also where account-wide spending controls live. Everything in the Ads API guide sits underneath it, so a problem at account level stops every campaign at once.
These are the first-hour questions for any advertiser new to the platform: what name appears on the ads, why delivery has not started despite everything looking active, and how to stop a launch spending more than the client approved. OpenAI's documentation answers all three, and the answers are more specific than most platforms provide.
| Account area | What it controls | Editable later? |
|---|---|---|
| Currency and timezone | How every budget and date is interpreted | No. Creation-time choices, not editable through the branding update |
| Branding | The public name and icon shown on ads | Yes, but name changes pause delivery until review |
| Status | Whether the account is configured active or paused | Yes, through pause and activate |
| Reviews | Brand review and a separate account-integrity review | Not directly; they are outcomes |
| Spend limits | Account-wide caps by date window or by day | Yes, subject to edit rules |
Why Does an Account Have Three Different Names?
Because they serve three audiences. OpenAI documents legal_name for the legal business name, account_name for the internal name shown in Ads Manager, and brand_name for the public advertiser name shown in ads. The response also includes name, which matches legal_name.
| Field | Purpose | Who sees it |
|---|---|---|
legal_name | Legal business name | Review and billing context |
account_name | Internal name shown in Ads Manager | Your team and your agency |
brand_name | Public advertiser name shown in ads | People seeing the ad in ChatGPT |
For agencies the separation is useful. account_name can follow your internal client naming convention without affecting anything public. You can update the three names independently, and omitted names remain unchanged. One trap: the legacy name field sets all three to the same value, and OpenAI says not to combine it with the individual name fields.
How Do You Set Advertiser Branding in 2026?
Upload an icon, then apply the brand name, website and icon in one request. The icon must be JPEG, PNG or WebP at a minimum of 256 by 256 pixels, uploaded with purpose=account_favicon.
curl -X POST "https://api.ads.openai.com/v1/upload" -H "Authorization: Bearer ${OPENAI_ADS_API_KEY}" -F "file=@/path/to/favicon.png" -F "purpose=account_favicon"
curl -X POST "https://api.ads.openai.com/v1/ad_account/brand" -H "Authorization: Bearer ${OPENAI_ADS_API_KEY}" -H "Content-Type: application/json" -d '{
"brand_name": "Acme",
"url": "https://example.com",
"favicon_file_id": "file_123"
}'
OpenAI states that changing the legal or public brand name pauses ad delivery until the account passes review. A rebrand, a typo correction or a client asking for a different display name mid-campaign all stop every ad in the account. Get the public name right before launch, and schedule any later change for a moment when a delivery pause is acceptable.
After any branding update, retrieve the account again and check its review state. OpenAI also notes that the returned preview_url is a preview of the advertiser icon and not a permanent asset URL, so do not store it as the durable source for that image.
Why Can an Active Account Still Not Deliver?
Because configured status and reviews are separate, and approved branding is only one requirement among several. OpenAI is explicit that an active account with approved branding can still have another outstanding account review, an exhausted spend limit, or campaign-level delivery issues. This is the single most common source of "everything is green but nothing is serving" confusion on a new account.
curl -G "https://api.ads.openai.com/v1/ad_account" -H "Authorization: Bearer ${OPENAI_ADS_API_KEY}"
| Field | What it tells you |
|---|---|
status | Whether the account is configured as active or paused |
review.status | Brand-review state |
review.reason | Reason for a brand-review issue, when available |
account_integrity_review.review.status | A separate account-review state, when the object is returned |
One interpretation rule matters. OpenAI states the response can omit account-integrity review information when no corresponding state is available, and that an omitted object should not be interpreted as an explicit approval or rejection. Absence is not a green light.
What Do Pausing and Activating the Account Actually Do?
Pausing stops delivery across every campaign in the account; activating allows eligible campaigns to deliver again. OpenAI recommends using account controls only when the change should apply to the whole account, and pausing a campaign, ad group or ad for anything narrower.
curl -X POST "https://api.ads.openai.com/v1/ad_account/pause" -H "Authorization: Bearer ${OPENAI_ADS_API_KEY}"
curl -X POST "https://api.ads.openai.com/v1/ad_account/activate" -H "Authorization: Bearer ${OPENAI_ADS_API_KEY}"
Two things activation does not establish, both stated in the documentation. It does not mean every campaign is active, every ad is approved, or every budget has capacity. And a pause does not rewrite child statuses, so you should not infer that campaigns were set to paused after an account pause. Retrieve the child resource if you need its configured state. For an agency's emergency stop, the account pause is the fastest single lever; for anything else, it is too blunt.
How Do Account Spend Limits Work in 2026?
Two mechanisms exist, and they sit alongside campaign budgets rather than replacing them. Date-range spend-limit windows cap total spending across all campaigns over a date range. Daily account limits, added in the changelog on 9 September 2026 for accounts on postpaid invoice billing, set a shared allowance across campaigns that renews at midnight in the account timezone. OpenAI notes that spend-limit windows are available only to some accounts.
Date-range spend-limit windows
curl -X POST "https://api.ads.openai.com/v1/ad_account/spend_limit_windows" -H "Authorization: Bearer ${OPENAI_ADS_API_KEY}" -H "Content-Type: application/json" -d '{
"start_date": "2026-10-01",
"end_date": "2026-11-01",
"amount_micros": 10000000000,
"name": "October account limit",
"io_id": "IO-123"
}'
The example caps spending at 10,000 currency units. start_date is inclusive and end_date is exclusive, both interpreted in the account timezone. The optional io_id is a useful hook for agencies that reconcile spend against insertion orders.
| Window rule | What OpenAI documents |
|---|---|
| Overlap | Windows cannot overlap |
| Future windows | You can schedule up to 60 |
| Active window start date | Cannot be changed |
| Reducing the amount | Cannot go below spending that has already occurred |
| Completed windows | Cannot be edited or deleted |
| Deleting or raising an exhausted active limit | Can allow delivery to resume if nothing else blocks it |
Daily account limits
A daily limit repeats until removed or until its optional end date. New daily limits start tomorrow or later, using earliest_daily_start_date from the list response. Edits use optimistic concurrency: you send expected_revision from the latest list response, and a stale revision returns 409.
curl -X POST "https://api.ads.openai.com/v1/ad_account/daily_spend_limit" -H "Authorization: Bearer $OPENAI_ADS_API_KEY" -H "Content-Type: application/json" -d '{
"amount_micros": 100000000,
"expected_revision": 12,
"start_date": "2026-10-01",
"end_date": null
}'
The example creates a 100 USD daily allowance with no end date. Increases and decreases take effect on save. Removal also takes effect on save and, per OpenAI, retains historical accounting for delayed charges.
Why Do Account Limits and Campaign Budgets Need Separate Checks?
Because they apply independently and neither allocates to the other. OpenAI states an account limit does not allocate a budget to each campaign, so a campaign can have budget remaining while the account's active limit is exhausted. Conversely, removing an account limit does not remove the campaigns' own budgets. Raising a campaign budget does not override an exhausted account limit.
For agency practice in 2026 this is the mechanism to use for client protection. Campaign budgets express the media plan; an account window tied to the insertion order expresses the contractual ceiling. If a script sets a campaign budget wrong, the account limit still holds. OpenAI also warns that if your integration uses another account spending control, inspect it separately rather than assuming that deleting a window removes every account-level control.
What Errors Should You Expect on Spending Limits?
OpenAI documents a specific error table for spending limit changes, and the 503 behaviour is the one worth building into tooling.
| Status | What to do |
|---|---|
400 | Correct missing or malformed fields, including invalid dates or dates outside 2000-01-01 to 2100-01-01 |
409 | Refresh the list and reconcile a stale revision or configuration conflict before resubmitting |
422 | Correct the amount, date ordering, overlapping limits, or a change to a completed window. A decrease below recorded spend returns budget_window_amount_below_spend |
503 | Refresh before retrying a daily mutation, because the change may have succeeded even if its response could not be loaded |
That last row is the important one. A naive retry on 503 can apply a change twice, or reapply an old value over a newer one. Refresh, compare, then decide.
What Must an Agency Confirm Before Managing a Client Account?
OpenAI's API Partner Setup guide lists the prerequisites: an Ads API key for the client ad account, access to the client's website and brand assets, and a server-side secret manager for the Ads API key and any Conversions API keys you create. Each key works with one ad account, so per-client key management is the operating model.
Several capabilities must also be enabled for the specific client account, and the failure modes are distinctive enough to recognise. A brand update returning 403, or /conversions/pixels or /conversions/api_keys returning 404 with Not found, means contact your OpenAI partner representative. Conversion-optimised campaigns also need enabling; a 403 reading Conversion bidding is not enabled has the same remedy. A Client data source not found response means an event setting references a source that does not exist in the current ad account, which usually means a key for the wrong client. The measurement side is covered in the Measurement Pixel guide, and conversion bidding in the oCPC guide.
What Are the Common Account Mistakes in 2026?
- Changing the brand name mid-campaign. It pauses delivery until review passes.
- Choosing the wrong currency or timezone. Both are creation-time choices that cannot be edited later.
- Reading an omitted review object as approval. OpenAI says not to interpret it as approval or rejection.
- Assuming an active account means delivery. Reviews, spend limits and campaign issues can each block it.
- Raising a campaign budget to fix an exhausted account limit. They apply independently.
- Retrying a 503 blindly. The change may have succeeded; refresh first.
- Using the legacy
namefield with individual names. It overwrites all three. - Storing
preview_urlas the icon's permanent URL. It is a preview, not a durable asset.
Key Takeaways for 2026
Account-level settings on ChatGPT Ads are few, mostly permanent, and capable of stopping every campaign at once, which makes the first hour of setup worth doing carefully.
- Currency and timezone are fixed at creation.
- Three names serve three audiences: legal, internal and public, updatable independently.
- Changing the legal or public brand name pauses delivery until review passes.
- Status and reviews are separate, and an omitted review object is neither approval nor rejection.
- Account pause is the fastest emergency stop, but does not rewrite child statuses.
- Date-range windows and, since 9 September 2026, daily limits cap spend across campaigns.
- Account limits and campaign budgets apply independently; neither overrides the other.
- Agencies need one key per client account, a secrets manager, and several capabilities enabled per account.
Distk sets up and operates paid media accounts for growth teams across India and internationally, and the account layer is where we put the client protections: correct currency and timezone, the public name right first time, and an insertion-order spend window above every campaign budget. If you are opening a ChatGPT Ads account in 2026, that setup is where we would start.
Sources
- OpenAI, Account Management, including branding, statuses and reviews, activation and spend limits.
- OpenAI, Ad Account API reference, including daily limits and error handling.
- OpenAI, API Partner Setup.
- OpenAI, Ads API Overview and changelog.
Every field, rule and status code in this guide is quoted from OpenAI's published Ads documentation as of 1 October 2026. Spend-limit windows are documented as available only to some accounts, and daily limits to accounts on postpaid invoice billing.