Create an Upgraded Smart+ Ad
Use this endpoint to create an Upgraded Smart+ Ad.
Currently, you can only create a maximum of 30 ads within an Upgraded Smart+ Ad Group.
> Important
> Creating non-Spark Ads using Custom Identities in ad groups that deliver to Automatic Placement or Select Placement when TikTok is included is no longer supported for existing ad accounts. All new ad accounts created on or after January 15, 2026 cannot create non-Spark Ads using Custom Identities for these placements. Existing ads remain unaffected and editable. Ad campaigns that deliver only to Pangle or Global App Bundle placements are not be affected by Custom Identity deprecation. Learn more about changes coming to Custom Identity and migrate to Spark Ads.
Request
Endpoint
Authentication & shop
| Name | In | Type | Sample | Description |
|---|---|---|---|---|
| Authorization | header | header | Bearer q360_live_ab12cd34_… | Khóa API của brand (tạo ở mục API key). Bắt buộc với mọi request. Brand suy từ key — không truyền mã brand. |
| platform_shop_id | query | string | 7000000000000000001 | Tài sản TikTok Business đã kết nối — "Mã tài sản" ở trang Nền tảng hoặc GET /v1/platforms (tài khoản quảng cáo cho Marketing API, tài khoản TikTok cho Organic / Messaging). Có thể bỏ khi chỉ kết nối một tài sản. |
Request parameters
| Name | In | Type | Required | Sample | Description |
|---|---|---|---|---|---|
| adgroup_id | body | string | Yes | Ad group ID. To obtain ad group IDs, use /smart_plus/adgroup/get/. | |
| ad_name | body | string | No | Ad name.
To make the ad name automatically generated, set this field to ""(empty string). The format of the auto-generated ad name is ad ID (ad_id).
Length limit: 512 and cannot contain emojis.
Each word in Chinese or Japanese counts as two characters, while each letter in English counts as one character. | |
| operation_status | body | string | No | The status of the ad when created.
Enum values:
- ENABLE : The ad is enabled when created.
- DISABLE : The ad is disabled when created.Default value: ENABLE. | |
| creative_list | body | object[] | No | - Required for Single Video, Standard Carousel, and Catalog Carousel formats. - Not needed for the Multi-Show format. A list of creatives. Size range: 1-50. | |
| playable_list | body | object[] | No | Valid only in any of the following scenarios:
- Scenario 1:
- At the campaign level, objective_type is APP_PROMOTION and app_promotion_type is APP_INSTALL.
- At the ad group level, the placement is not Global Apple Bundle-only (with placement_type as PLACEMENT_TYPE_NORMAL and placements as ["PLACEMENT_GLOBAL_APP_BUNDLE"]) .
- At the ad level, ad_format is SINGLE_VIDEO and a video or video post is specified.
- Scenario 2:
- At the campaign level, objective_type is APP_PROMOTION and app_promotion_type is MINIS.
- At the ad group level:
- promotion_type is MINI_GAME.
- The placement is not Global Apple Bundle-only (with placement_type as PLACEMENT_TYPE_NORMAL and placements as ["PLACEMENT_GLOBAL_APP_BUNDLE"]) .
- At the ad level, ad_format is SINGLE_VIDEO and a video or video post is specified.
The list of playables.
Max size: 5.
Note: The Playable Ad is currently an allowlist-only feature. If you would like to access it, please contact your TikTok representative. | |
| ad_text_list | body | object[] | No | Required when tiktok_item_id is not specified.
List of ad texts.
Ad texts are shown to your audience as part of your ad creatives, to deliver the message you intend to communicate to them.
Max size: 5. | |
| auto_message_list | body | object[] | No | Required when promotion_type is LEAD_GEN_CLICK_TO_TT_DIRECT_MESSAGE at the ad group level.
Details of the automatic message to use in a TikTok Direct Messaging Ad.
Max size: 1. | |
| call_to_action_list | body | object[] | No | Call-to-action list. Max size: 3. Whether this field is required varies by ad type. Refer to the Upgraded Smart+ Campaign Use Case Guide to see the exact scenarios where this field is required. | |
| interactive_add_on_list | body | object[] | No | A list of interactive add-on (creative portfolio) IDs. Size range: 0-1. | |
| page_list | body | object[] | No | A list of pages. Size range: 0-3. | |
| landing_page_url_list | body | object[] | No | Landing page URL list. Size range: 0-1. | |
| custom_product_page_list | body | object[] | No | Valid only when the following conditions are all met:
- At the campaign level:
- objective_type is APP_PROMOTION.
- app_promotion_type is APP_RETARGETING.
- is_search_campaign is false.
- At the ad group level:
- An iOS app is specified via app_id.
Details of the custom product page to use in the ad.
Size range: 0-1. | |
| deeplink_list | body | object[] | No | A list of deeplinks. Size range: 0-1. | |
| multi_dest_list | body | object[] | No | Required and valid only when promotion_type is LEAD_GENERATION_MULTI_DESTINATION is specified at the ad group level.
A list of destinations for the Lead Generation ad.
To learn about the ad type where this field can be used, see Create an Upgraded Smart+ Lead Generation Campaign with multiple location selection. | |
| disclaimer | body | object | No | Valid only when the following conditions are both met:
- At the campaign level, objective_type is APP_PROMOTION or WEB_CONVERSIONS, or objective_type is LEAD_GENERATION and catalog_enabled is false or not specified.
- At the ad group level, the TikTok placement is included. You can use any of the following configurations:
- Automatic Placement: Leave placement_type and placements unspecified.
- Select specific placements with TikTok included: Set placement_type to PLACEMENT_TYPE_NORMAL and include PLACEMENT_TIKTOK in the value for placements.Disclaimer information.
Note: Once added to your ads, the disclaimer cannot be deleted. | |
| ad_configuration | body | object | No | Additional configurations. |
Request examples
curl -s -X POST "https://partner.quantri360.com/v1/tiktok_business/smart_plus/ad/create/" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"adgroup_id":"","creative_list":[{}],"playable_list":[{}],"ad_text_list":[{}],"auto_message_list":[{}],"call_to_action_list":[{}],"interactive_add_on_list":[{}],"page_list":[{}],"landing_page_url_list":[{}],"custom_product_page_list":[{}],"deeplink_list":[{}],"multi_dest_list":[{}],"disclaimer":{},"ad_configuration":{}}'
Python
import requests
KEY = "q360_live_..." # khóa API của brand
r = requests.post(
"https://partner.quantri360.com/v1/tiktok_business/smart_plus/ad/create/",
params={},
json={
"adgroup_id": "",
"creative_list": [
{}
],
"playable_list": [
{}
],
"ad_text_list": [
{}
],
"auto_message_list": [
{}
],
"call_to_action_list": [
{}
],
"interactive_add_on_list": [
{}
],
"page_list": [
{}
],
"landing_page_url_list": [
{}
],
"custom_product_page_list": [
{}
],
"deeplink_list": [
{}
],
"multi_dest_list": [
{}
],
"disclaimer": {},
"ad_configuration": {}
},
headers={"Authorization": f"Bearer {KEY}"},
timeout=60,
)
print(r.status_code)
print(r.json())Node.js
const KEY = 'q360_live_...'; // khóa API của brand
const url = new URL('https://partner.quantri360.com/v1/tiktok_business/smart_plus/ad/create/');
for (const [k, v] of Object.entries({})) url.searchParams.set(k, typeof v === 'object' ? JSON.stringify(v) : String(v));
const r = await fetch(url, {
method: 'POST',
headers: { Authorization: `Bearer ${KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({"adgroup_id":"","creative_list":[{}],"playable_list":[{}],"ad_text_list":[{}],"auto_message_list":[{}],"call_to_action_list":[{}],"interactive_add_on_list":[{}],"page_list":[{}],"landing_page_url_list":[{}],"custom_product_page_list":[{}],"deeplink_list":[{}],"multi_dest_list":[{}],"disclaimer":{},"ad_configuration":{}}),
});
console.log(r.status, await r.json());PHP
<?php
$key = 'q360_live_...'; // khóa API của brand
$url = 'https://partner.quantri360.com/v1/tiktok_business/smart_plus/ad/create/' . '?' . http_build_query([]);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $key, 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"adgroup_id":"","creative_list":[{}],"playable_list":[{}],"ad_text_list":[{}],"auto_message_list":[{}],"call_to_action_list":[{}],"interactive_add_on_list":[{}],"page_list":[{}],"landing_page_url_list":[{}],"custom_product_page_list":[{}],"deeplink_list":[{}],"multi_dest_list":[{}],"disclaimer":{},"ad_configuration":{}}');
$res = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $status, "\n", $res;Response
Response fields (as returned by TikTok Business)
| Name | Type | Sample | Description |
|---|---|---|---|
| code | number | Response code. For the complete list of response codes and descriptions, see Appendix - Return Codes. | |
| message | string | Response message. For details, see Appendix - Return Codes. | |
| request_id | string | The log ID of the request, which uniquely identifies a request. | |
| data | object | Returned data. | |
| advertiser_id | string | Advertiser ID. | |
| campaign_id | string | Campaign ID. | |
| campaign_name | string | Campaign name. | |
| adgroup_id | string | Ad group ID. | |
| adgroup_name | string | Ad group name. | |
| smart_plus_ad_id | string | Ad ID. | |
| ad_name | string | Ad name. | |
| operation_status | string | Operation status. Enum values: - `ENABLE` : The ad is enabled (in 'ON' status). - `DISABLE`: The ad is disabled (in 'OFF' status). - `FROZEN`: The ad is terminated and cannot be enabled. | |
| secondary_status | string | Ad secondary status. For enum values, see Enumeration-Ad Status - Secondary Status. The following secondary statuses are newly added for Upgraded Smart+ Ads: - `AD_STATUS_DELIVERY_AND_REAUDIT`: Review of modifications in progress. - `AD_STATUS_DELIVERY_AND_TRANSCODING_FAIL`: Transcoding of the video or videos in the ad failed. - `AD_STATUS_REVIEW_PARTIALLY_APPROVED`: Ad in partial review and in delivery. - `AD_STATUS_COLLECTION_TOGGLED_OFF`: Lead collection has ended. - `AD_STATUS_PRIVACY_POLICY_REJECTED`: Ad rejected due to privacy policy violations. - `AD_STATUS_PRIVACY_POLICY_AUDIT`: Ad in review for privacy policy compliance. | |
| create_time | string | The time when the ad was created, in the format of `YYYY-MM-DD HH:MM:SS` (UTC+0). Example: `2025-01-01 00:00:01`. | |
| modify_time | string | The time when the ad was last modified, in the format of `YYYY-MM-DD HH:MM:SS` (UTC+0). Example: `2025-01-01 00:00:01`. | |
| creative_list | object[] | A list of creatives. | |
| ad_material_id | string | An ad-specific material ID generated when a particular creative is used in an ad. This ID differs from the creative ID you receive when uploading the creative to your ad account’s Creative Library. | |
| smart_plus_creative_id | string | The ID of the creative in the Upgraded Smart+ Ad. This ID is the same as the creative ID you retrieve in the following scenarios: - The `ad_id` you receive from /ad/get/ when you do not specify the `ad_ids_v2` filter. - The `ad_id` metric you retrieve from /report/integrated/get/ when you set `data_level` to `AUCTION_AD` and include `ad_id` in `dimensions`. | |
| material_operation_status | string | The status of the creative. Enum values: - `ENABLE`: The creative is enabled (in 'ON' status). - `DISABLE`: The creative is disabled (in 'OFF' status). | |
| creative_info | object | Creative information. | |
| ad_format | string | The ad format. Enum values: - `SINGLE_VIDEO`: Single Video. - `CAROUSEL_ADS`: Standard Carousel. - `CATALOG_CAROUSEL`: Catalog Carousel. | |
| material_name | string | Material name. Note: If `ad_format` is `CAROUSEL_ADS` and you have set a non-empty custom name for the carousel via `material_name` in the request, this field will return your custom carousel name. | |
| video_info | object | Video information. | |
| video_id | string | Video ID. | |
| file_name | string | Video name. | |
| thumbnail_mode | string | The mode of the video thumbnail. The thumbnail will be shown as the first image on a search results page. Thumbnails are critical for catching your audience's attention and driving clicks. Enum values: - `AUTOMATIC`: Smart thumbnail. The system will show a different frame from your video customized for different audiences to closely match what they're searching for and what they're most likely to tap. The video cover specified through `image_info` will be used as the fallback video thumbnail if no matching thumbnails are found. - `MANUAL`: Manual thumbnail. The video cover specified through `image_info` will be used as the video thumbnail. | |
| image_info | object[] | Image information. | |
| web_uri | string | Image ID. | |
| music_info | object | Music information. | |
| music_id | string | The ID of the piece of music to use in the Carousel Ads. | |
| aigc_disclosure_type | string | Whether to turn on the AIGC (Artificial Intelligence Generated Content) self-disclosure toggle to indicate the ad contains AI-generated content. After the toggle is turned on, your ad will carry an "Advertiser labeled as Al-generated" label when viewed in full. Enum values: - `SELF_DISCLOSURE`: To turn on the toggle to declare that the ad contains AI-generated content. - `NOT_DECLARED`: To not declare that the ad contains AI-generated content. | |
| tiktok_item_id | string | The ID of the TikTok post to be used as an ad (Spark Ads). | |
| identity_type | string | Returned for Spark Ads created without using catalog creatives. Identity type. Enum values: `AUTH_CODE`, `TT_USER`, `BC_AUTH_TT`. For details about identities, see Identities. | |
| identity_id | string | Returned for Spark Ads created without using catalog creatives. Identity ID. | |
| identity_authorized_bc_id | string | Returned when `identity_type` within `creative_info` is `BC_AUTH_TT`. The ID of the Business Center that a TikTok Account User in Business Center identity is associated with. | |
| playable_list | object[] | A list of playables. | |
| playable_url | string | The URL of the playable. | |
| ad_text_list | object[] | A list of ad texts. Ad texts are shown to your audience as part of your ad creatives, to deliver the message you intend to communicate to them. | |
| ad_text | string | Ad text. | |
| auto_message_list | object[] | Returned only when `promotion_type` is `LEAD_GEN_CLICK_TO_TT_DIRECT_MESSAGE` at the ad group level. Details of the automatic message to use in a TikTok Direct Messaging Ad. | |
| auto_message_id | string | Required when `auto_message_list` is specified. The ID of the automatic message to use in a TikTok Direct Messaging Ad. Currently, the only supported automatic message type is welcome message. - To obtain a list of welcome messages within your ad account, use /creative/auto_message/get/. - To create a welcome message within your ad account, use /creative/auto_message/create/. To learn more about how to create TikTok Direct Messaging Ads with welcome messages, see Create an Upgraded Smart+ Lead Generation Campaign with optimization location as TikTok direct messages. | |
| call_to_action_list | object[] | Call-to-action list. | |
| call_to_action | string | Call-to-action text. For enum values, see Enumeration - Call-to-action. | |
| interactive_add_on_list | object[] | A list of interactive add-on (creative portfolio) IDs. | |
| card_id | string | The ID of an interactive add-on. | |
| page_list | object[] | A list of pages. | |
| page_id | string | Page ID. | |
| landing_page_url_list | object[] | A list of landing page URLs. | |
| landing_page_url | string | Landing page URL. | |
| custom_product_page_list | object[] | Details of the custom product page to use in the ad. | |
| custom_product_page_url | string | The Custom Product Page (CPP) URL. CPPs are product pages with customized screenshots, promotional text, and app previews that can be used to highlight specific content or features of the promoted app, or reach specific audiences. Example: ` | |
| deeplink_list | object[] | A list of deeplinks. | |
| deeplink | string | Deeplink, the specific location where you want your audience to go if they have your app installed. | |
| deeplink_type | string | The deeplink type. Enum values: - `NORMAL`: non-deferred deeplink. - `DEFERRED_DEEPLINK`: deferred deeplink. | |
| multi_dest_list | object[] | Returned only when `promotion_type` is `LEAD_GENERATION_MULTI_DESTINATION` is specified at the ad group level. A list of destinations for the Lead Generation ad. | |
| dest_type | string | Destination type. Enum values: - `EXTERNAL_WEBSITE`: Website URL. You need to specify `landing_page_url` simultaneously. - `INSTANT_PAGE`: Instant Form. You need to specify `page_id` simultaneously. - `TT_DIRECT_MESSAGAE`: Message template. You need to specify `auto_message_id` simultaneously. | |
| landing_page_url | string | Returned when `dest_type` is `EXTERNAL_WEBSITE`. Landing page URL. | |
| page_id | string | Returned when `dest_type` is `INSTANT_PAGE`. The ID of an Instant Form. | |
| auto_message_id | string | Returned when `dest_type` is `TT_DIRECT_MESSAGAE`. The ID of the automatic message to use in a TikTok Direct Messaging Ad. | |
| disclaimer | object | Disclaimer information. | |
| disclaimer_type | string | The type of disclaimer in the ad. Enum values: - `TEXT_ONLY`: text-only disclaimer. - `TEXT_LINK`: clickable disclaimer. | |
| disclaimer_text | object | The text-only disclaimer in the ad. | |
| text | string | The disclaimer text. | |
| disclaimer_clickable_texts | object[] | The clickable disclaimer or clickable disclaimers in the ad. | |
| text | string | The disclaimer text. | |
| url | string | The URL for the clickable disclaimer. When users tap each text, they will be redirected to the URL and see more disclaimer details. | |
| ad_configuration | object | Additional configurations. | |
| identity_type | string | Returned in any of the following scenarios: - For non-Spark Ads on non-TikTok placements. Non-Spark Ads on the TikTok placement are no longer supported. - For Spark Ads created using catalog creatives. Identity type. - Enum values for non-Spark Ads on non-TikTok placements: `CUSTOMIZED_USER`. - Enum values for Upgraded Smart+ Catalog Spark Ads (with `catalog_creative_toggle` as `true`): `TT_USER`, `BC_AUTH_TT`. For details about identities, see Identities. | |
| identity_id | string | Returned in any of the following scenarios: - For non-Spark Ads on non-TikTok placements. Non-Spark Ads on the TikTok placement are no longer supported. - For Spark Ads created using catalog creatives. Identity ID. | |
| identity_authorized_bc_id | string | Returned when `identity_type` within `ad_configuration` is `BC_AUTH_TT`. ID of the Business Center that a TikTok Account User in Business Center identity is associated with. | |
| dark_post_status | string | The status of the "Ads-only mode" for your creatives. Enum values: - `ON`: Enable the ads-only mode to limit your posts to paid traffic. - `OFF`: Disable the ads-only mode. The post will appear on your TikTok profile and will be eligible to receive organic traffic. | |
| product_specific_type | string | Different dimensions to choose products. Enum values: - `ALL`: Allow TikTok to dynamically choose from all products. - `PRODUCT_SET`: Specify a product set. TikTok will dynamically choose products from this set. - `CUSTOMIZED_PRODUCTS`: Specify a customized number of products. - `UNSET`: Unset. | |
| product_set_id | string | The ID of a product set. | |
| product_ids | string[] | The product IDs of catalog products. | |
| catalog_creative_toggle | boolean | Whether to enable auto-selection of creatives from your catalog. Supported values: `true`, `false`. | |
| catalog_creative_info | object | Additional settings for catalog creatives to use in your ads. | |
| catalog_media_settings | string[] | The types of creatives from your E-commerce, entertainment, generic, or online-to-offline catalog to use in the ad. Enum values: - `VIDEO`: Video. - `IMAGE`: Image. - `TEMPLATE_VIDEO`: Video templates. - `MULTI_SHOW`: Multi-Show. Multi-Show Experience is an auto-play video carousel experience designed to drive user exploration and engagement across a breadth of personally-relevant title offerings within your content library. Multi-Show Experience consists of 4 video tiles delivered from your catalog. Each tile's clip plays sequentially (starting in the upper left-hand corner), and offers you the ability to assign a corresponding title-specific landing page. The availability of the enum values varies by ad type. Refer to the Upgraded Smart+ Campaign Use Case Guide to see the exact supported values for your scenario. | |
| catalog_template_video_id | string | The ID of a video template in your catalog to use in the ad. | |
| creative_auto_add_toggle | boolean | Whether to auto-add newly generated assets during delivery. During your campaign, the system will generate new creative assets from your existing campaign assets and creative library. By using TikTok's latest trending elements (hooks, music, text, and more), you'll get high-quality, ready-to-use content that delivers alongside your other selected assets. New assets will be added to your campaign automatically and won't appear on your TikTok profile. You can turn off this feature anytime. Supported values: `true`, `false`. | |
| creative_auto_enhancement_strategy_list | string[] | The list of automatic enhancement strategies to apply to your ads. Automatic enhancements are real-time edits applied to your ads during your campaign. They can improve performance by creating more engaging and impactful visuals, sound, and more. Enum values: - `TRANSLATE_AND_DUB`: Translate and dub. Connect with global audiences by delivering your ad in 50+ languages. - `MUSIC_REFRESH`: Music refresh. Stay on-trend by swapping in music currently popular on TikTok. - `VIDEO_QUALITY`: Video quality. Improve overall visual quality with increased resolution and clarity. - `IMAGE_QUALITY`: Image quality. Improve overall visual quality with increased resolution and clarity. - `IMAGE_RESIZE`: Resize. Resize your image to take advantage of full-screen capabilities. | |
| deeplink_utm_params | object[] | A list of deeplink URL parameters. URL parameters are snippets of code that can be added to the end of the URLs to help you track clicks across different channels and understand how visitors interact with a website through third-party analytics platforms. They consist of key-value pairs that are specified through `key` and `value`. | |
| key | string | The deeplink URL parameter. It can be a custom parameter or a UTM parameter. The supported UTM parameters are: - `utm_source`: The app, site, etc., that brings traffic to your website. For example: TikTok. - `utm_medium`: The advertising or marketing medium. For example: cpm, cpc, banner, video. - `utm_content`: The creative content used for promotion. For example: ad name, CTA text, asset, color, etc. - `utm_campaign`: The individual campaign name, slogan, or promo code. For example: BlackFridayProm. | |
| value | string | The value of the deeplink URL parameter. It can be a custom value or the name of a macro. The supported macros are: - `__CAMPAIGN_NAME__`: This will be replaced by your campaign name. - `__CAMPAIGN_ID__`: This will be replaced by your campaign ID. - `__AID_NAME__`: This will be replaced by your ad group name. - `__AID__`: This will be replaced by your ad group ID. - `__CID_NAME__`: This will be replaced by your ad name. - `__CID__`: This will be replaced by your ad ID. - `__PLACEMENT__`: This will be replaced by your placement. | |
| end_card_cta | string | Call-to-action for the end card (`image_ids`) of an Upgraded Smart+ Automotive Carousel Ad for Inventory or Automotive Carousel Ad for Models, or the catalog solution for Upgraded Smart+ TikTok Direct Messaging Ads. Enum values: - `SEARCH_INVENTORY` (Recommended): Search inventory. - `LEARN_MORE`: Learn more. - `SHOP_NOW`: Shop now. - `SIGN_UP`: Sign up. - `CONTACT_US`: Contact us. - `BOOK_NOW`: Book now. - `READ_MORE`: Read more. - `VIEW_MORE`: View now. - `ORDER_NOW`: Order now. - `SEND_MESSAGE`: Send message. - This value is only available for the catalog solution for Upgraded Smart+ TikTok Direct Messaging Ads. | |
| product_display_field_list | string[] | A list of product details to display in your Automotive Carousel Ad for Inventory or Upgraded Smart+ Lead Generic Catalog Ads. Enum values for Automotive Carousel Ad for Inventory: - `DEALER_NAME`: the `dealer_name` field of vehicles. - `MAKE`: the `make` field of vehicles. - `MODEL`: the `model` field of vehicles. - `YEAR`: the `year` field of vehicles. - `MILEAGE`: the `mileage` field of vehicles. - `PRICE`: the `price` field of vehicles. - `SALE_PRICE`: the `sale_price` field of vehicles. - `EXTERIOR_COLOR`: the `exterior_color` field of vehicles. - `TRIM`: the `trim` field of vehicles. - `ADDRESS_CITY`: the `city` field of vehicles. - `VEHICLE_STATE`: the `state_of_vehicle` field of vehicles. Enum values for Upgraded Smart+ Lead Generic Catalog Ads: - `RATING`: the `rating` field of generic products or services. - `SALE_PRICE`: the `sale_price` field of generic products or services. - `PRICE`: the `price` field of generic products or services. - `DESCRIPTION`: the `description` field of generic products or services. - `ADDRESS_CITY`: the `address.city` field of generic products or services. - `ADDRESS_REGION`: the `address.region` field of generic products or services. - `ADDRESS_STREET`: the `address.street` field of generic products or services. - `CUSTOM_LABEL_0`: the `custom_label_0` field of generic products or services. - `CUSTOM_LABEL_1`: the `custom_label_1` field of generic products or services. - `CUSTOM_LABEL_2`: the `custom_label_2` field of generic products or services. The title of each vehicle, product, or service is displayed automatically. For instance, if you set this field to `["MILEAGE","YEAR"]`, the ad will display the `mileage`, `price` and `title` fields of each vehicle. To retrieve the product detail fields of your vehicles in an Auto-Inventory catalog or that of your products or services in a generic catalog and check whether you need to update the details, use /catalog/product/get/. | |
| auto_disclaimer_types | string[] | The type of disclaimer to show in the Automotive Carousel Ad for Models. Enum values: - `EMISSION`: Emission disclaimer. - `DISCOUNT`: Discount or offer disclaimer. | |
| utm_params | object[] | A list of URL parameters. URL parameters are snippets of code that can be added to the end of the URLs to help you track clicks across different channels and understand how visitors interact with a website through third-party analytics platforms. They consist of key-value pairs that are specified through `key` and `value`. | |
| key | string | The URL parameter. The parameter can be a custom parameter or a UTM parameter. The supported UTM parameters are: - `utm_source`: The app, site, etc., that brings traffic to your website. For example: TikTok. - `utm_medium`: The advertising or marketing medium. For example: cpm, cpc, banner, video. - `utm_content`: The creative content used for promotion. For example: ad name, CTA text, asset, color, etc. - `utm_campaign`: The individual campaign name, slogan, or promo code. For example: BlackFridayProm.Note that UTM parameters are case-sensitive. | |
| value | string | The value of the URL parameter. The value can be a custom value or the name of a macro. The supported macros are: - `__CAMPAIGN_NAME__`: This will be replaced by your campaign name. - `__CAMPAIGN_ID__`: This will be replaced by your campaign ID. - `__AID_NAME__`: This will be replaced by your ad group name. - `__AID__`: This will be replaced by your ad group ID. - `__CID_NAME__`: This will be replaced by your ad name. - `__CID__`: This will be replaced by your ad ID. - `__PLACEMENT__`: This will be replaced by your placement. | |
| fallback_type | string | Fallback type. The destination when the user is unable to access the deeplink because the app has not been installed. Enum values: - `WEBSITE`: The promoted web page as fallback URL. You need to simultaneously specify the fallback URL through `landing_page_url_list`. - `APP_INSTALL`: The App Store or Google Play page for the promoted App. The availability of the enum values varies by ad type. Refer to the Upgraded Smart+ Campaign Use Case Guide to see the exact supported values for your scenario. | |
| product_info | object | Product information. This information will be used in different ad variations to create personalized ad delivery with the goal of improving ad performance. Based on past data, ads with complete information often have more clicks and conversions. Results may vary. | |
| product_titles | string[] | A list of product names. | |
| product_image_list | object[] | A list of product images. | |
| web_uri | string | The image ID of a product image. | |
| selling_points | string[] | A list of selling points. | |
| catalog_tag_list | string[] | Returned in any of the following scenarios: - Scenario 1: At the campaign level `objective_type` is `WEB_CONVERSIONS` and `catalog_type` is `ECOMMERCE`. - Scenario 2: - At the campaign level, `objective_type` is `LEAD_GENERATION` and `catalog_enabled` is `true`. - At the ad group level, an Auto-Inventory catalog is specified through `catalog_id`. - Scenario 3: - At the campaign level, `objective_type` is `WEB_CONVERSIONS` or `LEAD_GENERATION`, `catalog_enabled` is `true`, and `catalog_type` is `GENERIC`.Details of the product information for catalog ads. - For scenario 1, the specified product information will be automatically displayed from your catalog to drive results. The enum values are: - `PRICE`: Price. - `STRIKETHROUGH_PRICE`: Strikethrough price. - `DISCOUNT`: Discount. - `FREE_SHIPPING`: Free shipping. - For scenario 2, the corresponding text for the specified product information will be displayed on the inventory card. The enum values are: - `DEALER_NAME`: Dealer name. - `CURRENT_MILEAGE`: Current mileage. - `LEAD_PRICE`: Price. - `LEAD_SALE_PRICE`: Sale price. - `EXTERIOR_COLOR`: Exterior color. - `TRIM`: Trim. - `ADDRESS_CITY`: City. - `VEHICLE_STATE`: Vehicle state. - For scenario 3, the enum values are: - `GENERIC_RATING`: Rating. - `GENERIC_SALE_PRICE`: Sale price. - `GENERIC_PRICE`: Price. - `GENERIC_DESCRIPTION`: Product description. - `GENERIC_ADDRESS_CITY`: City. - `GENERIC_ADDRESS_REGION`: Locations or regions. - `GENERIC_ADDRESS_STREET`: Street address. - `GENERIC_CUSTOM_LABEL_0`: Custom label 0. - `GENERIC_CUSTOM_LABEL_1`: Custom label 1. - `GENERIC_CUSTOM_LABEL_2`: Custom label 2. | |
| product_card_type | string[] | The product card display type. Enum values: - `PRODUCT_CARD`: Product Card. - `PRODUCT_TILE`: Product Tiles. - `PRODUCT_INFO_CARD`: Info Card. - `PRODUCT_SHOWCASE_TILE`: Showcase Tiles. - `ANCHOR`: Anchor. - `CAROUSEL_LABEL`: Carousel label. | |
| promo_info_list | object[] | Returned only for regular Upgraded Smart+ Web Campaigns. Details of promo codes and offers. Your offer details for promo codes, offers, or events will be highlighted to boost engagement and ad performance. Promo codes require shoppers to enter a code at checkout. Offers apply automatically and no code is needed. | |
| discount_type | string | Returned only when `promo_info_list` is specified. Discount type. Enum values: - `PERCENTAGE`: Percentage off discount. - `CASH`: Cash off discount. | |
| discount_value | float | Returned when `promo_info_list` is specified. Discount value. | |
| discount_currency | string | Returned when `discount_type` is `CASH`. Discount currency. For enum values, see List of values for `discount_currency` or `minimum_purchase_currency`. | |
| promo_code | string | The promo code. | |
| minimum_purchase_type | string | Minimum purchase type. Enum values: - `QUANTITY`: Minimum quantity. - `SUBTOTAL`: Minimum subtotal. | |
| minimum_purchase_value | float | Returned only when `minimum_purchase_type` is specified. Minimum purchase value. | |
| minimum_purchase_currency | string | Returned only when `minimum_purchase_type` is `SUBTOTAL`. Minimum purchase currency. For enum values, see List of values for `discount_currency` or `minimum_purchase_currency`. | |
| valid_start_time | string | Valid start time (UTC+0) for the promo code or offer, in the format of `YYYY-MM-DD HH:MM:SS`. | |
| valid_end_time | string | Valid end time (UTC+0) for the promo code or offer, in the format of `YYYY-MM-DD HH:MM:SS`. | |
| product_info_enabled | string | The product information mode. Enum values: - `UNSET`: To disable product information mode. - `NON_CATALOG`: To enable the non-catalog version of product information. - `CATALOG`: To enable the catalog version of product information. | |
| call_to_action_id | string | The ID of the call-to-action portfolio to use in your ad. | |
| phone_info | object | Returned only when `promotion_type` is set to `LEAD_GEN_CLICK_TO_CALL` at the ad group level. Details of the phone number that the ad audience can directly reach out to you (the advertiser) through when they click the call-to-action button within the ad. Learn about how to create an Upgraded Smart+ Lead Generation Campaign with optimization location as phone call. | |
| phone_region_code | string | The region code for the phone number that the audience can click on the ad to call. Example: `US`. | |
| phone_region_calling_code | string | The region calling code for the phone number that the audience can click on the ad to call. Example: `+1`. | |
| phone_number | string | The phone number that the audience can click on the ad to call. Example: `12638282`. | |
| tracking_info | object | Tracking information. | |
| viewability_postbid_partner | string | Post-bid third-party viewability measurement partner. Enum values: `DOUBLE_VERIFY`, `IAS`, `ZEFR`. | |
| viewability_vast_url | string | Returned when `viewability_postbid_partner` is `IAS`. The wrapped VAST URL used by the post-bid third-party partner to measure viewability. You need to get the URL from the measurement partner IAS. | |
| brand_safety_postbid_partner | string | Post-bid third-party brand safety measurement partner. Enum values: `DOUBLE_VERIFY`, `IAS`, `ZEFR`. | |
| brand_safety_vast_url | string | Returned when `brand_safety_postbid_partner` is `IAS`. The wrapped VAST URL used by the post-bid third-party partner to measure brand safety. You need to get the URL from the measurement partner IAS. | |
| impression_tracking_url | string | Default Impression Tracking URL. | |
| click_tracking_url | string | Click Tracking URL. | |
| tracking_app_id | string | The ID of the app that is measured. | |
| tracking_pixel_id | string | The ID of the pixel for tracking the actions people take on your website, such as page views, add to cart, purchases, and more. | |
| tracking_offline_event_set_ids | string[] | A list of Offline Event set IDs for tracking customer actions that happen in-person, such as in-store purchases or live event attendance. | |
| tracking_message_event_set_id | string | The ID of the message event set that you want to measure in the Instant Messaging Ad. | |
| app_tracking_info_list | object[] | Details of Third-party tracking settings. | |
| app_type | string | Returned when `app_tracking_info_list` is specified. App type. Enum values: - `APP_ANDROID`: Android App. - `APP_IOS`: iOS App. | |
| app_id | string | Returned when `app_tracking_info_list` is specified. The App ID of the App. - When `app_type` is `APP_ANDROID`, this field represents the App ID for an Android App. - When `app_type` is `APP_IOS`, this field represents the App ID for an iOS App. | |
| impression_tracking_url | string | Impression tracking URL. - When `app_type` is `APP_ANDROID`, this field represents an impression tracking URL for Android. - When `app_type` is `APP_IOS`, this field represents an impression tracking URL for iOS. | |
| click_tracking_url | string | Click tracking URL. - When `app_type` is `APP_ANDROID`, this field represents a click tracking URL for Android. - When `app_type` is `APP_IOS`, this field represents a click tracking URL for iOS. | |
| page_info | object | Pagination information. | |
| page | number | Current page number. | |
| page_size | number | Page size. | |
| total_number | number | Total number of results. | |
| total_page | number | Total pages of results. |
Response sample
{
"code": 0,
"message": "OK",
"request_id": "{{request_id}}",
"data": {
"ad_configuration": {
"call_to_action_id": "{{call_to_action_id}}",
"tracking_info": {},
"utm_params": [
{
"key": "{{key}}",
"value": "{{value}}"
}
]
},
"ad_name": "{{ad_name}}",
"ad_text_list": [
{
"ad_text": "{{ad_text}}"
},
{
"ad_text": "{{ad_text}}"
},
{
"ad_text": "{{ad_text}}"
},
{
"ad_text": "{{ad_text}}"
},
{
"ad_text": "{{ad_text}}"
}
],
"adgroup_id": "{{adgroup_id}}",
"adgroup_name": "{{adgroup_name}}",
"advertiser_id": "{{advertiser_id}}",
"call_to_action_list": [],
"campaign_id": "{{campaign_id}}",
"campaign_name": "{{campaign_name}}",
"create_time": "{{create_time}}",
"creative_list": [
{
"ad_material_id": "{{ad_material_id}}",
"creative_info": {
"ad_format":"SINGLE_VIDEO",
"identity_authorized_bc_id": "0",
"identity_id": "{{identity_id}}",
"identity_type": "TT_USER",
"image_info": [
{
"web_uri": "{{web_uri}}"
}
],
"material_name": "",
"video_info": {
"file_name": "",
"video_id": "{{video_id}}"
}
},
"material_operation_status": "ENABLE"
},
{
"ad_material_id": "{{ad_material_id}}",
"creative_info": {
"ad_format":"SINGLE_VIDEO",
"identity_authorized_bc_id": "0",
"identity_id": "{{identity_id}}",
"identity_type": "TT_USER",
"tiktok_item_id": "{{tiktok_item_id}}"
},
"material_operation_status": "ENABLE"
},
{
"ad_material_id": "{{ad_material_id}}",
"creative_info": {
"ad_format":"SINGLE_VIDEO",
"identity_authorized_bc_id": "{{identity_authorized_bc_id}}",
"identity_id": "{{identity_id}}",
"identity_type": "BC_AUTH_TT",
"tiktok_item_id": "{{tiktok_item_id}}"
},
"material_operation_status": "ENABLE"
},
{
"ad_material_id": "{{ad_material_id}}",
"creative_info": {
"ad_format":"CAROUSEL_ADS",
"identity_authorized_bc_id": "0",
"identity_id": "{{identity_id}}",
"identity_type": "TT_USER",
"image_info": [
{
"web_uri": "{{web_uri}}"
}
],
"material_name": "{{material_name}}",
"music_info": {
"music_id": "{{music_id}}"
}
},
"material_operation_status": "ENABLE"
},
{
"ad_material_id": "{{ad_material_id}}",
"creative_info": {
"ad_format":"SINGLE_VIDEO",
"identity_authorized_bc_id": "0",
"identity_id": "{{identity_id}}",
"identity_type": "AUTH_CODE",
"tiktok_item_id": "{{tiktok_item_id}}"
},
"material_operation_status": "ENABLE"
}
],
"deeplink_list": [],
"interactive_add_on_list": [],
"landing_page_url_list": [
{
"landing_page_url": "{{landing_page_url}}"
}
],
"modify_time": "{{modify_time}}",
"operation_status": "ENABLE",
"page_list": [],
"secondary_status": "AD_STATUS_AUDIT",
"smart_plus_ad_id": "{{smart_plus_ad_id}}"
}
}
Get started
- Sign up for Partner
- Enable a data type of the Ads (Marketing API) group on the platform page
- Create an API key (tick the TikTok Business channel)
- Call it as in the examples above