VI | EN
Message us on Messenger
Developer resources

Post Shoppable Video — TikTok Shop API

tiktok.affiliate_creator.202603.videos · 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.

tiktok.affiliate_creator.202603.videos

POST/affiliate_creator/202603/videosVia 360: POST https://partner.quantri360.com/v1/tiktok/affiliate_creator/202603/videos
Write endpoint — changes data on TikTok Shop. The key must be created with "Allow write API calls" ticked, otherwise you get 403 write_not_allowed. Every call is logged.
Description

DÀNH CHO CREATOR: Gửi video có gắn sản phẩm để đăng; dùng video_id trả về để tra trạng thái PROCESSING, SUCCESS hoặc FAIL. PROCESSING cần tra lại sau.

  • HIỆN CHƯA GỌI ĐƯỢC QUA 360: API này dùng kết nối của creator / đối tác, kết nối gian hàng trả code 36009005. Cần dùng → liên hệ 360.
  • API GHI: thay đổi dữ liệu thật trên TikTok Shop; cần key có quyền ghi (can_write) và gói mở module affiliate. Gửi video có gắn sản phẩm để đăng; dùng video_id trả về để tra trạng thái PROCESSING, SUCCESS hoặc FAIL. PROCESSING cần tra lại sau.
  • HTTP 200 vẫn có thể có lỗi nghiệp vụ; kiểm code trước khi dùng kết quả.

Request

Endpoint

POST https://partner.quantri360.com/v1/tiktok/affiliate_creator/202603/videos

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_idquerystring100001Gian hàng (lấy ở GET /v1/platforms → shops[].platform_shop_id). BẮT BUỘC khi brand có > 1 gian hàng trên nền tảng; 360 bỏ tham số này trước khi chuyển tiếp.

Request parameters

NameInTypeRequiredSampleDescription
video_infobodyobjectYesThông tin video.
video_info.file_idbodystringYesDEMO_FILE_001Mã tệp video đã tải lên, dùng làm video_info.file_id.
video_info.titlebodystringYesSản phẩm minh họaChú thích video, tối đa 2200 đơn vị UTF-16.
video_info.cover_uribodystringNoDEMO_COVER_URIURI ảnh bìa từ kết quả tải ảnh.
video_info.cover_timestamp_msbodyintNo1Vị trí khung hình làm ảnh bìa, đơn vị mili giây. Bỏ cả cover_uri và trường này thì dùng khung đầu tiên. Chỉ nên gửi một trường; nếu gửi cả hai thì cover_uri ưu tiên.
video_info.music_idbodystringNo100000000000000201Mã nhạc nền; bỏ qua để đăng không có nhạc.
product_link_infobodyobjectYesThông tin liên kết sản phẩm.
product_link_info.product_idbodystringYes100000000000000101Mã sản phẩm từ gian hàng liên kết hoặc showcase cần gắn vào video.
product_link_info.titlebodystringYesSản phẩm minh họaTiêu đề liên kết sản phẩm, ngắn hơn 30 ký tự; có thể bị từ chối nếu có dấu câu, emoji hoặc ngôn từ không phù hợp.

Request examples

curl -s -X POST "https://partner.quantri360.com/v1/tiktok/affiliate_creator/202603/videos" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"video_info":{"file_id":"DEMO_FILE_001","title":"Sản phẩm minh họa","cover_uri":"DEMO_COVER_URI","cover_timestamp_ms":1,"music_id":"100000000000000201"},"product_link_info":{"product_id":"100000000000000101","title":"Sản phẩm minh họa"}}'
Python
import requests

KEY = "q360_live_..."  # khóa API của brand
r = requests.post(
    "https://partner.quantri360.com/v1/tiktok/affiliate_creator/202603/videos",
    params={},
    json={
        "video_info": {
            "file_id": "DEMO_FILE_001",
            "title": "Sản phẩm minh họa",
            "cover_uri": "DEMO_COVER_URI",
            "cover_timestamp_ms": 1,
            "music_id": "100000000000000201"
        },
        "product_link_info": {
            "product_id": "100000000000000101",
            "title": "Sản phẩm minh họa"
        }
    },
    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/affiliate_creator/202603/videos');
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({"video_info":{"file_id":"DEMO_FILE_001","title":"Sản phẩm minh họa","cover_uri":"DEMO_COVER_URI","cover_timestamp_ms":1,"music_id":"100000000000000201"},"product_link_info":{"product_id":"100000000000000101","title":"Sản phẩm minh họa"}}),
});
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/affiliate_creator/202603/videos' . '?' . 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, '{"video_info":{"file_id":"DEMO_FILE_001","title":"Sản phẩm minh họa","cover_uri":"DEMO_COVER_URI","cover_timestamp_ms":1,"music_id":"100000000000000201"},"product_link_info":{"product_id":"100000000000000101","title":"Sản phẩm minh họa"}}');
$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 Shop)

NameTypeSampleDescription
codeint0Mã kết quả; 0 là thành công.
messagestringSuccessThông báo kết quả.
request_idstringDEMO_AFFILIATE_REQUESTMã truy vết yêu cầu.
dataobjectDữ liệu phản hồi.
videoobjectVideo.
idstring100000000000000101Mã định danh. Giá trị bổ sung: SUCCEEDED, GET.

Response sample

{
  "code": 0,
  "message": "Success",
  "request_id": "DEMO_AFFILIATE_REQUEST",
  "data": {
    "video": {
      "id": "100000000000000101"
    }
  }
}

Get started

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