ChatGPT Ads with no surprises on the invoice

Valkiria connects a ChatGPT Ads account with an API key from ads.openai.com, reads campaigns, ad groups, ads and Insights performance, and builds new campaigns as a chain. Everything lands paused: launching and archiving both go through an explicit spend confirmation.

Connect ChatGPT Ads

Why a new channel is riskier than the familiar ones

The first decisions are final

The bidding type cannot be changed after a campaign is created, and archiving cannot be undone. A wrong first click costs a whole new campaign, not an edit.

Money travels in micros

The API carries budgets in micros: one extra zero turns 10 into 10,000,000. Inside a plain Ads Manager form that typo is nearly impossible to spot.

One key per ad account

OpenAI issues a separate Bearer key for every ad account. The keys scatter across chats and spreadsheets, and nobody remembers which one belongs to which client.

Three steps from the key to a paused campaign

  1. A key instead of OAuth

    The client creates an API key in ads.openai.com → Settings. Valkiria verifies it against the ad account and stores it encrypted: one key, one account.

  2. Sync the account

    Campaigns, ad groups, ads and daily impressions, clicks, spend and conversions from Insights land in the shared tables, with micros converted to plain money.

  3. Build paused, launch on confirmation

    Campaign → ad group → ad are created paused. The server accepts a launch or an archive only with an explicit spend confirmation attached.

What you get inside the ChatGPT Ads account

No OAuth, no app review

No application waiting on approval and no redirect URI: the client hands over the key from their account and the channel runs the same day.

The key is stored encrypted

It is never shown in the interface and never reused between accounts — one key is bound to exactly one advertiser account.

The full creation chain

Campaign, ad group and ad are built in sequence, and every object appears paused, waiting for a person.

Launch and archive behind a confirmation

Activating starts spending and archiving is irreversible, so both require an explicit spend confirmation — without it the server refuses the request.

A dry run before anything is sent

Validation mode runs every check without touching the provider: minimum budget, bidding type, and the length limits on the ad title and body.

Conversions API with deduplication

Server-side events carry the same event id as the OAIQ pixel, so one conversion is never counted twice.

ChatGPT Ads next to every other channel

Spend and results use the same metrics as Meta, Google and TikTok, so the new channel is readable on day one.

In numbers

PAUSED
the status every campaign, ad group and ad is created in
1
API key equals one ad account — no OAuth involved
13
ad platforms in one control room, ChatGPT Ads included

Questions about the ChatGPT Ads integration

Do I need OAuth or app review to connect ChatGPT Ads?

No. Unlike Meta or Google, OpenAI does not use OAuth for its advertising API: each ad account issues its own Bearer key. There is no app to submit and no redirect URI — the client's key is enough, and Valkiria verifies it directly against the API before storing it.

Where do I get a ChatGPT Ads API key?

In the ad account at ads.openai.com, under Settings. The account owner creates it and it works only for that account. With several clients you will have several keys — each is connected in Valkiria separately and stored encrypted.

Can Valkiria launch a campaign and start spending on its own?

No. Everything it creates lands paused, and the server accepts an activation only with an explicit spend confirmation. In the interface that is a separate dialog naming the campaign and its budget, so a stray click in a table never starts delivery.

Why is the budget entered differently from other ad accounts?

The OpenAI advertising API carries every monetary value in micros: one million micros equals one unit of the account currency. Valkiria converts them on the way in and out, so you work with normal amounts and a stray zero never becomes a million-unit budget.

Can I change the bidding type after the campaign is created?

No, the provider does not allow the bidding type to change after creation. The decision is therefore made once, before anything is sent, and Valkiria checks it up front. If a campaign should optimise for conversions, the conversion event settings must exist before the campaign is created, not after.

Can archiving a campaign be undone?

No — on the provider side archiving is irreversible. That is why it sits behind the same confirmation as a launch: the server refuses the request without an explicit operator approval. Archived campaigns show no buttons that would only produce errors.

Bring ChatGPT Ads into the same control room

All you need is the key from your client's account. Connecting takes a minute, and everything created stays paused until you confirm the spend.

Start free