Skip to content

Create Campaign Ads Batch

POST
/ad-campaigns/{campaign_id}/ads/batch

Add several ads at once.

Returns status="partial" when any individual ad failed, with per-ad outcomes in results. Inspect those rather than treating a 200 as total success — one creative rejected on policy does not stop its siblings.

Authorizations

Parameters

Path Parameters

campaign_id
required

Ad campaign ID

integer

Ad campaign ID

Header Parameters

X-Target-Org-Id
Any of:
string

Request Body required

Add several ads at once — “launch these four creatives as four ads”.

Partial success is expected: one creative rejected on policy does not stop the others, and the response reports each outcome separately.

object
ads
required
Array<object>
>= 1 items <= 20 items

Add one ad to a campaign.

Valid before launch (created with its siblings when the campaign launches) and after (pushed to the live campaign immediately). extra="forbid" so a field we never wired is a 422 rather than a silent success.

object
copy_assets
Any of:
object
key
additional properties
any
creative_image_url
Any of:
string
<= 500 characters
creative_image_url_portrait
Any of:
string
<= 500 characters
creative_image_url_square
Any of:
string
<= 500 characters
cta
Any of:
string
<= 50 characters
description
Any of:
string
<= 1000 characters
destination_url
Any of:
string
<= 500 characters
headline
Any of:
string
<= 255 characters
logo_image_url
Any of:
string
<= 500 characters
name
Any of:
string
<= 255 characters
primary_text
Any of:
string
<= 1000 characters
source_ad_creative_id
Any of:
string
<= 64 characters

Responses

200

Successful Response

object
data
required
object
campaign_id
required
integer
failed
required
integer
platform
Any of:
string
requested
required
integer
results
required
Array<object>
object
ad
Any of:

One ad inside a campaign — a creative slot.

id is graph8’s, and it is stable: editing an ad almost always mints a new platform ad (LinkedIn creatives are immutable, and on Google only Search/RSA is mutable in place), but the slot and its measurement history survive that. Address an ad by this id, never by platform_ad_id.

object
approval_nuance
Any of:
string
campaign_id
required
integer
copy_assets
Any of:
object
key
additional properties
any
created_at
Any of:
string
creative_image_url
Any of:
string
creative_image_url_portrait
Any of:
string
creative_image_url_square
Any of:
string
cta
Any of:
string
description
Any of:
string
destination_url
Any of:
string
error_message
Any of:
string
headline
Any of:
string
id
Any of:
integer
launched_at
Any of:
string
logo_image_url
Any of:
string
name
Any of:
string
platform_ad_id
Any of:
string
policy_topics
Any of:
Array<object>
object
key
additional properties
any
primary_text
Any of:
string
slot_index
required
integer
source_ad_creative_id
Any of:
string
status
required

Draft | launching | active | paused | archived | failed

string
error
Any of:
string
index
required
integer
status
required
string
status
required

Ok | partial — never render success off a 200 alone

string
succeeded
required
integer
pagination
Any of:
object
has_next
required

Whether there are more pages

boolean
limit
required

Items per page

integer
next_cursor
Any of:
string
page
required

Current page number (1-indexed)

integer
total
required

Total number of items

integer

422

Validation Error

object
detail
Array<object>
object
loc
required
Array
msg
required
string
type
required
string