Zernio
APIFor you
Zernio
APIFor you
Platforms

OpenAI Ads

Overview

Build

Create a Campaign

Measure

Conversion TrackingAnalytics

Operate

Manage Ads

Reference

Limits & Errors
Dashboard
OverviewPlatformsAPI ReferenceResources
OpenAI Ads

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}/status pauses 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, 422 without one).
  • goal sets the campaign objective.
  • promotedObject.customEventType picks the conversion event exactly as on POST /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:

FieldLevelMeaning
statusCampaign, ad group, adDelivery status, cascaded from the ancestors, so an ad under a paused campaign reads paused
platformCampaignStatusCampaignThe campaign's own switch: active, paused or archived
configuredStatusAdThe 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.

Was this page helpful?

Analytics

Read the daily impressions, clicks and spend Zernio syncs from OpenAI for a ChatGPT ad.

Limits & Errors

OpenAI Ads creative and account limits, what the integration does not support, and the errors it returns most often.

On this page

Read status