← 返回目录
📁 Use Cases › Campaign creation › Create Lead Generation ads › Create a Lead Generation ad with optimization location as Website

Create Automotive Ads for Inventory

This article walks you through the steps to create Automotive Ads for Inventory.

Introduction

Automotive Ads for Inventory leverage the vehicle and dealership information stored in your Auto-Inventory catalog to showcase the most relevant vehicles to potential buyers. Buyers can interact with the ads to enter their zip code, then view and filter available vehicles on an Instant Product Page based on attributes like condition, make, model, price, year, and more. This gives buyers a streamlined way to browse and identify vehicles that meet their needs directly from your ad.

You can use Campaign Management API to create Automotive Ads for Inventory, and this helps you streamline your ad creation experience, and elevate operational efficiency and scalability.

Automotive Ads for Inventory with Single Video format
Automotive Ads for Inventory with Single Video format


Automotive Ads for Inventory with Catalog Carousel format
Automotive Ads for Inventory with Catalog Carousel format

Prerequisites

  • You've gained access to TikTok API for Business. See Get Started - Step by step workflow for details.
  • To create Automotive Ads for Inventory, you need relevant permissions. See API Reference to find out permissions required for endpoints (including the endpoints listed in the "Steps" section) and see Update app permissions to find out how to configure permissions.
  • Creating Automotive Ads for Inventory requires setting up an Auto-Inventory catalog in Business Center first.
    To set up the catalog: 1. Create an Auto-Inventory catalog using /catalog/create/. 2. Upload products to the catalog using /catalog/product/upload/ (JSON schema), /catalog/product/file/ (CSV feed template), or /catalog/feed/create/(online data feed schedule). 3. Check the product handling results using /catalog/product/log/.
    Pass in the feed_log_id obtained from Step 2. If the field warn_affected_products in the response is not null, examine the issue details and return to Step 2 to reupload the product. 4. (Optional) Create an Auto-Inventory product set using /catalog/set/create/.
    If you want to have products selected from a product set at the ad level, creating a product set is necessary. Otherwise, you can skip this step. 5. (Optional) Invite members to Business Center and grant the admin permission using /bc/member/invite/.
    You can also choose advertiser_role that you want to assign to the members invited. 6. (Optional) Share a catalog with members and grant catalog management access using /bc/asset/assign/.
    Make sure to specify CATALOG in the asset_type field and ADMIN in the catalog_role field.

Steps

1. Create a campaign

Create a campaign using /campaign/create/. Note that the following requirements must be met.

Setting Requirement Parameter How to configure the parameter
Advertising objective Lead generation objective_type LEAD_GENERATION
Smart+ Campaign Disabled

You cannot use /campaign/spc/create/ to create a Smart+ Automotive Campaign for Inventory.
/ /
iOS 14 Dedicated Campaign Disabled campaign_type REGULAR_CAMPAIGN or not passed
app_id Not passed
campaign_app_profile_page_state Not passed
Use catalog Enabled catalog_enabled true

Example

Request

(code curl http)
curl --location  --request POST 'https://business-api.tiktok.com/open_api/v1.3/campaign/create/' \
--header 'Access-Token: {{Access-Token}}' \
--header 'Content-Type: application/json' \
--data '{
    "advertiser_id": "{{advertiser_id}}",
    "objective_type": "LEAD_GENERATION",
    "campaign_name": "{{campaign_name}}",
    "budget_mode": "BUDGET_MODE_TOTAL",
    "budget": {{budget}},
    "catalog_enabled": true
}'
(/code)

Response

(code curl http)
HTTPS/1.1 200 OK
{
    "code": 0,
    "message": "OK",
    "request_id": "{{request_id}}",
    "data": {
        "catalog_enabled": true,
        "deep_bid_type": null,
        "campaign_name": "{{campaign_name}}",
        "is_search_campaign": false,
        "is_smart_performance_campaign": false,
        "operation_status": "ENABLE",
        "modify_time": "{{modify_time}}",
        "campaign_type": "REGULAR_CAMPAIGN",
        "create_time": "{{create_time}}",
        "secondary_status": "CAMPAIGN_STATUS_ENABLE",
        "objective": "LANDING_PAGE",
        "roas_bid": 0.0,
        "advertiser_id": "{{advertiser_id}}",
        "budget": {{budget}},
        "budget_mode": "BUDGET_MODE_TOTAL",
        "campaign_id": "{{campaign_id}}",
        "is_new_structure": true,
        "objective_type": "LEAD_GENERATION"
    }
}
(/code)

2. Create an ad group

Create an ad group using /adgroup/create/. Note that the following requirements must be met.

Setting Requirement Parameter How to configure the parameter
Product source An Auto-Inventory catalog with at least one approved product product_source CATALOG
catalog_id
catalog_authorized_bc_id
Pass valid values.

The Auto-Inventory catalog (catalog_id) needs to have at least one approved product. You can verify this by checking the value of approved returned from /catalog/overview/, which should be at least 1.

To learn about how to create an Auto-Inventory catalog, see Prerequisites.
Optimization location
(Promotion type)
Website
  • If you want to use the optimization goal Conversions, specify a TikTok Pixel and the corresponding optimization event.
  • If you want to use the optimization goal Click, do not specify TikTok Pixel and the corresponding optimization event.
promotion_type LEAD_GENERATION
promotion_target_type EXTERNAL_WEBSITE
pixel_id
optimization_event
  • If optimization_goal is CONVERT, pass in pixel_id and optimization_event at the same time.
  • If optimization_goal is CLICK, do not pass in pixel_id and optimization_event.

To obtain Pixels with their associated optimization events, use /pixel/list/.
Deep funnel optimization
(Optional)
Enabled or disabled

With deep funnel optimization, you can select a secondary event alongside the primary optimization event, which can help improve campaign effectiveness.
deep_funnel_optimization_status
deep_funnel_event_source
deep_funnel_event_source_id
deep_funnel_optimization_event
  • To enable deep funnel optimization, set deep_funnel_optimization_status to ON and pass deep_funnel_event_source, deep_funnel_event_source_id, and deep_funnel_optimization_event.
  • To disable deep funnel optimization, set deep_funnel_optimization_status to OFF or leave deep_funnel_optimization_status unspecified. Do not pass deep_funnel_event_source, deep_funnel_event_source_id, and deep_funnel_optimization_event.

Note:

  • Deep funnel optimization with CRM events is currently an allowlist-only feature. If you would like to access it, please contact your TikTok representative.
  • Deep funnel optimization with Pixel or Offline events is generally available.
Placement Select Placement with TikTok placement only placement_type PLACEMENT_TYPE_NORMAL
placements ["PLACEMENT_TIKTOK"]
Include search results Disabled search_result_enabled false or not passed
Audience targeting
· Demographics - Location
The location should match or be the subset of the targeting location of your catalog. location_ids IDs of locations that match or are a subset of the targeting location of catalog_id.
Audience targeting
· Demographics - zip code targeting
Supported when the targeting location of your catalog is in the United States. zipcode_ids Supported when the targeting location of catalog_id is in the United States.
Audience targeting
· Demographics - Age
Audiences younger than 18 years old can't be targeted. age_groups Do not pass the value AGE_13_17.
Content exclusions - Inventory filter Supported with allowlist brand_safety_type Pass a valid value (EXPANDED_INVENTORY, STANDARD_INVENTORY, or LIMITED_INVENTORY) or not passed

Note: TikTok inventory filter is currently an allowlist-only feature. If you would like to access it, please contact your TikTok representative.

brand_safety_partner Not passed
Content exclusions - Category exclusions Disabled category_exclusion_ids Not passed
Content exclusions - Vertical sensitivity control Disabled vertical_sensitivity_id Not passed
Optimization goal Any of the following options:
  • Conversions
  • Click
optimization_goal Any of the following values:
  • CONVERT
  • CLICK
Attribution settings
(supported only if Optimization goal is Conversions)
The supported Click-through windows are:
  • 1-day click
  • 7-day click
  • 14-day click
  • 28-day click
click_attribution_window If optimization_goal is CONVERT, the supported values are:
  • ONE_DAY
  • SEVEN_DAYS
  • FOURTEEN_DAYS
  • TWENTY_EIGHT_DAYS
The supported View-through windows are:
  • Off
  • 1-day view
  • 7-day view
view_attribution_window If optimization_goal is CONVERT, the supported values are:
  • OFF
  • ONE_DAY
  • SEVEN_DAYS
The supported Event count options are:
  • Once
  • Every
attribution_event_count If optimization_goal is CONVERT, the supported values are:
  • ONCE
  • EACH
Billing event
  • If Optimization goal is set to Conversions, set Billing event to oCPM.
  • If Optimization goal is set to Click, set Billing event to CPC.
billing_event
  • If optimization_goal is set to CLICK, specify billing_event as CPC.
  • If optimization_goal is set to CONVERT, specify billing_event as OCPM.
Bid strategy & Delivery type
  • If Bid strategy is set to Cost Cap, you can set Delivery type to Standard or Accelerated.
  • If Bid strategy is set to Maximum Delivery, you can only set Delivery type to Standard.
bid_type
pacing
  • If you specify bid_type as BID_TYPE_CUSTOM, you can set pacing to PACING_MODE_SMOOTH or PACING_MODE_FAST.
  • If you specify bid_type as BID_TYPE_NO_BID, you can only set pacing to PACING_MODE_SMOOTH.
Split test Disabled

Automotive Ad Groups for Inventory cannot be used in /split_test/create/ to create split tests.
/ /

Example

Optimization goal as Click

Request

(code curl http)
curl --location  --request POST 'https://business-api.tiktok.com/open_api/v1.3/adgroup/create/' \
--header 'Access-Token: {{Access-Token}}' \
--header 'Content-Type: application/json' \
--data '{
    "advertiser_id": "{{advertiser_id}}",
    "campaign_id": "{{campaign_id}}",
    "adgroup_name": "{{adgroup_name}}",
    "catalog_id": "{{catalog_id}}",
    "catalog_authorized_bc_id": "{{catalog_authorized_bc_id}}",
    "promotion_type": "LEAD_GENERATION",
    "promotion_target_type": "EXTERNAL_WEBSITE",
    "placement_type": "PLACEMENT_TYPE_NORMAL",
    "placements": [
        "PLACEMENT_TIKTOK"
    ],
    "location_ids": [
        "6252001"
    ],
    "budget_mode": "BUDGET_MODE_TOTAL",
    "budget": {{budget}},
    "schedule_type": "SCHEDULE_START_END",
    "schedule_start_time": "{{schedule_start_time}}",
    "schedule_end_time": "{{schedule_end_time}}",
    "optimization_goal": "CLICK",
    "bid_type": "BID_TYPE_CUSTOM",
    "bid_price": {{bid_price}},
    "billing_event": "CPC",
    "pacing": "PACING_MODE_FAST",
    "creative_material_mode": "CUSTOM"
}'
(/code)

Response

(code curl http)
HTTPS/1.1 200 OK
{
    "code": 0,
    "message": "OK",
    "request_id": "{{request_id}}",
    "data": {
        "interest_category_ids": [],
        "isp_ids": [],
        "schedule_start_time": "{{schedule_start_time}}",
        "placement_type": "PLACEMENT_TYPE_NORMAL",
        "placements": [
            "PLACEMENT_TIKTOK"
        ],
        "next_day_retention": null,
        "purchased_impression": null,
        "share_disabled": false,
        "auto_targeting_enabled": false,
        "comment_disabled": false,
        "app_download_url": null,
        "rf_estimated_frequency": null,
        "age_groups": null,
        "smart_interest_behavior_enabled": null,
        "catalog_authorized_bc_id": "{{catalog_authorized_bc_id}}",
        "purchased_reach": null,
        "video_download_disabled": false,
        "app_id": null,
        "dayparting": "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
        "promotion_type": "LEAD_GENERATION",
        "deep_bid_type": null,
        "adgroup_name": "{{adgroup_name}}",
        "schedule_infos": null,
        "feed_type": null,
        "scheduled_budget": 0,
        "secondary_optimization_event": null,
        "conversion_bid_price": 0,
        "skip_learning_phase": false,
        "category_id": "0",
        "category_exclusion_ids": [],
        "pacing": "PACING_MODE_FAST",
        "deep_cpa_bid": 0,
        "delivery_mode": null,
        "adgroup_app_profile_page_state": null,
        "interest_keyword_ids": [],
        "gender": "GENDER_UNLIMITED",
        "campaign_name": "{{campaign_name}}",
        "adgroup_id": "{{adgroup_id}}",
        "billing_event": "CPC",
        "conversion_window": null,
        "bid_price": 1,
        "search_result_enabled": false,
        "schedule_end_time": "{{schedule_end_time}}",
        "statistic_type": null,
        "rf_purchased_type": null,
        "location_ids": [
            "6252001"
        ],
        "optimization_goal": "CLICK",
        "bid_display_mode": "CPMV",
        "audience_ids": [],
        "promotion_target_type": "EXTERNAL_WEBSITE",
        "network_types": [],
        "secondary_status": "ADGROUP_STATUS_CREATE",
        "campaign_id": "{{campaign_id}}",
        "catalog_id": "{{catalog_id}}",
        "create_time": "{{create_time}}",
        "operating_systems": [],
        "is_hfss": false,
        "budget_mode": "BUDGET_MODE_TOTAL",
        "is_new_structure": true,
        "smart_audience_enabled": null,
        "excluded_audience_ids": [],
        "ios14_quota_type": "UNOCCUPIED",
        "keywords": null,
        "creative_material_mode": "CUSTOM",
        "frequency_schedule": null,
        "app_type": null,
        "brand_safety_partner": null,
        "operation_status": "ENABLE",
        "frequency": null,
        "inventory_filter_enabled": false,
        "is_smart_performance_campaign": false,
        "modify_time": "{{modify_time}}",
        "schedule_type": "SCHEDULE_START_END",
        "device_price_ranges": null,
        "brand_safety_type": "NO_BRAND_SAFETY",
        "pixel_id": null,
        "advertiser_id": "{{advertiser_id}}",
        "bid_type": "BID_TYPE_CUSTOM",
        "optimization_event": null,
        "languages": [],
        "budget": {{}},
        "rf_estimated_cpr": null,
        "actions": []
    }
}
(/code)

Optimization goal as Conversions

Request

(code curl http)
curl --location  --request POST 'https://business-api.tiktok.com/open_api/v1.3/adgroup/create/' \
--header 'Access-Token: {{Access-Token}}' \
--header 'Content-Type: application/json' \
--data '{
    "advertiser_id": "{{advertiser_id}}",
    "campaign_id": "{{campaign_id}}",
    "adgroup_name": "{{adgroup_name}}",
    "catalog_id": "{{catalog_id}}",
    "catalog_authorized_bc_id": "{{catalog_authorized_bc_id}}",
    "promotion_type": "LEAD_GENERATION",
    "promotion_target_type": "EXTERNAL_WEBSITE",
    "placement_type": "PLACEMENT_TYPE_NORMAL",
    "placements": [
        "PLACEMENT_TIKTOK"
    ],
    "location_ids": [
        "6252001"
    ],
    "budget_mode": "BUDGET_MODE_TOTAL",
    "budget": {{budget}},
    "schedule_type": "SCHEDULE_START_END",
    "schedule_start_time": "{{schedule_start_time}}",
    "schedule_end_time": "{{schedule_end_time}}",
    "optimization_goal": "CONVERT",
    "pixel_id": "{{pixel_id}}",
    "optimization_event": "BUTTON",
    "bid_type": "BID_TYPE_CUSTOM",
    "conversion_bid_price": {{conversion_bid_price}},
    "billing_event": "OCPM",
    "pacing": "PACING_MODE_FAST",
    "creative_material_mode": "CUSTOM"
}'
(/code)

Response

(code curl http)
HTTPS/1.1 200 OK
{
    "code": 0,
    "message": "OK",
    "request_id": "{{request_id}}",
    "data": {
        "interest_category_ids": [],
        "isp_ids": [],
        "schedule_start_time": "{{schedule_start_time}}",
        "placement_type": "PLACEMENT_TYPE_NORMAL",
        "placements": [
            "PLACEMENT_TIKTOK"
        ],
        "next_day_retention": null,
        "purchased_impression": null,
        "share_disabled": false,
        "auto_targeting_enabled": false,
        "comment_disabled": false,
        "app_download_url": null,
        "rf_estimated_frequency": null,
        "click_attribution_window": "SEVEN_DAYS",
        "age_groups": null,
        "smart_interest_behavior_enabled": null,
        "catalog_authorized_bc_id": "{{catalog_authorized_bc_id}}",
        "purchased_reach": null,
        "video_download_disabled": false,
        "app_id": null,
        "dayparting": "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
        "promotion_type": "LEAD_GENERATION",
        "deep_bid_type": null,
        "adgroup_name": "{{adgroup_name}}",
        "schedule_infos": null,
        "feed_type": null,
        "scheduled_budget": 0,
        "secondary_optimization_event": null,
        "conversion_bid_price": 1,
        "skip_learning_phase": true,
        "category_id": "0",
        "category_exclusion_ids": [],
        "pacing": "PACING_MODE_FAST",
        "deep_cpa_bid": 0,
        "delivery_mode": null,
        "adgroup_app_profile_page_state": null,
        "interest_keyword_ids": [],
        "gender": "GENDER_UNLIMITED",
        "campaign_name": "{{campaign_name}}",
        "adgroup_id": "{{adgroup_id}}",
        "billing_event": "OCPM",
        "conversion_window": null,
        "attribution_event_count": "EVERY",
        "bid_price": 0,
        "search_result_enabled": false,
        "schedule_end_time": "{{schedule_end_time}}",
        "statistic_type": null,
        "rf_purchased_type": null,
        "location_ids": [
            "6252001"
        ],
        "optimization_goal": "CONVERT",
        "bid_display_mode": "CPMV",
        "audience_ids": [],
        "promotion_target_type": "EXTERNAL_WEBSITE",
        "network_types": [],
        "secondary_status": "ADGROUP_STATUS_CREATE",
        "campaign_id": "{{campaign_id}}",
        "catalog_id": "{{catalog_id}}",
        "create_time": "{{create_time}}",
        "operating_systems": [],
        "is_hfss": false,
        "budget_mode": "BUDGET_MODE_TOTAL",
        "is_new_structure": true,
        "smart_audience_enabled": null,
        "excluded_audience_ids": [],
        "ios14_quota_type": "UNOCCUPIED",
        "view_attribution_window": "ONE_DAY",
        "keywords": null,
        "creative_material_mode": "CUSTOM",
        "frequency_schedule": null,
        "app_type": null,
        "brand_safety_partner": null,
        "operation_status": "ENABLE",
        "frequency": null,
        "inventory_filter_enabled": false,
        "is_smart_performance_campaign": false,
        "modify_time": "{{modify_time}}",
        "schedule_type": "SCHEDULE_START_END",
        "device_price_ranges": null,
        "brand_safety_type": "NO_BRAND_SAFETY",
        "pixel_id": "{{pixel_id}}",
        "advertiser_id": "{{advertiser_id}}",
        "bid_type": "BID_TYPE_CUSTOM",
        "optimization_event": "BUTTON",
        "languages": [],
        "budget": 50,
        "rf_estimated_cpr": null,
        "actions": []
    }
}
(/code)

3. Create an ad

Create an ad using /ad/create/. Note that the following requirements must be met.

Ad format as Single Video

Setting Requirement Parameters How to configure the parameter
Smart Creative Disabled

You cannot pass is_smart_creative in /ad/aco/create/ to create Smart Creative Automotive Ads for Inventory.
/ /
Identity Any of the following options:
  • Custom User (custom identity)
  • Authorized User
  • TikTok User
  • TikTok Account User in Business Center
identity_type Any of the following values:
  • CUSTOMIZED_USER
  • AUTH_CODE
  • TT_USER
  • BC_AUTH_TT
identity_id Pass a valid value
Products Any of the following options:
  • All products
  • Product set
  • Specific products with a maximum of 20 products
product_specific_type
product_set_id
vehicle_ids
Set product_specific_type to ALL, PRODUCT_SET or CUSTOMIZED_PRODUCTS.
  • If product_specific_type is set to ALL, you don't need to pass product_set_id and vehicle_ids.
  • If product_specific_type is set to PRODUCT_SET, you need to pass product_set_id.
  • If product_specific_type is set to CUSTOMIZED_PRODUCTS, you need to pass a maximum of 20 products through vehicle_ids.
Ad format Single video ad_format SINGLE_VIDEO
dynamic_format
vertical_video_strategy
Not passed
Ad creative
  • For Custom User identity or Spark Ads PUSH with TikTok User identity, specify a video and a cover image.
  • For TikTok Account User in Business Center identity, Authorized User identity, or Spark Ads PULL with TikTok User identity, specify a TikTok post.
video_id
image_ids
ad_text
tiktok_item_id
  • If identity_type is CUSTOMIZED_USER, specify the video (video_id), video cover (image_ids), and ad text (ad_text). Do not pass tiktok_item_id.
  • If identity_type is TT_USER, you can create the ad through Spark Ads PULL or Spark Ads PUSH:
    • Spark Ads PUSH: Specify the video (video_id), video cover (image_ids), and ad text (ad_text). Do not pass tiktok_item_id.
    • Spark Ads PULL: Specify the TikTok post through tiktok_item_id. Do not pass video_id, image_ids, and ad_text.
    To learn more about Spark Ads, see Create Spark Ads.
  • If identity_type is AUTH_CODE or BC_AUTH_TT, specify the TikTok post through tiktok_item_id. Do not pass video_id, image_ids, and ad_text.
music_id
shopping_ads_video_package_id
Not passed
creative_type (Recommended) Not passed
  • If Destination is Vehicle Inventory Page (landing_page_url is not passed), the value of this field will default to AUTO_INVENTORY_INSTANT_PAGE.
  • If Destination is Website URL (landing_page_url is passed), the value of this field will be null. If you manually specify a value that is not null, the value will be ignored.
Interactive add-on Inventory Card.

For AIA with Single Video format, auto-generated Vehicle Cards will be shown after two seconds of video play. If the audience continues swiping through the Vehicle Cards, the Inventory Card will be displayed at the end.

The Vehicle Cards showcase the following attributes of the vehicle as defined in the catalog, and a CTA button, which will direct users to the third-party landing page.
  • Main image
  • Title
  • State of the vehicle
  • Mileage
  • Price

The Inventory Card includes:
  • A customized image
  • A customized description
  • Estimated catalog size
  • CTA button "Search Inventory", which directs the audience to an auto-generated Instant Product Page
card_id Specify the ID of an Inventory Card portfolio.
To get the Inventory Card portfolio ID (creative_portfolio_id), see Cards.

Note: You can update the Inventory Card portfolio in your Automotive Ads for Inventory to a different Inventory Card portfolio.

The Vehicle Cards showcase a CTA button and the following attributes of the vehicle:
  • image_url
  • title
  • state_of_vehicle
  • mileage
  • price
To get the attributes of a vehicle, use /catalog/product/get/.

The Inventory Card includes a CTA button, estimated catalog size, and the following attributes of the Inventory Card:
  • image_id
  • description
To get the details of an Inventory Card, use /creative/portfolio/list/.
Call to action Enabled.
The recommended setting is "Check availability".
call_to_action Pass a valid value.
The recommended value is CHECK_AVAILABLILITY.
To get other supported values, see Enumerations - Call-to-action.
Destination Any of the following options:
  • Website URL: Your own URL to direct users to browse inventory on your website.
  • Vehicle Inventory Page: The Instant Product Page to access your full Vehicle Catalog.
    • If Destination is Vehicle Inventory Page, an Instant Product Page will be automatically generated. The page includes the Dealer name and Dealer photo from Identity, as well as attributes for each vehicle as defined in the catalog, such as the Main image, Title, State of the vehicle, Mileage, Price, City, and more.
landing_page_url
  • To set Destination as Website URL, specify your own URL via landing_page_url.
  • To set Destination as Vehicle Inventory Page, do not pass landing_page_url. An auto-generated Instant Product Page will be returned through the response parameter page_id.
page_id
deeplink
deeplink_type
shopping_ads_deeplink_type
shopping_ads_fallback_type
fallback_type
dynamic_destination
instant_product_page_used
Not passed
Build URL parameters
(Optional)
Enabled or disabled utm_params Pass a valid value or do not pass the field.

Example

Non-Spark Ads

Request

(code curl http)
curl --location  --request POST 'https://business-api.tiktok.com/open_api/v1.3/ad/create/' \
--header 'Access-Token: {{Access-Token}}' \
--header 'Content-Type: application/json' \
--data '{
    "advertiser_id": "{{advertiser_id}}",
    "adgroup_id": "{{adgroup_id}}",
    "creatives": [
        {
            "ad_name": "{{ad_name}}",
            "identity_type": "CUSTOMIZED_USER",
            "identity_id": "{{identity_id}}",
            "product_specific_type": "ALL",
            "ad_format": "SINGLE_VIDEO",
            "video_id": "{{video_id}}",
            "image_ids": ["{{image_id}}"],
            "ad_text": "{{ad_text}}",
            "call_to_action": "CHECK_AVAILABILITY",
            "card_id": "{{card_id}}",
            "creative_type": "AUTO_INVENTORY_INSTANT_PAGE"
        }
    ]
}'
(/code)

Response

(code curl http)
HTTPS/1.1 200 OK
{
    "code": 0,
    "message": "OK",
    "request_id": "{{request_id}}",
    "data": {
        "ad_ids": [
            "{{ad_id}}"
        ],
        "need_audit": false,
        "creatives": [
            {
                "creative_authorized": false,
                "deeplink": null,
                "adgroup_name": "{{adgroup_name}}",
                "ad_name": "{{ad_name}}",
                "call_to_action": "CHECK_AVAILABILITY",
                "identity_type": "CUSTOMIZED_USER",
                "app_name": "",
                "viewability_vast_url": null,
                "landing_page_urls": null,
                "card_id": "{{card_id}}",
                "image_ids": [
                    "{{image_id}}"
                ],
                "video_id": "{{video_id}}",
                "vast_moat_enabled": false,
                "page_id": {{page_id}}
                "music_id": null,
                "tracking_offline_event_set_ids": [
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}"
                ],
                "landing_page_url": null,
                "profile_image_url": "{{profile_image_url}}",
                "call_to_action_id": null,
                "ad_ref_pixel_id": {{ad_ref_pixel_id}},
                "campaign_name": "{{campaign_name}}",
                "avatar_icon_web_uri": "{{avatar_icon_web_uri}}",
                "ad_id": "{{ad_id}}",
                "identity_id": "{{identity_id}}",
                "campaign_id": "{{campaign_id}}",
                "create_time": "{{create_time}}",
                "is_new_structure": true,
                "ad_format": "SINGLE_VIDEO",
                "playable_url": "",
                "adgroup_id": "{{adgroup_id}}",
                "click_tracking_url": null,
                "brand_safety_postbid_partner": "UNSET",
                "viewability_postbid_partner": "UNSET",
                "product_specific_type": "ALL",
                "ad_texts": null,
                "operation_status": "ENABLE",
                "brand_safety_vast_url": null,
                "creative_type": "AUTO_INVENTORY_INSTANT_PAGE",
                "tracking_pixel_id": {{tracking_pixel_id}},
                "modify_time": "{{modify_time}}",
                "ad_text": "{{ad_text}}",
                "display_name": "{{display_name}}",
                "is_aco": false,
                "advertiser_id": "{{advertiser_id}}",
                "impression_tracking_url": null,
                "optimization_event": "BUTTON"
            }
        ]
    }
}
(/code)
Spark Ads PUSH

Request

(code curl http)
curl --location --request POST 'https://business-api.tiktok.com/open_api/v1.3/ad/create/' \
--header 'Access-Token: {{Access-Token}}' \
--header 'Content-Type: application/json' \
--data '{
    "advertiser_id": "{{advertiser_id}}",
    "adgroup_id": "{{adgroup_id}}",
    "creatives": [
        {
            "ad_name": "{{ad_name}}",
            "identity_type": "TT_USER",
            "identity_id": "{{identity_id}}",
            "product_specific_type": "ALL",
            "ad_format": "SINGLE_VIDEO",
            "video_id": "{{video_id}}",
            "image_ids": ["{{image_id}}"],
            "ad_text": "{{ad_text}}",
            "call_to_action": "CHECK_AVAILABILITY",
            "card_id": "{{card_id}}",
             "creative_type": "AUTO_INVENTORY_INSTANT_PAGE"
        }
    ]
}'
(/code)

Response

(code curl http)
HTTPS/1.1 200 OK
{
    "code": 0,
    "message": "OK",
    "request_id": "{{request_id}}",
    "data": {
        "ad_ids": [
            "{{ad_id}}"
        ],
        "need_audit": false,
        "creatives": [
            {
                "call_to_action": "CHECK_AVAILABILITY",
                "identity_id": "{{identity_id}}",
                "branded_content_disabled": false,
                "deeplink": null,
                "creative_type": "AUTO_INVENTORY_INSTANT_PAGE",
                "adgroup_id": "{{adgroup_id}}",
                "playable_url": "",
                "page_id": {{page_id}},
                "ad_format": "SINGLE_VIDEO",
                "brand_safety_vast_url": null,
                "image_ids": [
                    "{{image_id}}"
                ],
                "campaign_name": "{{campaign_name}}",
                "creative_authorized": false,
                "app_name": "{{app_name}}",
                "click_tracking_url": null,
                "viewability_postbid_partner": "UNSET",
                "avatar_icon_web_uri": "",
                "ad_text": "{{ad_text}}",
                "ad_name": "{{ad_name}}",
                "tracking_pixel_id": {{tracking_pixel_id}},
                "tracking_offline_event_set_ids": [
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}"
                ],
                "advertiser_id": "{{advertiser_id}}",
                "profile_image_url": "",
                "is_aco": false,
                "ad_texts": null,
                "impression_tracking_url": null,
                "card_id": "{{card_id}}",
                "music_id": null,
                "ad_ref_pixel_id": {{ad_ref_pixel_id}},
                "dark_post_status": "OFF",
                "landing_page_url": null,
                "brand_safety_postbid_partner": "UNSET",
                "modify_time": "{{modify_time}}",
                "ad_id": "{{ad_id}}",
                "landing_page_urls": null,
                "vast_moat_enabled": false,
                "product_specific_type": "ALL",
                "viewability_vast_url": null,
                "campaign_id": "{{campaign_id}}",
                "display_name": "{{display_name}}",
                "is_new_structure": true,
                "optimization_event": "BUTTON",
                "video_id": "{{video_id}}",
                "call_to_action_id": null,
                "identity_type": "TT_USER",
                "create_time": "{{create_time}}",
                "adgroup_name": "{{adgroup_name}}",
                "operation_status": "ENABLE"
            }
        ]
    }
}
(/code)
Spark Ads PULL

Request

(code curl http)
curl --location  --request POST 'https://business-api.tiktok.com/open_api/v1.3/ad/create/' \
--header 'Access-Token: {{Access-Token}}' \
--header 'Content-Type: application/json' \
--data '{
    "advertiser_id": "{{advertiser_id}}",
    "adgroup_id": "{{adgroup_id}}",
    "creatives": [
        {
            "ad_name": "{{ad_name}}",
            "identity_type": "TT_USER",
            "identity_id": "{{identity_id}}",
            "product_specific_type": "ALL",
            "ad_format": "SINGLE_VIDEO",
            "tiktok_item_id": "{{tiktok_item_id}}",
            "call_to_action": "CHECK_AVAILABILITY",
            "card_id": "{{card_id}}",
            "creative_type": "AUTO_INVENTORY_INSTANT_PAGE"
        }
    ]
}'
(/code)

Response

(code curl http)
HTTPS/1.1 200 OK
{
    "code": 0,
    "message": "OK",
    "request_id": "{{request_i}}",
    "data": {
        "ad_ids": [
            "{{ad_id}}"
        ],
        "need_audit": false,
        "creatives": [
            {
                "creative_authorized": false,
                "deeplink": null,
                "adgroup_name": "{{adgroup_name}}",
                "ad_name": "{{ad_name}}",
                "call_to_action": "CHECK_AVAILABILITY",
                "identity_type": "TT_USER",
                "app_name": "{{app_name}}",
                "promotional_music_disabled": true,
                "viewability_vast_url": null,
                "landing_page_urls": null,
                "card_id": "{{card_id}}",
                "image_ids": [
                    ""
                ],
                "video_id": null,
                "vast_moat_enabled": false,
                "page_id": {{page_id}},
                "music_id": null,
                "tracking_offline_event_set_ids": [
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}"
                ],
                "landing_page_url": null,
                "profile_image_url": "",
                "call_to_action_id": null,
                "ad_ref_pixel_id": {{ad_ref_pixel_id}},
                "campaign_name": "{{campaign_name}}",
                "avatar_icon_web_uri": "",
                "ad_id": "{{ad_id}}",
                "identity_id": "{{identity_id}}",
                "tiktok_item_id": "{{tiktok_item_id}}",
                "campaign_id": "{{campaign_id}}",
                "create_time": "{{create_time}}",
                "is_new_structure": true,
                "ad_format": "SINGLE_VIDEO",
                "playable_url": "",
                "adgroup_id": "{{adgroup_id}}",
                "click_tracking_url": null,
                "brand_safety_postbid_partner": "UNSET",
                "viewability_postbid_partner": "UNSET",
                "product_specific_type": "ALL",
                "ad_texts": null,
                "operation_status": "ENABLE",
                "brand_safety_vast_url": null,
                "creative_type": "AUTO_INVENTORY_INSTANT_PAGE",
                "tracking_pixel_id": {{tracking_pixel_id}},
                "modify_time": "{{modify_time}}",
                "ad_text": "{{ad_text}} ",
                "display_name": "{{display_name}}",
                "is_aco": false,
                "advertiser_id": "{{advertiser_id}}",
                "impression_tracking_url": null,
                "optimization_event": "BUTTON"
            }
        ]
    }
}
(/code)
Setting Requirement Parameters How to configure the parameters
Smart Creative Disabled

You cannot pass is_smart_creative in /ad/aco/create/ to create Smart Creative Automotive Ads for Inventory.
/ /
Identity Custom User (custom identity) identity_type CUSTOMIZED_USER
identity_id Pass a valid value
Ad format Catalog Carousel ad_format CATALOG_CAROUSEL
vertical_video_strategy
dynamic_format
Not passed
Products Any of the following options:
  • All products
  • Product set
  • Specific products with a maximum of 20 products
catalog_id
product_specific_type
product_set_id
vehicle_ids
  • Set catalog_id to ID of the same catalog specified at the ad group level.
  • Carousel image selection scope: The product images for products in a catalog (catalog_id) will be dynamically chosen as images in the delivering Carousel Ads. You can specify the scope of product images to choose from using the product_specific_type parameter:
    • To have the Carousel images dynamically chosen from all products in the catalog, set product_specific_type to ALL, and do not pass product_set_id and vehicle_ids. The catalog (catalog_id) needs to include at least one available product.
    • To have the Carousel images dynamically chosen from products in a product set, set product_specific_type to PRODUCT_SET, pass product_set_id, and do not pass vehicle_ids. The specified product_set_id needs to include at least one available product.
    • To have the images dynamically chosen from a customized product range consisting of up to 20 products, set product_specific_type to CUSTOMIZED_PRODUCTS, pass vehicle_ids, and do not pass product_set_id. The specified vehicle_ids needs to include at least one available product.
  • Carousel image type:
    • Use the main images of the products: By default, the main image URLs of the dynamically selected catalog products will be used as Carousel images.
Ad creative - images N/A
The first image (main image) of each selected product in your catalog will be used.
carousel_image_index Not passed
creative_type (Recommended) Not passed
  • If Destination is Vehicle Inventory Page (landing_page_url is not passed), the value of this field will default to AUTO_INVENTORY_INSTANT_PAGE.
  • If Destination is Website URL (landing_page_url is passed), the value of this field will be null. If you manually specify a value that is not null, the value will be ignored.
End card Select the last photo to appear in the carousel to encourage people to browse your full inventory. image_ids Specify one end card through image_ids. The end card will be displayed at the end of the carousel.
You can get image IDs by using /file/image/ad/upload/ and /file/image/ad/search/.
The image should meet the following requirements at the same time:
  • Specifications:
    • File Type: JPG, JPEG, or PNG.
    • Image Resolution: a maximum of 1242 x 2340 pixels or 2340 x 1242 pixels.
    • Aspect Ratio: a maximum of 9:20 or 20:9.
    • File Size: below 50 MB.
  • The value of the parameter is_carousel_usable returned from /file/image/ad/search/ for the image is true.
Call to action for end card Any of the following options:
  • Search inventory (Recommended)
  • Learn more
  • Shop now
  • Sign up
  • Contact us
  • Book now
  • Read more
  • View now
  • Order now
end_card_cta Any of the following values:
  • SEARCH_INVENTORY (Recommended)
  • LEARN_MORE
  • SHOP_NOW
  • SIGN_UP
  • CONTACT_US
  • BOOK_NOW
  • READ_MORE
  • VIEW_MORE
  • ORDER_NOW
Product information
(Optional)
Select up to two product attributes to display alongside the vehicle title in your ads:
  • Dealer name
  • Make
  • Model
  • Year
  • Mileage
  • Exterior color
  • Trim
  • City
  • State of vehicle
  • Price
  • Sale price
The selected product details will be automatically added from your catalog to your ads for best results.
By default, only the title of each product will be displayed in your ads
product_display_field_list Pass a valid value or do not pass the field.
If you manually pass this field, you can include up to two attributes from the following values:
  • DEALER_NAME
  • MAKE
  • MODEL
  • YEAR
  • MILEAGE
  • EXTERIOR_COLOR
  • TRIM
  • ADDRESS_CITY
  • VEHICLE_STATE
  • PRICE
  • SALE_PRICE
The title of your vehicle will be automatically displayed alongside the specified attributes in your ads.
For example, if you set this field to ["MAKE","PRICE"], the title, make and price of your vehicle will be displayed in your ads.
By default, only the title of each product will be displayed in your ads.
Ad creative - Music A piece of music supported in the Carousel Ad music_id Pass one music ID that can be used in Carousel Ads. To obtain a valid music ID, you can follow any of the following methods:
  • Filter the pieces of music for Carousel Ads under an ad account by specifying music_scene as CATALOG_CAROUSEL in /file/music/get/.
  • Upload a piece of customized music for Carousel Ads to an ad account using either of the following methods:
    • Specify music_scene as CATALOG_CAROUSEL, and pass music_file and music_signature in /file/music/upload/.
    • Specify music_scene as CATALOG_CAROUSEL, specify upload_type as UPLOAD_BY_FILE_ID, and pass file_id to /file/music/upload/.
Ad creative - Video Disabled video_id
shopping_ads_video_package_id
Not passed
Ad creative - Text Enabled ad_text Pass a valid value.
The recommended value is the new enum value CHECK_AVAILABLILITY (check availability).
Interactive add-on Disabled card_id Not passed
Call to action Enabled.
The recommended setting is "Check availability".
call_to_action Pass a valid value.
The recommended value is CHECK_AVAILABLILITY.
Destination Any of the following options:
  • Website URL: Your own URL to direct users to browse inventory on your website.
  • Vehicle Inventory Page: The Instant Product Page to access your full Vehicle Catalog.
    • If the Destination is Vehicle Inventory Page, an Instant Product Page will be automatically generated. The page includes the Dealer name and Dealer photo from Identity, as well as attributes for each vehicle as defined in the catalog, such as the Main image, Title, State of the vehicle, Mileage, Price, City, and more.
landing_page_url
  • To set Destination as Website URL, specify your own URL via landing_page_url.
  • To set Destination as Vehicle Inventory Page, do not pass landing_page_url. An auto-generated Instant Product Page will be returned through the response parameter page_id.
page_id
deeplink
deeplink_type
shopping_ads_deeplink_type
shopping_ads_fallback_type
fallback_type
dynamic_destination
instant_product_page_used
Not passed
Build URL parameters
(Optional)
Enabled or disabled utm_params Pass a valid value or do not pass the field.

Example

Request

(code curl http)
curl --location  --request POST 'https://business-api.tiktok.com/open_api/v1.3/ad/create/' \
--header 'Access-Token: {{Access-Token}}' \
--header 'Content-Type: application/json' \
--data '{
    "advertiser_id": "{{advertiser_id}}",
    "adgroup_id": "{{adgroup_id}}",
    "creatives": [
        {
            "ad_name": "{{ad_name}}",
            "identity_type": "CUSTOMIZED_USER",
            "identity_id": "{{identity_id}}",
            "product_specific_type": "ALL",
            "ad_format": "CATALOG_CAROUSEL",
            "image_ids": ["{{image_id}}"],
            "music_id": "{{music_id}}",
            "ad_text": "{{ad_text}}",
            "call_to_action": "CHECK_AVAILABILITY",
            "creative_type": "AUTO_INVENTORY_INSTANT_PAGE"
        }
    ]
}'
(/code)

Response

(code curl http)
HTTPS/1.1 200 OK
{
    "code": 0,
    "message": "OK",
    "request_id": "{{request_id}}",
    "data": {
        "ad_ids": [
            "{{ad_id}}"
        ],
        "need_audit": false,
        "creatives": [
            {
                "creative_authorized": false,
                "deeplink": null,
                "adgroup_name": "{{adgroup_name}}",
                "ad_name": "{{ad_name}}",
                "call_to_action": "CHECK_AVAILABILITY",
                "identity_type": "CUSTOMIZED_USER",
                "app_name": "",
                "viewability_vast_url": null,
                "landing_page_urls": null,
                "card_id": null,
                "image_ids": [
                    "{{image_id}}"
                ],
                "video_id": null,
                "vast_moat_enabled": false,
                "page_id": {{page_id}},
                "music_id": "{{music_id}}",
                "tracking_offline_event_set_ids": [
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}",
                    "{{tracking_offline_event_set_id}}"
                ],
                "landing_page_url": null,
                "profile_image_url": "{{profile_image_url}}",
                "call_to_action_id": null,
                "ad_ref_pixel_id": {{ad_ref_pixel_id}},
                "campaign_name": "{{campaign_name}}",
                "avatar_icon_web_uri": "{{avatar_icon_web_uri}}",
                "ad_id": "{{ad_id}}",
                "identity_id": "{{identity_id}}",
                "campaign_id": "{{campaign_id}}",
                "create_time": "{{create_time}}",
                "is_new_structure": true,
                "ad_format": "CATALOG_CAROUSEL",
                "playable_url": "",
                "adgroup_id": "{{adgroup_id}}",
                "click_tracking_url": null,
                "brand_safety_postbid_partner": "UNSET",
                "viewability_postbid_partner": "UNSET",
                "product_specific_type": "ALL",
                "ad_texts": null,
                "operation_status": "ENABLE",
                "brand_safety_vast_url": null,
                "creative_type": "AUTO_INVENTORY_INSTANT_PAGE",
                "tracking_pixel_id": {{tracking_pixel_id}},
                "modify_time": "{{modify_time}}",
                "ad_text": "{{ad_text}}",
                "display_name": "{{display_name}}",
                "is_aco": false,
                "advertiser_id": "{{advertiser_id}}",
                "impression_tracking_url": null,
                "optimization_event": "BUTTON"
            }
        ]
    }
}
(/code)

内容来源:TikTok API for Business 官方文档 · 本地归档

在接这个接口时卡住了?
Stuck wiring this API into production? We build ad-delivery tooling on these platforms — campaign automation, reporting pipelines, error-handling and migration between API versions.
联系我们 · Talk to us 每日平台更新简报 →