Manage Ads
Change the status and budget of an OpenAI ad, create a campaign on its own, and read the status fields OpenAI keeps at each level.
As on every other ads platform:
PUT /v1/ads/{adId}changes status and budget.PUT /v1/ads/{adId}/statuspauses or resumes a single ad.
Sending targeting or creative returns 501 with code unsupported_platform_operation.
Budget edits. Send budget: { amount, type } on PUT /v1/ads/{adId} or PUT /v1/ads/campaigns/{campaignId}. It replaces the campaign's single spend cap with the one you send, daily or lifetime.
A lifetime cap can switch to daily. OpenAI never switches a daily cap back to lifetime, so that edit returns 422: create a new campaign for a lifetime budget.
Campaigns created in ChatGPT Ads Manager with a daily cap are editable the same way.
Campaign only. POST /v1/ads/campaigns creates a campaign on its own, without an ad group or ad.
- It takes a daily or lifetime budget (required,
422without one). goalsets the campaign objective.promotedObject.customEventTypepicks the conversion event exactly as onPOST /v1/ads/create.
Read status
OpenAI keeps a separate on/off switch at each level, so GET /v1/ads/tree reports two kinds of status:
| Field | Level | Meaning |
|---|---|---|
status | Campaign, ad group, ad | Delivery status, cascaded from the ancestors, so an ad under a paused campaign reads paused |
platformCampaignStatus | Campaign | The campaign's own switch: active, paused or archived |
configuredStatus | Ad | The ad's own switch: ACTIVE, PAUSED or ARCHIVED, unaffected by a paused campaign or ad group |
OpenAI's listings leave out archived campaigns, ad groups and ads. Zernio re-reads by id any stored ad the listing no longer returns, and records its real terminal status.
An ad archived in Ads Manager, or sitting under an archived campaign or ad group, settles as archived instead of keeping a stale status. One OpenAI no longer finds is marked deleted.
Deleting archives. OpenAI has no delete API, and archiving is terminal. Cancelling an ad in Zernio archives the ad, its ad group and its campaign on OpenAI, then marks the ad cancelled in Zernio.