Create a creative

Create a creative in the account's Creative Library. The creative is not assigned to any campaign. To create ads from it, see Assigning creatives to campaigns.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Overview

Create a creative in the account's Creative Library. The creative is stored in the library and is not assigned to any campaign. To create ads from it, see Assigning creatives to campaigns.

The required fields depend on creative_type. To choose the type and prepare the assets, see Creating a creative.

Native (image) creative

Example - create a STATIC_IMAGE creative:

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"
  },
  "custom_id": "SS-2026-HERO"
}
{
  "id": 4321000001,
  "name": "Summer sale hero",
  "account_id": "demo-advertiser",
  "status": "ACTIVE",
  "creative_type": "STATIC_IMAGE",
  "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",
  "display_data": null,
  "creative_crop": null,
  "performance_video_data": null,
  "cta": {
    "cta_type": "SHOP_NOW"
  },
  "rating": null,
  "create_time_in_utc": "2026-09-01 10:15:30",
  "disclaimer": null,
  "orientation": "HORIZONTAL",
  "logo": null,
  "ads": null,
  "app_install": null,
  "ai_disclosure": null,
  "custom_id": "SS-2026-HERO"
}
📘

Required fields (STATIC_IMAGE)

  1. creative_type - "STATIC_IMAGE"
  2. url - the landing page URL
  3. thumbnail_url - the image URL
  4. title
📘

Optional fields (STATIC_IMAGE)

name, description, cta, creative_crop, rating, disclaimer, logo, app_install, ai_disclosure, custom_id, verification_pixel, viewability_tag, start_date, end_date, activity_schedule. See Creative fields.


To provide different images per aspect ratio (for example a vertical variant), use creative_crop, with the same structure as for campaign items. See Multi-image and vertical ads.

Motion creative

Example - create a PERFORMANCE_VIDEO creative:

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,
  "name": "Summer sale motion",
  "account_id": "demo-advertiser",
  "status": "ACTIVE",
  "creative_type": "PERFORMANCE_VIDEO",
  "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",
    "gif_url": null
  },
  ...
}
📘

Required fields (PERFORMANCE_VIDEO)

  1. creative_type - "PERFORMANCE_VIDEO"
  2. url - the landing page URL
  3. title
  4. performance_video_data - with video_url (MP4) and fallback_url (JPG or PNG)

thumbnail_url and creative_crop are not supported for motion creatives: the fallback image goes in performance_video_data.fallback_url. If passed, the endpoint returns 400.

📘

Optional fields (PERFORMANCE_VIDEO)

name, description, cta, rating, disclaimer, logo, app_install, ai_disclosure, custom_id, verification_pixel, viewability_tag, start_date, end_date, activity_schedule. See Creative fields.

Display creative

Example - create a DISPLAY creative from a hosted asset:

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,
  "name": "Summer sale 300x250",
  "account_id": "demo-advertiser",
  "status": "ACTIVE",
  "creative_type": "DISPLAY",
  "url": "https://www.demo-advertiser.com/summer-sale",
  "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"
  },
  ...
}
📘

Required fields (DISPLAY)

  1. creative_type - "DISPLAY"
  2. name
  3. url - the landing page URL
  4. display_data - with one of: hosted_display_data.id (an asset already uploaded), hosted_display_data.asset_url (a new asset, uploaded from its URL - see Upload display ads by URL) or ad_tag (a third-party tag); plus dimensions.

title, description, thumbnail_url, cta, creative_crop, rating, disclaimer, logo and app_install are not supported for display creatives. If passed, the endpoint returns 400.

📘

Optional fields (DISPLAY)

display_data.responsive_mode, ai_disclosure, custom_id, verification_pixel, viewability_tag, start_date, end_date, activity_schedule. See Creative fields.

🚧

Display creative errors

  1. Passing both hosted_display_data and ad_tag, or neither, returns 400 (Display data must contain either ad tag or hosted asset id).
  2. An unknown hosted_display_data.id returns 404.
  3. Display creatives require the display ads feature on the account.

General guidelines

🚧

Guidelines

  1. The new creative is created with status = ACTIVE and is unassigned. It does not serve until it is assigned to a campaign.
  2. id, account_id, status, orientation, create_time_in_utc and ads are read-only. Passing them returns 400.
  3. Unknown fields are rejected with 400 (Unknown field name).
  4. Creatives cannot be created under a network account (400); use the advertiser account.
📘

Creative consolidation

If the request is identical to an existing creative in the library, no new creative is created. The existing creative is returned, with a creative_consolidation object: matched_creative_id is set to its ID and source_creative_id is null. Always read id from the response. See Creative consolidation.

📘

See also

Path Params
string
required

An alphabetic ID. See Get Account Details.

Body Params
json
required
Defaults to { "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" }, "custom_id": "SS-2026-HERO" }

A creative object. Required fields depend on creative_type - refer to the notes provided.

Responses

Language
Credentials
OAuth2
LoadingLoading…
Response
Choose an example:
application/json