# 9 Shop
# 1 Shop List
# 1.1 Get Shop List (GET)
Retrieve the list of shops bound to / created under the current account.
# URL
https://developers.cjdropshipping.com/api2.0/v1/shop/getShops
# CURL
curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/shop/getShops' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# Rate Limit
No explicit rate-limit annotation; gateway default quota applies.
# Request Parameters
None (the account id is injected from the login session).
# Return
success
{
"code": 200,
"result": true,
"message": "Success",
"data": [
{
"id": "1424608189734850560",
"createDate": "2024-01-01 12:00:00",
"name": "MyShop",
"status": 1,
"type": "shopify",
"updateDate": "2024-06-01 12:00:00",
"individuationNum": "001",
"fulfillmentStatus": "auto",
"shopifyPodSettings": "{}",
"marketplace": "us",
"aliasName": "Alias",
"syncInventory": 1,
"syncInventoryRate": 100,
"isCb": 0,
"trackUrlTemplate": "https://example.com/track/{number}",
"emailNotification": 1,
"email": "user@example.com",
"countryCode": "US",
"storeCountry": "United States",
"platformLogoUrl": "https://example.com/logo.png",
"currencyCode": "USD",
"businessType": 1,
"deliveryProfileOpen": 1,
"haveDeliveryProfileScopes": 1,
"deliveryProfileSpecifiedShop": 1,
"deliveryProfileNewShop": 0
}
],
"requestId": "ae543fd1-cdd7-4a61-974a-1340fea678c6"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| id | Shop id | string | 50 | |
| createDate | Create time | string | 30 | |
| name | Shop name | string | 200 | |
| status | Shop status | int | 5 | Store status: 0=Deleted, 1=Authorized, 2=Deactivated, 3=Authorization failed, 4=Authorization expired, 5=In transition |
| type | Shop type / platform | string | 50 | Referer Platforms |
| updateDate | Update time | string | 30 | |
| individuationNum | Individuation no. | string | 50 | |
| fulfillmentStatus | Fulfillment status | string | 50 | |
| shopifyPodSettings | Shopify POD settings | string | - | JSON string |
| marketplace | Marketplace | string | 50 | |
| aliasName | Alias name | string | 200 | |
| syncInventory | Sync inventory flag | int | 1 | 1/0 |
| syncInventoryRate | Inventory sync rate | int | 5 | percent |
| isCb | Cross-border flag | int | 1 | 1/0 |
| trackUrlTemplate | Tracking URL template | string | 500 | |
| emailNotification | Email notification flag | int | 1 | 1/0 |
| Notification email | string | 200 | ||
| countryCode | Country code | string | 20 | |
| storeCountry | Store country | string | 100 | |
| platformLogoUrl | Platform logo | string | 500 | |
| currencyCode | Currency code | string | 10 | |
| businessType | Business type | int | 5 | |
| deliveryProfileOpen | Delivery profile open flag | int | 1 | 1/0 |
| haveDeliveryProfileScopes | Has delivery profile scopes flag | int | 1 | 1/0 |
| deliveryProfileSpecifiedShop | Delivery profile specified shop | int | 1 | 1/0 |
| deliveryProfileNewShop | Delivery profile new shop flag | int | 1 | 1/0 |
# 2 Store Product
# 2.1 Save Product (POST)
Save a store product to CJ system.
# URL
https://developers.cjdropshipping.com/api2.0/v1/store/product/saveProduct
# CURL
curl --location 'https://developers.cjdropshipping.com/api2.0/v1/store/product/saveProduct' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"id": "prod123",
"title": "Example Product",
"image": "https://example.com/image.jpg",
"description": "Product description",
"priceMin": 10.00,
"priceMax": 20.00,
"priceCurrency": "USD"
}'
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| id | Store product ID | string | Y | 64 | |
| title | Product title | string | Y | 500 | |
| image | Product image URL | string | Y | 400 | |
| description | Description | string | N | 5000 | |
| priceMin | Min price | BigDecimal | N | 20 | Must pair with priceCurrency |
| priceMax | Max price | BigDecimal | N | 20 | Must pair with priceCurrency |
| priceCurrency | Price currency | string | N | 10 | e.g. USD |
# Return
success
{
"code": 200,
"result": true,
"message": "success",
"data": true,
"requestId": "ae543fd1-cdd7-4a61-974a-1340fea678c6"
}
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 Save Variant Batch (POST)
Save store product variants in batch.
# URL
https://developers.cjdropshipping.com/api2.0/v1/store/product/saveVariantBatch
# CURL
curl --location 'https://developers.cjdropshipping.com/api2.0/v1/store/product/saveVariantBatch' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"variants": [
{
"id": "var001",
"productId": "prod123",
"title": "Red - XL",
"sku": "SKU-RED-XL",
"image": "https://example.com/red-xl.jpg",
"shopPrice": 15.00,
"shopPriceCurrency": "USD",
"weight": 250,
"weightUnit": "g"
}
]
}'
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| variants | Variant list | Array | Y | - | |
| - id | Variant ID | string | Y | 64 | |
| - productId | Product ID | string | Y | 64 | |
| - title | Variant title | string | Y | 500 | |
| - sku | Variant SKU | string | Y | 200 | |
| - image | Variant image URL | string | Y | 500 | |
| - shopPrice | Variant price | BigDecimal | N | 20 | |
| - shopPriceCurrency | Price currency | string | N* | 10 | Required when shopPrice is provided |
| - weight | Weight | BigDecimal | N | 20 | |
| - weightUnit | Weight unit | string | N | 10 | e.g. g, kg |
| - oldInventoryQuantity | Old inventory qty | long | N | - |
# Return
success
{
"code": 200,
"result": true,
"message": "success",
"data": [
{
"id": "var001",
"productId": "prod123",
"saveSuccess": true,
"saveFailMessage": null
}
],
"requestId": "ae543fd1-cdd7-4a61-974a-1340fea678c6"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| id | Variant ID | string | 64 | |
| productId | Product ID | string | 64 | |
| saveSuccess | Save result | boolean | 1 | |
| saveFailMessage | Failure reason | string | 500 | null if success |
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.3 Query Shop Products (Paged) (GET)
Paginated query of the current account's store products, supporting filtering by product relevance status. This endpoint does NOT return variants (use 2.4 Query Shop Product Details for variants). The account is resolved from the access token; only the caller's own shop products are returned.
# URL
https://developers.cjdropshipping.com/api2.0/v1/shop/product/queryPage
# CURL
curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/shop/product/queryPage?pageNum=1&pageSize=10&relevanceStatusValues=0&relevanceStatusValues=1' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| pageNum | Page number | int | N | - | Default 1 |
| pageSize | Page size | int | N | - | Default 10, max 10 (at most 10 per query) |
| shopId | Shop ID | string | N | 200 | |
| shopProductId | Shop product ID (exact) | string | N | 200 | |
| searchKey | Fuzzy match on product title | string | N | 200 | |
| relevanceStatusValues | Relevance status filter | Set<Integer> | N | - | 0-Unrelated 1-Partial 2-Related 3-Off-shelf related; omit=all |
# Return
success
{
"code": 200,
"result": true,
"message": "success",
"data": {
"pageNum": 1,
"pageSize": 10,
"total": 1,
"list": [
{
"shopId": "shop_1",
"shopName": "MyShop",
"shopType": "Shopify",
"platformProductId": "p_1",
"platformProductTitle": "Rose",
"platformProductImage": "https://example.com/p.jpg",
"platformProductPrices": "9.99-19.99",
"platformProductPricesCurrency": "USD",
"platformProductHandle": "rose",
"platformProductType": "Flowers",
"platformProductCategoryId": "cat_1",
"platformProductTags": "tag1,tag2",
"shopProductStatus": 1,
"relevanceStatus": 1,
"createDateTime": 1782700800000
}
]
},
"requestId": "ae543fd1-cdd7-4a61-974a-1340fea678c6"
}
| Field | Definition | Type | Note |
|---|---|---|---|
| pageNum | Current page | int | |
| pageSize | Page size | int | |
| total | Total count | int | |
| list[].shopId | Shop ID | string | |
| list[].shopName | Shop name | string | |
| list[].shopType | Shop platform type | string | e.g. Shopify |
| list[].platformProductId | Shop product ID | string | |
| list[].platformProductTitle | Product title | string | |
| list[].platformProductImage | Product image | string | |
| list[].platformProductPrices | Price range | string | Not returned for TEMU |
| list[].platformProductPricesCurrency | Price currency | string | |
| list[].platformProductHandle | Product handle | string | |
| list[].platformProductType | Product type | string | |
| list[].platformProductCategoryId | Category ID | string | |
| list[].platformProductTags | Tags | string | |
| list[].shopProductStatus | Status | int | 1-On shelf 2-Deleted 3-Off shelf |
| list[].relevanceStatus | Relevance status | int | 0-Unrelated 1-Partial 2-Related 3-Off-shelf related |
| list[].createDateTime | Created time | long | epoch millis |
error
{
"code": 1600100,
"result": false,
"message": "Param error",
"data": null,
"requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
# 2.4 Query Shop Product Details (GET)
Query shop product details by shopId + platformProductIds, returning products together with their variants. Both shopId and platformProductIds are required; platformProductIds allows at most 10 ids. The account is resolved from the access token; only the caller's own shop products are returned.
# URL
https://developers.cjdropshipping.com/api2.0/v1/shop/product/queryDetail
# CURL
curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/shop/product/queryDetail?shopId=shop_1&platformProductIds=p_1&platformProductIds=p_2' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| shopId | Shop ID | string | Y | 200 | |
| platformProductIds | Shop product IDs (max 10) | array | Y | - | Repeat param: platformProductIds=a&platformProductIds=b |
# Return
success (data is an array of product details, each item contains its variants)
{
"code": 200,
"result": true,
"message": "success",
"data": [
{
"shopId": "shop_1",
"shopName": "MyShop",
"shopType": "Shopify",
"platformProductId": "p_1",
"platformProductTitle": "Rose",
"platformProductImage": "https://example.com/p.jpg",
"platformProductPrices": "9.99-19.99",
"platformProductPricesCurrency": "USD",
"platformProductHandle": "rose",
"platformProductType": "Flowers",
"platformProductCategoryId": "cat_1",
"platformProductTags": "tag1,tag2",
"shopProductStatus": 1,
"relevanceStatus": 1,
"createDateTime": 1782700800000,
"variants": [
{
"platformProductId": "p_1",
"platformVariantId": "v_1",
"platformVariantSku": "SKU-1",
"platformVariantTitle": "Red",
"platformVariantImage": "https://example.com/v.jpg",
"price": 9.99,
"priceUSD": 9.99,
"priceCurrency": "USD",
"grams": "250",
"weight": 250,
"weightUnit": "g",
"relevanceStatus": "2",
"inventoryItemStatus": "2",
"shopProductStatus": 1,
"createDateTime": 1782700800000
}
]
}
],
"requestId": "ae543fd1-cdd7-4a61-974a-1340fea678c6"
}
| Field | Definition | Type | Note |
|---|---|---|---|
| data[].shopId | Shop ID | string | |
| data[].shopName | Shop name | string | |
| data[].shopType | Shop platform type | string | e.g. Shopify |
| data[].platformProductId | Shop product ID | string | |
| data[].platformProductTitle | Product title | string | |
| data[].platformProductImage | Product image | string | |
| data[].platformProductPrices | Price range | string | Not returned for TEMU |
| data[].platformProductPricesCurrency | Price currency | string | |
| data[].platformProductHandle | Product handle | string | |
| data[].platformProductType | Product type | string | |
| data[].platformProductCategoryId | Category ID | string | |
| data[].platformProductTags | Tags | string | |
| data[].shopProductStatus | Status | int | 1-On shelf 2-Deleted 3-Off shelf |
| data[].relevanceStatus | Relevance status | int | 0-Unrelated 1-Partial 2-Related 3-Off-shelf related |
| data[].createDateTime | Created time | long | epoch millis |
| data[].variants | Variants | array | Variant list under the product |
| data[].variants[].platformProductId | Owning product ID | string | |
| data[].variants[].platformVariantId | Variant ID | string | |
| data[].variants[].platformVariantSku | Variant SKU | string | |
| data[].variants[].platformVariantTitle | Variant title | string | |
| data[].variants[].platformVariantImage | Variant image | string | |
| data[].variants[].price | Price | BigDecimal | Not returned for TEMU |
| data[].variants[].priceUSD | Price (USD) | BigDecimal | Not returned for TEMU |
| data[].variants[].priceCurrency | Price currency | string | |
| data[].variants[].grams | Weight (g) | string | |
| data[].variants[].weight | Weight | BigDecimal | |
| data[].variants[].weightUnit | Weight unit | string | |
| data[].variants[].relevanceStatus | Variant relevance | string | 0-Unknown 1-Unrelated 2-Related |
| data[].variants[].inventoryItemStatus | Fulfillment status | string | 0-Unused 1-Fulfillment only 2-Fulfillment+Inventory 3-Inventory only |
| data[].variants[].shopProductStatus | Status | int | 1-On shelf 2-Deleted 3-Off shelf |
| data[].variants[].createDateTime | Created time | long | epoch millis |
error
{
"code": 1600100,
"result": false,
"message": "Param error",
"data": null,
"requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
# 3 Product Connection
Product Connection binds a CJ product/variant to a platform (shop) product/variant. Once bound, orders placed on the shop can be automatically matched to the corresponding CJ product for fulfilment.
# 3.1 Query Product Connection List (GET)
Query existing product connection records under the current account. Supports filtering by shop, platform product, platform variant.
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/conn/connection
# CURL
curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/product/conn/connection?shopId=xxx&platformProductId=yyy&page=1&pageSize=10' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# Request Parameters
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| shopId | Shop Id | string | N | 40 | If omitted, the API shop bound to account is used, Shops |
| platformProductId | Platform Product Id | string | N | 100 | |
| platformVariantId | Platform Variant Id | string | N | 100 | |
| page | Current page | int | N | - | Default 1 |
| pageSize | Page size | int | N | - | Default 10, max 100 |
# Return
success
{
"code": 200,
"result": true,
"message": "Success",
"data": {
"total": 1,
"list": [
{
"shopId": "xxx",
"platformProductId": "yyy",
"platformVariantId": "zzz",
"cjProductId": "1424608189734850560",
"cjVariantId": "1424608152007086080",
"defaultArea": 1,
"logistics": "PacketPlus",
"sourceCountryCode": "CN",
"sourceCountry": "China",
"targetCountryCode": "US",
"targetCountry": "United States"
}
]
},
"requestId": "ae543fd1-cdd7-4a61-974a-1340fea678c6"
}
| Field | Definition | Type | Length | Note |
|---|---|---|---|---|
| total | Total count | int | 20 | |
| list | Connection list | list | - | |
| - shopId | Shop Id | string | 40 | |
| - platformProductId | Platform Product Id | string | 100 | |
| - platformVariantId | Platform Variant Id | string | 100 | |
| - cjProductId | CJ Product Id | string | 50 | |
| - cjVariantId | CJ Variant Id | string | 50 | |
| - defaultArea | Default area | int | 5 | |
| - logistics | Logistics method | string | 200 | |
| - sourceCountryCode | Source country code | string | 20 | |
| - sourceCountry | Source country | string | 100 | |
| - targetCountryCode | Target country code | string | 20 | |
| - targetCountry | Target country | string | 100 |
# 3.2 Create Product Connection (POST)
Bind one CJ product (with one or more variants) to a platform product (with the corresponding variants).
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/conn/connection
# CURL
curl --location --request POST 'https://developers.cjdropshipping.com/api2.0/v1/product/conn/connection' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data-raw '{
"shopId": "xxx",
"defaultArea": 1,
"logistics": "PacketPlus",
"cjProductId": "1424608189734850560",
"platformProductId": "yyy",
"sourceCountryCode": "CN",
"sourceCountry": "China",
"targetCountryCode": "US",
"targetCountry": "United States",
"variantList": [
{
"cjVariantId": "1424608152007086080",
"platformVariantId": "v_001"
}
]
}'
# Rate Limit
# Request Parameters
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| shopId | Shop Id | string | N | 50 | If omitted, the API shop bound to account is used, Shops |
| defaultArea | Default area | int | Y | 5 | |
| logistics | Logistics method | string | Y | 200 | |
| cjProductId | CJ Product Id | string | Y | 50 | |
| platformProductId | Platform Product Id | string | Y | 100 | |
| sourceCountryCode | Source country code | string | N | 20 | |
| sourceCountry | Source country | string | N | 100 | |
| targetCountryCode | Target country code | string | N | 20 | |
| targetCountry | Target country | string | N | 100 | |
| variantList | Variant list | list | Y | - | At least one variant |
| - cjVariantId | CJ Variant Id | string | Y | 50 | |
| - platformVariantId | Platform Variant Id | string | Y | 100 |
# Return
success
{
"code": 200,
"result": true,
"message": "Success",
"data": true,
"requestId": "ae543fd1-cdd7-4a61-974a-1340fea678c6"
}
# 3.3 Disconnect Product (DELETE)
Remove an existing connection by platform product Id (optionally restricted to a single platform variant).
# URL
https://developers.cjdropshipping.com/api2.0/v1/product/conn/connection
# CURL
curl --location --request DELETE 'https://developers.cjdropshipping.com/api2.0/v1/product/conn/connection?shopId=xxx&platformProductId=yyy&platformVariantId=zzz' \
--header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# Request Parameters
| Parameter | Definition | Type | Required | Length | Note |
|---|---|---|---|---|---|
| shopId | Shop Id | string | N | 50 | If omitted, the API shop bound to account is used, Shops |
| platformProductId | Platform Product Id | string | Y | 100 | |
| platformVariantId | Platform Variant Id | string | N | 100 | If empty, all variant connections under that platform product are removed |
# Return
success
{
"code": 200,
"result": true,
"message": "Success",
"data": true,
"requestId": "ae543fd1-cdd7-4a61-974a-1340fea678c6"
}