Create standalone ad
Creates a paid ad with custom creative across Meta, Google Ads, Pinterest, TikTok, X/Twitter, LinkedIn, and OpenAI Ads (ChatGPT Ads). Supports three mutually-exclusive request shapes selected by the body, a legacy single-creative shape (all platforms, default), a Meta-only multi-creative shape via the creatives array (one ad set with N ads sharing budget and targeting), and an attach shape via adSetId that adds one new ad to an existing ad set, inheriting its budget, targeting, and schedule (Meta, TikTok, and LinkedIn; on LinkedIn adSetId is the existing Campaign id, and the budget, schedule, targeting and bidding fields must be omitted). Per-platform required fields, budget minimums, and video-ad rules are documented on each property below. LinkedIn creates a Single Image or Single Video Ad backed by a Direct Sponsored Content "dark post" authored by a Company Page (see organizationId); supported goals are engagement, traffic, awareness, and video_views (video ads use the video field; video_views requires a video), and traffic ads require linkUrl.
Idempotency: this endpoint is not idempotent at the platform level (a blind retry creates a second campaign/ad set/ad). Send an Idempotency-Key header to make retries safe: the first request with a given key creates the ad and we store the response; a retry with the same key replays that exact response (with Idempotent-Replayed: true) instead of creating duplicates. Reusing a key with a different body returns 422; a key whose first request is still in flight returns 409 (retry after a short backoff). Keys are scoped to your credential and expire after 24h.
Headers
Optional client-generated unique key (e.g. a UUID) that makes retries safe. Same key + same body replays the original response; same key + different body → 422; key still processing → 409.
Request body
Response
validateOnly dry-run passed — nothing was created
Changes
Changed in 10 of the 26 revisions of this API.7119
- ▲
added
subschema #1subschema #2to the response bodyoneOflist for the response status201response-body-one-of-added
- ○
removed
subschema #1subschema #2from the response bodyoneOflist for the response status201response-body-one-of-removed
- ▲
- ○
added the new optional request property
calloutsnew-optional-request-property
- ○
added the new optional request property
structuredSnippetsnew-optional-request-property
- ○
- ▲
added
subschema #1subschema #2to the response bodyoneOflist for the response status201response-body-one-of-added
- ○
added the new optional request property
sitelinksnew-optional-request-property
- ○
added the new
page_likesenum value to the request propertygoalrequest-property-enum-value-added
- ○
removed
subschema #1subschema #2from the response bodyoneOflist for the response status201response-body-one-of-removed
This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog
- ▲
- ○
added the non-success response with the status
502response-non-success-status-added
- ○
- ▲
added
subschema #1subschema #2to the response bodyoneOflist for the response status201response-body-one-of-added
- ○
added the new optional request property
campaignStatusnew-optional-request-property
- ○
removed
subschema #1subschema #2from the response bodyoneOflist for the response status201response-body-one-of-removed
- ▲
- ▲
the
currencyrequest property's minLength was increased from0to3request-property-min-length-increased
- ●
the
currencyrequest property's maxLength was set to3request-property-max-length-set
This revision also has 2 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog
- ▲
- ▲
added
subschema #1subschema #2to the response bodyoneOflist for the response status201response-body-one-of-added
- ○
added the new optional request property
smartPlusnew-optional-request-property
- ○
removed
subschema #1subschema #2from the response bodyoneOflist for the response status201response-body-one-of-removed
- ▲
- ▲
added
subschema #1subschema #2to the response bodyoneOflist for the response status201response-body-one-of-added
- ○
removed
subschema #1subschema #2from the response bodyoneOflist for the response status201response-body-one-of-removed
- ▲
- ▲
added
subschema #1subschema #2to the response bodyoneOflist for the response status201response-body-one-of-added
- ○
added the new optional request property
negativeKeywordsnew-optional-request-property
- ○
removed
subschema #1subschema #2from the response bodyoneOflist for the response status201response-body-one-of-removed
- ▲
- ○
added the new optional request property
multiAdvertisernew-optional-request-property
- ○
request property
bidAmountdeprecatedrequest-property-deprecated
- ○
request property
bidStrategydeprecatedrequest-property-deprecated
- ○
request property
roasAverageFloordeprecatedrequest-property-deprecated
- ○
added
MetaAdsPlatformDatato theplatformSpecificDatarequest propertyoneOflistrequest-property-one-of-added
- ○