Create Automotive Ads for Models
This article walks you through the steps to create Automotive Ads for Models.
Introduction
Automotive Ads for Models leverage the model and offer information stored in your Auto-Model 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 models on an Instant Product Page based on attributes such as 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 Models, and this helps you streamline your ad creation experience, and elevate operational efficiency and scalability.
Prerequisites
- You've gained access to TikTok API for Business. See Get Started - Step by step workflow for details.
- To create Automotive Ads for Models, 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 Models requires setting up an Auto-Model catalog in Business Center first.
To set up the catalog: 1. Create an Auto-Model 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 thefeed_log_idobtained from Step 2. If the fieldwarn_affected_productsin the response is not null, examine the issue details and return to Step 2 to reupload the product. 4. (Optional) Create an Auto-Model 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 chooseadvertiser_rolethat 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 specifyCATALOGin theasset_typefield andADMINin thecatalog_rolefield.
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 Models. |
/ | / |
| 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-Model catalog with at least one approved product | product_source |
CATALOG |
catalog_idcatalog_authorized_bc_id |
Pass valid values. The Auto-Model 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-Model catalog, see Prerequisites. |
||
| Optimization location (Promotion type) |
Website
|
promotion_type |
LEAD_GENERATION |
promotion_target_type |
EXTERNAL_WEBSITE |
||
pixel_idoptimization_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_statusdeep_funnel_event_sourcedeep_funnel_event_source_iddeep_funnel_optimization_event |
Note:
|
| 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 passedNote: 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:
|
optimization_goal |
Any of the following values:
|
| Attribution settings (supported only if Optimization goal is Conversions) |
The supported Click-through windows are:
|
click_attribution_window |
If optimization_goal is CONVERT, the supported values are:
|
The supported View-through windows are:
|
view_attribution_window |
If optimization_goal is CONVERT, the supported values are:
|
|
The supported Engaged view-through windows are:
|
engaged_view_attribution_window |
If optimization_goal is CONVERT, the supported values are:
|
|
The supported Event count options are:
|
attribution_event_count |
If optimization_goal is CONVERT, the supported values are:
|
|
| Billing event |
|
billing_event |
|
| Bid strategy & Delivery type |
|
bid_typepacing |
|
| Split test | Disabled Automotive Ad Groups for Models 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"
],
"creative_material_mode": "CUSTOM",
"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"
}'
(/code)
Response
(code curl http)
HTTPS/1.1 200 OK
{
"code": 0,
"message": "OK",
"request_id": "{{request_id}}",
"data": {
"ios14_quota_type": "UNOCCUPIED",
"catalog_authorized_bc_id": "{{catalog_authorized_bc_id}}",
"age_groups": null,
"bid_price": {{bid_price}},
"inventory_filter_enabled": false,
"smart_audience_enabled": null,
"app_id": null,
"next_day_retention": null,
"category_id": "0",
"comment_disabled": false,
"excluded_audience_ids": [],
"pacing": "PACING_MODE_FAST",
"network_types": [],
"schedule_end_time": "{{schedule_end_time}}",
"location_ids": [
"6252001"
],
"share_disabled": false,
"brand_safety_type": "NO_BRAND_SAFETY",
"optimization_goal": "CLICK",
"smart_interest_behavior_enabled": null,
"schedule_infos": null,
"secondary_status": "ADGROUP_STATUS_CREATE",
"scheduled_budget": 0,
"frequency_schedule": null,
"audience_ids": [],
"rf_estimated_cpr": null,
"adgroup_app_profile_page_state": null,
"deep_funnel_optimization_status": null,
"budget": {{budget}},
"is_hfss": false,
"delivery_mode": null,
"adgroup_name": "{{adgroup_name}}",
"campaign_id": "{{campaign_id}}",
"optimization_event": null,
"promotion_type": "LEAD_GENERATION",
"conversion_window": null,
"interest_category_ids": [],
"campaign_name": "{{campaign_name}}",
"auto_targeting_enabled": false,
"schedule_start_time": "{{schedule_start_time}}",
"keywords": null,
"rf_purchased_type": null,
"billing_event": "CPC",
"purchased_reach": null,
"deep_funnel_event_source_id": null,
"frequency": null,
"schedule_type": "SCHEDULE_START_END",
"vbo_window": null,
"deep_bid_type": null,
"actions": [],
"budget_mode": "BUDGET_MODE_TOTAL",
"modify_time": "{{modify_time}}",
"deep_funnel_optimization_event": null,
"device_price_ranges": null,
"placement_type": "PLACEMENT_TYPE_NORMAL",
"catalog_id": "{{catalog_id}}",
"languages": [],
"adgroup_id": "{{adgroup_id}}",
"app_download_url": null,
"is_smart_performance_campaign": false,
"purchased_impression": null,
"category_exclusion_ids": [],
"advertiser_id": "{{advertiser_id}}",
"create_time": "{{create_time}}",
"bid_display_mode": "CPMV",
"interest_keyword_ids": [],
"operation_status": "ENABLE",
"search_result_enabled": false,
"operating_systems": [],
"brand_safety_partner": null,
"isp_ids": [],
"conversion_bid_price": 0,
"is_new_structure": true,
"feed_type": null,
"gender": "GENDER_UNLIMITED",
"bid_type": "BID_TYPE_CUSTOM",
"app_type": null,
"statistic_type": null,
"secondary_optimization_event": null,
"placements": [
"PLACEMENT_TIKTOK"
],
"pixel_id": null,
"promotion_target_type": "EXTERNAL_WEBSITE",
"deep_funnel_event_source": null,
"dayparting": "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
"rf_estimated_frequency": null,
"deep_cpa_bid": 0,
"creative_material_mode": "CUSTOM",
"skip_learning_phase": false,
"video_download_disabled": false
}
}
(/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": "{{optimization_event}}",
"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": {
"app_download_url": null,
"category_exclusion_ids": [],
"deep_funnel_event_source": null,
"creative_material_mode": "CUSTOM",
"next_day_retention": null,
"placements": [
"PLACEMENT_TIKTOK"
],
"comment_disabled": false,
"pixel_id": "{{pixel_id}}",
"frequency_schedule": null,
"feed_type": null,
"conversion_window": null,
"share_disabled": false,
"frequency": null,
"statistic_type": null,
"category_id": "0",
"deep_bid_type": null,
"device_price_ranges": null,
"rf_estimated_cpr": null,
"deep_funnel_optimization_event": null,
"brand_safety_type": "NO_BRAND_SAFETY",
"is_hfss": false,
"skip_learning_phase": true,
"secondary_optimization_event": null,
"actions": [],
"modify_time": "{{modify_time}}",
"inventory_filter_enabled": false,
"promotion_target_type": "EXTERNAL_WEBSITE",
"adgroup_id": "{{adgroup_id}}",
"campaign_name": "{{campaign_name}}",
"app_type": null,
"isp_ids": [],
"bid_display_mode": "CPMV",
"conversion_bid_price": "{{conversion_bid_price}}",
"create_time": "{{create_time}}",
"pacing": "PACING_MODE_FAST",
"promotion_type": "LEAD_GENERATION",
"interest_category_ids": [],
"dayparting": "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
"operating_systems": [],
"vbo_window": null,
"is_new_structure": true,
"scheduled_budget": 0,
"auto_targeting_enabled": false,
"is_smart_performance_campaign": false,
"click_attribution_window": "SEVEN_DAYS",
"delivery_mode": null,
"excluded_audience_ids": [],
"deep_cpa_bid": 0,
"audience_ids": [],
"operation_status": "ENABLE",
"catalog_id": "{{catalog_id}}",
"schedule_type": "SCHEDULE_START_END",
"schedule_end_time": "{{schedule_end_time}}",
"bid_price": "{{bid_price}}",
"app_id": null,
"bid_type": "BID_TYPE_CUSTOM",
"purchased_impression": null,
"rf_estimated_frequency": null,
"location_ids": [
"6252001"
],
"interest_keyword_ids": [],
"optimization_goal": "CONVERT",
"billing_event": "OCPM",
"video_download_disabled": false,
"adgroup_app_profile_page_state": null,
"deep_funnel_optimization_status": null,
"ios14_quota_type": "UNOCCUPIED",
"smart_interest_behavior_enabled": null,
"optimization_event": "ON_WEB_DETAIL",
"deep_funnel_event_source_id": null,
"campaign_id": "{{campaign_id}}",
"age_groups": null,
"schedule_infos": null,
"gender": "GENDER_UNLIMITED",
"languages": [],
"attribution_event_count": "EVERY",
"brand_safety_partner": null,
"catalog_authorized_bc_id": "{{catalog_authorized_bc_id}}",
"schedule_start_time": "{{schedule_start_time}}",
"secondary_status": "ADGROUP_STATUS_CREATE",
"adgroup_name": "{{adgroup_name}}",
"advertiser_id": "{{advertiser_id}}",
"purchased_reach": null,
"smart_audience_enabled": null,
"budget_mode": "BUDGET_MODE_TOTAL",
"budget": "{{budget}}",
"keywords": null,
"view_attribution_window": "ONE_DAY",
"rf_purchased_type": null,
"placement_type": "PLACEMENT_TYPE_NORMAL",
"network_types": [],
"search_result_enabled": false
}
}
(/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 Models. |
/ | / |
| Identity | Any of the following options:
|
identity_type |
Any of the following values:
|
identity_id |
Pass a valid value | ||
| Products | Any of the following options:
|
product_specific_typeproduct_set_idvehicle_ids |
Set product_specific_type to ALL, PRODUCT_SET or CUSTOMIZED_PRODUCTS.
|
| Ad format | Single video | ad_format |
SINGLE_VIDEO |
dynamic_formatvertical_video_strategy |
Not passed | ||
| Ad creative |
|
video_idimage_idsad_texttiktok_item_id |
|
music_idshopping_ads_video_package_id |
Not passed | ||
creative_type |
(Recommended) Not passed
|
||
| Interactive add-on | Inventory Card. For Automotive Ads for Models 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 Inventory Card includes:
|
card_id |
Specify the ID of an Inventory Card portfolio. To get the Inventory Card portfolio ID ( creative_portfolio_id), see Cards.The Inventory Card includes a CTA button and the following attributes of the Inventory Card:
|
| 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:
| landing_page_url |
|
page_iddeeplinkdeeplink_typeshopping_ads_deeplink_typeshopping_ads_fallback_typefallback_typedynamic_destinationinstant_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
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_ids}}"],
"ad_text": "{{ad_text}}",
"call_to_action": "CHECK_AVAILABILITY",
"card_id": "{{card_id}}"
}
]
}'
(/code)
Response
(code curl http)
HTTPS/1.1 200 OK
{
"code": 0,
"message": "OK",
"request_id": "{{request_id}}",
"data": {
"ad_ids": [
"{{ad_ids}}"
],
"need_audit": false,
"creatives": [
{
"create_time": "{{create_time}}",
"image_ids": [
"{{image_ids}}"
],
"campaign_name": "{{campaign_name}}",
"app_name": "{{app_name}}",
"card_id": "{{card_id}}",
"creative_authorized": false,
"ad_text": "{{ad_text}}",
"profile_image_url": "",
"carousel_image_labels": null,
"viewability_postbid_partner": "UNSET",
"dark_post_status": "OFF",
"campaign_id": "{{campaign_id}}",
"viewability_vast_url": null,
"landing_page_urls": null,
"tracking_pixel_id": "{{tracking_pixel_id}}",
"brand_safety_vast_url": null,
"playable_url": "",
"ad_name": "{{ad_name}}",
"operation_status": "ENABLE",
"is_new_structure": true,
"ad_texts": null,
"impression_tracking_url": null,
"product_specific_type": "ALL",
"identity_type": "TT_USER",
"display_name": "{{display_name}}",
"branded_content_disabled": false,
"ad_ref_pixel_id": 7031154132622917634,
"identity_id": "{{identity_id}}",
"ad_id": "{{ad_id}}",
"call_to_action_id": null,
"optimization_event": "ON_WEB_DETAIL",
"avatar_icon_web_uri": "",
"music_id": null,
"landing_page_url": null,
"is_aco": false,
"creative_type": "AUTO_INVENTORY_INSTANT_PAGE",
"page_id": "{{page_id}}",
"video_id": "{{video_id}}",
"call_to_action": "CHECK_AVAILABILITY",
"modify_time": "{{modify_time}}",
"adgroup_id": "{{adgroup_id}}",
"advertiser_id": "{{advertiser_id}}",
"click_tracking_url": null,
"ad_format": "SINGLE_VIDEO",
"vast_moat_enabled": false,
"adgroup_name": "{{adgroup_name}}",
"deeplink": null
}
]
}
}
(/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}}"
}
]
}'
(/code)
Response
(code curl http)
HTTPS/1.1 200 OK
{
"code": 0,
"message": "OK",
"request_id": "{{request_id}}",
"data": {
"ad_ids": [
"{{ad_ids}}"
],
"need_audit": false,
"creatives": [
{
"product_specific_type": "ALL",
"vast_moat_enabled": false,
"promotional_music_disabled": true,
"profile_image_url": "",
"operation_status": "ENABLE",
"video_id": null,
"adgroup_name": "{{adgroup_name}}",
"campaign_id": "{{campaign_id}}",
"avatar_icon_web_uri": "",
"is_aco": false,
"campaign_name": "{{campaign_name}}",
"creative_authorized": false,
"creative_type": "AUTO_INVENTORY_INSTANT_PAGE",
"ad_name": "{{ad_name}}",
"click_tracking_url": null,
"landing_page_urls": null,
"ad_texts": null,
"identity_id": "{{identity_id}}",
"identity_type": "TT_USER",
"music_id": null,
"ad_format": "SINGLE_VIDEO",
"tracking_pixel_id": "{{tracking_pixel_id}}",
"ad_text": "{{ad_text}}",
"page_id": "{{page_id}}",
"deeplink": null,
"display_name": "{{display_name}}",
"adgroup_id": "{{adgroup_id}}",
"landing_page_url": null,
"is_new_structure": true,
"app_name": "{{app_name}}",
"optimization_event": "ON_WEB_DETAIL",
"viewability_postbid_partner": "UNSET",
"ad_ref_pixel_id": "{{ad_ref_pixel_id}}",
"brand_safety_vast_url": null,
"carousel_image_labels": null,
"playable_url": "",
"impression_tracking_url": null,
"modify_time": "{{modify_time}}",
"create_time": "{{create_time}}",
"call_to_action_id": null,
"advertiser_id": "{{advertiser_id}}",
"viewability_vast_url": null,
"image_ids": [],
"card_id": "{{card_id}}",
"call_to_action": "CHECK_AVAILABILITY",
"ad_id": "{{ad_id}}",
"tiktok_item_id": "{{tiktok_item_id}}"
}
]
}
}
(/code)
Ad format as Catalog Carousel
| 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 Models. |
/ | / |
| 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_strategydynamic_format |
Not passed | ||
| Products | Any of the following options:
|
catalog_idproduct_specific_typeproduct_set_idvehicle_ids |
|
| 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
|
||
| 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:
|
| Call to action for end card | Any of the following options:
|
end_card_cta |
Any of the following values:
|
| 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:
|
| Ad creative - Video | Disabled | video_idshopping_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. |
| Disclaimer | Any of the following options:
Note: Before using any type of disclaimer, ensure that you have specified the necessary disclaimer details for each vehicle in the Auto-Model catalog.
|
auto_disclaimer_types |
Any of the following values:
Note: Before using any type of disclaimer, ensure that you have specified the necessary disclaimer details for each vehicle in the Auto-Model catalog.
To update the attributes of vehicles in an Auto-Model catalog, use /catalog/product/update/. |
| Destination | Any of the following options:
|
landing_page_url |
|
page_iddeeplinkdeeplink_typeshopping_ads_deeplink_typeshopping_ads_fallback_typefallback_typedynamic_destinationinstant_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}}",
"ad_format": "CATALOG_CAROUSEL",
"product_specific_type": "ALL",
"image_ids": ["{{image_ids}}"],
"end_card_cta": "SEARCH_INVENTORY",
"music_id": "{{music_id}}",
"ad_text": "{{ad_text}}",
"call_to_action": "CHECK_AVAILABLILITY",
"landing_page_url": "{{landing_page_url}}"
}
]
}'
(/code)
Response
(code curl http)
HTTPS/1.1 200 OK
{
"code": 0,
"message": "OK",
"request_id": "{{request_id}}",
"data": {
"ad_ids": [
"{{ad_ids}}"
],
"need_audit": false,
"creatives": [
{
"carousel_image_labels": null,
"music_id": "{{music_id}}",
"identity_type": "CUSTOMIZED_USER",
"ad_name": "{{ad_name}}",
"brand_safety_vast_url": null,
"optimization_event": "ON_WEB_DETAIL",
"deeplink": null,
"modify_time": "{{modify_time}}",
"identity_id": "{{identity_id}}",
"landing_page_url": "{{landing_page_url}}",
"operation_status": "ENABLE",
"display_name": "{{display_name}}",
"impression_tracking_url": null,
"ad_texts": null,
"app_name": "",
"product_specific_type": "ALL",
"page_id": null,
"creative_type": null,
"card_id": null,
"viewability_vast_url": null,
"video_id": null,
"is_new_structure": true,
"adgroup_id": "{{adgroup_id}}",
"profile_image_url": "{{profile_image_url}}",
"end_card_cta": "SEARCH_INVENTORY",
"tracking_pixel_id": "{{tracking_pixel_id}}",
"is_aco": false,
"playable_url": "",
"create_time": "{{create_time}}",
"click_tracking_url": null,
"ad_id": "{{ad_id}}",
"ad_text": "{{ad_text}}",
"advertiser_id": "{{advertiser_id}}",
"vast_moat_enabled": false,
"campaign_id": "{{campaign_id}}",
"ad_format": "CATALOG_CAROUSEL",
"avatar_icon_web_uri": "{{avatar_icon_web_uri}}",
"campaign_name": "{{campaign_name}}",
"landing_page_urls": null,
"viewability_postbid_partner": "UNSET",
"ad_ref_pixel_id": 7031154132622917634,
"call_to_action": "CHECK_AVAILABLILITY",
"image_ids": [
"{{image_ids}}"
],
"call_to_action_id": null,
"adgroup_name": "{{adgroup_name}}",
"creative_authorized": false
}
]
}
}
(/code)