Get the results of an asynchronous copy task for a Manual Campaign
GET/campaign/copy/task/check/Via 360: GET https://partner.quantri360.com/v1/tiktok_business/campaign/copy/task/check/
Description
Use this endpoint to check the results of an asynchronous copy task for a Manual Campaign.
We recommend waiting approximately one minute after creating a task using /campaign/copy/task/create/ before checking the results.
To check the results of an asynchronous copy task for an Upgraded Smart+ Campaign, use /smart_plus/campaign/copy/task/check/ instead.
>Note
>
- Asynchronous Campaign Copy API is currently an allowlist-only feature. If you would like to access it, please contact your TikTok representative.
- The rate limits for this endpoint are 2 queries per second (QPS) and 60 queries per minute (QPM) per developer app. Global rate limits are not applicable to this endpoint.
Request
Endpoint
GET https://partner.quantri360.com/v1/tiktok_business/campaign/copy/task/check/
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 |
|---|---|---|---|---|---|
| task_id | query | string | Yes | ID of the asynchronous campaign copy task. To get the task ID, use /campaign/copy/task/create/. |
Request examples
curl -s "https://partner.quantri360.com/v1/tiktok_business/campaign/copy/task/check/?task_id=" \ -H "Authorization: Bearer $KEY"
Python
import requests
KEY = "q360_live_..." # khóa API của brand
r = requests.get(
"https://partner.quantri360.com/v1/tiktok_business/campaign/copy/task/check/",
params={
"task_id": ""
},
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/campaign/copy/task/check/');
for (const [k, v] of Object.entries({"task_id":""})) url.searchParams.set(k, typeof v === 'object' ? JSON.stringify(v) : String(v));
const r = await fetch(url, {
method: 'GET',
headers: { Authorization: `Bearer ${KEY}` },
});
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/campaign/copy/task/check/' . '?' . http_build_query(['task_id' => '']); $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $key]); $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 Code. | |
| message | string | Response message. For details, see Appendix - Return Codes. | |
| request_id | string | The log ID of a request, which uniquely identifies the request. | |
| data | object | Returned data. | |
| task_status | string | The status of the asynchronous campaign copy task. Enum values: - `RUNNING`: The task is being processed. - `SUCCESS`: The task has been processed. Check the `task_result` to see if the task has succeeded. - `FAILURE`: The task fails to be processed. | |
| task_info | object | Overview of the task result. | |
| total_ad_count | number | The total number of ads that you tried to copy. | |
| success_ad_count | number | The number of ads that have been successfully copied. | |
| total_smart_creative_adgroup_count | number | The total number of Smart Creative ad groups that you tried to copy. | |
| success_smart_creative_adgroup_count | number | The number of Smart Creative ad groups that have been successfully copied. | |
| task_result | object | The details of the task result. | |
| campaign_id | string | The ID of the newly created campaign. | |
| campaign_name | string | The name of the newly created campaign. If the campaign copy process fails, this field will still be returned to indicate the campaign that was not successfully copied. | |
| campaign_error_infos | string[] | The errors encountered during the campaign copy process. If no errors occurred, the value of this field will be an empty list (`[]`). | |
| adgroup_result_list | object[] | The details of the ad group copy results. | |
| adgroup_id | string | The ID of the newly created ad group. | |
| adgroup_name | string | The name of the newly created ad group. If the ad group copy process fails, this field will still be returned to indicate the ad group that was not successfully copied. | |
| total_ad_count | number | The number of ads that you tried to copy into the new ad group. | |
| success_ad_count | number | The number of ads that have been successfully copied into the new ad group. | |
| adgroup_error_list | string[] | The errors encountered during the ad group copy process. If no errors occurred, the value of this field will be an empty list (`[]`). | |
| ad_status | string | The result of copying the ads from the original ad group to the newly created ad group. Enum values: - `ALL_SUCCESS`: All ads from the original ad group were successfully copied. - `PARTIAL_SUCCESS`: Some or all ads from the original ad group failed to be copied. | |
| is_smart_creative | boolean | Whether the new ad group is a Smart Creative ad group. Enum values: `true`, `false`. | |
| smart_creative_result | object | Returned only when `is_smart_creative` is `true`. The result details of the copy of the ad creatives in the original Smart Creative ad group. | |
| is_success | boolean | Whether the copy of the ad creatives used to generate Smart Creative ads in the original Smart Creative ad group was successful. Enum values: `true`, `false`. | |
| smart_creative_error_list | string[] | The errors encountered during the copy of the ad creatives in the original Smart Creative ad group. If no errors occurred, the value of this field will be an empty list (`[]`). | |
| ad_result_list | object[] | The details of the ad copy results. | |
| is_success | boolean | Whether the copy of the original ad was successful. Enum values: `true`, `false`. | |
| ad_id | string | The ID of the newly created ad. | |
| ad_name | string | The name of the newly created ad. If the ad copy process fails, this field will still be returned to indicate the ad that was not successfully copied. | |
| ad_error_list | string[] | The errors encountered during the ad copy process. If no errors occurred, the value of this field will be an empty list (`[]`). |
Response sample
HTTPS/1.1 200 OK
{
"code": 0,
"message": "OK",
"request_id": "{{request_id}}",
"data": {
"task_result": {
"campaign_name": "{{campaign_name}}",
"adgroup_result_list": [
{
"total_ad_count": 1,
"adgroup_id": "{{adgroup_id}}",
"adgroup_name": "{{adgroup_name}}",
"adgroup_error_list": [],
"success_ad_count": 1,
"ad_result_list": [
{
"ad_name": "{{ad_name}}",
"is_success": true,
"ad_error_list": [],
"ad_id": "{{ad_id}}"
}
],
"is_smart_creative": false,
"ad_status": "ALL_SUCCESS"
}
],
"campaign_id": "{{campaign_id}}",
"campaign_error_infos": []
},
"task_status": "SUCCESS",
"task_info": {
"total_ad_count": 1,
"total_smart_creative_adgroup_count": 0,
"success_smart_creative_adgroup_count": 0,
"success_ad_count": 1
}
}
}
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