Section 3 — The Advertiser API · Last verified: MAY 2026

Ad Groups

Chapter 16 — Ad Groups

Ad groups sit inside a campaign and define bidding and contextual targeting hints.

Endpoints

MethodPathPurpose
GET/ad_groups?campaign_id=...List ad groups for a campaign.
POST/ad_groupsCreate.
GET/ad_groups/{id}Retrieve one.
POST/ad_groups/{id}Update.
POST/ad_groups/{id}/activateActivate.
POST/ad_groups/{id}/pausePause.
POST/ad_groups/{id}/archiveArchive (irreversible).
GET/ad_groups/{id}/insightsPerformance at ad-group scope.

Create-ad-group fields

FieldTypeRequiredNotes
campaign_idstringYesParent campaign.
namestringYes3–1000 chars, non-space required.
descriptionstringNo
context_hintsstring[]NoFree-form keywords or descriptions of when the ad should appear.
statusstringYesactive or paused.
bidding_config.billing_event_typestringYesCurrently only impression.
bidding_config.max_bid_microsintegerYes1 to 100,000,000.

Context hints

Free-form hints describe when the product or service might be relevant. The example in OpenAI’s docs is ["productivity", "team collaboration"]. These are soft signals that guide placement, not hard-keyword matches like Google Ads keywords.

For a Shopify brand selling running shoes, useful hints might be:

["running", "marathon training", "trail running shoes", "athletic footwear"]

Treat them as a way to bias relevance, not as a substitute for a strong contextually-relevant landing page. The CRS Encyclopedia covers the landing-page side; this field is the ad-group hook.

Micros explained

Currency fields use micros — millionths of the main currency unit. To bid a $60 CPM ($0.06 per impression in a USD account), pass 60000 (60,000 millionths of a dollar). The example max_bid_micros: 60000 in OpenAI’s quickstart corresponds to a $60 CPM target.

You wantPass as
$0.01 per impression ($10 CPM)10000
$0.06 per impression ($60 CPM)60000
$0.10 per impression ($100 CPM)100000
$1.00 per impression ($1,000 CPM)1000000

Note: this is not the same convention as amount on conversion events (Chapter 11). Conversion events use integers in lowest currency denomination ($129.99 → 12999). The Advertiser API uses micros for bids and budgets ($1.00 → 1000000). Two conventions, two contexts.

Update behaviour

All fields are optional on update. description accepts null to clear. If bidding_config is included, send the full object. status accepts active, paused, or archived.

Example: create an ad group

curl -X POST "https://api.ads.openai.com/v1/ad_groups" 
  -H "Authorization: Bearer $OPENAI_ADS_API_KEY" 
  -H "Content-Type: application/json" 
  -d '{
    "campaign_id": "cmpn_101",
    "name": "US English",
    "description": "Primary English-speaking audience.",
    "context_hints": ["productivity", "team collaboration"],
    "status": "active",
    "bidding_config": {
      "billing_event_type": "impression",
      "max_bid_micros": 60000
    }
  }'

Bidding semantics

Currently the only billing_event_type is impression. You bid a maximum cost per impression; OpenAI’s auction decides what you actually pay. The trade-press CPC band reported around the May 5 launch is roughly $3–$5 per click, which corresponds to wide ranges in CPM depending on CTR — there is no fixed conversion. The advertiser-controlled lever is max_bid_micros. Use the Insights endpoint (Chapter 19) to read back actual cpc and cpm once delivery starts.