Get review info of ad groups
GET/adgroup/review_info/Via 360: GET https://partner.quantri360.com/v1/tiktok_business/adgroup/review_info/
Description
Use this endpoint to get information about the review of ad groups.
An ad group needs to be approved before it can be deployed, and it may get rejected due to various reasons, such as incorrect placement or targeting selections. Based on the rejection reasons and suggestions you get, you can adjust your ad group accordingly.
Request
Endpoint
GET https://partner.quantri360.com/v1/tiktok_business/adgroup/review_info/
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_ids | query | string[] | Yes | The list of ad group IDs. Currently, we support a maximum of 20 ad group IDs in the request. | |
| lang | query | string | No | Language. |
Request examples
curl -s "https://partner.quantri360.com/v1/tiktok_business/adgroup/review_info/?adgroup_ids=%5B%5D" \ -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/adgroup/review_info/",
params={
"adgroup_ids": []
},
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/adgroup/review_info/');
for (const [k, v] of Object.entries({"adgroup_ids":[]})) 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/adgroup/review_info/' . '?' . http_build_query(['adgroup_ids' => '[]']); $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 | The response code. For the complete list of response codes and descriptions, see Appendix - Return Codes. | |
| message | string | The response message. For details, see Appendix - Return Codes. | |
| data | object | The returned data. | |
| ad_review_map | object | The bi-dimensional structure for the review data at the ad level. The key for the first dimension is `adgroup_id`. The key for the second dimension is `ad_id`. | |
| ad_id | string | The ad ID. Note: For Smart+ ad groups with a partial or complete review failure (`review_status` within `ad_group_review_map` is `PART_AVAILABLE` or `UNAVAILABLE`), the `ad_id` within `ad_review_map` does not represent a real ad ID and cannot be used with /ad/review_info/ to fetch ad-level review details. Instead, treat each `ad_id` as a material within the Smart+ Campaign. To understand review failures, examine the `reject_info` within `ad_review_map` returned by /adgroup/review_info/. Afterwards, update the Smart+ Campaign accordingly via /campaign/spc/update/. | |
| is_approved | boolean | Whether the ad has been approved or not. | |
| review_status | string | The ad review status. Enum values: - `ALL_AVAILABLE`: The ad has been reviewed and can be delivered. - `PART_AVAILABLE`: The ad has been reviewed and can only be delivered to some of the specified targeting countries. - `UNAVAILABLE`: The ad has been reviewed and cannot be delivered. | |
| appeal_status | string | Ad appeal status. Note: The value of this field will always be null. | |
| forbidden_placements | string[] | The placements that failed the review. For enum values, see Enumeration - Placement. | |
| forbidden_ages | string[] | Age groups that failed the review. For enum values, see Enumeration - Age Group. | |
| forbidden_locations | string[] | The targeted regions that failed the review. For enum values, see Appendix - Location codes. | |
| forbidden_operation_systems | string[] | The audience operating systems that failed the review. For enum values, see Enumeration - Operating Systems. | |
| last_audit_time | string | Note: The value of this field will always be null. The last time when the ad was reviewed. | |
| reject_info | object[] | Details about the rejection. | |
| suggestion | string | The review suggestion. | |
| reasons | string[] | List of rejection reasons. | |
| forbidden_ages | string[] | Age groups that failed the review. For enum values, see Enumeration - Age Group. | |
| forbidden_locations | string[] | The targeted regions that failed the review. For enum values, see Appendix - Location codes. | |
| forbidden_placements | string[] | The placements that failed the review. For enum values, see Enumeration - Placement. | |
| content_info | object | The content of the ad that has been reviewed. | |
| image_content | object | The image content. | |
| image_id | string | The ID of the image that has been reviewed. | |
| video_content | object | The video content that has been reviewed. | |
| video_id | string | The ID of the video that is being reviewed. | |
| text_content | string | The text. | |
| content_type | string | The type of the content that has been reviewed, Enum values:`MODE_STRING`,`MODE_IMAGE`,`MODE_VIDEO`, `MODE_CAROUSEL_MUSIC` (Music in the Carousel Ads). | |
| carousel_music_content | object | Returned when `content_type` is `MODE_CAROUSEL_MUSIC`. The content of the music in the Carousel Ads that has been reviewed. | |
| music_id | string | The ID of the piece of music used in the Carousel Ads. | |
| ad_group_review_map | object | The review data at the ad group level, organized by `adgroup_id`. The key for the first dimension is `adgroup_id`. | |
| adgroup_id | string | Ad group ID. | |
| is_approved | boolean | Whether the ad group has been approved. | |
| review_status | string | The ad group review status. Enum values: - `ALL_AVAILABLE`: The ad group has been reviewed and all ads in the ad group can be delivered. - `PART_AVAILABLE`: The ad group has been reviewed and only some of the ads in the ad group can be delivered. - `UNAVAILABLE`: The ad group has been reviewed and all ads in the ad group cannot be delivered. Note: For Smart+ ad groups with a partial or complete review failure (`review_status` within `ad_group_review_map` is `PART_AVAILABLE` or `UNAVAILABLE`), the `ad_id` within `ad_review_map` does not represent a real ad ID and cannot be used with /ad/review_info/ to fetch ad-level review details. Instead, treat each `ad_id` as a material within the Smart+ Campaign. To understand review failures, examine the `reject_info` within `ad_review_map` returned by /adgroup/review_info/. Afterwards, update the Smart+ Campaign accordingly via /campaign/spc/update/. | |
| appeal_status | string | Ad group appeal status. For enum values, see Enumeration - Ad Group Review Appeal Status. To appeal the rejection of an ad group, call /adgroup/appeal/. Then this field will be set to `APPEALING`(Appeal in progress). | |
| forbidden_placements | string[] | The placements that failed the review. For enum values, see Enumeration - Placement. | |
| forbidden_ages | string[] | The audience age ranges that failed the review. For enum values, see Enumeration - Age Groups. | |
| forbidden_locations | string[] | The targeted locations that failed the review. For enum values, see Appendix - Location codes. | |
| forbidden_operation_systems | string[] | The audience operating systems that failed the review. For enum values, see Enumeration - Operating System. | |
| last_audit_time | string | Note: The value of this field will be the actual review time only when the ad group has been rejected. The last time when the ad group was reviewed (UTC+0), in the format of `YYYY-MM-DD HH:MM:SS`. Example: `2023-01-01 00:00:00`. | |
| contain_rejected_ads | boolean | Whether ads in this ad group have been rejected. | |
| reject_info | object[] | Details about the rejection. | |
| suggestion | string | The review suggestion. | |
| reasons | string[] | List of rejection reasons | |
| forbidden_ages | string[] | Age groups that failed the review. For enum values, see Enumeration - Age Group. | |
| forbidden_locations | string[] | The targeted regions that failed the review. For enum values, see Appendix - Location codes. | |
| forbidden_placements | string[] | The placements that failed the review. For enum values, see Enumeration - Placement. | |
| content_info | object | The content of the ad that has been reviewed. | |
| image_content | object | The image content. | |
| image_id | string | The ID of the image that has been reviewed. | |
| video_content | object | The video content that has been reviewed. | |
| video_id | string | The ID of the video that is being reviewed. | |
| text_content | string | The text. | |
| content_type | string | The type of the content that has been reviewed, Enum values:`MODE_STRING`,`MODE_IMAGE`,`MODE_VIDEO`, `MODE_CAROUSEL_MUSIC` (Music in the Carousel Ads). | |
| carousel_music_content | object | Returned when `content_type` is `MODE_CAROUSEL_MUSIC`. The content of the music in the Carousel Ads that has been reviewed. | |
| music_id | string | The ID of the piece of music used in the Carousel Ads. |
Response sample
HTTPS/1.1 200 OK
{
"code": 0,
"message": "OK",
"request_id": "LOG_ID",
"data": {
"ad_review_map": {
"adgroup_id": {
"ad_id": {
"reject_info": [
{
"content_info": {
"text_content": null,
"content_type": "MODE_VIDEO",
"image_content": {
"image_id": "tos-maliva-p-0000/0ba31ad4244c48d3a61e42ea3f91649e"
},
"video_content": {
"video_id": "video_id",
}
},
"forbidden_locations": [
"RU"
],
"suggestion": "Please add background audio or modify the unclear audio. For more policy details, please check \" Ad Caption/Text, Image and Video\" in \"TikTok Advertising Policies - Ad Creatives\".",
"reasons": [
"The ad or video has no background audio or the background audio is incoherent/unclear. "
]
}
],
"is_approved": true,
"last_audit_time": 1596023135,
"forbidden_placements": [
"PLACEMENT_HELO",
"PLACEMENT_TIKTOK",
"PLACEMENT_TOPBUZZ"
],
"ad_id": "ad_id",
"review_status": "PART_AVAILABLE",
"appeal_status": null,
"forbidden_locations": [
"RU"
],
"forbidden_operation_systems": [
"IOS"
],
"forbidden_ages": [
]
}
}
},
"ad_group_review_map": {
"adgroup_id": {
"reasons": [
"some reason"
],
"contains_rejected_ads": true,
"is_approved": true,
"forbidden_placements": [
"PLACEMENT_TOPBUZZ",
"PLACEMENT_HELO",
"PLACEMENT_TIKTOK"
],
"adgroup_id": "adgroup_id",
"review_status": "PART_AVAILABLE",
"appeal_status": "NOT_APPEALED",
"forbidden_locations": [
"RU"
],
"forbidden_operation_systems": [
"IPHONE"
],
"forbidden_ages": [
]
}
}
}
}
(/code);
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