Skip to main content
The ChatGPT Ads replica implements 26 endpoints of the Advertiser API v1. It is the advertising API, not the OpenAI model API. Its key is chatgpt-ads.

Connect

Node
This is what ancha connect chatgpt-ads --lang ts prints. Creates accept an idempotency-key header.

Endpoints

All endpoints are partial. Unsupported methods, routes and fields return HTTP 501 with x-ancha-gap: 1.

Ad account

Campaigns

Ad groups

Ads

Insights

Behavior

  • Lists are scoped to the account, with an exact name filter and forward and backward ID cursors.
  • Updates replace budgets; archiving is permanent and archived objects cannot change.
  • Review. New ads are reviewed by a local rule and approved 60 simulated seconds after creation.
  • Insights are historical hourly delivery, grouped by none or by day in the account’s time zone.
  • Rate limits. 600 requests a minute per endpoint and 1,200 per account, in simulated time.

Starter data

The chatgpt-ads-starter dataset is the ad account Acme (adacct_acme, USD, America/Los_Angeles). Hourly insights exist for “Pipeline clarity”, for example 1,200 impressions and 36 clicks in one hour. A second account, Helix Manufacturing (adacct_helix), with a paused campaign, exists to test that the key stays inside its own account.

Checks

ChatGPT Ads has no state checks. Use trace checks, for example { called: "POST /v1/campaigns/cmpn_acme_pilot/pause" }.

Limits

  • Single-image chat cards only; no file uploads.
  • No auction, spend, destination crawling or conversion attribution.