# 3 Product
# 1 Products
# 1.1 Category List(GET)
Get product categories from CJ.
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/getCategory
# CURL
curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/product/getCategory' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# Return
success
{
"code": 200,
"result": true,
"message": "Success",
"data": [
{
"categoryFirstName": "Computer & Office",
"categoryFirstList": [
{
"categorySecondName": "Office Electronics",
"categorySecondList": [
{
"categoryId": "2252588B-72E3-4397-8C92-7D9967161084",
"categoryName": "Office & School Supplies"
},
]...
}
]
}
],
"requestId": "ae543fd1-cdd7-4a61-974a-1340fea678c6"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| categoryFirstName | First level category name | string | 200 | |
| categoryFirstList | First level category list | Array | - | |
| categorySecondName | Second level category name | string | 200 | |
| categorySecondList | Second level category list | Array | - | |
| categoryId | Third level category ID | string | 200 | |
| categoryName | Third level category name | string | 200 |
error
{
"code": 1600100,
"result": false,
"message": "Param error",
"data": null,
"requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| code | error code | int | 20 | Reference error code |
| result | Whether or not the return is normal | boolean | 1 | |
| message | return message | string | 200 | |
| data | return data | object | interface data return | |
| requestId | requestId | string | 48 | Flag request for logging errors |
# 1.2 Product List V2(GET)
Get all available products from CJ with criteria inquiry supported. V2 version uses elasticsearch search engine for higher performance product search capabilities.
Note:
- Supports keyword search
- Supports multiple filter conditions such as price range, category, country, etc.
- Supports sorting functionality
- Through the features parameter, you can selectively return product details and category information
- page minimum value 1, maximum value 1000; size minimum value 1, maximum value 100
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/listV2
# CURL
curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/product/listV2?page=1&size=20&keyWord=hoodie' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| keyWord | Search keyword | string | N | 200 | Product name or SKU keyword search |
| page | Page number | int | N | 20 | Default 1, minimum 1, maximum 1000 |
| size | Quantity of results on each page | int | N | 20 | Default 10, minimum 1, maximum 100 |
| categoryId | Category ID | string | N | 200 | Filter products by third level category ID |
| lv2categoryList | Second level category ID list | array | N | Filter products by second level category ID list | |
| lv3categoryList | Third level category ID list | array | N | Filter products by third level category ID list | |
| countryCode | Country code | string | N | 200 | Format: CN,US,GB,FR etc., filter products with inventory in specified countries |
| startSellPrice | Start sell price | decimal | N | Price filter start value | |
| endSellPrice | End sell price | decimal | N | Price filter end value | |
| addMarkStatus | Is free shipping | int | N | 1 | 0-not free shipping, 1-free shipping |
| productType | Product type | int | N | 15 | 4-Supplier product, 10-Video product, 11-Non-video product |
| productFlag | Product flag | int | N | 1 | 0-Trending products, 1-New products, 2-Video products, 3-Slow-moving products |
| startWarehouseInventory | Start warehouse inventory | int | N | Filter products with inventory greater than or equal to this value | |
| endWarehouseInventory | End warehouse inventory | int | N | Filter products with inventory less than or equal to this value | |
| verifiedWarehouse | Verified warehouse type | int | N | 1 | null/0-All(default), 1-Verified inventory, 2-Unverified inventory |
| timeStart | Listing time filter start | long | N | Listing start time timestamp (milliseconds) | |
| timeEnd | Listing time filter end | long | N | Listing end time timestamp (milliseconds) | |
| zonePlatform | Zone platform suggestion | string | N | 200 | Such as: shopify,ebay,amazon,tiktok,etsy etc. |
| isWarehouse | Is global warehouse search | boolean | N | 1 | true-yes, false-no |
| sort | Sort direction | string | N | 4 | desc-descending(default) / asc-ascending |
| orderBy | Sort field | int | N | 20 | 0=best match(default); 1=listing count; 2=sell price; 3=create time; 4=inventory |
| features | Features list | array | N | 200 | Supported values: enable_description(return product details), enable_category(return product category information), enable_combine(return combine product info), enable_video(return video IDs) |
| supplierId | Supplier ID | string | N | 200 | Filter products by supplier ID |
| hasCertification | Has certification | int | N | 1 | 0-No, 1-Yes |
| isSelfPickup | Is self pickup | int | N | 1 | 0-No, 1-Yes |
| customization | Is customization product | int | N | 1 | 0-No, 1-Yes |
# Return
success
{
"code": 200,
"result": true,
"message": "Success",
"data": {
"pageSize": 20,
"pageNumber": 1,
"totalRecords": 1000,
"totalPages": 50,
"content": [
{
"productList": [
{
"id": "04A22450-67F0-4617-A132-E7AE7F8963B0",
"nameEn": "Personalized Belly-baring Cat Ear Hoody Coat",
"sku": "CJNSSYWY01847",
"spu": "CJNSSYWY01847",
"bigImage": "https://cc-west-usa.oss-us-west-1.aliyuncs.com/20210129/2167381084610.png",
"sellPrice": "11.85",
"nowPrice": "9.50",
"listedNum": 100,
"categoryId": "5E656DFB-9BAE-44DD-A755-40AFA2E0E686",
"threeCategoryName": "Hoodies & Sweatshirts",
"twoCategoryId": "5E656DFB-9BAE-44DD-A755-40AFA2E0E685",
"twoCategoryName": "Tops & Sets",
"oneCategoryId": "5E656DFB-9BAE-44DD-A755-40AFA2E0E684",
"oneCategoryName": "Women's Clothing",
"addMarkStatus": 1,
"isVideo": 0,
"videoList": [],
"productType": "ORDINARY_PRODUCT",
"supplierName": "",
"createAt": 1609228800000,
"warehouseInventoryNum": 500,
"totalVerifiedInventory": 500,
"totalUnVerifiedInventory": 0,
"verifiedWarehouse": 1,
"customization": 0,
"hasCECertification": 0,
"isCollect": 0,
"myProduct": false,
"discountPrice": "9.50",
"discountPriceRate": "20",
"description": "Product description...",
"deliveryCycle": "3-5",
"saleStatus": "3",
"authorityStatus": "1",
"isPersonalized": 0
}
],
"relatedCategoryList": [
{
"categoryId": "xxx",
"categoryName": "Hoodies"
}
],
"keyWord": "hoodie",
"keyWordOld": "hoodie"
}
]
},
"requestId": "f95cd31d-3907-47ce-ac1a-dfdee4315960"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| pageSize | Page size | long | 20 | Number of products per page |
| pageNumber | Current page number | long | 20 | Current requested page number, starts from 1 |
| totalRecords | Total records | long | 20 | Total number of products matching criteria, Maximum value: 6000. |
| totalPages | Total pages | long | 20 | Total pages |
| content | Content list | array | Product data list |
CjProductInfoSearchV2DTO object in content:
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| productList | Product list | Product[] | Product information array | |
| relatedCategoryList | Related category list | array | Related categories matched by search keyword list | |
| keyWord | Search keyword | string | 200 | Actual search keyword used |
| keyWordOld | Original search keyword | string | 200 | Original search keyword entered by user |
Product object in productList:
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| id | Product ID | string | 200 | Unique product identifier |
| nameEn | Product name (English) | string | 200 | Product English name |
| sku | Product SPU | string | 200 | Product SPU code |
| spu | Product SPU | string | 200 | Product SPU code |
| bigImage | Product main image | string | 200 | Product main image URL |
| sellPrice | Sell price | string | 20 | Product sell price, unit: USD |
| nowPrice | Discount price | string | 20 | Product discount price |
| discountPrice | Best discount price | string | 20 | Best discount price |
| discountPriceRate | Discount rate | string | 20 | Discount percentage |
| listedNum | Listed number | int | 20 | Number of times this product is listed on the platform |
| isCollect | Is collected | int | 1 | 0-not collected, 1-collected |
| categoryId | Third level category ID | string | 200 | Product third level category ID |
| threeCategoryName | Third level category name | string | 200 | Third level category name (returned only when features contains enable_category) |
| twoCategoryId | Second level category ID | string | 200 | Product second level category ID |
| twoCategoryName | Second level category name | string | 200 | Second level category name (returned only when features contains enable_category) |
| oneCategoryId | First level category ID | string | 200 | Product first level category ID |
| oneCategoryName | First level category name | string | 200 | First level category name (returned only when features contains enable_category) |
| addMarkStatus | Is free shipping | int | 1 | 0-not free shipping, 1-free shipping |
| isVideo | Has video | int | 1 | 0-no video, 1-has video |
| videoList | Video ID list | array | Product video ID collection (returned only when features contains enable_video) | |
| productType | Product type | string | 20 | Product type code |
| supplierName | Supplier name | string | 200 | Product supplier name |
| createAt | Create time | long | 20 | Product create timestamp (milliseconds) |
| setRecommendedTime | Recommended time | long | 20 | Set recommended timestamp |
| warehouseInventoryNum | Warehouse inventory number | long | 20 | Total inventory number |
| totalVerifiedInventory | Total verified inventory | int | 20 | Total verified inventory |
| totalUnVerifiedInventory | Total unverified inventory | int | 20 | Total unverified inventory |
| verifiedWarehouse | Verified warehouse identifier | int | 1 | 1-Verified inventory, 2-Unverified inventory |
| customization | Is customization product | int | 1 | 0-No, 1-Yes |
| isPersonalized | Is personalized customization | int | 1 | 0-No, 1-Yes |
| hasCECertification | Has CE certification | int | 1 | 0-No, 1-Yes |
| myProduct | Is added to my products | boolean | 1 | true-added, false-not added |
| description | Product description | string | 2000 | Detailed product description (returned only when features contains enable_description) |
| deliveryCycle | Delivery cycle | string | 20 | Product delivery cycle in days |
| saleStatus | Sale status | string | 2 | Fixed at 3, indicating that the product is in on sale state,3-On Sale |
| authorityStatus | User visible permission | string | 1 | 0-private visible, 1-all visible |
| autStatus | Product visibility | string | 1 | Product visibility status |
| isAut | Is permanent private | string | 1 | 0-not permanent private, 1-permanent private |
| isList | Is listed | int | 1 | 0-not listed, 1-listed |
| syncListedProductStatus | Listing status | string | 1 | 0-pending, 1-listing, 2-failed, 3-success, 4-cancelled |
| isAd | Is advertisement product | int | 1 | 0-not ad, 1-ad product |
| activityId | Advertisement product ID | string | 200 | Advertisement activity ID |
| directMinOrderNum | Minimum order quantity | string | 20 | Minimum order quantity |
| zoneRecommendJson | Zone recommend list | set | Zone recommend tag collection | |
| inventoryInfo | Warehouse inventory info | string | Warehouse inventory details JSON | |
| variantKeyEn | Variant property | string | 200 | Variant property English description |
| variantInventories | Variant inventory info | string | Variant inventory details JSON | |
| propertyKey | Product logistics property key | string | 200 | Product logistics property keywords |
Error
{
"code": 1600100,
"result": false,
"message": "Param error",
"data": null,
"requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| code | Error code | int | 20 | Reference error code |
| result | Whether or not the return is normal | boolean | 1 | |
| message | Return message | string | 200 | |
| data | Return data | object | Business data | |
| requestId | Request ID | string | 48 | Flag request for logging errors |
# 1.3 Global Warehouse List(GET)
Get the list of all available global warehouses.
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/globalWarehouseList
# CURL
curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/product/globalWarehouseList' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# Request Parameters
No parameters required
# Return
success
{
"code": 200,
"success": true,
"message": "Success",
"data": [
{
"areaCn": "中国仓",
"areaEn": "China Warehouse",
"areaId": 1,
"countryCode": "CN",
"nameEn": "China",
"valueEn": "CN",
"disabled": false,
"zh": "中国仓",
"en": "China Warehouse",
"de": "China-Lager",
"fr": "Entrepôt Chine",
"th": "คลังสินค้าจีน",
"id": "1"
},
{
"areaCn": "美国仓",
"areaEn": "US Warehouse",
"areaId": 2,
"countryCode": "US",
"nameEn": "United States",
"valueEn": "US",
"disabled": false,
"zh": "美国仓",
"en": "US Warehouse",
"de": "US-Lager",
"fr": "Entrepôt américain",
"th": "คลังสินค้าสหรัฐ",
"id": "2"
}
],
"requestId": "ae543fd1-cdd7-4a61-974a-1340fea678c6"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| areaCn | Warehouse name (CN) | string | 200 | Chinese name of the warehouse |
| areaEn | Warehouse name (EN) | string | 200 | English name of the warehouse |
| areaId | Warehouse ID | int | 20 | Unique warehouse identifier |
| countryCode | Country code | string | 10 | ISO country code, e.g., CN, US, GB |
| nameEn | Country name (EN) | string | 200 | English name of the country |
| valueEn | Warehouse code | string | 10 | Warehouse code value, usually matches country code |
| disabled | Is disabled | boolean | 1 | true-disabled, false-available |
| zh | Chinese name | string | 200 | Multi-language support - Chinese |
| en | English name | string | 200 | Multi-language support - English |
| de | German name | string | 200 | Multi-language support - German |
| fr | French name | string | 200 | Multi-language support - French |
| th | Thai name | string | 200 | Multi-language support - Thai |
| id | Warehouse string ID | string | 20 | String format of warehouse ID |
error
{
"code": 1600100,
"result": false,
"message": "Param error",
"data": null,
"requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| code | Error code | int | 20 | Reference error code |
| result | Whether or not the return is normal | boolean | 1 | |
| message | Return message | string | 200 | |
| data | Return data | object | Business data | |
| requestId | Request ID | string | 48 | Flag request for logging errors |
# 1.4 Product List(GET)
Deprecated
This endpoint is deprecated. Use 1.2 Product List V2
(/product/listV2) instead.
Its behaviour is unchanged, so existing integrations keep working during migration. However it will receive no further enhancements — please migrate as soon as you can.
Why it is deprecated: V2 is backed by elasticsearch, offering better search performance plus keyword search, multi-criteria filtering (price range, category, country) and sorting. Those capabilities will not be added to this endpoint.
Get all available products from CJ, criteria inquiry supported. 20 results for each page, fixed.
Note:
- Maximum return of 200 data per page.
- Free users or v1 users are limited to a maximum of 1000 requests per day.(2024-09-30 update)
- One IP is limited to a maximum of three users.(2024-09-30 update)
- Query the product list and add "deliveryTime" field (hours). The values are 24, 48, 72, or null (2024-11-15 update)
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/list
# CURL
curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/product/list' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| pageNum | Page number | int | N | 20 | Default 1, specifies the page number of the product list to retrieve |
| pageSize | Quantity of results on each page | int | N | 20 | Default 20, number of products returned per page, maximum 200 |
| categoryId | category id | string | N | 200 | Inquiry criteria, filter products by category ID |
| pid | Product id | string | N | 200 | Filter products by unique product identifier |
| productSku | Product sku | string | N | 200 | Filter products by SKU |
| productName | Product name | string | N | 200 | Fuzzy match by product Chinese name |
| productNameEn | Product name(en) | string | N | 200 | Fuzzy match by product English name |
| productType | Product type | string | N | 200 | Optional values: ORDINARY_PRODUCT, SUPPLIER_PRODUCT - Returns all types if not provided |
| countryCode | countryCode | string | N | 200 | Example: CN, US - Filter products with inventory in specified countries |
| deliveryTime | Delivery Time (hours) | string | N | 200 | Optional values: 24 (ships within 24 hours), 48 (ships within 48 hours), 72 (ships within 72 hours) - Returns only products meeting the specified delivery time |
| verifiedWarehouse | Verified Inventory Type | number | N | 1 | Optional values: 1 (Verified), 2 (Unverified) - Not passing values means not restricting queries based on that type |
| startInventory | the minimum inventory | number | N | eg: 2, filter products with inventory greater than or equal to this value | |
| endInventory | the highest inventory | number | N | eg: 10, filter products with inventory less than or equal to this value | |
| createTimeFrom | create time(start) | string | N | 200 | format: yyyy-MM-dd hh:mm:ss, filter products created after this time |
| createTimeTo | create time(end) | string | N | 200 | format: yyyy-MM-dd hh:mm:ss, filter products created before this time |
| brandOpenId | brand id | long | N | 200 | Inquiry criteria, filter by brand ID |
| minPrice | minimum price | number | N | 200 | Example: 1.0 - Filter products with price greater than or equal to this value |
| maxPrice | maximum price | number | N | 200 | Example: 2.5 - Filter products with price less than or equal to this value |
| searchType | Search Type | number | N | 5 | Optional values: 0 (All products), 2 (Trending Products), 21 (Trending Products View More) - Default is 0 |
| minListedNum | Minimum Listed Num | number | N | 10 | Example: 1 - Returns products with listing count greater than or equal to this value |
| maxListedNum | Maximum Listed Num | number | N | 10 | Example: 10 - Returns products with listing count less than or equal to this value |
| sort | Sort Type | string | N | 4 | Optional values: desc (descending order), asc (ascending order) - Default: desc |
| orderBy | Sort field | string | N | 20 | Optional values: createAt (sort by creation time), listedNum (sort by listing count) - Default: createAt |
| isSelfPickup | Does the product support self pickup | number | N | 1 | Optional values: 1 (supported), 0 (not supported) |
| supplierId | Supplier Id | string | N | 40 | Filter products by supplier ID |
| isFreeShipping | Is Free Shipping? | int | N | 1 | Optional values: 0 (not free), 1 (free shipping) |
| customizationVersion | Customization Version | int | N | 1 | Optional values: 1 (Platform Customized Version V1), 2 (Platform Customized Version V2), 3 (Customer Customized Version V1), 4 (Customer Customized Version V2), 5 (POD 3.0 Platform Customized) - Filter POD products by customization version |
# Return
success
{
"code": 200,
"result": true,
"message": "Success",
"data": {
"pageNum": 1,
"pageSize": 20,
"total": 1,
"list": [
{
"pid": "04A22450-67F0-4617-A132-E7AE7F8963B0",
"productName": "[\"猫耳朵卫衣\",\"定制卫衣\",\"个性化定制\"]",
"productNameEn": "Personalized Belly-baring Cat Ear Hoody Coat",
"productSku": "CJNSSYWY01847",
"productImage": "https://cc-west-usa.oss-us-west-1.aliyuncs.com/20210129/2167381084610.png",
"productWeight": 0,
"productType": null,
"productUnit": "unit(s)",
"sellPrice": 11.85,
"categoryId": "5E656DFB-9BAE-44DD-A755-40AFA2E0E686",
"categoryName": "Women's Clothing / Tops & Sets / Hoodies & Sweatshirts",
"remark": "",
"createTime": null,
"customizationVersion": 1
}
]
},
"requestId": "f95cd31d-3907-47ce-ac1a-dfdee4315960"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| pageNum | Page number | int | 20 | Current page number |
| pageSize | Quantity of results on each page | int | 20 | Number of products per page |
| total | Total quantity of results | int | 20 | Total number of products matching criteria |
| list | Product list | Product[] | List of product data | |
| pid | Product ID | string | 200 | Unique product identifier |
| productName | Product name | string | 200 | Product Chinese name, may be a JSON array string with multiple names |
| productNameEn | Product name(EN) | string | 200 | Product English name |
| productSku | Product sku | string | 200 | Product SKU code |
| productImage | Product image | string | 200 | Product main image URL |
| productWeight | Product weight | int | 200 | Unit: g |
| productType | Product type | byte | 200 | Product type code |
| productUnit | Product unit | string | 48 | Product selling unit |
| categoryId | Category id | string | 200 | Product category ID |
| categoryName | Category name | string | 200 | Product category name |
| remark | Remark | string | 200 | Product remark information |
| addMarkStatus | Is shipping free? (Deprecated, please use isFreeShipping) | int | 1 | 0=Not free shipping, 1=free shipping |
| isFreeShipping | Is shipping free? | boolean | 1 | true for free shipping, false for paid shipping |
| listedNum | Listed number | int | 200 | Number of listings for this product on the platform |
| supplierName | Supplier name | string | 200 | Product supplier name |
| supplierId | Supplier id | string | 200 | Product supplier ID |
| sellPrice | Sell price | decimal | - | Product selling price |
| createTime | Create time | string | - | Product creation time on the platform |
| isVideo | Has video | int | 1 | 1 means includes video, 0 means no video |
| saleStatus | Sale status | int | 20 | 3 means approved for sale |
| customizationVersion | Customization Version | int | 1 | Custom product version number |
Error
{
"code": 1600100,
"result": false,
"message": "Param error",
"data": null,
"requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| code | error code | int | 20 | Reference error code |
| result | Whether or not the return is normal | boolean | 1 | |
| message | return message | string | 200 | |
| data | return data | object | interface data return | |
| requestId | requestId | string | 48 | Flag request for logging errors |
# 1.5 Product Details(GET)
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/query
# CURL
curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/product/query?pid=000B9312-456A-4D31-94BD-B083E2A198E8' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| pid | Product id | string | Choose one of pid, productSku, variantSku | 200 | Inquiry criteria, unique product identifier |
| productSku | Product sku | string | Choose one of pid, productSku, variantSku | 200 | Inquiry criteria, product SPU code |
| variantSku | variant sku | string | Choose one of pid, productSku, variantSku | 200 | Inquiry criteria, variant SKU code |
| features | features | List | N | 200 | Optional values: enable_combine (includes combination variants, returns combination product info when passed), enable_video (includes videos, returns product video info when passed) |
| countryCode | Country Code | string | N | 2 | Country code such as CN, US - Only returns variants with inventory in that country, no restriction if not passed |
# Return
Success
{
"code": 200,
"result": true,
"message": "Success",
"data": {
"pid": "000B9312-456A-4D31-94BD-B083E2A198E8",
"productName": "[\"攀爬车 拖斗车 \",\"攀爬车 \",\"拖斗车 \"]",
"productNameEn": "Small trailer model",
"productSku": "CJJJJTJT05843",
"bigImage": "https://cf.cjdropshipping.com/quick/product/c1f9aae8-2b96-4ca7-9a67-1441d9596e3d.jpg",
"productImageSet": ["https://cf.cjdropshipping.com/quick/product/c1f9aae8-2b96-4ca7-9a67-1441d9596e3d.jpg","https://cf.cjdropshipping.com/quick/product/a7657750-4318-47e8-875f-b6220ac35354.jpg"],
"productWeight": "1500.0",
"productUnit": "unit(s)",
"productType": "ORDINARY_PRODUCT",
"categoryId": "87CF251F-8D11-4DE0-A154-9694D9858EB3",
"categoryName": "Home & Garden, Furniture / Home Storage / Home Office Storage",
"entryCode": "8712008900",
"entryName": "模型",
"entryNameEn": "model",
"materialName": "[\"\",\"金属\"]",
"materialNameEn": "[\"\",\"metal\"]",
"materialKey": "[\"METAL\"]",
"packingWeight": "1580.0",
"packingName": "[\"\",\"塑料袋\"]",
"packingNameEn": "[\"\",\"plastic_bag\"]",
"packingKey": "[\"PLASTIC_BAG\"]",
"productKey": "[\"颜色\"]",
"productKeyEn": "Color",
"productPro": "[\"普货\"]",
"productProSet": ["普货"],
"productProEn": "[\"COMMON\"]",
"productProEnSet": ["COMMON"],
"sellPrice": 58.09,
"description": "....",
"suggestSellPrice": "0.97-4.08",
"listedNum": 392,
"status": "3",
"supplierName": "",
"supplierId": "",
"customizationVersion": 1,
"customizationJson1": "",
"customizationJson2": "",
"customizationJson3": "",
"customizationJson4": "",
"variants": [
{
"vid": "D4057F56-3F09-4541-8461-9D76D014846D",
"pid": "000B9312-456A-4D31-94BD-B083E2A198E8",
"variantName": null,
"variantNameEn": "Small trailer model Black",
"variantSku": "CJJJJTJT05843-Black",
"barcode": "6973990191234",
"variantUnit": null,
"variantKey": "Black-XXL",
"variantLength": 300,
"variantWidth": 200,
"variantHeight": 100,
"variantVolume": 6000000,
"variantWeight": 1580.00,
"variantSellPrice": 58.09,
"createTime": "2019-12-31T11:14:12.000+00:00"
"variantStandard": "long=110,width=110,height=30",
"variantSugSellPrice": 0.97
"combineVariants":[{}],
"inventories": [
{
"countryCode": "CN",
"totalInventory": 12912,
"cjInventory": 0,
"factoryInventory": 12912,
"verifiedWarehouse": 2,
"stock": [
{
"stockId": "{6709CCD7-0DC7-43B1-B310-17AB499E9B0A}",
"inventory": 0,
"factoryInventory": 12912
}
]
}
]
}...
],
"createrTime": "2019-12-24T01:06:37+08:00"
},
"requestId": "d8dc0b6d-0ed8-4e19-8f63-3f207ac39832"
}
Product
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| pid | Product ID | string | 200 | Unique product identifier |
| productName | Product name | string | 20 | Product Chinese name, in JSON array format |
| productNameEn | Product name(EN) | string | 200 | Product English name |
| productSku | Product sku | string | 200 | Product SKU,eg: CJJJJTJT05843 |
| bigImage | Product Main Image | string | 200 | Product main image URL |
| productImageSet | Product Images | string[] | 200 | eg: ["https://cf.cjdropshipping.com/quick/product/c1f9aae8-2b96-4ca7-9a67-1441d9596e3d.jpg","https://cf.cjdropshipping.com/quick/product/a7657750-4318-47e8-875f-b6220ac35354.jpg"] |
| productWeight | Product weight | int | 200 | Unit: g |
| productType | Product type | int | 200 | Product type |
| productUnit | Product unit | string | 48 | Product selling unit |
| categoryId | Category id | string | 200 | Product category ID |
| categoryName | Category name | string | 200 | Category name, third-level category, concatenated by >, example: Home & Garden, Furniture > Home Storage > Home Office Storage |
| entryCode | HS code | string | 200 | Product customs code |
| entryName | Customs name | string | 200 | Product customs Chinese name |
| entryNameEn | Customs name (EN) | string | 200 | Product customs English name |
| materialNameSet | Material(ZH) | string[] | 200 | Product material Chinese name, eg: ["玻璃"] |
| materialNameEnSet | Material (EN) | string[] | 200 | Product material English name, eg: ["Glass"] |
| packingWeight | Package weight | string | 200 | Unit: g, total weight including packaging,eg:444.00-3884.00 |
| packingNameSet | Package name | string[] | 200 | Packaging material Chinese name, eg: ["plastic_bag"] |
| packingNameEnSet | Package name (EN) | string[] | 200 | Packaging material English name, eg: ["Plastic bags"] |
| productKeySet | Product Options(ZH) | string[] | 200 | Product Options keywords, eg: ["Color","Size"] |
| productKeyEn | Product Options (EN) | string | 200 | Product Options, multiple options, joined by -, eg: Color-Size |
| productProSet | Product logistics attributes(Chinese) | string[] | Chinese description of product logistics attributes. See Appendix 4:Product Logistics Property for the full enum | |
| productProEnSet | Product logistics attributes(English) | string[] | English description of product logistics attributes. See Appendix 4:Product Logistics Property for the full enum | |
| addMarkStatus | Is Free Shipping? | int | 1 | 0=not Free, 1=Free |
| description | Description | string | 200 | Detailed product description |
| sellPrice | Sell price | string | 200 | Product selling price |
| createTime | Create time | string | 200 | Product creation time on the platform |
| productVideo | Product video ID list | string[] | 200 | If the product contains videos and features are passed in enable_video, it will return |
| status | status | string | 20 | 3 means approved for sale |
| suggestSellPrice | suggest sell price | string | 20 | Suggested retail price range |
| listedNum | listed number | int | 20 | Number of listings for this product |
| supplierName | supplier name | string | 20 | Product supplier name |
| supplierId | supplier Id | string | 20 | Product supplier ID |
| customizationVersion | customization version | int | 20 | Custom product version number |
| customizationJson1 | customization json | string | 200 | Custom information JSON data 1 |
| customizationJson2 | customization json | string | 200 | Custom information JSON data 2 |
| customizationJson3 | customization json | string | 200 | Custom information JSON data 3 |
| customizationJson4 | customization json | string | 200 | Custom information JSON data 4 |
| variants | Variants | Variant[] | List of product variants |
Variant
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| vid | Variant Id | string | 200 | Unique variant identifier |
| pid | Product Id | string | 20 | Parent product identifier |
| variantName | Variant Name | string | 200 | Variant Chinese name |
| variantNameEn | Variant Name(en) | string | 200 | Variant English name |
| variantSku | Variant SKU | string | 200 | Variant SKU code |
| barcode | Barcode | string | 200 | Unique identifier of the CJ variant, used in CJ warehouses; numeric only, present on all variants |
| variantImage | Variant Image | string | 200 | Variant image URL |
| variantStandard | Variant Standard | string | 200 | Variant specification description |
| variantUnit | Variant Unit | string | 200 | Variant selling unit |
| variantKey | Variant Options | string | 200 | Variant Options, multiple options, joined by -, eg: Black-XXL |
| variantLength | Variant Length | int | 200 | Unit: mm |
| variantWidth | Variant Width | int | 200 | Unit: mm |
| variantHeight | Variant Height | int | 200 | Unit: mm |
| variantVolume | Variant Volume | int | 200 | Unit: mm³ |
| variantWeight | Variant Weight | double | 200 | Unit: g |
| variantSellPrice | Variant SellPrice | double | 200 | unit: $ (USD) |
| variantSugSellPrice | Variant Suggest SellPrice | double | 200 | unit: $ (USD) |
| createTime | Vreater Time | string | 200 | Variant creation time |
| combineNum | number of Combine Variants | int | Number of sub-variants in combined products | |
| combineVariants | Combine Variants | Variant[] | 200 | List of sub-variants for combined products |
Error
{
"code": 1600100,
"result": false,
"message": "Param error",
"data": null,
"requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| code | error code | int | 20 | Reference error code |
| result | Whether or not the return is normal | boolean | 1 | |
| message | return message | string | 200 | |
| data | return data | object | interface data return | |
| requestId | requestId | string | 48 | Flag request for logging errors |
# 1.6 Add to My Product (POST)
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/addToMyProduct
# CURL
curl --location 'http://localhost:8081/api2.0/v1/product/addToMyProduct' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"productId": "1658748072937136128"
}'
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| productId | CJ product id | string | Y | 100 |
# Return
success
{
"code": 200,
"result": true,
"message": "Success",
"data": true,
"requestId": "a7d4d01b1eed4db9ac2cc1ab7903c98c",
"success": true
}
error
{
"code": 1600000,
"result": false,
"message": "The product has been added to My Products.",
"data": null,
"requestId": "b626475ff68242c3abfea562f9d4f899",
"success": false
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| code | error code | int | 20 | Reference error code |
| result | Whether or not the return is normal | boolean | 1 | |
| message | return message | string | 200 | |
| data | return data | object | interface data return | |
| requestId | requestId | string | 48 | Flag request for logging errors |
# 1.7 My Product List(GET)
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/myProduct/query
# CURL
curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/product/myProduct/query?keyword=CJWJWJYZ02543' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| keyword | sku/spu/product name | string | N | 200 | |
| categoryId | category id | string | N | 200 | |
| startAt | start time | string | N | 200 | |
| endAt | ent time | string | N | 200 | |
| isListed | isListed | int | N | 200 | |
| visiable | visiable | int | N | 200 | |
| hasPacked | hasPacked | int | N | 200 | |
| hasVirPacked | hasVirPacked | int | N | 200 |
# Return
success
{
"code": 200,
"result": true,
"message": "Success",
"data": {
"pageSize": 10,
"pageNumber": 1,
"totalRecords": 536,
"totalPages": 54,
"content": [
{
"productId": "01118E21-A8B9-45CE-A16C-75232FB8A14A",
"packWeight": "530.0",
"weight": "480.0",
"productType": "0",
"propertyKeyList": [
"COMMON"
],
"bigImage": "https://cf.cjdropshipping.com/15926688/9714688036284.jpg",
"nameEn": "3D wooden three-dimensional puzzle",
"sku": "CJWJWJJM00719",
"hasPacked": 0,
"sellPrice": "2.4",
"discountPrice": null,
"discountPriceRate": null,
"defaultArea": "China Warehouse",
"shopMethod": "CAI NIAO",
"trialFreight": "0",
"totalPrice": "2.40",
"listedShopNum": "0",
"vid": "7986724D-7214-4B4B-A184-493E7BD78F47",
"areaId": "1",
"areaCountryCode": "CN",
"freightDiscount": "0",
"createAt": 1743218214000,
"lengthList": [
335,
335
],
"heightList": [
200,
200
],
"widthList": [
225,
225
],
"volumeList": [
15075000,
15075000
],
"hasVirPacked": 1
}
]
},
"requestId": "b0f251412bd0446cb56ba5988706d964",
"success": true
}
product
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| productId | Product ID | string | 200 | |
| productName | Product name | list | 20 | |
| nameEn | Product name(EN) | string | 200 | |
| sku | Product sku | string | 200 | |
| bigImage | Product image | string | 200 | |
| totalPrice | Total price | double | 200 | unit: $ (USD) |
| productType | Product type | byte | 200 | |
| listedShopNum | listed Shop Num | string | 48 | |
| createAt | Added Time | string | 200 | |
| trialCountry | trial Country | string | 200 | |
| trialFreight | trial Freight | string | 200 |
error
{
"code": 1600100,
"result": false,
"message": "Param error",
"data": null,
"requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| code | error code | int | 20 | Reference error code |
| result | Whether or not the return is normal | boolean | 1 | |
| message | return message | string | 200 | |
| data | return data | object | interface data return | |
| requestId | requestId | string | 48 | Flag request for logging errors |
# 1.8 Query Packaging Products (with Inventory)(POST)
Page through the packaging products available to the current customer, at the variant dimension (B-side "pick a packaging" scenario).
Dimension note (key difference from 1.9): this endpoint is at the variant dimension —
content[].idis the variant ID (vid) and can be passed directly aspackVidwhen creating a packaging connection; each row also carries "variant SKU / dimensions (L×W×H) / inventory / connected count", for picking a packaging variant and building a connection;packingKeyis matched as a whole combination (exact); marketing search bans and site risk control are not applied. 1.9 is at the product dimension — itsidis the product ID (pid) and it only exposes "image / name / price (range price)", matchespackingKeykey-by-key, and does apply marketing search bans and site risk control.⚠️ Both endpoints return a field named
id, but they mean different things: 1.8'sid= variant ID (vid), 1.9'sid= product ID (pid). Only the endpoint tells them apart — the field name does not.packVidfor a packaging connection must come from 1.8'sid; passing 1.9'sidwill not link.Note · implementation granularity (paging and row count are per product): downstream pages by packaging product — one product yields one row, and that row's
id/sku/ L/W/H are taken from the product's first variant. So this endpoint cannot enumerate all variants of a packaging product, andtotalRecordsis a product count, not a variant count.Note · two different granularities within the same row:
goodNum(inventory) is aggregated per product — the total across all variants and all warehouses of that product;correlationNum(connected count) is counted for that row's variant only. Do not compare them as if they were the same granularity.Note ·
typedecides the data scope:ALL/DESIGNreturn CJ public packaging (non-customized), whileMYreturns your own customized packaging (and only those that passed review).
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/packagingProduct/query
# CURL
curl --location 'https://developers.cjdropshipping.com/api2.0/v1/product/packagingProduct/query' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"page": 2,
"size": 20,
"packingKey": ["PLASTIC_BAG"],
"type": "MY",
"keyword": "gift",
"sku": "CJPACK001",
"customization": 1,
"isShop": true
}'
# Request Parameters
| parameter | description | type | required | length | remark |
|---|---|---|---|---|---|
| page | page number | int | N | 20 | starts from 1, default 1; values below 1 are treated as 1 |
| size | page size | int | N | 20 | default 20, maximum 100; values above 100 are capped at 100, values below 1 are treated as 1 |
| packingKey | packing filter | List<String> | N | 3 | exact match on the whole combination; more than 3 will be truncated to the first 3 |
| type | type | string | N | 20 | ALL/MY/DESIGN |
| keyword | search keyword | string | N | 100 | |
| sku | packing SKU | string | N | 100 | |
| customization | POD product | int | N | 20 | 0: non-custom, 1: custom, null/2: all |
| isShop | whether to count connected number by shop dimension | boolean | N | 1 | true: by shop, false/omitted: by product |
# Return
success
{
"code": 200,
"result": true,
"message": "Success",
"data": {
"pageSize": 20,
"pageNumber": 2,
"totalRecords": 1,
"totalPages": 1,
"content": [
{
"id": "vid01",
"pid": "pid01",
"pack": "Plastic Bag",
"packKey": "PLASTIC_BAG",
"image": "https://example.com/pack.jpg",
"nameEn": "Gift Box",
"name": "Gift Box",
"sellPrice": "1.20",
"correlationNum": 2,
"length": 10,
"width": 10,
"height": 5,
"weight": "0.20",
"sku": "CJPACK001",
"standard": "10x10x5",
"goodNum": 50
}
]
},
"requestId": "ae543fd1-cdd7-4a61-974a-1340fea678c6"
}
data: paging object.
| return field | description | type | remark |
|---|---|---|---|
| pageSize | page size | Long | |
| pageNumber | page number | Long | |
| totalRecords | total records | Long | |
| totalPages | total pages | Long | |
| content | packaging product array | array | |
| content[].id | variant ID | string | variant-dimension identifier (vid) — pass it as packVid when creating a packaging connection; taken from the packaging product's first variant |
| content[].pid | product ID | string | |
| content[].image | variant image | string | |
| content[].nameEn | English name | string | |
| content[].name | Chinese name | string | |
| content[].sellPrice | sell price | string | |
| content[].sku | packing SKU | string | |
| content[].standard | size | string | |
| content[].correlationNum | connected count | int | counted by this row's variant |
| content[].goodNum | inventory | int | product dimension: total inventory of all variants & warehouses of this product, NOT this row's SKU |
Important:
goodNumis product-dimension total inventory whilecorrelationNumis variant-dimension connected count - two different dimensions in the same row. Use an inventory API for single-variant stock.
# 1.9 Query CJ Packaging Products(POST)
Browse CJ pre-designed packaging products, at the product dimension (C-side product-card scenario).
Dimension note (key difference from 1.8): this endpoint is at the product dimension — every row is a packaging product and
idis the product ID (pid), exposing only "image / name / price (range price)" for browsing and picking a packaging style;packingKeyis matched key by key; marketing search bans and site risk control are applied (when triggered, the downstream returns its own business code and this API passes it through as-is). 1.8 is at the variant dimension — itsidis the variant ID (vid), and it additionally exposes "variant SKU / dimensions / inventory / connected count", matchespackingKeyas a whole combination, and applies no risk control.⚠️ Both endpoints return a field named
id, but they mean different things: this endpoint's (1.9)id= product ID (pid) and cannot be used aspackVid— to obtain the variant ID, SKU and inventory for building a connection, use theidreturned by 1.8.
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/cjPackaging/query
# CURL
curl --location 'https://developers.cjdropshipping.com/api2.0/v1/product/cjPackaging/query' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"page": 1,
"size": 20,
"packingKey": ["PLASTIC_BAG"],
"keyword": "gift"
}'
# Request Parameters
Identical to 1.8 (the downstream shares the same request model).
# Return
success
{
"code": 200,
"result": true,
"message": "Success",
"data": {
"pageSize": 20,
"pageNumber": 1,
"totalRecords": 1,
"totalPages": 1,
"content": [
{
"id": "pid01",
"bigImage": "https://example.com/pack.jpg",
"nameEn": "Gift Box",
"customMessage": "Happy Birthday",
"sellPrice": "1.20-3.50",
"nowPrice": null
}
]
},
"requestId": "ae543fd1-cdd7-4a61-974a-1340fea678c6"
}
| return field | description | type | remark |
|---|---|---|---|
| content[].id | product ID | string | product-dimension identifier (pid) — not a variant ID and cannot be used as packVid; the identically named id in 1.8 is the variant ID |
| content[].bigImage | product image | string | |
| content[].nameEn | English name | string | |
| content[].customMessage | custom message | string | |
| content[].sellPrice | sell price | string | a price range (e.g. "1.20-3.50") when there is no unsold variant |
| content[].nowPrice | current price | string | price range when unsold variants exist, otherwise null |
Important - two differences from 1.8: (1) this API is product dimension (
idis a pid, card essentials only) and 1.8 is variant dimension (idis a vid, additionally exposing sku/size/inventory/connected count) - the twoidfields share a name but not a meaning, and are not interchangeable; (2)packingKeyhere matches each key individually, while 1.8 matches the whole combination exactly - the same filter values return different results across the two APIs, so do not reuse them across APIs.Also note: the downstream has a time-window search ban switch and a QK-site keyword prefix restriction; when hit, the corresponding error code is passed through as-is.
# 1.10 Query Product Detail(POST)
Query the full product detail by product ID (variants, inventory, certifications, wholesale price, etc.).
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/productDetail/query
# CURL
curl --location 'https://developers.cjdropshipping.com/api2.0/v1/product/productDetail/query' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"id": "pid01"
}'
# Request Parameters
| parameter | description | type | required | remark |
|---|---|---|---|---|
| id | product ID | string | Y |
# Return
The field names and example values in the tables below come from a real response of the test environment (
POST /product/productDetail/query,id=1442332573555625984); field-name casing matches the real response character for character. The type and description columns come from the upstream product-detail service field definitions, not from guesswork.
⚠ Follow the exact letter case in the tables. This response mixes two naming styles:
some fields are all lower case with no separator (e.g. nameen, sellprice, bigimg, packingkey,
variantkeyen, authoritystatus, categoryid, supplierlink - 35 of them) - not lower camel case
(not nameEn) and not upper case (not NAMEEN); the rest use regular lower camel case
(e.g. totalInventory, countryCode, categoryIds, stanProducts).
Example (commonly used fields only; see the field tables below for the full set)
{
"code": 200,
"result": true,
"message": "Success",
"data": {
"id": "1442332573555625984",
"sku": "CJZD1005753",
"name": "包装个性,包个,包个",
"nameen": "Baozhuanggexingdingzhi2",
"sellprice": "24.11",
"bigimg": "https://cf.cjdropshipping.com/ff429ccc-bbf5-46e1-a4cc-c3e...",
"category": "packing material>box>cardboard box",
"categoryid": "21",
"material": "玻璃,水",
"materialen": "Glass, Water",
"packing": "布袋,吊牌,贴纸,卡片,其他",
"packingen": "Cloth bag, Tag, Sticker, Card, Other",
"packingkey": "FARBIC_BAG, HANG_TAG, STICKER, KAPIAN, MATERIAL",
"packweight": "10.00",
"weight": "10.00",
"variantkey": "容量-椰子",
"variantkeyen": "capacity-color",
"property": "普货, 含液体, 尖锐, POD2.0平台定制",
"propertyen": "Ordinary, Liquid Contains, Sharp, POD2.0",
"authoritystatus": "1",
"producttype": "3",
"customization": 1,
"customizationVersion": 2,
"saleStatus": "3",
"listed": 9,
"setNum": 5,
"createdate": "1632742657000",
"stanProducts": [
{
"id": "1442332573685649408",
"pid": "1442332573555625984",
"sku": "CJZD100575303CX",
"nameen": "Baozhuanggexingdingzhi2 512GB Ornaments",
"sellprice": "24.11",
"variantkey": "512GB-Ornaments",
"standard": "long=12,width=12,height=12",
"weight": 10,
"img": "https://cf.cjdropshipping.com/2c15d750-391a-404f-b...",
"totalInventory": null,
"wholesalePrice": {
"cjWholesalePrice": null,
"directWholesalePrice": null,
"updatePriceDate": null
}
}
],
"variantInventory": [
{
"vid": "1442332573668872192",
"inventory": [
{
"countryCode": "CN",
"totalInventory": 46083,
"cjInventory": 4041,
"factoryInventory": 42042,
"verifiedWarehouse": 1
}
]
}
],
"labelConfigs": [
{
"type": "CUT_LABEL",
"amount": 4,
"standardAmount": 0.1,
"labelOptionName": null,
"labelOptionValues": null
}
],
"zoneRecommendList": [
{
"zoneId": "2602281003410645700",
"zoneDetailId": "2f26a301-2f61-48d6-ad44-e5094090a84f",
"zonePlatform": "Etsy",
"url": "/zone/2f26a301-2f61-48d6-ad44-e5094090a84f",
"zonePlatformV2": "Etsy"
}
],
"excludeCountries": [
"RU"
]
},
"requestId": "ae543fd1-cdd7-4a61-974a-1340fea678c6"
}
data (top level) (137 fields)
| field | type | description | example in this response |
|---|---|---|---|
accountId | string | User ID | |
accountName | string | User name | |
addMarkStatus | int | Whether free shipping; 0: no, 1: yes | 0 |
amountOnSale | int | 1688 inventory | |
autaccid | string | Users the product is visible to | "" |
authoritystatus | string | Product visibility; 1: visible to all, 2: partially visible | "1" |
batchNumber | int | 1688 minimum batch quantity | |
bigimg | string | Image URL | "https://cf.cjdropshipping.com/ff4… |
buytime | string | BUYTIME | "3" |
category | string | Category name | "packing material>box>cardboard bo… |
categoryIds | string | Category IDs (first / second / third level) | "null,null,21" |
categoryid | string | Third-level category ID | "21" |
certificationMaterialList | array | Product material asset list | [] |
chart | string | Cross-border size chart configuration | "" |
cjTrusteeship | int | Whether the product is CJ-managed | 0 |
commentCount | int | Number of product reviews | 0 |
comprehensiveScore | decimal | Overall rating | |
consultingCount | int | consultingCount | 0 |
country | string | Country | |
createdate | string | Creation time | "1632742657000" |
currency | string | Currency | |
customMessage | string | Personalisation settings | "[{"img":"https://cf.cjdropship… |
customeDesign | string | Personalisation settings | |
customertags | string | CUSTOMERTAGS | |
customization | int | Whether customised (0: no, 1: yes) | 1 |
customizationVersion | int | Customisation version; 1: platform v1, 2: platform v2, 3: customer custom 1, 4: customer custom 2 | 2 |
description | string | Product description | " dsfsdfsdasfdasf " |
discountPrice | string | Discount price | |
discountPriceRate | string | Discount rate | |
discountStatus | int | discountStatus | 0 |
disputeStatDate | int | Update time | |
domain | array | Domain list | |
domainName | string | Supplier domain | |
entryCode | string | Customs declaration code | "2501001100" |
entryName | string | Customs declaration name | "森岛帆" |
establishmentAt | string | Company establishment time (timestamp) | |
excludeCountries | array | Countries to exclude | ["RU"] |
expandField | string | Extension field | |
filmImages | array | Real-shot image list | |
generalHunpi | boolean | 1688 seller mixed-batch setting; true = ordinary mixed batch, false = not | |
id | string | Product ID | "1442332573555625984" |
img | string | Product image list | "https://cf.cjdropshipping.com/ff4… |
inventorcountry | string | Product inventory | |
inventory | string | Inventory information | "{}" |
isAut | string | Whether permanently private; 0: not permanent, 1: permanently private | "0" |
isCollect | string | Whether the product is favourited | "0" |
isHaveVideo | string | Whether the product has a video | "NO_VIDEO" |
isList | boolean | Whether listed; true: listed | false |
isNeedRequestDiscount | boolean | Whether a discount request is required | false |
isNeedRequestOSS | boolean | Whether an OSS request is required | true |
isOnePsale | boolean | Whether one-piece dropshipping is enabled; true: enabled, false: disabled | |
isOssData | int | Whether the data comes from OSS; 0: no, 1: yes | 1 |
isPersonalized | string | Whether personalised; 0: no, 1: personalised | |
isSetWhole | int | Whether the stock-up price is enabled; 1: enabled, 0: disabled | |
isShowInquiry | boolean | Whether to show the inquiry button | false |
isUnsold | string | Whether the product is unsold; 1: unsold, 0: not unsold | "0" |
keywords | string | Search keywords (empty string when read from the legacy table; search_key in the new table) | "" |
labelConfigs | array | Label configuration list | array of objects |
labelJson | string | Product labels | "["1779746964482039808", "17905… |
latestPaymentDate | int | Latest order payment time (epoch millis; for an SPU, the maximum across its listed SKUs) | |
listed | int | Number of listings | 9 |
logisticScore | decimal | Average logistics rating | |
material | string | Product material name (ZH) | "玻璃,水" |
materialen | string | Product material name (EN) | "Glass, Water" |
materialkey | string | Product material key | "GLASS, WATER" |
myProduct | boolean | Whether added to My Products | false |
name | string | Product name (ZH) | "包装个性,包个,包个" |
nameAbbList | array | Certificate abbreviation | |
nameen | string | Product name (EN) | "Baozhuanggexingdingzhi2" |
newImgList | array | Product image | ["https://cf.cjdropshipping.com/ff |
nowPrice | string | Discount price | |
numberEmployees | int | Number of employees | |
orderCount | int | Number of orders under this SPU | 0 |
ov | int | Encryption version | |
ovk | string | Encryption key | |
packing | string | Packaging name (ZH) | "布袋,吊牌,贴纸,卡片,其他" |
packingen | string | Packaging name (EN) | "Cloth bag, Tag, Sticker, Card, Ot… |
packingkey | string | Product packaging key | "FARBIC_BAG, HANG_TAG, STICKER, KA… |
packweight | string | Packaging weight | "10.00" |
podV3CanDesign | boolean | Whether the POD 3.0 product is designable; false: no, true: yes | |
producttype | string | Product type | "3" |
property | string | Product attribute name (ZH) | "普货, 含液体, 尖锐, POD2.0平台定制" |
propertyen | string | Attribute name (EN) | "Ordinary, Liquid Contains, Sharp,… |
propertykey | string | Product attribute key | "COMMON, HAVE_LIQUID, EDGE, POD2.0… |
province | string | Province | |
qualificationList | array | Certification list | [] |
qualityDisputeRate | string | Dispute rate | "0.00" |
saleStatus | string | Product sale status | "3" |
score | decimal | Average product rating | |
selfPickupPrice | string | Self-pickup price | |
sellprice | string | Selling price | "24.11" |
serviceScore | decimal | Average service rating | |
setNum | int | setNum | 5 |
shop_id | string | Supplier shop ID | |
shop_logo | string | Supplier shop logo | |
shop_name | string | Supplier shop name | |
shopifyUrlException | boolean | Whether the Shopify redirect URL is abnormal | false |
sku | string | sku | "CJZD1005753" |
soldOut | int | Sales volume in the last 90 days | |
sourceFrom | string | Product source | "0" |
stanProducts | array | Variant list | array of objects |
supplier | string | Supplier ID | |
supplierName | string | Supplier name | |
supplierNameEn | string | Supplier shop name | |
supplierVersion | int | Inventory version for supplier self-shipped products; 0: legacy version, greater than 0: new version | |
supplier_id | string | Supplier ID | |
supplierlink | string | Supplier URL | "" |
supportLabels | array | Supported label service list | [] |
syncListedProductStatus | string | Listing status of the product; 0: pending, 1: in progress, 2: failed, 3: succeeded, 4: cancelled | |
templateUrl | string | Template download URL | "" |
thirdAttributeList | array | Third-party product attributes | |
thirdMinOrderQuantity | int | Third-party minimum order quantity | |
thirdProductUrl | string | Third-party product URL | |
thirdSellPrice | string | Third-party product price | |
thirdVideoList | array | Third-party video list | |
totalQuantity | int | Total received quantity (for an SPU, the sum across its listed SKUs) | 0 |
totalRefundQuantity | int | Total refunded quantity (for an SPU, the sum across its listed SKUs) | 0 |
unit | string | Unit | |
unsoldPrice | string | Unsold price of the product | |
updateAt | object | Product update time; compared against the OSS upload time | 1787822429000 |
updatePriceDate | string | Price update time | "1632742657000" |
uploadOssAt | object | OSS upload time; compared against the product update time | 1787822471915 |
usdToRateConversionFee | decimal | USD-to-currency exchange fee rate as a decimal (0.04 = 4%) | |
usdTradeFee | decimal | USD transaction fee rate as a decimal (0.04 = 4%) | |
variantInventories | string | Variant inventory (internal ES/OSS data, not exposed externally) | |
variantInventory | array | Variant inventory | array of objects |
variantkey | string | Variant attribute key | "容量-椰子" |
variantkeyen | string | Variant attribute key | "capacity-color" |
verifiedWarehouse | int | 1: verified inventory, 2: inventory pending verification | 1 |
videoList | array | Video ID list | |
wed2cUrlException | boolean | Whether the Wed2c redirect URL is abnormal | false |
weight | string | Product weight | "10.00" |
wholePriceType | int | Wholesale price type; 0: product level, 1: variant level, -1: no wholesale price | |
wholesaleOff | int | Whether the CJ wholesale price is set (1: enabled, 0: disabled) | 10 |
woocommerceUrlException | boolean | Whether the WooCommerce redirect URL is abnormal | false |
xiaoShouJianYi | string | Sales suggestion | |
zoneRecommendList | array | Zone settings | array of objects |
stanProducts[] variant object (40 fields)
| field | type | description | example in this response |
|---|---|---|---|
amountOnSale | int | 1688 inventory | |
countryInvs | object | Variant inventory | |
customResources | array | Customisation information | |
designTime | int | Time of the last design | |
designUser | string | Name of the last designer | |
discountPrice | string | Discount price | |
discountPriceRate | string | Discount rate | |
disputeStatDate | int | Update time | |
effectLinks | array | Rendering image list | |
expandField | string | Product wholesale price | "{"values":{"value2":"装饰品",\… |
freightDiscount | int | freightDiscount | 100 |
id | string | Variant ID | "1442332573685649408" |
img | string | Variant image | "https://cf.cjdropshipping.com/2c1… |
invs | array | Inventory information | |
isCombine | int | Whether it is a combined product (0: no, 1: yes) | 0 |
isUnsold | string | Whether the variant is unsold; 1: unsold, 0: not unsold | "0" |
isUnsoldVariant | int | Whether the variant is unsold (slow-moving) | 0 |
latestPaymentDate | int | Latest order payment time for this SKU (epoch millis) | |
nameen | string | Variant name (EN) | "Baozhuanggexingdingzhi2 512GB Orn… |
nowPrice | string | Discount price | |
orderCount | int | Number of orders under this SPU | 0 |
packweight | decimal | Packaging weight | 10 |
pid | string | Product ID | "1442332573555625984" |
priceRatio | decimal | Suggested retail price ratio | 0.3 |
qualityDisputeRate | string | Dispute rate | "0.00" |
selfCrdLinks | array | Original image list | |
selfPickupPrice | decimal | Self-pickup price | |
sellDiscount | int | Sales discount | 100 |
sellprice | string | Variant selling price | "24.11" |
shopMethod | string | Shop name | "" |
sku | string | SKU | "CJZD100575303CX" |
standard | string | Dimensions, e.g. long=0,width=0,height=0 | "long=12,width=12,height=12" |
supportLabels | array | Supported label service list | |
thirdSellPrice | string | Third-party product price | |
totalInventory | int | Total variant inventory | |
tradePrice | array | Stock-up price | |
unsoldPrice | decimal | Unsold price of the variant | |
variantkey | string | Basic variant attributes | "512GB-Ornaments" |
weight | decimal | Variant weight | 10 |
wholesalePrice | object | Wholesale price | object |
stanProducts[].wholesalePrice (3 fields)
| field | type | description | example in this response |
|---|---|---|---|
cjWholesalePrice | array | CJ wholesale price | |
directWholesalePrice | array | Direct-shipping wholesale price | |
updatePriceDate | int | Direct-shipping wholesale price |
variantInventory[] (2 fields)
| field | type | description | example in this response |
|---|---|---|---|
inventory | array | Inventory information | array of objects |
vid | string | Variant ID | "1442332573668872192" |
variantInventory[].inventory[] (5 fields)
| field | type | description | example in this response |
|---|---|---|---|
cjInventory | int | Actual inventory quantity | 4041 |
countryCode | string | Country code | "CN" |
factoryInventory | int | Virtual inventory quantity | 42042 |
totalInventory | int | Total inventory quantity | 46083 |
verifiedWarehouse | int | 1: verified inventory, 2: inventory pending verification | 1 |
labelConfigs[] (5 fields)
| field | type | description | example in this response |
|---|---|---|---|
amount | decimal | Fee (USD) | 4 |
labelOptionName | string | Label attribute name (e.g. Size) | |
labelOptionValues | array | Label attribute values (e.g. S/M/L) | |
standardAmount | decimal | Standard fee (USD) | 0.1 |
type | string | Label type: CUT_LABEL / CHANGE_LABEL | "CUT_LABEL" |
zoneRecommendList[] (5 fields)
| field | type | description | example in this response |
|---|---|---|---|
url | string | Redirect path | "/zone/2f26a301-2f61-48d6-ad44-e50… |
zoneDetailId | string | Zone ID | "2f26a301-2f61-48d6-ad44-e5094090a… |
zoneId | string | Zone ID | "2602281003410645700" |
zonePlatform | string | Recommended selling platform for the zone | "Etsy" |
zonePlatformV2 | string | Recommended selling platform for the zone | "Etsy" |
An empty "example in this response" cell means the field was empty for this particular product; it does not mean the field is always empty - it depends on the product (supplier info, discount price, video list, 1688-related fields, etc.). Rely on the "type" and "description" columns for the field's meaning.
# 1.11 Create Individualization Product(POST)
Create a POD individualization (customized) product.
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/individualization/add
# CURL
Below is a complete, actually working request (four colour variants, one text design area). Replace the values with those of your own product:
curl --location 'https://developers.cjdropshipping.com/api2.0/v1/product/individualization/add' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"originalPid": "1448529739601022976",
"cid": "87CF251F-8D11-4DE0-A154-9694D9858EB3",
"nameEn": "You are the one",
"printItemName": "You are the one",
"description": "You are the one",
"shopMethod": "Please Select",
"type": "2",
"variantKey": "颜色-像素",
"variantKeyEn": "color-pixel1",
"img": "https://cc-west-usa.oss-us-west-1.aliyuncs.com/xxx_AntiqueSilver.png,https://cc-west-usa.oss-us-west-1.aliyuncs.com/xxx_Khaki.png,https://cc-west-usa.oss-us-west-1.aliyuncs.com/xxx_LightGrey.png,https://cc-west-usa.oss-us-west-1.aliyuncs.com/xxx_Beige.png",
"bigImg": "https://cc-west-usa.oss-us-west-1.aliyuncs.com/xxx_Beige.png",
"customeDesign": [
{
"areaName": "quyumingc",
"type": "1",
"layer": [
{
"type": "Text",
"imgsrc": "",
"title": "Your Color",
"info": "Excellent/178DPI",
"isShow": true,
"val": "Default Font",
"fontFamily": "Arial",
"fontSize": 16,
"fill": "#000",
"stroke": "#000",
"strokeWidth": 0,
"scaleX": 1,
"scaleY": 1,
"originX": "center",
"originY": "center",
"angle": 0,
"charSpacing": 0
}
],
"links": [
"https://cc-west-usa.oss-us-west-1.aliyuncs.com/xxx_Beige.png"
]
}
],
"variants": [
{
"originalVid": "1448529741211635712",
"childsku": "Antique Silver-4k",
"img": "https://cc-west-usa.oss-us-west-1.aliyuncs.com/xxx_AntiqueSilver.png",
"variantKey": "Antique Silver-4k",
"nameEn": "You are the one Antique Silver 4k"
},
{
"originalVid": "1448529741245190144",
"childsku": "Beige-4k",
"img": "https://cc-west-usa.oss-us-west-1.aliyuncs.com/xxx_Beige.png",
"variantKey": "Beige-4k",
"nameEn": "You are the one Beige 4k"
}
]
}'
Three things in this example are the ones most often got wrong:
imgis a single string with multiple URLs joined by commas (four variant renders in the example) — it is not an array;bigImgholds exactly one URL.variantKeyandvariants[].variantKeyshare a name but not a meaning: the top-level one is the attribute dimension name (颜色-像素in the example, dimensions joined by-), while the one inside a variant is that variant's attribute values (Antique Silver-4k).customeDesignis an array (one element per design area), not a single object — see "customeDesign structure" below.
# Request Parameters
| parameter | description | type | required | remark |
|---|---|---|---|---|
| printItemName | print item name | string | N | You are the one in the example; usually the same as nameEn |
| description | description | string | N | |
| shopMethod | shop method | string | N | Passed through as-is; the example sends Please Select when nothing is chosen |
| customeDesign | custom design content | array | N | An array — one element per design area, see "customeDesign structure" below; passed through as-is |
| originalPid | original product ID | string | N | The base product; take it from 1.10 Query Product Detail |
| cid | category ID | string | N | Category ID of the base product (a GUID in the example) |
| variantKey | variant key | string | N | Attribute dimension name, dimensions joined by -, e.g. 颜色-像素; do not confuse it with variants[].variantKey |
| variantKeyEn | variant key (English) | string | N | The English dimension name, e.g. color-pixel1 |
| img | image | string | N | Multiple URLs joined by commas into ONE string, typically one render per variant. Non-CJ image URLs are transferred automatically |
| bigImg | big image | string | N | Exactly one URL, usually one of those in img. Non-CJ image URLs are transferred automatically |
| variants | variant list | array | N | see below |
| nameEn | English name | string | N | English name of the new product |
| type | type | string | N | Passed through as-is; the example sends "2" (a string). Value semantics are business-defined |
| search | search keyword | string | N | |
| pageSize | page size | string | N | |
| pageNum | page number | string | N | |
| pid | product ID | string | N | |
| originalCustomeDesign | original custom design | string | N | |
| productSku | product SKU | string | N | |
| handleType | POD3.0 batch submission marker | int | Conditional | Required for POD3.0 products: 1=first submission (save the product), 3=last submission (calculate range price); for a single submission use 1. If omitted and the product is POD3.0: with a shelved variant → param error; with all variants unshelved → 500 (NPE). Whether it is POD3.0 is decided server-side and cannot be known in advance, so it is recommended to always pass 1. Values 0/2 are not recognized. The example above does not send it — its base product is not POD3.0, so it got away with that; with a POD3.0 base product the call would fail |
| mainDomain | main domain | string | N | |
| variants[].originalVid | original variant ID | string | N | Variant ID of the base product; take it from 2.1 Query All Variants |
| variants[].childsku | child SKU | string | N | The example sends the attribute values (e.g. Antique Silver-4k), not a full SKU code |
| variants[].img | variant image | string | N | Exactly one URL, the render for this variant. Non-CJ image URLs are transferred automatically, see below |
| variants[].variantKey | variant key | string | N | This variant's attribute values (e.g. Antique Silver-4k), unlike the top-level variantKey (dimension name) |
| variants[].nameEn | English name | string | N | English name of the variant; "product name + attribute values" in the example |
About "required": none of the fields above is enforced at the request layer (hence N everywhere), but business-wise
originalPid/cid/nameEn/variants/customeDesignare all indispensable — the CURL above is the minimum working set; send the fields it sends.
# Automatic image transfer
URLs sent in img / bigImg / variants[].img are automatically downloaded and transferred to CJ's image
storage when they are not already on a CJ image domain; the CJ URL is what gets stored downstream. This avoids
product images depending on external links, which may expire, be blocked by hotlink protection, or be
unreachable in some regions.
- URLs that are already CJ image links are not transferred again and are kept as-is.
- A failed transfer does not block product creation: that image keeps the URL you sent and the product is still created. So if a product image is still your own external link, the transfer for that image failed (usually because the URL is not publicly reachable) — send a publicly accessible URL and retry.
- The transfer uses
originalPidto build the storage path, so no transfer happens whenoriginalPidis omitted; images are stored with the original URLs.
# Sending multiple images
Only img accepts multiple images, joined by commas:
"img": "https://a.jpg,https://b.jpg"
bigImgandvariants[].imgaccept exactly one URL; the whole string is treated as one address, so a comma inside them (URLs may legitimately contain commas) is never used to split the value.- When
imgcarries multiple URLs, each of them is evaluated for transfer independently and the value is returned as a comma-joined string.
# customeDesign structure
customeDesign is an array; each element is one design area on the product (front, back, ...). The
structure is produced by the CJ design tool and this endpoint passes it through as-is into the product's
customisation data, so field names and casing must be copied exactly (note it is imgsrc, not imgSrc).
| Parameter | Definition | Type | Note |
|---|---|---|---|
| areaName | design area name | string | Identifier of the area, quyumingc in the example; Front / Design Area are common on-site |
| type | area type | string | "1" (a string) in the example; readable values such as Picture and Text also occur on-site — copy what the base product's design area is configured with |
| links | area renders | array<string> | Composed render of this area per variant/colour, in the same order as the variants |
| layer | layer list | array | Layers inside this area, see below |
Each layer element (a text layer in the example):
| Parameter | Definition | Type | Note |
|---|---|---|---|
| type | layer type | string | Text in the example; also Picture (image layer) and Picture and Text |
| val | text content | string | The actual copy of a text layer, Default Font in the example |
| title | layer title | string | Layer name shown in the design tool; image layers usually carry the file name |
| imgsrc | image URL | string | Image layers only; text layers send an empty string "". Note the all-lowercase imgsrc |
| info | quality hint | string | Generated by the design tool, e.g. Excellent/178DPI |
| isShow | visible | boolean | |
| fontFamily | font | string | e.g. Arial |
| fontSize | font size | int | |
| charSpacing | character spacing | int | |
| fill | fill colour | string | Hex colour, e.g. #000 |
| stroke | stroke colour | string | |
| strokeWidth | stroke width | int | 0 = no stroke |
| scaleX / scaleY | horizontal / vertical scale | number | 1 = original size |
| originX / originY | origin point | string | center in the example |
| angle | rotation | number | In degrees, 0 = no rotation |
Image layers additionally carry
top/left(position) and fields likeimgScalex; these are passed through as-is too — send whatever the design tool produced.
# Return
success
{
"code": 200,
"result": true,
"message": "Success",
"data": {
"statusCode": "200",
"result": "1453252786299998208",
"message": "200",
"data": "CJPOD001"
},
"requestId": "ae543fd1-cdd7-4a61-974a-1340fea678c6"
}
failure (duplicate SKU as an example)
{
"code": 1600000,
"result": false,
"message": "status error",
"data": {
"statusCode": "808",
"result": null,
"message": "status error",
"data": null
},
"requestId": "ae543fd1-cdd7-4a61-974a-1340fea678c6"
}
| return field | description | type | remark |
|---|---|---|---|
| data.statusCode | business status code | string | 200 = success, 808 = duplicate SKU, 504 = creation failed. Use this field to determine the business result |
| data.result | operator ID | string | On success, the recorded creator ID; null on failure |
| data.message | message | string | ⚠ On success this field is the string "200" (the status code), not a readable message; only on failure does it carry text (e.g. "status error") |
| data.data | new product SKU | string | On success, the SKU of the newly created customized product (not the product ID); null on failure |
Important - how to tell whether creation succeeded
Rely on
data.statusCode:200means the product was created, anddata.datais then the SKU of the new customized product.808(duplicate SKU) and504(creation failed) both mean the product was not created, and the outerresultwill befalse.Note that on success
data.messageis"200"rather than readable text (existing upstream behaviour) - do not use it to determine the result.The creator is recorded by CJ from your API credential automatically - it cannot (and need not) be specified in the request.
# 1.12 Query Products By Image(POST)
Access requirement
This API has an account-level threshold:
- Accounts at Level 3 or above can call it directly — no application and no approval required;
- Accounts below Level 3 get
401 Unauthorized. Please raise your account level first;
Search for visually similar products in the CJ product catalog by providing an image URL. The API returns a list of matched products that are currently on sale.
Note
This API only returns products with saleStatus = 3 (Approved / On sale), and it returns product summary
information only - it does not include the full variant list. For variants, sizing charts and other details,
call 1.10 Query Product Detail.
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/queryProductsByImage
# CURL
curl --location 'https://developers.cjdropshipping.com/api2.0/v1/product/queryProductsByImage' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"imageUrl": "https://example.com/sample-product.jpg"
}'
# Request Parameters
| parameter | description | type | required | length | remark |
|---|---|---|---|---|---|
| imageUrl | image URL | string | Yes | 500 | Must be a publicly accessible image URL |
# Return
success
{
"code": 200,
"result": true,
"message": "Success",
"data": [
{
"id": "2503130846171622700",
"bigImage": "https://oss-cf.cjdropshipping.com/product/2025/07/07/08/a3f0d6db-38bf-4a18-baf4-9cf8c35346d8.jpg",
"category": "Women's Clothing > Tops & Sets > Lady Dresses",
"categoryId": "D2432903-0D4E-4787-886F-D3D9DA7890D9",
"description": "<p><b>Overview:</b>...</p><p><b>Size:</b> S,M,L,XL</p>...",
"image": "[\"https://oss-cf.cjdropshipping.com/product/2025/07/07/08/a3f0d6db-38bf-4a18-baf4-9cf8c35346d8.jpg\",\"https://cf.cjdropshipping.com/quick/product/8827d8d5-a8d8-4e2e-bdfc-ae88b9ee0985.jpg\"]",
"inventory": null,
"material": "[\"布料\"]",
"materialEn": "[\"Cloth\"]",
"materialKey": "[\"FABRIC\"]",
"name": "[\"2025欧美跨境外贸夏季爆款性感女吊带露背荷叶边不规则连衣裙礼服\"]",
"nameEn": "Women's Backless Ruffles Irregular Dress Summer Fashion Evening Party Club Split Suspender Maxi Dresses Clothing",
"packWeight": "250.00-320.00",
"packing": "[\"塑料袋\"]",
"packingEn": "[\"Plastic bags\"]",
"packingKey": "[\"PLASTIC_BAG\"]",
"property": "[\"服装\"]",
"propertyEn": "[\"Clothes\"]",
"propertyKey": "[\"Clothes\"]",
"saleStatus": "3",
"sellPrice": "8.13-8.62",
"sku": "CJLY2326436",
"unit": null,
"variantKey": "[\"颜色\",\"尺码\"]",
"variantKeyEn": "[\"Color\",\"Size\"]",
"weight": "230.00-300.00",
"addMarkStatus": 0,
"productType": "0",
"listedNum": 622,
"createAt": 1741855577000
}
],
"requestId": "a3189ad0a02e493fb4d2f422207b31e0"
}
empty result (data is an empty array when nothing matches)
{
"code": 200,
"result": true,
"message": "Success",
"data": [],
"requestId": "7c2a1b3d-4e5f-6789-a0b1-c2d3e4f56789"
}
error (account level below Level 3 / invalid token)
{
"code": 401,
"result": false,
"message": "Unauthorized",
"data": null,
"requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
# Return Parameters
| return field | description | type | length | remark |
|---|---|---|---|---|
| code | response code | int | 20 | 200 means success, Error Code Standard Table |
| result | whether the request succeeded | boolean | 1 | |
| message | response message | string | 200 | |
| data | list of matched products | array | See the data field description below | |
| requestId | request Id | string | 48 | Used for error log lookup |
# data field description
| return field | description | type | remark |
|---|---|---|---|
| id | product ID | string | |
| bigImage | product display image (large) | string | image URL |
| category | product category | string | |
| categoryId | category ID | string | |
| description | product description | string | Rich text in HTML format, may contain sizing chart images, product images, etc. |
| image | product image list | string | JSON array string, e.g. ["https://...jpg","https://...jpg"] |
| inventory | total inventory | string | May be null |
| material | product material | string | JSON array format, e.g. ["Cloth"] |
| materialEn | product material (English) | string | JSON array format, e.g. ["Cloth"] |
| materialKey | product material key | string | JSON array format, e.g. ["FABRIC"] |
| name | product name | string | JSON array string |
| nameEn | product name (English) | string | |
| packWeight | package weight | string | Unit: grams. May be a range, e.g. "250.00-320.00" |
| packing | product packaging | string | JSON array format, e.g. ["Plastic bags"] |
| packingEn | product packaging (English) | string | JSON array format, e.g. ["Plastic bags"] |
| packingKey | product packaging key | string | JSON array format, e.g. ["PLASTIC_BAG"] |
| property | product logistics attributes | string | JSON array format, e.g. ["Clothes"], ["Ordinary"] |
| propertyEn | product logistics attributes (English) | string | JSON array format, e.g. ["Clothes"], ["Ordinary"] |
| propertyKey | product logistics attributes key | string | JSON array format, e.g. ["Clothes"], ["COMMON"] |
| saleStatus | product sale status | string | 3 = Approved (On sale). This API only returns products with saleStatus=3 |
| sellPrice | retail price | string | Unit: $ (USD). May be a single price or a range, e.g. "8.13-8.62", "9.95" |
| sku | product SKU | string | |
| unit | product selling unit | string | e.g. "pcs", "set". This is the measurement unit, NOT a currency unit; may be null for some products |
| variantKey | variant dimension names (Chinese) | string | e.g. ["颜色","尺码"]. These are dimension names, not the actual variant values |
| variantKeyEn | variant dimension names (English) | string | e.g. ["Color","Size"]. These are dimension names, not the actual variant values |
| weight | product weight | string | Unit: grams. May be a range, e.g. "230.00-300.00" |
| addMarkStatus | free shipping flag | integer | 0: No, 1: Yes |
| productType | product type | string | 0 = Ordinary, 1 = Service, 3 = Packaging, 4 = Supplier, 5 = Supplier self-shipping |
| listedNum | total listing count | integer | |
| createAt | product creation time | date | Timestamp in milliseconds, e.g. 1741855577000 |
# productType reference
| product type | code | description |
|---|---|---|
| ORDINARY_PRODUCT | 0 | Ordinary products, inventory and shipping managed by CJ |
| SERVICE_PRODUCT | 1 | Service products. If you transfer your own goods to a CJ warehouse, CJ provides warehousing services and marks it as a service item |
| PACKAGING_PRODUCT | 3 | Packaging products, used for packaging when shipped from the warehouse. They cannot be shipped separately and must be shipped together with other goods |
| SUPPLIER_PRODUCT | 4 | Supplier products. Inventory managed together with CJ's partner supplier, shipped by CJ |
| SUPPLIER_SHIPPED_PRODUCT | 5 | Supplier self-shipping products. Managed and shipped by the supplier directly |
# Error Codes
| code | meaning | suggested action |
|---|---|---|
200 | Success | Process the returned data normally |
401 | Authentication failed (account level below Level 3, or invalid token) | Make sure the account is at Level 3 or above, or refresh the token and retry |
402 | Reached the per-second call limit | Wait and retry later. Consider a client-side rate-limiting queue |
406 | Request too frequent | Wait a moment before retrying |
429 | Rate limit triggered (30 requests/second/app) | Reduce the call frequency and retry |
# FAQ
What currency is sellPrice in?
sellPrice is in $ (USD). For example, "15.99" means $15.99. The unit field is the product's selling measurement unit (e.g. "pcs", "set"), not the currency; it may be null for some products.
Where are the actual values for variantKey / variantKeyEn?
variantKey and variantKeyEn are only the variant dimension names (e.g. "Color", "Size"), not the actual variant values. To get each variant's specific attribute value combination (e.g. Black-XXL), call 1.10 Query Product Detail; in the returned variants array, each variant object's variantKey field contains the specific attribute values joined by -.
How to get color variations and sizing charts?
This API returns product summary information only and does not include the full variant list. Use 1.10 Query Product Detail to get the complete variants array, which includes each variant's variantKey (attribute value combination), variantImage (variant image), variantSellPrice (variant price in USD) and variantWeight, variantLength, variantWidth, variantHeight (variant dimensions and weight). For size charts, use 1.13 Query Cross-Country Size Chart, which returns structured sizing data directly. For products it does not yet cover (and for size chart images), you still need to extract them from the HTML content of the description field.
# 1.13 Query Cross-Country Size Chart(GET)
Query the cross-country size chart configured for a product by product id. Returns structured sizing data (the size code for each destination country/region and the measurement value for each size parameter), ready to render a size chart.
Note
1.10 Query Product Detail returns the raw stored string of the size chart — its format is not published and parsing it is not recommended. This API returns an already-parsed structured object and is the recommended way.
This API supports pid only — productSku / variantSku are not accepted. If you only have a SKU, first call 1.5 Product Details (which accepts pid / productSku / variantSku), take the pid from its response, then call this API.
Coverage
This capability only covers products created after this feature went live that have a size chart configured. Size charts of older products were not archived in the new way, so this API cannot retrieve them and returns configured = false. If you need the size chart of an older product, report the product to your Account Manager (AM); once the AM has filled it in, the product becomes retrievable through this API.
This API does not return size chart images. Size chart images are currently embedded in the product description rich text as ordinary images, with no dedicated type marker, so they cannot be reliably distinguished from the description.
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/sizeChart/query
# CURL
curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/product/sizeChart/query?pid=000B9312-456A-4D31-94BD-B083E2A198E8' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# Request Parameters
| parameter | description | type | required | length | remark |
|---|---|---|---|---|---|
| pid | Product id | string | Y | 200 | Unique product identifier. This API supports pid only |
# Return
Size chart configured
{
"code": 200,
"result": true,
"message": "Success",
"data": {
"pid": "000B9312-456A-4D31-94BD-B083E2A198E8",
"configured": true,
"baseVariantKey": "Size",
"countries": ["EU US"],
"sizeParams": ["Lenght", "Bust"],
"paramUnits": {},
"chartData": [
{
"baseValue": "L",
"areaValues": [{ "country": "EU US", "value": "M" }],
"paramValues": [
{ "paramName": "Lenght", "unitCode": "", "main": "20", "sub": "7.87" },
{ "paramName": "Bust", "unitCode": "", "main": "100", "sub": "39.37" }
]
},
{
"baseValue": "M",
"areaValues": [{ "country": "EU US", "value": "S" }],
"paramValues": [
{ "paramName": "Lenght", "unitCode": "", "main": "19", "sub": "7.48" },
{ "paramName": "Bust", "unitCode": "", "main": "96", "sub": "37.80" }
]
},
{
"baseValue": "S",
"areaValues": [{ "country": "EU US", "value": "XS" }],
"paramValues": [
{ "paramName": "Lenght", "unitCode": "", "main": "18", "sub": "7.09" },
{ "paramName": "Bust", "unitCode": "", "main": "92", "sub": "36.22" }
]
},
{
"baseValue": "XL",
"areaValues": [{ "country": "EU US", "value": "L" }],
"paramValues": [
{ "paramName": "Lenght", "unitCode": "", "main": "21", "sub": "8.27" },
{ "paramName": "Bust", "unitCode": "", "main": "104", "sub": "40.94" }
]
}
]
}
}
Product queryable but no size chart configured
{
"code": 200,
"result": true,
"message": "Success",
"data": {
"pid": "000B9312-456A-4D31-94BD-B083E2A198E8",
"configured": false,
"baseVariantKey": null,
"countries": null,
"sizeParams": null,
"paramUnits": null,
"chartData": null
}
}
Product not found or not queryable
{
"code": 1602001,
"result": false,
"message": "Product not found: pid:xxx",
"data": null
}
# Return Parameters
| parameter | description | type | when null |
|---|---|---|---|
| pid | Product id, echoed back from the request | string | Never null |
| configured | Whether the product has a parsable size chart | boolean | Never null |
| baseVariantKey | The attribute name used as the base value of the chart (e.g. Size), i.e. which product attribute this chart is laid out by | string | null when configured is false |
| countries | Destination country/region list. The order is the column order, matching each row's areaValues position by position | string array | null when configured is false |
| sizeParams | Size parameter name list (e.g. Bust, Waist). The order is the column order, matching each row's paramValues position by position | string array | null when configured is false |
| paramUnits | Mapping of parameter name to unit code. Only non-length dimensions are listed; a parameter absent from this map is a length dimension | object | null when configured is false; an empty object when every parameter is a length dimension |
| chartData | Size rows, one row per size level | object array | null when configured is false |
chartData array element
| parameter | description | type | when null |
|---|---|---|---|
| baseValue | Base value, i.e. the size level, e.g. S / M / L / 2XL | string | Never null |
| areaValues | Size code per destination country, ordered the same as countries | object array | Never null; an empty array when countries is empty |
| paramValues | Measurement value per size parameter, ordered the same as sizeParams | object array | Never null; an empty array when sizeParams is empty |
chartData[].areaValues array element
| parameter | description | type | when null |
|---|---|---|---|
| country | Destination country/region, one of the values in countries | string | Never null |
| value | The size code for that country. Free text, displayed as-is with no conversion, may contain a hyphen such as US size 2-4 | string | Never null; an empty string when not filled in |
chartData[].paramValues array element
| parameter | description | type | when null |
|---|---|---|---|
| paramName | Parameter name, one of the values in sizeParams | string | Never null |
| unitCode | Unit code declaring which dimension this parameter belongs to, see the unit reference below | string | Never null; a length dimension returns an empty string rather than null |
| main | Main value, centimetres for a length dimension, grams for a weight dimension | string | Never null; an empty string when not filled in |
| sub | Sub value, inches for a length dimension, pounds for a weight dimension, pre-converted by CJ so use it directly and do not convert yourself | string | Never null; an empty string when not filled in |
# Unit reference
| unitCode | dimension | main | sub | conversion |
|---|---|---|---|---|
| empty string | Length | cm | inch | inch = cm × 0.3937 |
| g | Weight | gram | pound | lb = g ÷ 453.59237 |
The weight dimension is the recommended body weight (which weight range this size fits), not the product's net weight. If new dimensions are added later, only a new unitCode value appears — the response structure stays the same and your parsing logic needs no change.
# The four forms of main and sub
main and sub are always strings, with four forms that are independent of the dimension (a length can be a range; a weight can be a single value):
| form | length example (main / sub) | weight example (main / sub) |
|---|---|---|
| Single value | "88" / "34.65" | "60000" / "132.28" |
| Closed range | "88-92" / "34.65-36.22" | "50000-60000" / "110.23-132.28" |
| Open range, greater or equal | "≥88" / "≥34.65" | "≥60000" / "≥132.28" |
| Open range, less or equal | "≤92" / "≤36.22" | "≤50000" / "≤110.23" |
| Empty | "" / "" | "" / "" |
Do not call parseFloat on main / sub
parseFloat("88-92") silently truncates to 88 — the upper bound is lost with no error, and your buyer ends up seeing the wrong measurement. Treat them as strings; when you need to tell a single value from a range or an open range, check the ≥ / ≤ prefix and the hyphen yourself.
≥(U+2265) and ≤(U+2264) are non-ASCII characters — make sure your client handles UTF-8.
# Error Codes
| code | meaning | suggested action |
|---|---|---|
200 | Success | Process the returned data normally |
1600002 | No access token supplied (HTTP 401) | Send a valid token in the CJ-Access-Token header. See Authentication |
1600001 | Access token is invalid or has expired (HTTP 401) | Obtain a new token and retry. See Authentication |
1600200 | QPS limit exceeded (HTTP 429). This endpoint allows 2 requests/second by default | Lower the call rate and apply retry backoff. When pulling size charts in bulk, call serially or add an interval between calls |
1600300 | Parameter error (HTTP 400), e.g. pid not supplied, or pid longer than 200 characters | Fix the request parameters according to message in the response and retry |
1600014 | The account's API access has been disabled | Reactivate it on the API authorisation page and retry |
16900500 | Insufficient API points | Top up your points or wait for them to replenish, then retry |
1600100 | The endpoint has been taken offline | Stop calling it and watch for platform announcements |
1602001 | Product not found (pid does not exist, or the product has been deleted) | Check that the pid is correct |
| Other business code | The product is not queryable for the current account, e.g. removed from shelves, private-visible product without authorisation, site restriction | See message in the response for the reason |
# FAQ
Why is chartData not ordered from the smallest size to the largest?
This API returns the stored order (the same order shown on the CJ product page); it does not represent size order. In the example above the order is L, M, S, XL. Sort it yourself if you need to display sizes from small to large.
What is "EU US" in countries? Why is it not a standard country code?
It is a combined value meaning "EU/US common sizing". The field is free text and its value is decided when the product is created, so it is not guaranteed to be an ISO country code. Do not parse or match it as a country code.
Is "Lenght" in sizeParams a typo? Can I hard-code parameter name matching?
Parameter names are the values entered when the product was created; they may contain spelling variants (such as Lenght) or spaces (such as Top Lenght). Do not hard-code parameter name matching — index into paramValues by the order of sizeParams.
Does configured = false always mean the product has no size chart?
No. Besides "genuinely not configured", a small number of products — supplier products in particular — may also return configured = false because of how product data is retrieved upstream. If you can see a size chart for the product on the CJ product page but this API returns false, contact your Account Manager (AM) to verify.
How long after configuring a size chart can it be queried through this API?
Sizing data comes from a product data snapshot, so there is a short delay after a size chart is configured or modified before it takes effect here. Product visibility is judged from the same snapshot; right after a product is removed from shelves or private-visible authorisation changes, this API may briefly still return the old conclusion — treat 1.5 Product Details as authoritative.
# 2 Variant
# 2.1 Inquiry Of All Variants (GET)
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/variant/query
# CURL
curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/product/variant/query?pid=00006BC5-E1F5-4C65-BE2B-3FE0956DA21C' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| pid | Product id | string | Choose one of three | 200 | Inquiry criteria |
| productSku | Product sku | string | Choose one of three | 200 | Inquiry criteria |
| variantSku | variant sku | string | Choose one of three | 200 | Inquiry criteria |
| countryCode | Country Code | string | N | 2 | If the parameter has a value, only variants with inventory in that country will be returned. If no value is passed, inventory will not be restricted |
# Return
success
{
"code": 200,
"result": true,
"message": "Success",
"data": [
{
"vid": "1D72A20A-D113-4FAB-B4BA-6FE1A6A14A3A",
"pid": "77501FB4-7146-452E-9889-CDF41697E5CF",
"variantName": null,
"variantNameEn": "Wwerwieurieowursdklfjskldjfklsdjfksljfklsdjfkldsjfksdjfksljfksdlfsfdfgf XS",
"variantSku": "CJJSBGBG01517-XS",
"barcode": "6973990191234",
"variantStandard": "long=5,width=5,height=5",
"variantUnit": null,
"variantKey": "Black-XXL",
"variantLength": 5,
"variantWidth": 5,
"variantHeight": 5,
"variantVolume": 27,
"variantWeight": 3.00,
"variantSellPrice": 3.00,
"createTime": null
}
],
"requestId": "00765963-35d0-4a6a-b5cf-aa6731793b10"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| vid | Variant ID | string | 200 | |
| pid | Product ID | string | 200 | |
| variantName | Variant name | string | 200 | |
| variantNameEn | Variant name (EN) | string | 200 | |
| variantImage | Variant image | string | 200 | |
| variantSku | Variant sku | string | 200 | |
| barcode | Barcode | string | 200 | Unique identifier of the CJ variant, used in CJ warehouses; numeric only, present on all variants |
| variantUnit | Variant unit | string | 200 | |
| variantProperty | Variant property | string | 200 | |
| variantKey | Variant Options | string | 200 | Variant Options, multiple options, joined by -, eg: Black-XXL |
| variantLength | Variant length | int | 200 | Unit: mm |
| variantWidth | Variant width | int | 200 | Unit: mm |
| variantHeight | Variant height | int | 200 | Unit: mm |
| variantVolume | Variant volume | int | 200 | Unit: mm³ |
| variantWeight | Variant weight | int | 200 | Unit: g |
| variantSellPrice | Variant sell price | BigDecimal | 200 | Unit: $ (USD) |
| createTime | Create time | string | 200 | |
| variantStandard | variant standard | string | 200 | |
| variantSugSellPrice | variant suggest sell price | BigDecimal | 200 | Unit: $ (USD) |
error
{
"code": 1600100,
"result": false,
"message": "Param error",
"data": null,
"requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| code | error code | int | 20 | Reference error code |
| result | Whether or not the return is normal | boolean | 1 | |
| message | return message | string | 200 | |
| data | return data | object | interface data return | |
| requestId | requestId | string | 48 | Flag request for logging errors |
# 2.2 Variant Id Inquiry (GET)
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/variant/queryByVid
# CURL
curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/product/variant/queryByVid?vid=1371342252697325568' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| vid | Variant ID | string | Y | 200 | Inquiry criteria |
| features | features | string | N | 200 | enable_inventory (includes inventory, returns variant inventory info (include storage id) when passed) |
# Return
success
{
"code": 200,
"result": true,
"message": "Success",
"data": {
"vid": "1371342252697325568",
"pid": "00006BC5-E1F5-4C65-BE2B-3FE0956DA21C",
"variantName": null,
"variantNameEn": "a-Baby pacifier chain test1 Grey",
"variantSku": "CJJSBGDY00002-Grey",
"barcode": "6973990191234",
"variantUnit": null,
"variantKey": "Black-XXL",
"variantLength": 3,
"variantWidth": 3,
"variantHeight": 3,
"variantVolume": 27,
"variantWeight": 3.00,
"variantSellPrice": 3.00,
"createTime": "2021-03-15T14:07:26.000+00:00",
"inventories": [
{
"countryCode": "CN",
"totalInventory": 11092,
"cjInventory": 0,
"factoryInventory": 11092,
"verifiedWarehouse": 2,
"stock": [
{
"stockId": "{6709CCD7-0DC7-43B1-B310-17AB499E9B0A}",
"inventory": 0,
"factoryInventory": 11092
}
]
}
]
},
"requestId": "9b86a5e2-40c3-492c-92b2-4634fa4c4a21"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| vid | Variant id | string | 200 | |
| pid | Product id | string | 200 | |
| variantName | Variant name | string | 200 | |
| variantNameEn | Variant name (EN) | string | 200 | |
| variantImage | Variant image | string | 200 | |
| variantSku | Variant sku | string | 200 | |
| barcode | Barcode | string | 200 | Unique identifier of the CJ variant, used in CJ warehouses; numeric only, present on all variants |
| variantUnit | Variant unit | string | 200 | |
| variantKey | Variant Options | string | 200 | Variant Options, multiple options, joined by -, eg: Black-XXL |
| variantLength | Variant length | int | 200 | Unit: mm |
| variantWidth | Variant width | int | 200 | Unit: mm |
| variantHeight | Variant height | int | 200 | Unit: mm |
| variantVolume | Variant volume | int | 200 | Unit: mm³ |
| variantWeight | Variant weight | int | 200 | Unit: g |
| variantSellPrice | Variant sell price | BigDecimal | 200 | Unit: $ (USD) |
| createTime | Create time | string | 200 | |
| variantStandard | Variant standard | string | 200 | |
| inventories | Variant inventory | Inventory[] | 200 | List of variant inventory (include storage id) |
| - countryCode | inventory country code | string | 200 | Two-letter code of the country where the warehouse is located.for example:US |
| - totalInventory | total inventory number | integer | 200 | |
| - cjInventory | Inventory management in CJ warehouse | integer | 200 | |
| - factoryInventory | Inventory management in factory | integer | 200 | |
| - verifiedWarehouse | Verified Inventory type | string | 200 | 1: verified, 2: unverified |
| - stock | Sub warehouse inventory info | Stock[] | 200 | |
| -- stockId | Sub warehouse ID | string | 200 | |
| -- inventory | Sub warehouse Inventory management in CJ warehouse | integer | 200 | |
| -- factoryInventory | Sub warehouse Inventory management in factory | integer | 200 |
error
{
"code": 1600100,
"result": false,
"message": "Param error",
"data": null,
"requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| code | error code | int | 20 | Reference error code |
| result | Whether or not the return is normal | boolean | 1 | |
| message | return message | string | 200 | |
| data | return data | object | interface data return | |
| requestId | requestId | string | 48 | Flag request for logging errors |
# 3 Inventory
# 3.1 Inventory Inquiry(GET)
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/stock/queryByVid?vid=7874B45D-E971-4DC8-8F59-40530B0F6B77
# CURL
curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/product/stock/queryByVid?vid=7874B45D-E971-4DC8-8F59-40530B0F6B77' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| vid | Variant id | string | Y | 200 | Unique variant identifier |
# Return
success
{
"code": 200,
"result": true,
"message": "Success",
"data": [
{
"vid": "7874B45D-E971-4DC8-8F59-40530B0F6B77",
"areaId": "1",
"areaEn": "China Warehouse",
"countryCode": "CN",
"storageNum": 10877,
"totalInventoryNum": 10877,
"cjInventoryNum": 700,
"factoryInventoryNum": 10177,
"stock": [
{
"stockId": "{6709CCD7-0DC7-43B1-B310-17AB499E9B0A}",
"inventory": 0,
"factoryInventory": 11092
}
]
}...
],
"requestId": "bcde45ac-da31-4fc7-a05e-e3b23a1e6694"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| vid | Variant id | bigint | 200 | Unique variant identifier |
| areaId | Warehouse id | int | 20 | Warehouse area ID |
| areaEn | Warehouse name | string | 200 | Warehouse area name |
| countryCode | Country code(EN) | string | 20 | Country code where warehouse is located |
| storageNum | total inventory number, please use totalInventoryNum | int | 20 | Deprecated, please use totalInventoryNum |
| totalInventoryNum | total inventory number | int | 20 | Total inventory quantity of this variant in the warehouse |
| cjInventoryNum | Inventory management in CJ warehouse | int | 20 | Inventory quantity managed directly by CJ |
| factoryInventoryNum | Inventory management in factory | int | 20 | Inventory quantity managed by the factory |
| stock | Sub warehouse inventory info | Stock[] | 200 | |
| -- stockId | Sub warehouse ID | string | 200 | |
| -- inventory | Sub warehouse Inventory management in CJ warehouse | integer | 200 | |
| -- factoryInventory | Sub warehouse Inventory management in factory | integer | 200 |
error
{
"code": 1600100,
"result": false,
"message": "Param error",
"data": null,
"requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| code | error code | int | 20 | Reference error code |
| result | Whether or not the return is normal | boolean | 1 | |
| message | return message | string | 200 | |
| data | return data | object | interface data return | |
| requestId | requestId | string | 48 | Flag request for logging errors |
# 3.2 Query Inventory by SKU (GET)
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/stock/queryBySku?sku=CJDS2012593
# CURL
curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/product/stock/queryBySku?sku=CJDS2012593' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| sku | SKU or SPU | string | Y | 200 |
# Return
success
{
"code": 200,
"result": true,
"message": "Success",
"data": [
{
"areaEn": "China Warehouse",
"areaId": 1,
"countryCode": "CN",
"totalInventoryNum": 777566,
"cjInventoryNum": 0,
"factoryInventoryNum": 777566,
"countryNameEn": "China",
"stock": null
},
{
"areaEn": "US Warehouse",
"areaId": 2,
"countryCode": "US",
"totalInventoryNum": 36,
"cjInventoryNum": 36,
"factoryInventoryNum": 0,
"countryNameEn": "United States of America (the)",
"stock": null
}
],
"requestId": "dd4c7d122df24b80a094a4aba073724f",
"success": true
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| areaId | Warehouse id | int | 20 | |
| areaEn | Warehouse name | string | 200 | |
| countryCode | Country code(EN) | string | 200 | |
| countryNameEn | Country name | string | 200 | |
| totalInventoryNum | total inventory number | int | 20 | |
| cjInventoryNum | Inventory management in CJ warehouse | int | 20 | |
| factoryInventoryNum | Inventory management in factory | int | 20 | |
| stock | Sub warehouse inventory info | Stock[] | 200 | May return null |
| -- stockId | Sub warehouse ID | string | 200 | |
| -- inventory | Sub warehouse Inventory management in CJ warehouse | integer | 200 | |
| -- factoryInventory | Sub warehouse Inventory management in factory | integer | 200 |
error
{
"code": 1600100,
"result": false,
"message": "Param error",
"data": null,
"requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| code | error code | int | 20 | Reference error code |
| result | Whether or not the return is normal | boolean | 1 | |
| message | return message | string | 200 | |
| data | return data | object | interface data return | |
| requestId | requestId | string | 48 | Flag request for logging errors |
# 3.3 Query inventory by product ID (GET)
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/stock/getInventoryByPid?pid=1444929719182168064
# CURL
curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/product/stock/getInventoryByPid?pid=1444929719182168064' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| pid | Product Id | string | Y | 40 |
# Return
success
{
"success": true,
"code": 200,
"message": "",
"data": {
"inventories": [
{
"areaEn": "US Warehouse",
"areaId": 2,
"countryCode": "US",
"totalInventoryNum": 264,
"cjInventoryNum": 264,
"factoryInventoryNum": 0,
"countryNameEn": "US Warehouse",
"stock": null
}
],
"variantInventories": [
{
"vid": "1796078021431009280",
"inventory": [
{
"countryCode": "CN",
"totalInventory": 10044,
"cjInventory": 0,
"factoryInventory": 10044,
"verifiedWarehouse": 2,
"stock": [
{
"stockId": "{6709CCD7-0DC7-43B1-B310-17AB499E9B0A}",
"inventory": 0,
"factoryInventory": 11092
}
]
}
]
}
]
},
"requestId": "cb927bfa8400421e923a55f81eaafce0"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| code | error code | int | 20 | Reference error code |
| message | return message | string | 200 | |
| data | Product Inventory Object | object | ||
| - inventories | product inventory list | list | ||
| -- areaEn | Warehouse Name | string | 20 | China Warehouse |
| -- areaId | Warehouse id | int | 1 | 1 |
| -- countryCode | Country Code | string | 2 | CN |
| -- totalInventoryNum | total inventory number | int | 20 | |
| -- cjInventoryNum | Inventory management in CJ warehouse | int | 20 | |
| -- factoryInventoryNum | Inventory management in factory | int | 20 | |
| -- countryNameEn | Country Name | string | 200 | China Warehouse |
| -- stock | Sub warehouse inventory info | list | May return null | |
| --- stockId | Sub warehouse ID | string | 200 | |
| --- inventory | Sub warehouse Inventory in CJ warehouse | integer | 200 | |
| --- factoryInventory | Sub warehouse Inventory in factory | integer | 200 | |
| - variantInventories | variant inventory list | list | ||
| -- vid | variant id | string | 20 | China Warehouse |
| -- inventory | inventory list | list | 1 | |
| --- countryCode | Country Code | string | 2 | CN |
| --- totalInventory | total inventory number | int | 20 | Actual API field name: totalInventory |
| --- cjInventory | Inventory management in CJ warehouse | int | 20 | Actual API field name: cjInventory |
| --- factoryInventory | Inventory management in factory | int | 20 | Actual API field name: factoryInventory |
| --- verifiedWarehouse | Verified Inventory type | int | 200 | 1: verified, 2: unverified |
| --- stock | Sub warehouse inventory info | Stock[] | 200 | |
| ---- stockId | Sub warehouse ID | string | 200 | |
| ---- inventory | Sub warehouse Inventory management in CJ warehouse | integer | 200 | |
| ---- factoryInventory | Sub warehouse Inventory management in factory | integer | 200 | |
| requestId | requestId | string | 48 | Flag request for logging errors |
# 4 Product Reviews
# 4.1 Inquiry Reviews (GET)
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/productComments
# CURL
curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/product/productComments?pid=7874B45D-E971-4DC8-8F59-40530B0F6B77' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| pid | Product id | string | Y | 200 | Inquiry criteria |
| score | score | integer | N | 20 | Inquiry criteria |
| pageNum | page number | int | N | 20 | default: 1 |
| pageSize | page size | int | N | 20 | default: 20 |
# Return
success
{
"success": true,
"code": 0,
"message": null,
"data": {
"pageNum": "1",
"pageSize": "1",
"total": "285",
"list": [
{
"commentId": 1536993287524069376,
"pid": "1534092419615174656",
"comment": "excelente estado, llegó en una semana, cumple con lo descrito.\nBuena calidad de audio.",
"commentDate": "2022-06-13T00:00:00+08:00",
"commentUser": "F***o",
"score": "5",
"commentUrls": [
"https://cc-west-usa.oss-us-west-1.aliyuncs.com/comment/additional/0001/image/2022-06-15/1126211e-ca15-45ed-95f2-880567ebba37.jpg",
"https://cc-west-usa.oss-us-west-1.aliyuncs.com/comment/additional/0001/image/2022-06-15/291ab894-068f-4f4e-b01f-57df72902f58.jpg"
],
"countryCode": "MX",
"flagIconUrl": "https://cc-west-usa.oss-us-west-1.aliyuncs.com/national-flags/phone/US.png"
}
],
"requestId": "bcde45ac-da31-4fc7-a05e-e3b23a1e6694"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| pid | Product id | String | 200 | |
| commentId | Comment id | long | 20 | |
| comment | Comment | string | 200 | |
| commentUrls | Comment url | string[] | 200 | |
| commentUser | Comment user | string | 200 | |
| score | score | int | 20 | |
| countryCode | Country code | string | 20 | |
| commentDate | Comment date | string | 200 | |
| flagIconUrl | FlagIcon url | string | 200 |
error
{
"code": 1600100,
"result": false,
"message": "Param error",
"data": null,
"requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| code | error code | int | 20 | Reference error code |
| result | Whether or not the return is normal | boolean | 1 | |
| message | return message | string | 200 | |
| data | return data | object | interface data return | |
| requestId | requestId | string | 48 | Flag request for logging errors |
# 5 Sourcing
# 5.1 Create Sourcing (POST)
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/sourcing/create
# CURL
curl --location --request POST 'https://developers.cjdropshipping.com/api2.0/v1/product/sourcing/create' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
--header 'Content-Type: application/json' \
--data-raw '{
"thirdProductId": "",
"thirdVariantId": "",
"thirdProductSku": "",
"productName": "",
"productImage": "",
"productUrl": "",
"remark": "",
"price": "",
"acceptSimilar": 1
}'
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| thirdProductId | third product id | string | N | 200 | |
| thirdVariantId | third variant id | string | N | 200 | |
| thirdProductSku | third product sku | string | N | 200 | |
| productName | product name | string | Y | 200 | |
| productImage | product image | string | Y | 200 | |
| productUrl | product url | string | N | 200 | |
| remark | remark | string | N | 200 | |
| price | price | BigDecimal | N | 200 | Unit: $ (USD) |
| acceptSimilar | accept similar products | int | N | 1 | 0 = No (default), 1 = Yes. Corresponds to "Accept Similar Products" in My CJ sourcing details. Treated as 0 if omitted |
# Return
success
{
"success": true,
"code": 0,
"message": null,
"data": {
"cjSourcingId": "285",
"result":"success",
}
"requestId": "bcde45ac-da31-4fc7-a05e-e3b23a1e6694"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| cjSourcingId | CJ sourcing id | string | 50 | |
| result | search results | string | 20 |
error
{
"code": 1600100,
"result": false,
"message": "Param error",
"data": null,
"requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| code | error code | int | 20 | Reference error code |
| result | Whether or not the return is normal | boolean | 1 | |
| message | return message | string | 200 | |
| data | return data | object | interface data return | |
| requestId | requestId | string | 48 | Flag request for logging errors |
# 5.2 Query Sourcing(POST)
Deprecated
This endpoint is deprecated. Use 5.3 Query Sourcing List
(/product/sourcing/queryList) instead.
Its behaviour is unchanged and it is not being taken offline yet, so existing integrations keep working during migration. However it will receive no further enhancements — please migrate as soon as you can.
Why it is deprecated: this endpoint queries one sourcing record only. Pass exactly 1 id in sourceIds;
data is a single sourcing object. If you pass more than one, which record is returned is not
guaranteed — do not rely on it.
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/sourcing/query
# CURL
curl --location --request POST 'https://developers.cjdropshipping.com/api2.0/v1/product/sourcing/query' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
--header 'Content-Type: application/json' \
--data-raw '{
"sourceIds": ["285"]
}'
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| sourceIds | CJ sourcing id | string[] | Y | 200 | Only 1 id is allowed; passing more gives no guaranteed result |
# Return
success
{
"success": true,
"code": 0,
"message": null,
"data": {
"sourceId": "285",
"sourceNumber":"223333",
"productId": "3324343434",
"variantId":"4545456",
"shopId": "285",
"shopName":"aaaaaaa",
"sourceStatus": "5",
"sourceStatusStr":"搜品失败",
"cjProductId": "285",
"cjVariantSku":"CJ287690900",
"failReason": 31,
"failReasonStr": "The product link is invalid"
}
"requestId": "bcde45ac-da31-4fc7-a05e-e3b23a1e6694"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| sourceId | CJ sourcing id | string | 50 | |
| sourceNumber | Search short code | string | 20 | |
| productId | product id | string | 50 | |
| variantId | variant id | string | 50 | |
| shopId | shop id | string | 50 | |
| shopName | shop name | string | 50 | |
| sourceStatus | status | string | 10 | |
| sourceStatusStr | status (chinese) | string | 50 | |
| cjProductId | CJ product id | string | 50 | |
| cjVariantSku | CJ variant sku | string | 50 | |
| failReason | sourcing fail code | int | 20 | Set only when sourcing failed; null otherwise |
| failReasonStr | sourcing fail reason | string | 500 | English text; null when the record has not failed |
error
{
"code": 1600100,
"result": false,
"message": "Param error",
"data": null,
"requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| code | error code | int | 20 | Reference error code |
| result | Whether or not the return is normal | boolean | 1 | |
| message | return message | string | 200 | |
| data | return data | object | interface data return | |
| requestId | requestId | string | 48 | Flag request for logging errors |
# 5.3 Query Sourcing List(GET)
Query multiple sourcing records by a list of sourcing ids in one call. Returns a list of sourcing records.
This endpoint replaces the deprecated 5.2 Query Sourcing. Use it whether you need
one record or many — to query a single record, just pass one sourceIds value.
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/sourcing/queryList?sourceIds=285&sourceIds=286
# CURL
curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/product/sourcing/queryList?sourceIds=285&sourceIds=286' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| sourceIds | CJ sourcing id | string[] | Y | 200 | Repeat the parameter for multiple values; up to 100 per request |
# Return
success
{
"success": true,
"code": 0,
"message": null,
"data": [
{
"sourceId": "285",
"sourceNumber": "223333",
"productId": "3324343434",
"variantId": "4545456",
"shopId": "285",
"shopName": "aaaaaaa",
"sourceStatus": "5",
"sourceStatusStr": "Sourcing failed",
"cjProductId": "285",
"cjVariantSku": "CJ287690900",
"failReason": 31,
"failReasonStr": "The product link is invalid"
},
{
"sourceId": "286",
"sourceNumber": "223334",
"productId": "3324343435",
"variantId": "4545457",
"shopId": "285",
"shopName": "aaaaaaa",
"sourceStatus": "3",
"sourceStatusStr": "Sourcing succeeded",
"cjProductId": "286",
"cjVariantSku": "CJ287690901",
"failReason": null,
"failReasonStr": null
}
],
"requestId": "bcde45ac-da31-4fc7-a05e-e3b23a1e6694"
}
data is an array of sourcing objects. Fields of a single element:
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| sourceId | CJ sourcing id | string | 50 | |
| sourceNumber | CJ sourcing number | String | 50 | |
| productId | product id | String | 50 | |
| variantId | variant id | String | 50 | |
| shopId | shop id | String | 50 | |
| shopName | shop name | String | 50 | |
| sourceStatus | sourcing status | String | 10 | |
| sourceStatusStr | sourcing status text | String | 200 | |
| cjProductId | CJ product id | String | 50 | |
| cjVariantSku | CJ variant sku | String | 50 | |
| failReason | sourcing fail code | int | 20 | Set only when sourcing failed; null otherwise |
| failReasonStr | sourcing fail reason | String | 500 | English text; null when the record has not failed |
Note
- If some of the given ids are not found, the returned list contains only the records that were found. No placeholder element is added for a missing id.
- If none of the given ids are found, the request fails (non-success code) and
datais null.
error
{
"code": 1600100,
"result": false,
"message": "Param error",
"data": null,
"requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| code | error code | int | 20 | Reference error code |
| result | Whether or not the return is normal | boolean | 1 | |
| message | return message | string | 200 | |
| data | return data | array | interface data return | |
| requestId | requestId | string | 48 | Flag request for logging errors |
# Product Type
| Product Type | Code | Description |
|---|---|---|
| ORDINARY_PRODUCT | 0 | Ordinary products, managed by CJ for inventory management |
| SERVICE_PRODUCT | 1 | Service products, If you need to transfer your own goods to CJ warehouse and CJ provides warehousing services, we will mark it as a service item. |
| PACKAGING_PRODUCT | 3 | Packaging products are used for packaging when shipped from the warehouse. They do not support separate shipping and need to be shipped together with other goods. |
| SUPPLIER_PRODUCT | 4 | Supplier products, It is a merchant that collaborates with CJ to manage inventory of goods. |
| SUPPLIER_SHIPPED_PRODUCT | 5 | Supplier products, managed and shipped by supplier management. |
# Product Status
| Status Code | Description |
|---|---|
| 3 | On Sale |
# Customization Version
| Customization Version | remark |
|---|---|
| 0 | Non-POD products |
| 1 | Platform Customized Version V1 |
| 2 | Platform Customized Version V2 |
| 3 | Customer Customized Version V1 |
| 4 | Customer Customized Version V2 |
| 5 | POD 3.0 Platform Customized |
# 6 Video
# 6.1 Query Product Videos (POST)
Note
It is recommended that customers cache videos on their own servers instead of using CJ video URLs directly for end users. Heavy direct usage of CJ video playback URLs may affect service stability and could be rate-limited.
Important
When downloading videos, you must include a Referer header with the value https://developers.cjdropshipping.com/ in your request, otherwise the video server will reject the request.
Example:
curl -H "Referer: https://developers.cjdropshipping.com" -O "https://download-only-api.cjdropshipping.com/xxxxxx/video.mp4"
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/queryVideosByProductId
# CURL
curl --location 'https://developers.cjdropshipping.com/api2.0/v1/product/queryVideosByProductId' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"productId": "1658748072937136128"
}'
# Request Parameters
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| productId | CJ Product Id | string | Y | 100 |
# Return
success
{
"success": true,
"code": 0,
"message": "success",
"data": [
{
"id": "abc39e6946dc4aa6b53f1813b53cfcb1",
"locProductId": "1964955178105954305",
"videoName": "123",
"videoState": "ON_STATE",
"videoUrl": "https://download-only-api.cjdropshipping.com/abc39e6946dc4aa6b53f1813b53cfcb1/xxxx.mp4",
"videoNumber": null,
"notCopyrightPrice": "",
"copyrightPrice": "",
"copyright": "1",
"isFree": "1",
"videoId": "abc39e6946dc4aa6b53f1813b53cfcb1",
"videoSize": "4689615",
"coverURL": "https://download-only-api.cjdropshipping.com/abc39e6946dc4aa6b53f1813b53cfcb1/snapshots/xxx.jpg",
"duration": 39.521,
"unit": "MB",
"flag": "0",
"isBuy": true,
"payType": null,
"playCount": 6543,
"collectCount": 26,
"downloadCount": 46,
"showCount": 734,
"shareNum": 12,
"likeNum": 19,
"commentCount": 0,
"buyCount": 0,
"videoType": 1,
"copyrightBuyType": 4,
"orderNum": 0,
"videoByOut": null,
"width": 960,
"height": 540,
"openIn": null
}
],
"requestId": "6106699663484b45829410eb75b5a4b3"
}
error
{
"success": false,
"code": 1600100,
"message": "productId must be not empty",
"data": null,
"requestId": "ae543fd1-cdd7-4a61-974a-1340fea678c6"
}
# Response Parameters
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| success | Success Flag | boolean | 1 | |
| code | Error Code | int | 20 | 0 on success, Error Code Reference |
| message | Response Message | string | 200 | |
| data | Video List | array | Business data | |
| requestId | Request Id | string | 48 | For log error tracking |
# data Field Description
| Field | Definition | Type | Note |
|---|---|---|---|
| id | Video Id | string | |
| locProductId | Product Id | string | |
| videoName | Video Name | string | |
| videoState | Video Status | string | ON_STATE: Listed, DOWN_STATE: Unlisted, DELETE_STATE: Deleted |
| videoUrl | Video URL | string | |
| videoNumber | Video Number | string | |
| notCopyrightPrice | Temporary Use Price | string | |
| copyrightPrice | Permanent Use Price | string | |
| copyright | Copyright | string | |
| isFree | Is Free | string | 0: Paid, 1: Free |
| videoId | Cloud Video ID | string | |
| videoSize | Video Size | string | |
| coverURL | Cover Image | string | |
| duration | Duration | float | |
| unit | Size Unit | string | M, kb |
| flag | Flag | string | |
| isBuy | Is Purchased | boolean | |
| payType | Copyright Purchase Type | string | 0: Permanent, 1: Partial |
| playCount | Play Count | integer | |
| collectCount | Collect Count | integer | |
| downloadCount | Download Count | integer | |
| showCount | Impression Count | integer | |
| shareNum | Share Count | integer | |
| likeNum | Like Count | integer | |
| commentCount | Comment Count | integer | |
| buyCount | Purchase Count | integer | |
| videoType | Video Type | integer | 0: Unboxing, 1: Marketing, 2: Review |
| copyrightBuyType | Copyright Purchase Status | integer | 1: Not Purchased/Free, 2: Permanent, 3: Partial, 4: Both |
| orderNum | Sort Order | integer | |
| videoByOut | Is Bought Out | boolean | true: Bought Out, false: Not Bought Out |
| width | Width | long | Pixels |
| height | Height | long | Pixels |
| openIn | Days Until Free | integer |