Skip to main content

ChatGPT Ads Integration

Publish ads that appear inside ChatGPT responses as a “chat card” — a title, body, image, and click-through URL — and manage them conversationally from ChatGPT, Claude, or any supported AI client. ChatGPT Ads (OpenAI Ads) is a pay-per-click auction. Adspirer turns the launch, management, and measurement of these ads into plain-language requests across 31 tools: describe the ad you want and the agent builds the campaign, ad group, image upload, and chat_card ad for you — every object created PAUSED until you resume it.

Prerequisites

  • An OpenAI Ads (Advertiser) account with an Advertiser API key (generated in OpenAI Ads Manager → Settings → API keys)
  • Adspirer account connected via ChatGPT, Claude Code, or any supported AI client
  • A public image URL (PNG or JPG) for the ad creative

Connecting ChatGPT Ads

ChatGPT Ads is the first Adspirer platform that connects with a pasted API key instead of an OAuth browser login. You connect once in the Adspirer web app — the chat agent never asks for your key.
One API key = exactly one ad account. Unlike Google, Meta, TikTok, LinkedIn, and Amazon (which use an OAuth browser redirect and can import multiple accounts), each ChatGPT Ads key maps to a single advertiser account.
  1. In OpenAI Ads Manager, go to Settings → API keys and generate (or copy) your Advertiser API key
  2. Open the Adspirer web app and go to the Connections tab
  3. Click “Connect ChatGPT Ads”
  4. Paste your Advertiser API key and save — the key is stored encrypted
Once connected, the account joins your Adspirer multi-account switcher and is usable from chat. Verify the connection from your AI assistant:
Check my connected ad platforms
You should see your ChatGPT Ads account listed with its name, account ID, and review status.

Optional: Conversions step

In the same Connect flow, set up conversion measurement (recommended). You can configure one or both:
  • Client-side Pixel — a small JS snippet you add to your site <head>, configured with your Pixel ID
  • Conversions API (server-side) — paste a Conversions API key for more reliable attribution
Supported events include order_created, lead_created, subscription_created, and trial_started. You can also configure and verify conversions from chat (see Conversion Tracking below).

What You Can Do (31 Tools)

ChatGPT Ads is driven through Adspirer’s conversational tools. Connecting and disconnecting are done in the web app, not via a chat tool — everything else is available from your AI assistant.

Accounts

  • list_chatgpt_accounts — Your connected ChatGPT Ads account(s), with name, ID, and account review status

Campaigns

  • list_chatgpt_campaigns / get_chatgpt_campaign — List campaigns or get the full detail of one
  • create_chatgpt_campaign — Create a campaign (created PAUSED)
  • update_chatgpt_campaign — Change budget, schedule, or targeting
  • pause_chatgpt_campaign / resume_chatgpt_campaign — Stop serving, or resume to go live
  • archive_chatgpt_campaign — Archive a campaign

Ad Groups

  • list_chatgpt_ad_groups / get_chatgpt_ad_group — List ad groups or get one
  • create_chatgpt_ad_group — Add an ad group (bid + targeting) to a campaign
  • update_chatgpt_ad_group — Update bid, schedule, or targeting
  • pause_chatgpt_ad_group / resume_chatgpt_ad_group / archive_chatgpt_ad_group — Control ad-group state

Ads

  • list_chatgpt_ads / get_chatgpt_ad — List ads or get one
  • create_chatgpt_ad — Create a chat_card ad (title, body, image, destination URL)
  • update_chatgpt_ad — Update an ad’s creative
  • pause_chatgpt_ad / resume_chatgpt_ad / archive_chatgpt_ad — Control ad state

Launch & Creative

  • launch_chatgpt_ad — The one-shot orchestrator. Builds the whole paused ad in one step from URL + headline + body + image + budget + geo (creates the campaign, ad group, image upload, and chat_card ad)
  • upload_chatgpt_creative — Upload a chat_card image from a public URL
  • chatgpt_geo_lookup — Resolve a location like “California” to a valid targeting value

Insights

  • get_chatgpt_performance — Headline metrics: impressions, clicks, spend, CTR, CPC (plus conversions once the pixel/CAPI is live)
  • get_chatgpt_insights — Scoped, detailed insights with selectable fields, filters, sort, pagination, and zero-impression rows

Conversions

  • set_chatgpt_conversions_config / get_chatgpt_conversions_config — Configure (or review) your Pixel and Conversions API setup
  • list_chatgpt_conversion_events — See the conversion events being recorded
  • test_chatgpt_conversion — Send a test conversion to confirm tracking works end to end
The object model (Account → Campaign → Ad Group → Ad) is hidden by the agent — you just describe the ad you want, and it builds the right structure. The agent speaks in dollars, not micros. Minimum budget is $1/day.

How a Launch Works

Launching never spends money on its own. Everything is created paused, and you resume it when you’re ready.
1

You describe the ad

“Run a ChatGPT ad for adspirer.com, $25/day, target California, headline ‘Your AI Paid Media Agent’, body ‘Run ads from ChatGPT’, use this image: [url].”
2

The agent builds everything — PAUSED

launch_chatgpt_ad resolves the location, creates the campaign + ad group, uploads the image from your URL, and builds the chat_card ad. Nothing serves or spends yet. (Prefer step-by-step control? The agent can build the same tree with create_chatgpt_campaigncreate_chatgpt_ad_groupupload_chatgpt_creativecreate_chatgpt_ad.)
3

You review

Check the campaign, budget, and creative. The agent reports the ad’s review status honestly — it never claims an ad is “live” while review is pending or rejected.
4

You resume to go live

On your say-so, resume_chatgpt_campaign takes it live — subject to OpenAI’s review. Want to stop again? pause_chatgpt_campaign.
launch_chatgpt_ad   →   everything created PAUSED

you review the budget + creative

resume_chatgpt_campaign   →   live (pending review)

Example Prompts

Launch an Ad

Launch a ChatGPT chat_card ad — created paused so you review before it goes live.

Open in Cursor

Check Performance

ChatGPT Ads metrics for the week — impressions, clicks, spend, CTR, CPC.

Open in Cursor

Pause or Adjust Budget

Pause a ChatGPT campaign or change its daily budget.

Open in Cursor

Creative Requirements

The ChatGPT ad renders as a single chat_card — a title, body, image, and destination URL.
FieldRule
Title / headline3–50 characters
BodyUp to 100 characters
ImageOne image, supplied as a public image URL (PNG or JPG). Adspirer uploads from the URL — no binary file upload. Square, at least 256×256 px recommended
Destination URLMust be http/https
Provide a public, reachable image URL. Non-PNG/JPG files or unreachable URLs are rejected up front. Non-square or smaller-than-256px images produce a warning — they can still be rejected at review.

Conversion Tracking

Conversion measurement is optional but recommended. Set it up in the Conversions step of the Connect flow (see Connecting ChatGPT Ads), or configure and verify it from chat with set_chatgpt_conversions_config and test_chatgpt_conversion. You can use either or both methods:
  • Client-side Pixel — add a small JS snippet to your site <head>, configured with your Pixel ID
  • Conversions API (server-side) — paste a Conversions API key for more reliable attribution
Supported events:
EventMeaning
order_createdA purchase or order was completed
lead_createdA lead was captured
subscription_createdA subscription started
trial_startedA free trial began
Use test_chatgpt_conversion to fire a test event and confirm tracking works, then list_chatgpt_conversion_events to see what’s being recorded. Once the pixel or Conversions API is live, conversions appear alongside impressions, clicks, spend, CTR, and CPC in get_chatgpt_performance.

Ad Review and Policy

Every ad — and the account itself — must pass OpenAI’s review before it can serve. OpenAI’s ad policies disallow some categories, notably “third-party AI services”, so AI-company advertisers should expect extra scrutiny. The agent reports the review status (in_reviewapproved/rejected) honestly — it will not tell you an ad is “live” while review is pending or rejected.

Safety Guardrails

These are built into the tools, not optional settings:
  • Everything is created PAUSED. Nothing serves or spends until you resume it with resume_chatgpt_campaign.
  • The agent speaks in dollars, never micros, so budgets are always clear.
  • Review status is reported honestly — no false “live” claims while review is pending or rejected.

Best Use Cases for ChatGPT Ads

  • Reaching people inside ChatGPT — put your offer in front of users at the moment they’re asking an AI for help
  • Simple, single-card creative — one headline, one short body line, one image, one link; no video production required
  • Pay-per-click testing — start at as little as $1/day, review before you resume, and read CTR/CPC before scaling
Not ideal for: rich multi-format creative (use Meta Ads for image/video/carousel), high-intent search capture (use Google Ads), or categories OpenAI’s policies disallow (e.g. third-party AI services).

Troubleshooting

”Not connected” — ChatGPT Ads doesn’t appear

ChatGPT Ads is connected in the web app, not from chat. Open the Adspirer web app → Connections tab → “Connect ChatGPT Ads” and paste your Advertiser API key. Then ask your assistant to “Check my connected ad platforms."

"Invalid API key”

The pasted key is wrong, revoked, or for the wrong account. Generate a fresh Advertiser API key in OpenAI Ads Manager → Settings → API keys, then re-paste it in the Connections tab. Remember: one key = one ad account.

Ad stuck in review

OpenAI reviews both the account and each ad before it can serve. in_review is normal for new ads and accounts. AI-related advertisers face extra scrutiny — if the ad is rejected, the category may be disallowed (see Ad Review and Policy). Use list_chatgpt_accounts to check the account review status.

Image rejected

Make the image square and at least 256×256 px, in PNG or JPG, served from a public, reachable URL. Non-PNG/JPG files and unreachable URLs are rejected up front; non-square or undersized images warn and may be rejected at review.

FAQ

ChatGPT Ads (OpenAI Ads) authenticates with an Advertiser API key, not an OAuth browser redirect like Google, Meta, TikTok, LinkedIn, and Amazon. You paste the key once in the Adspirer web app’s Connections tab; it’s stored encrypted and the chat agent never asks for it. One key maps to exactly one ad account.
Adspirer pricing is based on tool calls, not ad spend. Free tier: 15 calls/month. Plus: 49150/mo.Pro:49–150/mo. Pro: 99–600/mo. Max: $199–3,000/mo. Launching a ChatGPT ad uses a handful of tool calls. Your ad spend is billed separately by OpenAI. See full pricing.
No. Everything is created PAUSED — nothing serves or spends until you resume it with resume_chatgpt_campaign. The agent always speaks in dollars (not micros), so the budget is clear before you go live, and you can pause_chatgpt_campaign at any time.
One image, supplied as a public PNG or JPG URL — Adspirer uploads it from the URL (no file upload). Square, at least 256×256 px is recommended. Non-square or smaller images produce a warning and may be rejected at review; non-PNG/JPG or unreachable URLs are rejected up front.
Yes. Your Advertiser API key is stored encrypted in the Adspirer web app and is never exposed to the chat agent. All connections are HTTPS-encrypted. You can disconnect the account from the Connections tab at any time, and you can revoke the key from OpenAI Ads Manager.
get_chatgpt_performance reports impressions, clicks, spend, CTR, and CPC. get_chatgpt_insights gives a scoped, detailed view with selectable fields, filters, sort, and pagination. Once you’ve configured the client-side Pixel or the Conversions API, conversions (order_created, lead_created, subscription_created, trial_started) appear alongside those metrics.
Last modified on June 18, 2026