Inputs
SelectableOption
Output
Type:Dict
Returns the created ad object exactly as returned by the OpenAI Ads API (id, name, status, creative, review, review_status, created_at, updated_at).
Fields: dynamic (depend on the inputs)
Example:
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
Creates a new ad under an ad group in the connected OpenAI Ads account — a chat_card creative with its own image and URL, or a product_ad_template creative for product-feed campaigns
| App | OpenAI Ads |
| Operation ID | openai_ads_create_ad |
| Type | Action |
| Connection | openai_ads (required) |
| Credits per run | 1 |
| Agent / MCP tool | Yes |
| Requires approval | Yes (write operation) |
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
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. |
image_crop | object or string | No | - | Optional crop region for the creative image, as JSON with “x”, “y”, “width”, and “height” given as fractions of the image dimensions (0-1), e.g. {“x”: 0, “y”: 0.1, “width”: 1, “height”: 0.8}. |
query_string_template | string | No | - | Optional landing-page query string template appended to the destination URL for tracking, e.g. ‘utm_source=chatgpt’. |
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
value | string | Yes | - | |
label | string | Yes | - |
Dict
Returns the created ad object exactly as returned by the OpenAI Ads API (id, name, status, creative, review, review_status, created_at, updated_at).
Fields: dynamic (depend on the inputs)
Example:
{
"id": "ad_...",
"name": "Planner launch card",
"status": "active",
"creative": {
"type": "chat_card",
"title": "Try the planner",
"body": "All in one place."
},
"review_status": "pending"
}
