VI | EN
Nhắn Messenger
Dành cho developer

Đặt thông tin video trước khi đăng — API Shopee Video

v2.video.edit_video_info · gọi qua Quantri360 bằng một API key cho chính tài khoản / tài sản bạn đã kết nối và ủy quyền — 360 lo việc ký request và làm mới phiên đăng nhập bạn đã cấp.

v2.video.edit_video_info

POST/api/v2/video/edit_video_infoGọi qua 360: POST https://partner.quantri360.com/v1/shopee_video/api/v2/video/edit_video_info
Endpoint ghi — thay đổi dữ liệu trên Shopee Video. Key phải được tạo với tick "Cho phép gọi API ghi", nếu không sẽ nhận 403 write_not_allowed. Mỗi lần gọi được ghi nhật ký.
Mô tả API

Thiết lập hoặc sửa thông tin video trước khi đăng; video vẫn là bản nháp sau thao tác này.

  • Gọi qua /v1/shopee_video/api/v2/video/edit_video_info với Authorization: Bearer <key>. 360 tự gắn token và chữ ký.
  • API GHI: thay đổi dữ liệu thật trên Shopee; cần key có quyền ghi (can_write) và gói mở module Video. Thiết lập hoặc sửa thông tin video trước khi đăng; video vẫn là bản nháp sau thao tác này.
  • HTTP 200 vẫn có thể có lỗi nghiệp vụ trong error/message; chỉ coi là thành công khi error rỗng. Với danh sách kết quả, kiểm từng phần tử success_list và failure_list.
  • Luồng tải video: media/init_video_upload → media/upload_video_part → media/complete_video_upload; lấy video_upload_id từ media/get_video_upload_result → video/edit_video_info → video/post_video. Chỉ sửa thông tin trước khi video được đăng.
  • Ảnh bìa lấy từ video/get_cover_list. Video phải dài hơn 3 giây và trong giới hạn postDuration của video; khi tải lên chọn đúng business và scene.

Request

Địa chỉ

POST https://partner.quantri360.com/v1/shopee_video/api/v2/video/edit_video_info

Xác thực & gian hàng

TênVị tríKiểuMẫuMô tả
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.

Tham số request

TênVị tríKiểuBắt buộcMẫuMô tả
video_upload_listbodyobject[]CóDanh sách thông tin video, tối đa 5 phần tử.
video_upload_list.video_upload_idbodystringCódemo-upload-01Mã video tải lên, lấy từ media/get_video_upload_result.
video_upload_list.captionbodystringKhôngVideo giới thiệu sản phẩmMô tả video, tối đa 150 ký tự.
video_upload_list.cover_image_urlbodystringCóhttps://example.com/demo-image.jpgLink ảnh bìa video lấy từ video/get_cover_list.
video_upload_list.item_infobodyobject[]KhôngDanh sách sản phẩm gắn với video, tối đa 6.
video_upload_list.item_info.item_idbodyint64Có900002Mã sản phẩm.
video_upload_list.item_info.custom_item_namebodystringKhôngdemoTên sản phẩm hiển thị trong video.
video_upload_list.allow_infobodyobjectCóThiết lập cho phép song ca và ghép nối.
video_upload_list.allow_info.allow_duetbodybooleanCótrueCó cho phép song ca hay không.
video_upload_list.allow_info.allow_stitchbodybooleanCótrueCó cho phép ghép nối hay không.
video_upload_list.scheduled_infobodyobjectCóscheduled_post=true thì phải có scheduled_post_time; false thì scheduled_post_time phải rỗng.
video_upload_list.scheduled_info.scheduled_postbodybooleanCófalseCó đăng video vào thời điểm hẹn hay không.
video_upload_list.scheduled_info.scheduled_post_timebodytimestampKhông1800001200000Thời điểm hẹn đăng, Unix mili giây; bắt buộc khi scheduled_post=true, ít nhất 15 phút sau hiện tại và trong vòng 30 ngày.
aigc_labelbodybooleanCótruetrue nếu video có nội dung do AI tạo hoặc hỗ trợ (hình ảnh, giọng nói, nhân vật, kịch bản); khi true người xem thấy nhãn AI, nếu không có thì gửi false.

Ví dụ request

curl -s -X POST "https://partner.quantri360.com/v1/shopee_video/api/v2/video/edit_video_info" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"video_upload_list":[{"video_upload_id":"demo-upload-01","caption":"Video giới thiệu sản phẩm","cover_image_url":"https://example.com/demo-image.jpg","item_info":[{"item_id":900002,"custom_item_name":"demo"}],"allow_info":{"allow_duet":true,"allow_stitch":true},"scheduled_info":{"scheduled_post":false}}],"aigc_label":true}'
Python
import requests

KEY = "q360_live_..."  # khóa API của brand
r = requests.post(
    "https://partner.quantri360.com/v1/shopee_video/api/v2/video/edit_video_info",
    params={},
    json={
        "video_upload_list": [
            {
                "video_upload_id": "demo-upload-01",
                "caption": "Video giới thiệu sản phẩm",
                "cover_image_url": "https://example.com/demo-image.jpg",
                "item_info": [
                    {
                        "item_id": 900002,
                        "custom_item_name": "demo"
                    }
                ],
                "allow_info": {
                    "allow_duet": True,
                    "allow_stitch": True
                },
                "scheduled_info": {
                    "scheduled_post": False
                }
            }
        ],
        "aigc_label": True
    },
    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/shopee_video/api/v2/video/edit_video_info');
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_upload_list":[{"video_upload_id":"demo-upload-01","caption":"Video giới thiệu sản phẩm","cover_image_url":"https://example.com/demo-image.jpg","item_info":[{"item_id":900002,"custom_item_name":"demo"}],"allow_info":{"allow_duet":true,"allow_stitch":true},"scheduled_info":{"scheduled_post":false}}],"aigc_label":true}),
});
console.log(r.status, await r.json());
PHP
<?php
$key = 'q360_live_...'; // khóa API của brand
$url = 'https://partner.quantri360.com/v1/shopee_video/api/v2/video/edit_video_info' . '?' . 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_upload_list":[{"video_upload_id":"demo-upload-01","caption":"Video giới thiệu sản phẩm","cover_image_url":"https://example.com/demo-image.jpg","item_info":[{"item_id":900002,"custom_item_name":"demo"}],"allow_info":{"allow_duet":true,"allow_stitch":true},"scheduled_info":{"scheduled_post":false}}],"aigc_label":true}');
$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 Shopee Video)

Mẫu thành công dùng dữ liệu minh họa; kiểm error và message trước khi đọc response.

TênKiểuMẫuMô tả
request_idstringd52ca43b277a4f9292fb8be658bfd33dMã request của Shopee để tra lỗi.
errorstringMã lỗi Shopee; rỗng = thành công.
messagestringMô tả lỗi.
responseobjectKết quả nghiệp vụ.
success_liststring[]['demo-upload-01']Danh sách xử lý thành công.
failure_listobject[]Danh sách xử lý thất bại; kiểm từng phần tử để biết lý do.
fail_video_upload_idstringdemoMã video tải lên xử lý thất bại.
failed_reasonstringdemoLý do xử lý thất bại của video tương ứng.

Mẫu phản hồi

{
  "error": "",
  "message": "",
  "request_id": "demo-request",
  "response": {
    "success_list": [
      "demo-upload-01"
    ],
    "failure_list": []
  }
}

Mã lỗi của Shopee Video (9)

Bấm để xem
MãÝ nghĩa
batch_process_failedXử lý theo lô thất bại; kiểm từng phần tử failure_list để biết lý do.
error-paramvideo_upload_id không hợp lệ.
error_paramTham số sai / thiếu / sai kiểu — xem `message` để biết tham số nào.
unauthorizedNgười dùng chưa được cấp quyền sử dụng tính năng.
error_authỦy quyền gian hàng cho 360 đã hết hạn hoặc bị thu hồi (360 đã tự làm mới token một lần) — chủ gian hàng kết nối lại Shopee trong Partner.
error_limitChạm hạn mức gọi Shopee trong ngày của kết nối — 360 trả kèm thời điểm thử lại; giảm tần suất gọi.
error_rate_limitGọi quá nhanh — chờ vài giây rồi gọi lại (360 cũng giới hạn theo key: 429 + Retry-After).
user_no_linkedTài khoản chưa liên kết với 360 — kết nối lại trong Partner.
user_bannedTài khoản đang bị Shopee khóa, mọi API tạm ngưng tới khi gỡ khóa.

Bắt đầu dùng

  1. Đăng ký tài khoản Partner
  2. Mở loại dữ liệu thuộc nhóm Video ở trang nền tảng
  3. Tạo API key (tick kênh Shopee Video)
  4. Gọi theo ví dụ ở trên