Connect
ChatGPT Ads: connect, report and manage campaigns
TL;DR
ChatGPT Ads connects to OpenAI's Ads API with an API key from ChatGPT Ads Manager. The agent reads the ad account, campaigns, ad groups, ads, reports, conversions, audiences, pixels and feeds, and prepares changes. Everything it creates starts paused; turning spending on, archiving, audience uploads and spend-limit changes always wait for a person; by default every other change waits for your approval unless auto-approve is on.
Connect
- 1In ChatGPT Ads Manager, open Settings → API keys and create a key for the ad account.
- 2On Integrations, press Connect with an API key on the ChatGPT Ads card, paste the key and press Check and save. The key is checked with OpenAI before it is saved and is stored encrypted.
- 3The ad account the key reaches becomes a row. A teammate can add their own key for the same account; Refresh accounts re-reads each key.
Tools
| Tool | Kind | What it does |
|---|---|---|
| list_ad_accounts / get_ad_account | Read | The ad account: status, review, currency, time zone |
| list_campaigns / get_campaign | Read | Campaigns: status, objective, bidding, budget (whole units) |
| list_ad_groups / get_ad_group | Read | Ad groups: status, context hints, bidding, targeting |
| list_ads / get_ad / preview_ad / get_landing_page_crawl | Read | Ads with their review status and why one is not serving; a preview; what the review read on the landing page |
| report / conversion_insights | Read | Performance by account, campaign, ad group or ad; conversion events and sales by day |
| list_custom_audiences / get_custom_audience / list_pixels / list_conversion_events / list_feeds | Read | Audiences (never the people in them), pixels and their recent events, product feeds |
| geo_lookup / get_audit_logs / get_account_health / get | Read | Location ids for targeting, who changed what, whether the account can deliver, any other read on the account |
| create_campaign / create_ad_group / create_ad | Write | Always created paused |
| update_campaign / update_ad_group / update_ad | Write | Budgets, bids, targeting, context hints and ad copy — read first, shown before and after |
| set_campaign_status / set_ad_group_status / set_ad_status | Write | Pause; ACTIVE and ARCHIVED always wait for a person |
| upload_image / create_custom_audience / create_pixel / set_daily_spend_limit | Write | An ad image, an empty audience, a pixel, the account's daily spend limit |
| add_audience_members / archive_custom_audience | Write | Always wait for a person (personal data; archiving cannot be undone) |
| mutate | Write | Any other Ads API write on the selected ad account (no DELETE) |
Over MCP and the REST API the names are chatgpt_ads__<tool> (for example chatgpt_ads__report).
Approvals and safety
- By default every write waits for your approval card; with auto-approve on (per task, schedule or project) ordinary writes apply inside your spend caps and protected campaigns.
- Always a person's decision, on every lane and whatever the approval setting: setting a campaign, ad group or ad ACTIVE, archiving anything (it cannot be undone), adding or removing audience members, and spend-limit changes through the gateway.
- Campaigns, ad groups and ads are always created paused. There is no delete on the Ads API — pause is the stop.
- Emails and phone numbers for an audience are hashed on our server before they are sent. Money is in whole units of the account currency in every argument and result.
Troubleshooting
| What you see | What it means | What to do |
|---|---|---|
| A daily budget refused as too small | OpenAI refused budgets below $25 a day on our test account | Use at least 25 in the account currency |
| A feature refused (several images, conversion bidding, spend-limit windows) | OpenAI switches these on per account | Ask OpenAI to enable it for your account |
| Account health says not serving | Often a missing payment method or ads in review | Add billing in Ads Manager; check list_ads for review status |
| 401 after a key was revoked | The key no longer works | Paste a new key on the card |
Platform overview: ChatGPT Ads.
Frequently asked questions
- Can the agent start spending on ChatGPT Ads by itself?
- No. Everything it creates starts paused, and activating a campaign, ad group or ad always waits for a person, whatever the approval setting.
- Does it work over MCP and the REST API?
- Yes — the same tools as chatgpt_ads__<tool>, with the same approvals and limits; describe_tool shows each tool's policy.