v2.product.add_model
POST/api/v2/product/add_modelVia 360: POST https://partner.quantri360.com/v1/shopee/api/v2/product/add_model
Write endpoint — changes data on Shopee. The key must be created with "Allow write API calls" ticked, otherwise you get 403 write_not_allowed. Every call is logged.
Description
Thêm phân loại hàng vào sản phẩm đang có trên sàn, kèm giá gốc và tồn kho theo kho. Tối đa 50 phân loại mỗi lần.
- Gọi qua /v1/shopee/api/v2/product/add_model với Authorization: Bearer <key>; dùng platform_shop_id khi có nhiều shop. 360 tự gắn partner_id, shop_id, sign và access_token.
- API GHI: thay đổi dữ liệu/tính năng trên sàn như mô tả; cần key có quyền ghi (can_write) và gói mở module Sản phẩm. Kiểm tra shop, mã sản phẩm và nội dung trước khi gửi.
- model_list từ 1 đến 50 phần tử. seller_stock phải đủ lượng đang được giữ cho đơn; SSP/CSSP chỉ gửi khi shop có tính năng.
Request
Endpoint
POST https://partner.quantri360.com/v1/shopee/api/v2/product/add_model
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 | 100001 | Gian 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
| Name | In | Type | Required | Sample | Description |
|---|---|---|---|---|---|
| item_id | body | int64 | Yes | 100001 | Mã sản phẩm của shop đang chọn. |
| model_list | body | object[] | Yes | Các phân loại hàng cùng cấu hình giá, tồn hoặc chỉ số lựa chọn. |
Request examples
curl -s -X POST "https://partner.quantri360.com/v1/shopee/api/v2/product/add_model" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"item_id":100001,"model_list":[{"tier_index":[0],"original_price":100000,"seller_stock":[{"stock":10}]}]}'
Python
import requests
KEY = "q360_live_..." # khóa API của brand
r = requests.post(
"https://partner.quantri360.com/v1/shopee/api/v2/product/add_model",
params={},
json={
"item_id": 100001,
"model_list": [
{
"tier_index": [
0
],
"original_price": 100000,
"seller_stock": [
{
"stock": 10
}
]
}
]
},
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/api/v2/product/add_model');
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({"item_id":100001,"model_list":[{"tier_index":[0],"original_price":100000,"seller_stock":[{"stock":10}]}]}),
});
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/api/v2/product/add_model' . '?' . 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, '{"item_id":100001,"model_list":[{"tier_index":[0],"original_price":100000,"seller_stock":[{"stock":10}]}]}');
$res = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $status, "\n", $res;Response
Response fields (as returned by Shopee)
Phản hồi giữ nguyên cấu trúc của API. Xem error/message trước khi dùng response; ví dụ tham số là dữ liệu minh họa.
| Name | Type | Sample | Description |
|---|---|---|---|
| request_id | string | d52ca43b277a4f9292fb8be658bfd33d | Mã request của Shopee để tra lỗi. |
| error | string | Mã lỗi Shopee; rỗng = thành công. | |
| message | string | Mô tả lỗi. | |
| response | object | Kết quả nghiệp vụ. | |
| model | object[] | Các phân loại hàng đã tạo. |
Response sample
{
"error": "-",
"message": "-",
"warning": "-",
"request_id": "-",
"response": {
"model": [
{
"model_sku": "sku",
"price_info": [
{
"original_price": 52.4
}
],
"seller_stock": [
{
"location_id": "-",
"stock": 0
}
],
"weight": 1.1
}
]
}
}
Shopee error codes (30)
Show
| Code | Meaning |
|---|---|
| product.error_busi | The GTIN code is mandatory, please check and upload again. |
| error_data | Dữ liệu không tồn tại hoặc không hợp lệ cho thao tác (vd mã không có, loại yêu cầu không cho phép). |
| error_param | Tham số sai / thiếu / sai kiểu — xem `message` để biết tham số nào. |
| error_server | Lỗi hệ thống Shopee — thử lại sau ít phút. |
| error_shop | Gian hàng không hợp lệ — kiểm tra platform_shop_id. |
| error_auth_product_is_pff | Item/Model Fulfillment by Shopee can not be update. |
| error_item_not_belong_shop | Item not belong to shop. |
| error_param_shop_id_not_found | Shop_id is not found. |
| error_inner | Lỗi hệ thống Shopee — thử lại sau. |
| error_item_not_found | Không tìm thấy item_id. |
| error_invalid_price | Invalid price, please use the correct format |
| error_invalid_price_for_logistic | Shipping channel cannot be enabled as product price exceeds limit. |
| 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_param_validate | Thiết lập bán sỉ hoặc thị trường của merchant chưa hợp lệ; xem `message`. |
| error_busi_cannot_edit_vsku | Can not use OpenAPI to edit/create VSKU, please connect with your manager |
| error.param | Can not update item with stock less than reserved stock |
| error_busi | Merchant/gian hàng có nhiều kho; cần gửi location_id. |
| error_system_busy | Hệ thống đang bận; thử lại sau. |
| error_nil_shopid_or_itemid | Query information failed. |
| error_holiday_on_add_item | Shop is under vocation mode. |
| error_nil_name_new_item_model | Item tier_variation name cannot be empty. |
| error_price_exceed_min_limitt | Original_price is less than min price limit. |
| error_price_exceed_max_limitt | Original_price is bigger than max price limit. |
| error_wholesale_price_less_than_ratio_limit | Wholesale price is less than ratio limit. |
| error_slash_price_nomodel_to_models_lock | In slash sale, can't add model. |
| error_price_should_be_same_for_wholesales | All model price should be the same when the item has been set wholesales. |
| error_limit | Chạ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_limit | Gọ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). |
| shop_banned | Gian hàng đang bị Shopee khóa — mọi API tạm ngưng tới khi gỡ khóa. |
| error_kyc_auth | Gian hàng chưa hoàn tất đăng ký người bán trên Kênh Người Bán. |
Get started
- Sign up for Partner
- Enable a data type of the Sản phẩm group on the platform page
- Create an API key (tick the Shopee channel)
- Call it as in the examples above