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

Cập nhật tồn kho các phân loại của một sản phẩm — API Shopee

v2.product.update_stock · 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.product.update_stock

POST/api/v2/product/update_stockGọi qua 360: POST https://partner.quantri360.com/v1/shopee/api/v2/product/update_stock
Endpoint ghi — thay đổi dữ liệu trên Shopee. 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

CẬP NHẬT TỒN KHO người bán cho các phân loại của MỘT sản phẩm (tối đa 50 phân loại một lần), theo từng kho. Dùng để đẩy tồn từ hệ thống kho / POS lên Shopee.

  • Là API GHI — thay đổi dữ liệu thật trên Shopee; key cần quyền ghi. Gọi bằng POST, body JSON.
  • Chỉ đổi tồn người bán (seller_stock), không đổi tồn ở kho Shopee.
  • Khi sản phẩm đang / sắp có khuyến mãi, tồn mới phải ≥ tồn đang giữ cho khuyến mãi (total_reserved_stock, xem get_item_promotion / get_model_list) — không đủ thì phân loại đó vào failure_list.
  • Kết quả theo từng phân loại: kiểm cả failure_list dù error rỗng. Sản phẩm đã xóa không sửa được tồn.
  • Nhiều sản phẩm: gọi lần lượt từng sản phẩm, giãn khoảng 200 ms giữa các lần.

Request

Địa chỉ

POST https://partner.quantri360.com/v1/shopee/api/v2/product/update_stock

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ả
item_idbodyintCó10000000081Mã sản phẩm (một sản phẩm mỗi lần gọi).
stock_listbodyobject[]Có[{"model_id":10000000090,"seller_stock":[{"location_id":"VNZ","stock":5}]}]1–50 phần tử.
stock_list[].model_idbodyintKhông10000000090Mã phân loại (get_model_list); sản phẩm không phân loại gửi 0.
stock_list[].seller_stockbodyobject[]Có[{"location_id":"VNZ","stock":5}]Tồn mới theo kho.
stock_list[].seller_stock[].location_idbodystringKhôngVNZMã kho (get_warehouse_detail). Gian hàng một kho không cần gửi.
stock_list[].seller_stock[].stockbodyintCó5Số tồn MỚI (ghi đè, không cộng dồn).

Ví dụ request

curl -s -X POST "https://partner.quantri360.com/v1/shopee/api/v2/product/update_stock" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"item_id":10000000081,"stock_list":[{"model_id":10000000090,"seller_stock":[{"location_id":"VNZ","stock":5}]},{"model_id":10000000091,"seller_stock":[{"location_id":"VNZ","stock":1}]}]}'
Python
import requests

KEY = "q360_live_..."  # khóa API của brand
r = requests.post(
    "https://partner.quantri360.com/v1/shopee/api/v2/product/update_stock",
    params={},
    json={
        "item_id": 10000000081,
        "stock_list": [
            {
                "model_id": 10000000090,
                "seller_stock": [
                    {
                        "location_id": "VNZ",
                        "stock": 5
                    }
                ]
            },
            {
                "model_id": 10000000091,
                "seller_stock": [
                    {
                        "location_id": "VNZ",
                        "stock": 1
                    }
                ]
            }
        ]
    },
    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/update_stock');
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":10000000081,"stock_list":[{"model_id":10000000090,"seller_stock":[{"location_id":"VNZ","stock":5}]},{"model_id":10000000091,"seller_stock":[{"location_id":"VNZ","stock":1}]}]}),
});
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/update_stock' . '?' . 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":10000000081,"stock_list":[{"model_id":10000000090,"seller_stock":[{"location_id":"VNZ","stock":5}]},{"model_id":10000000091,"seller_stock":[{"location_id":"VNZ","stock":1}]}]}');
$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)

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.
warningstring
responseobject
success_listobject[]
model_idint10000000090
location_idstringVNZ
stockint5Tồn đã lưu.
failure_listobject[]
model_idint
failed_reasonstringLý do.

Mẫu phản hồi

{
  "error": "",
  "message": "",
  "warning": "",
  "request_id": "b7e0c3d2a91f4c55…",
  "response": {
    "failure_list": [],
    "success_list": [
      {
        "model_id": 10000000090,
        "location_id": "VNZ",
        "stock": 5
      },
      {
        "model_id": 10000000091,
        "location_id": "VNZ",
        "stock": 1
      }
    ]
  }
}

Mã lỗi của Shopee (29)

Bấm để xem
MãÝ nghĩa
error_dataDữ 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_paramTham số sai / thiếu / sai kiểu — xem `message` để biết tham số nào.
error_serverLỗi hệ thống Shopee — thử lại sau ít phút.
error_shopGian hàng không hợp lệ — kiểm tra platform_shop_id.
error_item_not_belong_shopItem not belong to shop.
error_wms_shop_block_upate_stockWarehouse shop can't update stock.
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_item_not_foundKhông tìm thấy item_id.
error_param_shop_id_not_foundShop_id is not found.
error_busi_update_stock_failedUpdate stock failed, please check failure_list for detailed reason
error_innerLỗi hệ thống Shopee — thử lại sau.
error_busi_cannot_edit_vskuCan not use OpenAPI to edit/create VSKU, please connect with your manager
error.paramCan not update item with stock less than reserved stock
error_busiMerchant/gian hàng có nhiều kho; cần gửi location_id.
error_system_busyHệ thống đang bận; thử lại sau.
error_seller_under_penaltyThe shop is under penalty.
error_nil_shopid_or_itemidQuery information failed.
error_item_uneditableCan't edit this item. item status can not support editing.
error_perm_non_adminDon't have permission.
error_cannt_edit_stock_in_promotionNormal_stock cannot be edited when item is under promotion.
error_holiday_mode_change_stockCannot change stock in holiday mode.
error_promotion_cantnot_update_stockCannot change stock when item is under promotion.
error_in_item_promotion_nomodel_to_modelsCan't to edit item stock directly while item has models.
error_model_update_stock_model_in_promotionModel stock cannot be editted when item/model is promotion.
error_edit_item_stock_for_item_has_modelCan't to edit item stock directly while item has models.
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).
shop_bannedGian hàng đang bị Shopee khóa — mọi API tạm ngưng tới khi gỡ khóa.
error_kyc_authGian hàng chưa hoàn tất đăng ký người bán trên Kênh Người Bán.

Bắt đầu dùng

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