Report on TTO Creator Marketplace videos
GET/tto/tcm/report/Gọi qua 360: GET https://partner.quantri360.com/v1/tiktok_business/tto/tcm/report/
Mô tả API
Báo cáo từng video đã gắn vào một chiến dịch TikTok One Creator Marketplace: lượt xem / thích / bình luận / chia sẻ tách tự nhiên và Spark Ads, tiếp cận, thời gian xem, nguồn lượt xem, chân dung người xem, chỉ số quảng cáo, anchor, số liệu theo ngày.
- Gọi bằng TÀI KHOẢN QUẢNG CÁO đã nối (
platform_shop_id= id tài khoản quảng cáo), không phải tài khoản TikTok. Chưa biếttto_tcm_account_idcủa bạn → liên hệ 360. - Gửi kèm header
Country-Code: <mã 2 chữ in hoa>— một mã trongcountry_codescủa chiến dịch (/tto/tcm/campaign/), vd-H "Country-Code: VN". Chiến dịch chạy nhiều nước thì báo cáo tách theo từng nước: mỗi nước một lần gọi (total_numbertheo nước đã chọn). 360 chỉ nhận đúng header này từ bạn; sai định dạng →400. - Đã gọi thử qua 360: chiến dịch không có video trả
code 0vớivideosrỗng; chưa kiểm với chiến dịch có video. - Số liệu có từ lúc video đăng; creator gắn link mời sau khi đăng thì số liệu được bù lại. Chiến dịch tạo qua API không xem được báo cáo trên nền tảng TikTok One — chỉ qua API này.
Request
Địa chỉ
GET https://partner.quantri360.com/v1/tiktok_business/tto/tcm/report/
Xác thực & gian hàng
| Tên | Vị trí | Kiểu | Mẫu | Mô tả |
|---|---|---|---|---|
| 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. |
Tham số request
| Tên | Vị trí | Kiểu | Bắt buộc | Mẫu | Mô tả |
|---|---|---|---|---|---|
| tto_tcm_account_id | query | string | Có | 7300000000000000001 | Id tài khoản TikTok One Creator Marketplace mà tài khoản quảng cáo đã nối được quyền truy cập. Chưa biết id của bạn → liên hệ 360. |
| campaign_id | query | string | Có | 7430000000000000001 | Id chiến dịch. |
| start_date | query | string | Không | 2026-10-01 | Từ ngày YYYY-MM-DD (UTC), không sớm hơn ngày tạo chiến dịch. Gửi cùng end_date để nhận daily_stats. |
| end_date | query | string | Không | 2026-10-27 | Đến ngày YYYY-MM-DD (UTC). Gửi cùng start_date. |
| page | query | int | Không | 1 | Trang, từ 1. Mặc định 1. |
| page_size | query | int | Không | 100 | Số dòng mỗi trang: 1–100, mặc định 25. |
Phân trang
Lặp page = 1, 2, … tới khi page ≥ data.page_info.total_page.
Ví dụ request
curl -s "https://partner.quantri360.com/v1/tiktok_business/tto/tcm/report/?platform_shop_id=7000000000000000001&tto_tcm_account_id=7300000000000000001&campaign_id=7430000000000000001&start_date=2026-10-01&end_date=2026-10-27&page_size=100" \ -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/tto/tcm/report/",
params={
"platform_shop_id": "7000000000000000001",
"tto_tcm_account_id": "7300000000000000001",
"campaign_id": "7430000000000000001",
"start_date": "2026-10-01",
"end_date": "2026-10-27",
"page_size": 100
},
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/tto/tcm/report/');
for (const [k, v] of Object.entries({"platform_shop_id":"7000000000000000001","tto_tcm_account_id":"7300000000000000001","campaign_id":"7430000000000000001","start_date":"2026-10-01","end_date":"2026-10-27","page_size":100})) 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/tto/tcm/report/' . '?' . http_build_query(['platform_shop_id' => '7000000000000000001', 'tto_tcm_account_id' => '7300000000000000001', 'campaign_id' => '7430000000000000001', 'start_date' => '2026-10-01', 'end_date' => '2026-10-27', 'page_size' => 100]); $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
Tham số phản hồi (nguyên của TikTok Business)
| Tên | Kiểu | Mẫu | Mô tả |
|---|---|---|---|
| code | int | 0 | 0 = thành công; khác 0 xem `message` (TikTok trả HTTP 200 kèm code lỗi; vd 40002 = tham số sai, message liệt kê giá trị hợp lệ). |
| message | string | OK | Thông điệp của TikTok. |
| request_id | string | 2021080307532501024502410704A7306F | Mã request TikTok — ghi lại khi cần tra lỗi. |
| data | object | Dữ liệu. | |
| tto_tcm_account_id | string | ||
| campaign_id | string | ||
| country_code | string | VN | Quốc gia của báo cáo. |
| campaign_type | string | CAMPAIGN | |
| campaign_channel_type | string | API_LITE_CAMPAIGN | `STANDARD_CAMPAIGN` · `LITE_CAMPAIGN` (tạo trên nền tảng TikTok One) · `API_LITE_CAMPAIGN` (tạo qua API). |
| page_info | object | Phân trang. | |
| page | int | 1 | Trang hiện tại. |
| page_size | int | 10 | Số dòng mỗi trang. |
| total_number | int | 0 | Tổng số dòng. |
| total_page | int | 0 | Tổng số trang. |
| videos | object[] | Video đã gắn vào chiến dịch. | |
| video_info | object | Video. | |
| video_id | string | ||
| create_time | string | 2026-10-20 08:00:00 | Thời điểm đăng (UTC). |
| embed_url | string | Link nhúng. | |
| thumbnail_url | string | Ảnh bìa — link TẠM (mốc hết hạn ở `x-expires`). | |
| authorization_code | string | Mã ủy quyền Spark Ads của video. | |
| creator_info | object | Creator. | |
| display_name | string | ||
| handle_name | string | ||
| video_views | int | Lượt xem tổng. | |
| video_views_organic | int | Lượt xem từ phân phối tự nhiên. | |
| video_views_paid | int | Lượt xem từ Spark Ads. | |
| reach | int | Người xem (ước tính). | |
| reach_organic | int | ||
| reach_paid | int | ||
| engagement_count | int | Thích + bình luận + chia sẻ. | |
| engagement_rate | float | Tương tác / lượt xem. | |
| engagement_rate_organic | float | ||
| engagement_rate_paid | float | ||
| likes | int | Lượt thích tổng. | |
| likes_organic | int | Lượt thích từ phân phối tự nhiên. | |
| likes_paid | int | Lượt thích từ Spark Ads. | |
| comments | int | Bình luận tổng. | |
| comments_organic | int | Bình luận từ phân phối tự nhiên. | |
| comments_paid | int | Bình luận từ Spark Ads. | |
| shares | int | Chia sẻ tổng. | |
| shares_organic | int | Chia sẻ từ phân phối tự nhiên. | |
| shares_paid | int | Chia sẻ từ Spark Ads. | |
| favorites | int | Lưu yêu thích tổng. | |
| favorites_organic | int | Lưu yêu thích từ phân phối tự nhiên. | |
| favorites_paid | int | Lưu yêu thích từ Spark Ads. | |
| video_completion_rate | float | Tỉ lệ xem hết. | |
| video_completion_rate_organic | float | ||
| video_completion_rate_paid | float | ||
| total_play_time | int | Tổng thời gian xem (giây). | |
| average_view_time | float | Thời gian xem trung bình (giây). | |
| average_view_time_organic | float | ||
| average_view_time_paid | float | ||
| two_seconds_views | float | Tỉ lệ lượt xem ≥ 2 giây. | |
| organic_two_seconds_views | float | ||
| paid_two_seconds_views | float | ||
| six_seconds_views | float | Tỉ lệ lượt xem ≥ 6 giây. | |
| organic_six_seconds_views | float | ||
| paid_six_seconds_views | float | ||
| video_view_retention | float[] | [1, 0.61, 0.27] | Tỉ lệ người còn xem tại từng giây. |
| video_views_by_source | object | Nguồn lượt xem: `for_you` · `hashtag` · `sound` · `personal_profile` · `search` · `following` · `other`. | |
| audience_genders_distribution | object[] | Giới tính người xem `{gender: FEMALE | MALE | null, percentage}`. | |
| audience_countries_distribution | object[] | Quốc gia người xem `{country, percentage}`. | |
| audience_age_distribution | object[] | Tuổi người xem `{age, percentage}` — `age` là MÃ: 1 = 13–17 · 2 = 18–24 · 3 = 25–34 · 4 = 35–44 · 5 = 45–54 · 6 = 55+. | |
| audience_device_distribution | object[] | Hệ điều hành `{device: android | ios, percentage}`. | |
| audience_language_distribution | object[] | Ngôn ngữ cài đặt của người xem `{language, percentage}`. | |
| audience_locale_distribution | object[] | Theo bang — chỉ có ở Mỹ. | |
| audience_interest_distribution | object[] | Sở thích `{interest_tag, percentage}`: 10 Giáo dục · 11 Xe & vận tải · 12 Mẹ & bé · 13 Tài chính · 14 Làm đẹp & chăm sóc cá nhân · 15 Công nghệ & điện tử · 16 Thiết bị gia dụng · 17 Du lịch · 18 Đồ gia dụng · 19 Thú cưng · 20 Ứng dụng · 21 Sửa chữa nhà cửa · 22 Quần áo & phụ kiện · 23 Tin tức & giải trí · 24 Dịch vụ doanh nghiệp · 25 Game · 26 Dịch vụ đời sống · 27 Ăn uống · 28 Thể thao & dã ngoại · 29 Sức khỏe · 30 Thương mại điện tử (không qua app). | |
| ad_impressions | int | Hiển thị quảng cáo. | |
| ad_clicks | float | Lượt bấm quảng cáo. | |
| ad_ctr | float | CTR. | |
| ad_conversions | float | Chuyển đổi theo mục tiêu chiến dịch quảng cáo. | |
| ad_cvr | float | Tỉ lệ chuyển đổi. | |
| ad_cost | float | Chi phí quảng cáo. | |
| ad_cpa | float | Chi phí / chuyển đổi. | |
| ad_cpc | float | Chi phí / lượt bấm. | |
| ad_cpm | float | Chi phí / 1.000 hiển thị. | |
| anchor_id | string | Anchor của chiến dịch. | |
| anchor_metrics | object | Số liệu anchor: `anchor_views` · `anchor_clicks` · `anchor_unique_views` · `anchor_unique_clicks`. | |
| daily_stats | object[] | Chỉ khi gửi `start_date` + `end_date`, chỉ 90 ngày gần nhất (ngoài khoảng → `null`): mỗi ngày `date` + `views`, `video_views_organic/paid`, `engagement_rate(_organic/_paid)`, `video_completion_rate`, `likes`, `comments`, `shares`, `favorites` (kèm `_organic` / `_paid`). Ngày thiếu chỉ số = chưa có dữ liệu (không tự điền 0). |
Bắt đầu dùng
- Đăng ký tài khoản Partner
- Mở loại dữ liệu thuộc nhóm Tài khoản TikTok (Organic API) ở trang nền tảng
- Tạo API key (tick kênh TikTok Business)
- Gọi theo ví dụ ở trên