ad_group_id | string or SelectableOption | Yes | - | Parent ad group ID to create the ad under (from openai_ads_list_ad_groups). |
name | string | Yes | - | Ad name (3-1000 characters). |
status | string or SelectableOption | Yes | - | Ad status: ‘active’ or ‘paused’. |
creative_type | string or SelectableOption | No | chat_card | Creative type. ‘chat_card’ (the default) is a standard ad with its own image and URL. ‘product_ad_template’ is for ad groups in a product-feed campaign: the image and URL come from the feed items, and title/body/price support tokens like {{product.title}} and {{product.price}}. |
title | string | Yes | - | Creative title / headline (3-50 characters). Product template ads can use tokens, e.g. {{product.title}}. |
body | string | Yes | - | Creative body text (up to 100 characters). Product template ads can use tokens, e.g. {{product.body}}. |
price | string | No | - | Optional price text shown on the creative, e.g. ‘$29.99’ — or the {{product.price}} token on product template ads. |
target_url | string | No | - | Destination URL the ad links to. Required for chat_card ads; unused for product template ads (the URL comes from each feed item). |
image_url | string | No | - | Image for the ad creative. Accepts a Markifact file URL, a Google Drive share link, or a public image URL — it is downloaded and uploaded to OpenAI Ads automatically. chat_card ads need this or file_id; product template ads take images from the feed. |
file_id | string | No | - | An already-uploaded OpenAI Ads file_id to use for the creative instead of image_url (get one with openai_ads_upload_media). Only for chat_card ads. |