VI | EN
Message us on Messenger
Developer resources

Create an Upgraded Smart+ Ad — TikTok Business API

Create an Upgraded Smart+ Ad · call it through Quantri360 with one API key for your own accounts / assets that you connected and authorized — 360 handles request signing and refreshing the authorization you granted.

Create an Upgraded Smart+ Ad

POST/smart_plus/ad/create/Via 360: POST https://partner.quantri360.com/v1/tiktok_business/smart_plus/ad/create/
Write endpoint — changes data on TikTok Business. The key must be created with "Allow write API calls" ticked, otherwise you get 403 write_not_allowed. Every call is logged.
Description

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

POST https://partner.quantri360.com/v1/tiktok_business/smart_plus/ad/create/

Authentication & shop

NameInTypeSampleDescription
AuthorizationheaderheaderBearer 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_idquerystring7000000000000000001Tà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

NameInTypeRequiredSampleDescription
adgroup_idbodystringYesAd group ID. To obtain ad group IDs, use /smart_plus/adgroup/get/.
ad_namebodystringNoAd 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_statusbodystringNoThe 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_listbodyobject[]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_listbodyobject[]NoValid 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_listbodyobject[]NoRequired 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_listbodyobject[]NoRequired 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_listbodyobject[]NoCall-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_listbodyobject[]NoA list of interactive add-on (creative portfolio) IDs. Size range: 0-1.
page_listbodyobject[]NoA list of pages. Size range: 0-3.
landing_page_url_listbodyobject[]NoLanding page URL list. Size range: 0-1.
custom_product_page_listbodyobject[]NoValid 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_listbodyobject[]NoA list of deeplinks. Size range: 0-1.
multi_dest_listbodyobject[]NoRequired 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.
disclaimerbodyobjectNoValid 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_configurationbodyobjectNoAdditional 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)

NameTypeSampleDescription
codenumberResponse code. For the complete list of response codes and descriptions, see Appendix - Return Codes.
messagestringResponse message. For details, see Appendix - Return Codes.
request_idstringThe log ID of the request, which uniquely identifies a request.
dataobjectReturned data.
advertiser_idstringAdvertiser ID.
campaign_idstringCampaign ID.
campaign_namestringCampaign name.
adgroup_idstringAd group ID.
adgroup_namestringAd group name.
smart_plus_ad_idstringAd ID.
ad_namestringAd name.
operation_statusstringOperation 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_statusstringAd 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_timestringThe 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_timestringThe 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_listobject[]A list of creatives.
ad_material_idstringAn 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_idstringThe 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_statusstringThe status of the creative. Enum values: - `ENABLE`: The creative is enabled (in 'ON' status). - `DISABLE`: The creative is disabled (in 'OFF' status).
creative_infoobjectCreative information.
ad_formatstringThe ad format. Enum values: - `SINGLE_VIDEO`: Single Video. - `CAROUSEL_ADS`: Standard Carousel. - `CATALOG_CAROUSEL`: Catalog Carousel.
material_namestringMaterial 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_infoobjectVideo information.
video_idstringVideo ID.
file_namestringVideo name.
thumbnail_modestringThe 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_infoobject[]Image information.
web_uristringImage ID.
music_infoobjectMusic information.
music_idstringThe ID of the piece of music to use in the Carousel Ads.
aigc_disclosure_typestringWhether 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_idstringThe ID of the TikTok post to be used as an ad (Spark Ads).
identity_typestringReturned 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_idstringReturned for Spark Ads created without using catalog creatives. Identity ID.
identity_authorized_bc_idstringReturned 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_listobject[]A list of playables.
playable_urlstringThe URL of the playable.
ad_text_listobject[]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_textstringAd text.
auto_message_listobject[]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_idstringRequired 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_listobject[]Call-to-action list.
call_to_actionstringCall-to-action text. For enum values, see Enumeration - Call-to-action.
interactive_add_on_listobject[]A list of interactive add-on (creative portfolio) IDs.
card_idstringThe ID of an interactive add-on.
page_listobject[]A list of pages.
page_idstringPage ID.
landing_page_url_listobject[]A list of landing page URLs.
landing_page_urlstringLanding page URL.
custom_product_page_listobject[]Details of the custom product page to use in the ad.
custom_product_page_urlstringThe 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_listobject[]A list of deeplinks.
deeplinkstringDeeplink, the specific location where you want your audience to go if they have your app installed.
deeplink_typestringThe deeplink type. Enum values: - `NORMAL`: non-deferred deeplink. - `DEFERRED_DEEPLINK`: deferred deeplink.
multi_dest_listobject[]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_typestringDestination 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_urlstringReturned when `dest_type` is `EXTERNAL_WEBSITE`. Landing page URL.
page_idstringReturned when `dest_type` is `INSTANT_PAGE`. The ID of an Instant Form.
auto_message_idstringReturned when `dest_type` is `TT_DIRECT_MESSAGAE`. The ID of the automatic message to use in a TikTok Direct Messaging Ad.
disclaimerobjectDisclaimer information.
disclaimer_typestringThe type of disclaimer in the ad. Enum values: - `TEXT_ONLY`: text-only disclaimer. - `TEXT_LINK`: clickable disclaimer.
disclaimer_textobjectThe text-only disclaimer in the ad.
textstringThe disclaimer text.
disclaimer_clickable_textsobject[]The clickable disclaimer or clickable disclaimers in the ad.
textstringThe disclaimer text.
urlstringThe URL for the clickable disclaimer. When users tap each text, they will be redirected to the URL and see more disclaimer details.
ad_configurationobjectAdditional configurations.
identity_typestringReturned 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_idstringReturned 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_idstringReturned 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_statusstringThe 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_typestringDifferent 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_idstringThe ID of a product set.
product_idsstring[]The product IDs of catalog products.
catalog_creative_togglebooleanWhether to enable auto-selection of creatives from your catalog. Supported values: `true`, `false`.
catalog_creative_infoobjectAdditional settings for catalog creatives to use in your ads.
catalog_media_settingsstring[]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_idstringThe ID of a video template in your catalog to use in the ad.
creative_auto_add_togglebooleanWhether 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_liststring[]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_paramsobject[]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`.
keystringThe 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.
valuestringThe 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_ctastringCall-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_liststring[]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_typesstring[]The type of disclaimer to show in the Automotive Carousel Ad for Models. Enum values: - `EMISSION`: Emission disclaimer. - `DISCOUNT`: Discount or offer disclaimer.
utm_paramsobject[]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`.
keystringThe 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.
valuestringThe 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_typestringFallback 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_infoobjectProduct 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_titlesstring[]A list of product names.
product_image_listobject[]A list of product images.
web_uristringThe image ID of a product image.
selling_pointsstring[]A list of selling points.
catalog_tag_liststring[]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_typestring[]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_listobject[]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_typestringReturned only when `promo_info_list` is specified. Discount type. Enum values: - `PERCENTAGE`: Percentage off discount. - `CASH`: Cash off discount.
discount_valuefloatReturned when `promo_info_list` is specified. Discount value.
discount_currencystringReturned when `discount_type` is `CASH`. Discount currency. For enum values, see List of values for `discount_currency` or `minimum_purchase_currency`.
promo_codestringThe promo code.
minimum_purchase_typestringMinimum purchase type. Enum values: - `QUANTITY`: Minimum quantity. - `SUBTOTAL`: Minimum subtotal.
minimum_purchase_valuefloatReturned only when `minimum_purchase_type` is specified. Minimum purchase value.
minimum_purchase_currencystringReturned 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_timestringValid start time (UTC+0) for the promo code or offer, in the format of `YYYY-MM-DD HH:MM:SS`.
valid_end_timestringValid end time (UTC+0) for the promo code or offer, in the format of `YYYY-MM-DD HH:MM:SS`.
product_info_enabledstringThe 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_idstringThe ID of the call-to-action portfolio to use in your ad.
phone_infoobjectReturned 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_codestringThe region code for the phone number that the audience can click on the ad to call. Example: `US`.
phone_region_calling_codestringThe region calling code for the phone number that the audience can click on the ad to call. Example: `+1`.
phone_numberstringThe phone number that the audience can click on the ad to call. Example: `12638282`.
tracking_infoobjectTracking information.
viewability_postbid_partnerstringPost-bid third-party viewability measurement partner. Enum values: `DOUBLE_VERIFY`, `IAS`, `ZEFR`.
viewability_vast_urlstringReturned 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_partnerstringPost-bid third-party brand safety measurement partner. Enum values: `DOUBLE_VERIFY`, `IAS`, `ZEFR`.
brand_safety_vast_urlstringReturned 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_urlstringDefault Impression Tracking URL.
click_tracking_urlstringClick Tracking URL.
tracking_app_idstringThe ID of the app that is measured.
tracking_pixel_idstringThe 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_idsstring[]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_idstringThe ID of the message event set that you want to measure in the Instant Messaging Ad.
app_tracking_info_listobject[]Details of Third-party tracking settings.
app_typestringReturned when `app_tracking_info_list` is specified. App type. Enum values: - `APP_ANDROID`: Android App. - `APP_IOS`: iOS App.
app_idstringReturned 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_urlstringImpression 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_urlstringClick 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_infoobjectPagination information.
pagenumberCurrent page number.
page_sizenumberPage size.
total_numbernumberTotal number of results.
total_pagenumberTotal 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

  1. Sign up for Partner
  2. Enable a data type of the Ads (Marketing API) group on the platform page
  3. Create an API key (tick the TikTok Business channel)
  4. Call it as in the examples above