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.
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 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-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 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 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_idcatalog_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
|
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 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 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:
|
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 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.
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.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:
The Inventory Card includes a CTA button, estimated catalog size, 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
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)
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 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_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:
|
| Product information (Optional) |
Select up to two product attributes to display alongside the vehicle title in your ads:
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:
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:
|
| 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. |
| 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}}",
"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)