Creating a Creative
A creative is created in the account's Creative Library with Create a creative. It is stored with status = ACTIVE and is not assigned to any campaign. No campaign needs to exist yet.
To run the creative, assign it to one or more campaigns. To create many creatives at once, see Bulk creative operations.
Choose the creative type
creative_type is required and cannot be changed after creation. It decides which other fields are required, optional or not allowed:
| Field | STATIC_IMAGE | PERFORMANCE_VIDEO | DISPLAY |
|---|---|---|---|
url | Required | Required | Required |
name | Optional | Optional | Required |
title | Required | Required | Not allowed |
thumbnail_url | Required | Not allowed | Not allowed |
performance_video_data | Not allowed | Required | Not allowed |
display_data | Not allowed | Not allowed | Required |
description, cta, rating, disclaimer, logo, app_install | Optional | Optional | Not allowed |
creative_crop | Optional | Not allowed | Not allowed |
ai_disclosure, custom_id | Optional | Optional | Optional |
verification_pixel, viewability_tag, start_date, end_date, activity_schedule | Optional | Optional | Optional |
Passing a field that is not allowed for the creative type returns 400. See Creative fields for each field.
Native image creative
- Host the image on a publicly accessible URL, or upload it with Upload a local image and use the returned URL. See Managing images.
- Create the creative with
creative_type=STATIC_IMAGE,url,thumbnail_urlandtitle.
POST /backstage/api/1.0/demo-advertiser/creatives{
"creative_type": "STATIC_IMAGE",
"name": "Summer sale hero",
"url": "https://www.demo-advertiser.com/summer-sale",
"thumbnail_url": "https://cdn.demo-advertiser.com/thumbnails/summer-sale.jpg",
"title": "Summer sale: up to 50% off",
"description": "Limited-time offer on the full summer collection",
"cta": {
"cta_type": "SHOP_NOW"
}
}{
"id": 4321000001,
"status": "ACTIVE",
"creative_type": "STATIC_IMAGE",
"orientation": "HORIZONTAL",
"ads": null,
...
}To provide different images per aspect ratio (for example a vertical variant), add creative_crop, with the same structure as for campaign items. See Multi-image and vertical ads.
Motion creative
- Host the video (MP4) and the fallback image (JPG or PNG) on publicly accessible URLs. See Motion ad assets flow for the upload endpoints.
- Create the creative with
creative_type=PERFORMANCE_VIDEO,url,titleandperformance_video_data.
POST /backstage/api/1.0/demo-advertiser/creatives{
"creative_type": "PERFORMANCE_VIDEO",
"name": "Summer sale motion",
"url": "https://www.demo-advertiser.com/summer-sale",
"title": "Summer sale: up to 50% off",
"performance_video_data": {
"video_url": "https://cdn.demo-advertiser.com/video/summer-sale.mp4",
"fallback_url": "https://cdn.demo-advertiser.com/video/summer-sale-fallback.jpg"
}
}{
"id": 4321000002,
"status": "ACTIVE",
"creative_type": "PERFORMANCE_VIDEO",
"performance_video_data": {
"video_url": "https://cdn.demo-advertiser.com/video/summer-sale.mp4",
"fallback_url": "https://cdn.demo-advertiser.com/video/summer-sale-fallback.jpg",
"gif_url": null
},
...
}
Nothumbnail_urlfor motion creativesThe fallback image is passed in
performance_video_data.fallback_url. Passingthumbnail_urlon aPERFORMANCE_VIDEOcreative returns 400.
Display creative
A display creative is either a hosted asset (an image, HTML or video file that Taboola hosts) or a third-party tag.
- For a hosted asset, either pass the asset's public HTTPS URL in
hosted_display_data.asset_url(Taboola uploads it), or upload it first and pass the returned assetidinhosted_display_data.id. Asset types, size limits and the upload flow are the same as for display campaign items; see Upload display ads by URL. - Create the creative with
creative_type=DISPLAY,name,urlanddisplay_data. Indisplay_data, pass one ofhosted_display_data.id,hosted_display_data.asset_urlorad_tag, plusdimensions.
POST /backstage/api/1.0/demo-advertiser/creatives{
"creative_type": "DISPLAY",
"name": "Summer sale 300x250",
"url": "https://www.demo-advertiser.com/summer-sale",
"display_data": {
"hosted_display_data": {
"id": 55001
},
"dimensions": [
{
"width": 300,
"height": 250
}
]
}
}{
"id": 4321000003,
"status": "ACTIVE",
"creative_type": "DISPLAY",
"display_data": {
"display_ad_type": "HOSTED_IMAGE",
"hosted_display_data": {
"id": 55001,
"asset_url": "https://cdn.taboola.com/libtrc/static/thumbnails/summer-sale-300x250.jpg",
"mime_type": "image/jpeg"
},
"dimensions": [
{
"width": 300,
"height": 250
}
],
"responsive_mode": "FIXED"
},
...
}Passing both hosted_display_data and ad_tag, or neither, returns 400 (Display data must contain either ad tag or hosted asset id). An unknown hosted_display_data.id returns 404. Display creatives require the display ads feature on the account.
After creation
- The creative is
ACTIVEand unassigned. Itsadsfield isnull. - If the media needs processing, the status can be
CRAWLINGfor a short time. The creative is read-only while crawling. See Creative statuses. - If a required asset could not be processed, the status is
NEED_TO_EDIT. Fix the field with Update a creative before assigning. - Creatives are always created in the advertiser account. Creating a creative under a network account returns 400.
Declaring AI-generated contentIf the creative's media was created or substantially modified by generative AI, pass
"ai_disclosure": { "status": "AI_GENERATED" }. The declaration lives on the creative and applies to every ad created from it; it cannot be changed on the ad. See AI Disclosure Object.
Tracking and schedulingTo give every ad created from the creative the same verification pixels, viewability tags or schedule, set
verification_pixel,viewability_tag,start_date,end_dateandactivity_scheduleon the creative. Each new ad gets its own copy when the creative is assigned, and can then be changed per ad. See Tracking and scheduling.
See also
Updated about 20 hours ago
