Product Management (products)
Manage content, prices and inventory
Products parent categories{{ /content/v2/object/parent/all }}
Returns the list of all products parent categories
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
query Parameters
| locale | string Example: locale=en Language for response of the
Not used in the sandbox |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": [
- {
- "name": "Электроника",
- "id": 479,
- "isVisible": true
}
], - "error": false,
- "errorText": "",
- "additionalErrors": ""
}Subjects list{{ /content/v2/object/all }}
Returns the list of all available subjects, subjects parent categories and their IDs
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
query Parameters
| locale | string Example: locale=en Language for response of the
Not used in the sandbox |
| name | string Example: name=Socks Search by item name (Socks), the search works by substring and can be conducted in any of the supported languages |
| limit | integer Default: 30 Example: limit=1000 Number of search results, maximum 1,000 |
| offset | integer Default: 0 Example: offset=5000 How many results to skip. For example, with value |
| parentID | integer Example: parentID=1000 Subject parent category ID |
Responses
Response samples
- 200
- 401
- 429
{- "data": [
- {
- "subjectID": 2560,
- "parentID": 479,
- "subjectName": "3D очки",
- "parentName": "Электроника"
}, - {
- "subjectID": 1152,
- "parentID": 858,
- "subjectName": "3D-принтеры",
- "parentName": "Оргтехника"
}
], - "error": false,
- "errorText": "",
- "additionalErrors": null
}Subject characteristics{{ /content/v2/object/charcs/{subjectId} }}
Returns list of the subject characteristics by its ID
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
path Parameters
| subjectId required | integer Example: 105 Subject ID |
query Parameters
| locale | string Example: locale=en Language for response of the
Not used in the sandbox |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": [
- {
- "charcID": 54337,
- "subjectName": "Кроссовки",
- "subjectID": 105,
- "name": "Размер",
- "required": false,
- "unitName": "см",
- "maxCount": 0,
- "popular": false,
- "charcType": 4
}
], - "error": false,
- "errorText": "",
- "additionalErrors": null
}Color{{ /content/v2/directory/colors }}
Provides values of color characteristic.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
query Parameters
| locale | string Example: locale=en Language for response of the
Not used in the sandbox |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": [
- {
- "name": "персиковый мелок",
- "parentName": "оранжевый"
}
], - "error": false,
- "errorText": "",
- "additionalErrors": ""
}Gender{{ /content/v2/directory/kinds }}
Provides values of gender characteristic.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
query Parameters
| locale | string Example: locale=en Language for response of the
Not used in the sandbox |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": [
- "Мужской"
], - "error": false,
- "errorText": "",
- "additionalErrors": ""
}Country of origin{{ /content/v2/directory/countries }}
Provides value of characteristic country of origin.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
query Parameters
| locale | string Example: locale=en Language for response of the
Not used in the sandbox |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": [
- {
- "name": "Китай",
- "fullName": "Китайская Народная Республика"
}
], - "error": false,
- "errorText": "",
- "additionalErrors": ""
}Season{{ /content/v2/directory/seasons }}
Provide values of season characteristic
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
query Parameters
| locale | string Example: locale=en Language for response of the
Not used in the sandbox |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": [
- "демисезон"
], - "error": false,
- "errorText": "",
- "additionalErrors": ""
}VAT rate{{ /content/v2/directory/vat }}
Returns a list of values for the VAT rate characteristic
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
query Parameters
| locale | string Example: locale=ru Language for response of the
Not used in the sandbox |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": [
- "0",
- "10",
- "20",
- "Без НДС",
- "13"
], - "error": false,
- "errorText": "",
- "additionalErrors": null
}HS-codes{{ /content/v2/directory/tnved }}
The method provides list of HS-codes by category name and filter by HS-code.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
query Parameters
| subjectID required | integer Example: subjectID=105 Subject ID |
| search | integer Example: search=6106903000 Search by HS-code. Works only with the subjectID parameter |
| locale | string Example: locale=en Language for response of the
Not used in the sandbox |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": [
- {
- "tnved": "6106903000",
- "isKiz": true
}
], - "error": false,
- "errorText": "",
- "additionalErrors": null
}Limits for the product cards{{ /content/v2/cards/limits }}
The method allows to get separately free and paid vendor limits for creating product cards.
To calculate the number of cards that can be created, use the formula: (freeLimits + paidLimits) - Number of cards created.
All cards that can be obtained using the product cards list and list of product cards that are in the trash methods are considered created.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
Responses
Response samples
- 200
- 401
- 403
- 429
{- "data": {
- "freeLimits": 1500,
- "paidLimits": 10
}, - "error": false,
- "errorText": "",
- "additionalErrors": null
}Generation of barcodes{{ /content/v2/barcodes }}
Generates array of unique barcodes to create size of the product card
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
Request Body schema: application/jsonrequired
| count | integer Number of barcodes to be generated, maximum 5,000 |
Responses
Request samples
- Payload
{- "count": 100
}Response samples
- 200
- 401
- 403
- 429
{- "data": [
- "5032781145187"
], - "error": false,
- "errorText": "",
- "additionalErrors": ""
}Create product cards{{ /content/v2/cards/upload }}
Creates products cards. You can specify product description and characteristics.
How to create a card:
- Get parent categories list
- Get the category and get all subjects
- Choose the subject and get all available characteristics. For
Color,Gender,Country of origin,Season,VAT rate,HS-codecharacteristics use values from category. - Send the request. If the response is Success (
200) but the card was not created, check errors using list of failed product card with errors.
The dimensions of the products can only be specified in centimeters, and the weight of packed products must be specified in kilograms.
With one request you can create maximum 100 merged product cards (imtID), 30 product cards (nmID) in each. Maximum request size is 10 Mb.
Creating a card is asynchronous, after sending the request is put in a queue for processing.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 10 requests | 6 seconds | 5 requests |
Authorizations:
Request Body schema: application/json
| subjectID required | integer Subject ID |
required | Array of objects Product variants, maximum 30 in one merged card |
Responses
Request samples
- Payload
[- {
- "subjectID": 105,
- "variants": [
- {
- "vendorCode": "АртикулПродавца",
- "wholesale": {
- "enabled": true,
- "quantum": 211
}, - "title": "Наименование товара",
- "description": "Описание товара",
- "brand": "Бренд",
- "dimensions": {
- "length": 12,
- "width": 7,
- "height": 5,
- "weightBrutto": 1.242
}, - "characteristics": [
- {
- "id": 12,
- "value": [
- "Turkish flag"
]
}, - {
- "id": 25471,
- "value": 1200
}, - {
- "id": 14177449,
- "value": [
- "red"
]
}
], - "sizes": [
- {
- "techSize": "S",
- "wbSize": "42",
- "price": 5000,
- "skus": [
- "88005553535"
]
}
]
}
]
}
]Response samples
- 200
- 400
- 401
- 413
- 429
{- "data": null,
- "error": false,
- "errorText": "",
- "additionalErrors": { }
}Create product cards with merge{{ /content/v2/cards/upload/add }}
The method creates new product cards by merging them with existing ones.
The dimensions of the products can only be specified in centimeters, and the weight of packed products must be specified in kilograms.
Creating a card is asynchronous, after sending the request is put in a queue for processing. Maximum request size is 10 Mb.
If this method response is Success (200) but product card was not updated, check errors using list of failed nomenclature with errors.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 10 requests | 6 seconds | 5 requests |
Authorizations:
Request Body schema: application/json
| imtID | integer
|
Array of objects The structure of the added product card |
Responses
Request samples
- Payload
{- "imtID": 987654321,
- "cardsToAdd": [
- {
- "vendorCode": "myVariant1",
- "wholesale": {
- "enabled": true,
- "quantum": 243
}, - "title": "Наименование товара",
- "description": "Описание товара",
- "brand": "Бренд",
- "dimensions": {
- "length": 9,
- "width": 6,
- "height": 3,
- "weightBrutto": 0.893
}, - "characteristics": [
- {
- "id": 12,
- "value": [
- "Russian flag"
]
}, - {
- "id": 25471,
- "value": 1300
}, - {
- "id": 14177449,
- "value": [
- "blue"
]
}
], - "sizes": [
- {
- "skus": [
- "12345678"
]
}
]
}, - {
- "vendorCode": "myVariant2",
- "title": "Наименование товара",
- "description": "Описание товаров",
- "brand": "Бренд",
- "dimensions": {
- "length": 8,
- "width": 8,
- "height": 8,
- "weightBrutto": 1.04
}, - "characteristics": [
- {
- "id": 12,
- "value": [
- "Russian flag"
]
}, - {
- "id": 25471,
- "value": 1300
}, - {
- "id": 14177449,
- "value": [
- "blue"
]
}
], - "sizes": [
- {
- "skus": [
- "222222222222"
]
}
]
}
]
}Response samples
- 200
- 400
- 401
- 413
- 429
{- "data": null,
- "error": false,
- "errorText": "",
- "additionalErrors": { }
}Product cards list{{ /content/v2/get/cards/list }}
Returns the list of created product cards.
To get more than 100 product cards, use pagination:
- Make the first request (all listed params are required):
{ "settings": { "cursor": { "limit": 100 }, "filter": { "withPhoto": -1 } } } - Copy "updatedAt": "***" and "nmID": *** from the
cursorin the response and insert into thecursorof your next request. - Make the next request.
- Repeat 2 and 3 until
totalvalue in the response is less than thelimitvalue in the request. This will mean you got all cards.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
query Parameters
| locale | string Example: locale=ru Language for response of the
Not used in the sandbox |
Request Body schema: application/jsonrequired
object Settings |
Responses
Request samples
- Payload
{- "settings": {
- "sort": {
- "ascending": false
}, - "filter": {
- "textSearch": "4603743187500888",
- "allowedCategoriesOnly": true,
- "tagIDs": [
- 345,
- 415
], - "objectIDs": [
- 235,
- 67
], - "brands": [
- "уллу",
- "EkkE"
], - "imtID": 328632,
- "withPhoto": -1
}, - "cursor": {
- "updatedAt": "2023-12-06T11:17:00.96577Z",
- "nmID": 370870300,
- "limit": 11
}
}
}Response samples
- 200
- 400
- 401
- 403
- 429
{- "cards": [
- {
- "nmID": 12345678,
- "imtID": 123654789,
- "nmUUID": "01bda0b1-5c0b-736c-b2be-d0a6543e9be",
- "subjectID": 7771,
- "subjectName": "AKF системы",
- "vendorCode": "wb7f6mumjr1",
- "brand": "Тест",
- "title": "Тест-система",
- "description": "Тестовое описание",
- "needKiz": false,
- "photos": [
- {
}
], - "wholesale": {
- "enabled": true,
- "quantum": 112
}, - "dimensions": {
- "length": 55,
- "width": 40,
- "height": 15,
- "weightBrutto": 6.24,
- "isValid": false
}, - "characteristics": [
- {
- "id": 14177449,
- "name": "Цвет",
- "value": [
- "красно-сиреневый"
]
}
], - "sizes": [
- {
- "chrtID": 316399238,
- "techSize": "0",
- "skus": [
- "987456321654"
]
}
], - "tags": [
- {
- "id": 592569,
- "name": "Популярный",
- "color": "D1CFD7"
}
], - "createdAt": "2023-12-06T11:17:00.96577Z",
- "updatedAt": "2023-12-06T11:17:00.96577Z"
}
], - "cursor": {
- "updatedAt": "2023-12-06T11:17:00.96577Z",
- "nmID": 123654123,
- "total": 1
}
}List of failed product cards with errors{{ /content/v2/cards/error/list }}
Returns the list of product cards (drafts) and the list of errors encountered during product card creation or editing.
The data is returned in batches. One batch contains:
- all errors for one merged product card
imtIDin one request during product cards creation - all errors in one request during product cards creation with merge or editing.
To get more than 100 batches, use pagination:
- Make first request:
{ "cursor": { "limit": 100 }, "order": { "ascending": true } } - Copy
"updatedAt": "***","batchUUID": "***"from the responsecursorand paste into the requestcursor. - Repeat the request.
- Repeat 2 and 3, until you receive in the response
"next": false. This will mean that you have received all the batches.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 10 requests | 6 seconds | 5 requests |
Authorizations:
query Parameters
| locale | string Example: locale=en Language of subject names:
|
Request Body schema: application/jsonrequired
object (swagger.PublicErrorsCursorInput) Paginator | |
object (swagger.PublicErrorsOrderV2) The order of return of batches |
Responses
Request samples
- Payload
{- "cursor": {
- "limit": 31,
- "updatedAt": "2025-08-05T17:54:40+08:00",
- "batchUUID": "bca3744c-1c8b-4588-b345-62af3b2899ae"
}, - "order": {
- "ascending": true
}
}Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": {
- "items": [
- {
- "batchUUID": "b15fecaf-57fd-4b63-ab6f-18d630b8793e",
- "subjects": {
- "wb15j2kjk9": {
- "id": 8827,
- "name": "Автомобили с пробегом"
}, - "wb3g6advyh": {
- "id": 8827,
- "name": "Автомобили с пробегом"
}, - "wb3g7xx8g9": {
- "id": 8827,
- "name": "Автомобили с пробегом"
}, - "wb4uphjn61": {
- "id": 8827,
- "name": "Автомобили с пробегом"
}, - "wb64nayozt": {
- "id": 8827,
- "name": "Автомобили с пробегом"
}
}, - "brands": { },
- "vendorCodes": [
- "wb64nayozt",
- "wb15j2kjk9",
- "wb3g7xx8g9",
- "wb3g6advyh",
- "wb4uphjn61"
], - "errors": {
- "wb15j2kjk9": [
- "Поле Наименование не должно содержать запрещенные символы: 😈 😊 🤨"
], - "wb3g6advyh": [
- "Поле Наименование не должно содержать запрещенные символы: 😊 🤨 😈"
], - "wb3g7xx8g9": [
- "Поле Наименование не должно содержать запрещенные символы: 🤯"
], - "wb4uphjn61": [
- "Поле Наименование не должно содержать запрещенные символы: 😊 🤨 😈"
], - "wb64nayozt": [
- "Поле Наименование не должно содержать запрещенные символы: 😈 😊 🤨"
]
}
}, - {
- "batchUUID": "30aa42ec-fb49-45ec-86d5-ddf9911e7e3f",
- "subjects": {
- "test_pasha1": {
- "id": 184,
- "name": "Рубашки"
}
}, - "brands": { },
- "vendorCodes": [
- "test_pasha1"
], - "errors": {
- "test_pasha1": [
- "Запрещено использовать E-Mail в поле Наименование",
- "Запрещено использовать E-Mail в поле Описание"
]
}
}
], - "cursor": {
- "next": true,
- "updatedAt": "2025-08-25T10:05:21Z",
- "batchUUID": "1cd79751-de1f-46c8-a444-a941d35dde56"
}
}, - "error": false,
- "errorText": "",
- "additionalErrors": null
}Update product cards{{ /content/v2/cards/update }}
Edits product cards. If you need some product data, get it using product cards list.
The dimensions of the products can only be specified in centimeters, and the weight of packed products must be specified in kilograms.
You can not edit or delete barcodes but you can add new ones. You have not to send photos, video and tags and can not edit them.
If this method response is Success (200) but product card was not updated, check errors using list of failed product cards with errors.
With one request you can edit maximum 3000 product cards (nmID). Maximum request size is 10 Mb.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 10 requests | 6 seconds | 5 requests |
Authorizations:
Request Body schema: application/json
| nmID required | integer WB article |
| vendorCode required | string Seller's article |
| brand | string Brand |
| title | string <= 60 characters Product title |
| description | string Product description |
object Dimensions and weight of the product | |
Array of objects Product characteristics
| |
required | Array of objects Product sizes |
Responses
Request samples
- Payload
[- {
- "nmID": 11111111,
- "vendorCode": "wbiz72wmro",
- "brand": "",
- "title": "Свитер женский оверсайз с горлом",
- "description": "12345",
- "dimensions": {
- "length": 55,
- "width": 40,
- "height": 15,
- "weightBrutto": 3
}, - "characteristics": [
- {
- "id": 14177450,
- "value": [
- "хлопок 50% акрил 50%"
]
}, - {
- "id": 50,
- "value": [
- "свободный крой"
]
}
], - "sizes": [
- {
- "chrtID": 12345678,
- "techSize": "ONE SIZE",
- "wbSize": "78-90",
- "skus": [
- "123487653460134"
]
}
]
}
]Response samples
- 200
- 400
- 401
- 403
- 413
- 429
{- "data": null,
- "error": false,
- "errorText": "",
- "additionalErrors": { }
}Merging or separating of product cards{{ /content/v2/cards/moveNm }}
The method merges and separates product cards. Product cards are considered merged if they have the same imtID.
To merge product cards, make a request specifying the imtID. You can merge up to 30 product cards at a time.
To separate product cards, make a request without specifying the imtID. New imtIDs will be generated for the separated cards.
If you separate multiple product cards simultaneously, these cards will merge into one and receive a new imtID.
To assign a unique imtID to each product card, you need to send one product card per request.
The maximum request size is 10 MB.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
Request Body schema: application/json
| targetIMT required | integer Seller's existing |
| nmIDs required | Array of integers
|
Responses
Request samples
- Payload
{- "targetIMT": 123,
- "nmIDs": [
- 837459235,
- 828572090
]
}Response samples
- 200
- 400
- 401
- 403
- 413
- 429
{- "data": null,
- "error": false,
- "errorText": "",
- "additionalErrors": { }
}Transfer product card to trash{{ /content/v2/cards/delete/trash }}
Transfers the product card to trash. In doing so, the product card would not be deleted.
imtID.
After 30 days in the trash the product card would be deleted automatically. The trash is cleared every night according to Moscow time.
The product card can be deleted at any time in personal account.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
Request Body schema: application/jsonrequired
| nmIDs | Array of integers WB article (max. 1000) |
Responses
Request samples
- Payload
{- "nmIDs": [
- 123456789,
- 987654321
]
}Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": null,
- "error": false,
- "errorText": "",
- "additionalErrors": { }
}Recover product card from trash{{ /content/v2/cards/recover }}
Returns the product card from trash
imtID doesn't remain the same as it was for the product card in the trash.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
Request Body schema: application/jsonrequired
| nmIDs | Array of integers WB article (max. 1000) |
Responses
Request samples
- Payload
{- "nmIDs": [
- 123456789,
- 987654321
]
}Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": null,
- "error": false,
- "errorText": "",
- "additionalErrors": { }
}Product cards in trash list{{ /content/v2/get/cards/trash }}
Returns list of product cards in trash.
To get more than 100 product cards, use pagination.
- Make the first request:
{ "settings": { "cursor": { "limit": 100 } } } - Copy
"trashedAt": "***"and"nmID": ***from thecursorin the response and insert into thecursorof your next request. - Make the next request.
- Repeat 2 and 3 until
totalvalue in the response is less than thelimitvalue in the request. This will mean you got all cards.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
query Parameters
| locale | string Enum: "ru" "en" "zh" Language for response of the
Not used in the sandbox |
Request Body schema: application/jsonrequired
object Settings |
Responses
Request samples
- Payload
{- "settings": {
- "sort": {
- "ascending": false
}, - "filter": {
- "textSearch": "4603743187500888"
}, - "cursor": {
- "trashedAt": "2023-12-06T11:17:00.96577Z",
- "nmID": 370870300,
- "limit": 11
}
}
}Response samples
- 200
- 400
- 401
- 403
- 429
{- "cards": [
- {
- "nmID": 1234567,
- "vendorCode": "wb5xsy5ftj",
- "subjectID": 1436,
- "subjectName": "Ведра хозяйственные",
- "photos": [
- {
}
], - "wholesale": {
- "enabled": true,
- "quantum": 114
}, - "sizes": [
- {
- "chrtID": 111111111,
- "techSize": "0",
- "skus": [
- "xxxxxxxxxxxx"
]
}
], - "dimensions": {
- "length": 35,
- "width": 40,
- "height": 15,
- "weightBrutto": 2.9,
- "isValid": false
}, - "createdAt": "2023-12-05T14:55:09.323462Z",
- "trashedAt": "2023-12-06T10:57:42.193028Z"
}
], - "cursor": {
- "trashedAt": "2023-12-06T10:57:42.193028Z",
- "nmID": 194128521,
- "total": 1
}
}Upload media file{{ /content/v3/media/file }}
Uploads and adds one media file for the product card.
Requirements for images:
- maximum images for each product card — 30,
- minimal resolution – 700 × 900 pixels,
- maximum size — 32 МB,
- minimal quality — 65%,
- formats — JPG, PNG, BMP, GIF (static), WebP.
Requirements for video:
- maximum one video for each product card
- maximum size — 50 MB
- formats — MOV, MP4
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
header Parameters
| X-Nm-Id required | string Example: 213864079 Wildberries article |
| X-Photo-Number required | integer Example: 2 Number of media file, starting from To add the image to the uploaded ones, set file the number more then number of uploaded files. |
Request Body schema: multipart/form-datarequired
| uploadfile | string <binary> |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": { },
- "error": false,
- "errorText": "",
- "additionalErrors": null
}Upload media files via links{{ /content/v3/media/save }}
The method uploads a set of media files to a product card by specifying links in the request.
data) replace old ones (mediaFiles). To add new files, set links both to new and old files.
Requirements for links:
- the link must directly lead to the file. Ensure the link does not lead to a preview or authorization page. If the link leads to TXT or HTML page, it is considered incorrect
- no authorization is required to access the file via the link
Requirements for images:
- maximum images for each product card — 30
- minimal resolution – 700 × 900 pixels
- maximum size — 32 MB
- minimal quality — 65%
- formats — JPG, PNG, BMP, GIF (static), WebP
Requirements for video:
- maximum one video for each product card
- maximum size — 50 MB
- formats — MOV, MP4
If one or several images or a video do not meet the requirements, no images and a video will be uploaded even if you have the success response (200)
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
Request Body schema: application/jsonrequired
| nmId | integer Wildberries article |
| data | Array of strings Links to images in the order that they are on the card, and a video at any position of the array |
Responses
Request samples
- Payload
Response samples
- 200
- 400
- 401
- 403
- 409
- 422
- 429
{- "data": { },
- "error": false,
- "errorText": "",
- "additionalErrors": null
}Service for operating with the tags of product cards. Tags are designed to quickly find a product card in your user panel.
Create a tag{{ /content/v2/tag }}
Creates a tag.
It is possible to create 15 tags.
The maximum length of a tag is 15 characters
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
Request Body schema: application/jsonrequired
| color | string Tag color. Available colors:
|
| name | string Tag name |
Responses
Request samples
- Payload
{- "color": "D1CFD7",
- "name": "Sale"
}Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": null,
- "error": false,
- "errorText": "",
- "additionalErrors": null
}Update the tag{{ /content/v2/tag/{id} }}
Changes tag data: name and color
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
path Parameters
| id required | integer Example: 1 Numeric tag ID |
Request Body schema: application/jsonrequired
| color | string Tag color |
| name | string Tag name |
Responses
Request samples
- Payload
{- "color": "D1CFD7",
- "name": "Sale"
}Response samples
- 200
- 400
- 401
- 403
- 429
Success
{- "data": null,
- "error": true,
- "errorText": "Bad request",
- "additionalErrors": null
}Delete the tag{{ /content/v2/tag/{id} }}
Deletes the tag
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
path Parameters
| id required | integer Example: 1 Numeric tag ID |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": null,
- "error": true,
- "errorText": "Such a tag does not exist",
- "additionalErrors": null
}Tag management in the product card{{ /content/v2/tag/nomenclature/link }}
The method allows to add tags to the product card and remove tags from the product card.
When removing a tag from a product card, the tag itself is not removed.
It is possible to add 15 tags to a product card.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 100 requests | 600 milliseconds | 5 requests |
Exceptions are the methods:
Authorizations:
Request Body schema: application/jsonrequired
| nmID | integer WB article |
| tagsIDs | Array of integers An array of numeric tag IDs. |
Responses
Request samples
- Payload
{- "nmID": 179891389,
- "tagsIDs": [
- 123456
]
}Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": null,
- "error": false,
- "errorText": "",
- "additionalErrors": null
}Methods to set prices and discounts.
When you update price or discounts, some product data may be not updated. For example, if you set incorrect price or discount. Check the upload status with the processed upload state methods.
Upload statuses:
3— processed, no errors in products, prices and discounts were updated4— canceled5— processed, but some products have errors. Prices and Discounts for the other products were updated. You can get errors with the processed upload details method.6— processed, but all products have errors. You can get errors with the processed upload details method too.
If you set discounts with promo calendar, uploads are processing. Discount will be set at promo start. This upload has status 1, and you can get upload state and details with the unprocessed upload state and unprocessed upload details methods.
2.
Set prices and discounts{{ /api/v2/upload/task }}
Sets prices and discounts.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 6 seconds | 10 requests | 600 milliseconds | 5 requests |
Authorizations:
Request Body schema: application/jsonrequired
required | Array of objects (Goods) Products, prices and discounts. Maximum 1,000 products. Both price and discount can not be empty
|
Responses
Request samples
- Payload
{- "data": [
- {
- "nmID": 123,
- "price": 999,
- "discount": 30
}
]
}Response samples
- 200
- 208
- 400
- 401
- 403
- 422
- 429
{- "data": {
- "id": 0,
- "alreadyExists": false
}, - "error": false,
- "errorText": ""
}Sets size prices{{ /api/v2/upload/task/size }}
Sets different prices for different sizes.
Only for products from categories where size price setting is available. For these products "editableSizePrice":true in Get product sizes with prices response.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 6 seconds | 10 requests | 600 milliseconds | 5 requests |
Authorizations:
Request Body schema: application/jsonrequired
required | Array of objects (SizeGoodsBody) Sizes and prices. Maximum 1,000 sizes
|
Responses
Request samples
- Payload
{- "data": [
- {
- "nmID": 123,
- "sizeID": 98989887,
- "price": 999
}
]
}Response samples
- 200
- 208
- 400
- 401
- 403
- 422
- 429
{- "data": {
- "id": 0,
- "alreadyExists": false
}, - "error": false,
- "errorText": ""
}Set WB Club discounts{{ /api/v2/upload/task/club-discount }}
Sets WB Club subscription discounts.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 6 seconds | 10 requests | 600 milliseconds | 5 requests |
Authorizations:
Request Body schema: application/jsonrequired
required | Array of objects (ClubDisc) Products and WB Club discounts. Maximum 1,000 products. |
Responses
Request samples
- Payload
{- "data": [
- {
- "nmID": 123,
- "clubDiscount": 5
}
]
}Response samples
- 200
- 208
- 400
- 401
- 403
- 422
- 429
{- "data": {
- "id": 0,
- "alreadyExists": false
}, - "error": false,
- "errorText": ""
}Processed upload state{{ /api/v2/history/tasks }}
Returns the processed upload data.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 6 seconds | 10 requests | 600 milliseconds | 5 requests |
Authorizations:
query Parameters
| uploadID required | integer Example: uploadID=146567 Download ID |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": {
- "uploadID": 395643565,
- "status": 3,
- "uploadDate": "2022-08-21T22:00:13+02:00",
- "activationDate": "2022-08-21T22:00:13+02:00",
- "overAllGoodsNumber": 0,
- "successGoodsNumber": 0
}, - "error": false,
- "errorText": ""
}Processed upload details{{ /api/v2/history/goods/task }}
Returns products in processed upload including product errors.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 6 seconds | 10 requests | 600 milliseconds | 5 requests |
Authorizations:
query Parameters
| limit required | integer <uint> <= 1000 Example: limit=10 Number of elements per page (pagination) |
| offset | integer <uint> >= 0 Example: offset=0 How many results to skip. For example, with value |
| uploadID required | integer Example: uploadID=146567 Download ID |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": {
- "uploadID": 3235236546,
- "historyGoods": [
- {
- "nmID": 544833232,
- "vendorCode": "34552332",
- "sizeID": 54483342,
- "techSizeName": "42",
- "price": 1500,
- "currencyIsoCode4217": "RUB",
- "discount": 25,
- "clubDiscount": 5,
- "status": 1,
- "errorText": "You can't change the item price. Item was added to the Sale due to high inventory"
}
]
}
}Unprocessed upload state{{ /api/v2/buffer/tasks }}
Returns the processing upload data.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 6 seconds | 10 requests | 600 milliseconds | 5 requests |
Authorizations:
query Parameters
| uploadID required | integer Example: uploadID=146567 Download ID |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": {
- "uploadID": 395643565,
- "status": 1,
- "uploadDate": "2022-08-21T22:00:13+02:00",
- "activationDate": "2022-08-21T22:00:13+02:00",
- "overAllGoodsNumber": 100,
- "successGoodsNumber": 0
}, - "error": false,
- "errorText": ""
}Unprocessed upload details{{ /api/v2/buffer/goods/task }}
Returns products in processing upload including product errors.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 6 seconds | 10 requests | 600 milliseconds | 5 requests |
Authorizations:
query Parameters
| limit required | integer <uint> <= 1000 Example: limit=10 Number of elements per page (pagination) |
| offset | integer <uint> >= 0 Example: offset=0 How many results to skip. For example, with value |
| uploadID required | integer Example: uploadID=146567 Download ID |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": {
- "uploadID": 3235236546,
- "bufferGoods": [
- {
- "nmID": 544833232,
- "vendorCode": "34552332",
- "sizeID": 54483342,
- "techSizeName": "XXL",
- "price": 1500,
- "currencyIsoCode4217": "RUB",
- "discount": 25,
- "clubDiscount": 5,
- "status": 1,
- "errorText": null
}
]
}, - "error": false,
- "errorText": ""
}Get products with prices{{ /api/v2/list/goods/filter }}
Returns product data.
You can specify only one article in one request.
To get data for all products, do not set the article, set limit=1000, and use the offset field to set the data offset. The offset should be calculated using the formula: offset plus limit from the previous request. Repeat the request until you receive a response with an empty array.
Use separate methods to get data:
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 6 seconds | 10 requests | 600 milliseconds | 5 requests |
Authorizations:
query Parameters
| limit required | integer <uint> <= 1000 Example: limit=10 Number of elements per page (pagination) |
| offset | integer <uint> >= 0 Example: offset=0 How many results to skip. For example, with value |
| filterNmID | integer Example: filterNmID=44589768676 WB article for search |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": {
- "listGoods": [
- {
- "nmID": 98486,
- "vendorCode": "07326060",
- "sizes": [
- {
- "sizeID": 3123515574,
- "price": 500,
- "discountedPrice": 350,
- "clubDiscountedPrice": 332.5,
- "techSizeName": "42"
}
], - "currencyIsoCode4217": "RUB",
- "discount": 30,
- "clubDiscount": 5,
- "editableSizePrice": true,
- "isBadTurnover": true
}
]
}, - "error": false,
- "errorText": ""
}Get products with prices by articles{{ /api/v2/list/goods/filter }}
Returns product data by its article.
You can specify more than one article in one request.
Use separate methods to get data:
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 6 seconds | 10 requests | 600 milliseconds | 5 requests |
Authorizations:
Request Body schema: application/jsonrequired
| nmList required | Array of integers [ 1 .. 1000 ] items WB articles for search |
Responses
Request samples
- Payload
{- "nmList": [
- 26613989,
- 1348041
]
}Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": {
- "listGoods": [
- {
- "nmID": 98486,
- "vendorCode": "07326060",
- "sizes": [
- {
- "sizeID": 3123515574,
- "price": 500,
- "discountedPrice": 350,
- "clubDiscountedPrice": 332.5,
- "techSizeName": "42"
}
], - "currencyIsoCode4217": "RUB",
- "discount": 30,
- "clubDiscount": 5,
- "editableSizePrice": true,
- "isBadTurnover": true
}
]
}, - "error": false,
- "errorText": ""
}Get product sizes with prices{{ /api/v2/list/goods/size/nm }}
Returns sizes data for the product. Only for products from categories where size price setting is available. For these products "editableSizePrice":true.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 6 seconds | 10 requests | 600 milliseconds | 5 requests |
Authorizations:
query Parameters
| limit required | integer <uint> <= 1000 Example: limit=10 Number of elements per page (pagination) |
| offset | integer <uint> >= 0 Example: offset=0 How many results to skip. For example, with value |
| nmID required | integer Example: nmID=1 WB article |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": {
- "listGoods": [
- {
- "nmID": 123,
- "sizeID": 98989887,
- "vendorCode": "34552332",
- "price": 1000,
- "currencyIsoCode4217": "RUB",
- "discountedPrice": 700,
- "clubDiscountedPrice": 665,
- "discount": 30,
- "clubDiscount": 5,
- "techSizeName": "42",
- "editableSizePrice": true,
- "isBadTurnover": true
}
]
}, - "error": false,
- "errorText": "string"
}Get products in quarantine{{ /api/v2/quarantine/goods }}
Returns information about products in quarantine.
If the product new price with discount will be minimum 3 times less than the old price, the product will be placed in quarantine and will be sold at the old price. An error about this will be in the upload states method response.
You can change price or discount via API or release product from quarantine in personal account.
For products with size-based pricing, quarantine does not apply.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 6 seconds | 10 requests | 600 milliseconds | 5 requests |
Authorizations:
query Parameters
| limit required | integer <uint> <= 1000 Example: limit=10 Number of elements per page (pagination) |
| offset | integer <uint> >= 0 Example: offset=0 How many results to skip. For example, with value |
Responses
Response samples
- 200
- 400
- 401
- 403
- 422
- 429
{- "data": {
- "quarantineGoods": [
- {
- "nmID": 206025152,
- "sizeID": null,
- "techSizeName": "",
- "currencyIsoCode4217": "RUB",
- "newPrice": 134,
- "oldPrice": 4000,
- "newDiscount": 25,
- "oldDiscount": 25,
- "priceDiff": -2899.5
}
]
}, - "error": false,
- "errorText": ""
}Get offices{{ /api/v3/offices }}
Returns a list of all offices to link to seller warehouse.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 300 requests | 200 milliseconds | 20 requests |
One request with a response code of 409 is counted as 10 requests
Authorizations:
Responses
Response samples
- 200
- 401
- 403
- 429
[- {
- "address": "ул. Троицкая, Подольск, Московская обл.",
- "name": "Коледино",
- "city": "Москва",
- "id": 15,
- "longitude": 55.386871,
- "latitude": 37.588898,
- "cargoType": 1,
- "deliveryType": 1,
- "federalDistrict": "Центральный",
- "selected": true
}
]Get warehouses{{ /api/v3/warehouses }}
Returns a list of all seller's warehouses.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 300 requests | 200 milliseconds | 20 requests |
One request with a response code of 409 is counted as 10 requests
Authorizations:
Responses
Response samples
- 200
- 401
- 403
- 429
[- {
- "name": "Kosmonavtov 14",
- "officeId": 15,
- "id": 1,
- "cargoType": 1,
- "deliveryType": 1,
- "isDeleting": false,
- "isProcessing": true
}
]Create warehouse{{ /api/v3/warehouses }}
Creates a seller's warehouse. You cannot link an office that is already in use.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 300 requests | 200 milliseconds | 20 requests |
One request with a response code of 409 is counted as 10 requests
Authorizations:
Request Body schema: application/jsonrequired
| name required | string [ 1 .. 200 ] characters Seller's warehouse name |
| officeId required | integer >= 1 Office ID |
Responses
Request samples
- Payload
{- "name": "Koledino 2",
- "officeId": 15
}Response samples
- 201
- 400
- 401
- 403
- 404
- 409
- 429
{- "id": 2
}Update warehouse{{ /api/v3/warehouses/{warehouseId} }}
Updates the seller's warehouse details. Changing the linked office is allowed once per day. You cannot link an office that is already in use.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 300 requests | 200 milliseconds | 20 requests |
One request with a response code of 409 is counted as 10 requests
Authorizations:
path Parameters
| warehouseId required | integer <int64> Example: 2 The seller's warehouse ID |
Request Body schema: application/jsonrequired
| name required | string [ 1 .. 200 ] characters Seller's warehouse name |
| officeId required | integer >= 1 Office ID |
Responses
Request samples
- Payload
{- "name": "Koledino",
- "officeId": 15
}Response samples
- 400
- 401
- 403
- 404
- 409
- 429
{- "message": "Incorrect request body",
- "code": "IncorrectRequestBody"
}Delete warehouse{{ /api/v3/warehouses/{warehouseId} }}
Deletes the seller's warehouse.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 300 requests | 200 milliseconds | 20 requests |
One request with a response code of 409 is counted as 10 requests
Authorizations:
path Parameters
| warehouseId required | integer <int64> Example: 2 The seller's warehouse ID |
Responses
Response samples
- 401
- 403
- 404
- 429
{- "title": "unauthorized",
- "detail": "token problem; token is malformed: could not base64 decode signature: illegal base64 data at input byte 84",
- "code": "07e4668e--a53a3d31f8b0-[UK-oWaVDUqNrKG]; 03bce=277; 84bd353bf-75",
- "requestId": "7b80742415072fe8b6b7f7761f1d1211",
- "origin": "s2s-api-auth-catalog",
- "status": 401,
- "statusText": "Unauthorized",
- "timestamp": "2024-09-30T06:52:38Z"
}Contacts list{{ /api/v3/dbw/warehouses/{warehouseId}/contacts }}
Returns a list of contacts linked to the seller's warehouse.
Only for warehouses with delivery type 3 — Delivery by WB courier (DBW).
- for getting and updating contact lists
- for getting and deleting metadata
- assembly orders
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 300 requests | 200 milliseconds | 20 requests |
Authorizations:
path Parameters
| warehouseId required | integer <int64> Example: 2 The seller's warehouse ID |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
{- "contacts": [
- {
- "comment": "Иванов Иван Иванович. Звонить с 10 до 21 часа.",
- "phone": "+79998887766"
}
]
}Update contacts list{{ /api/v3/dbw/warehouses/{warehouseId}/contacts }}
Updates the seller's warehouse contact list.
Only for warehouses with delivery type 3 — WB courier (DBW).
A maximum of 5 contacts can be added to the warehouse.
To delete contacts, send an empty contacts array.
- for getting and updating contact lists
- for getting and deleting metadata
- assembly orders
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 300 requests | 200 milliseconds | 20 requests |
Authorizations:
path Parameters
| warehouseId required | integer <int64> Example: 2 The seller's warehouse ID |
Request Body schema: application/jsonrequired
Array of objects <= 5 items |
Responses
Request samples
- Payload
{- "contacts": [
- {
- "comment": "Иванов Иван Иванович. Звонить с 10 до 21 часа.",
- "phone": "+79998887766"
}
]
}Response samples
- 400
- 401
- 403
- 429
{- "code": "IncorrectParameter",
- "message": "IncorrectParameter"
}Inventory in sellers' warehouses
Update inventory{{ /api/v3/stocks/{warehouseId} }}
Updates product inventory.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 300 requests | 200 milliseconds | 20 requests |
One request with a response code of 409 is counted as 10 requests
Authorizations:
path Parameters
| warehouseId required | integer <int64> Example: 2 The seller's warehouse ID |
Request Body schema: application/json
required | Array of objects [ 1 .. 1000 ] items SKU array |
Responses
Request samples
- Payload
{- "stocks": [
- {
- "sku": "SkuTest123",
- "amount": 10
}
]
}Response samples
- 400
- 401
- 403
- 404
- 406
- 409
- 429
{- "message": "Incorrect request body",
- "code": "IncorrectRequestBody"
}Delete inventory{{ /api/v3/stocks/{warehouseId} }}
Deletes product inventory.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 300 requests | 200 milliseconds | 20 requests |
One request with a response code of 409 is counted as 10 requests
Authorizations:
path Parameters
| warehouseId required | integer <int64> Example: 2 The seller's warehouse ID |
Request Body schema: application/jsonrequired
| skus | Array of strings [ 1 .. 1000 ] items SKUs array |
Responses
Request samples
- Payload
{- "skus": [
- "BarcodeTest123"
]
}Response samples
- 400
- 401
- 403
- 404
- 409
- 429
{- "message": "Incorrect request body",
- "code": "IncorrectRequestBody"
}Get inventory{{ /api/v3/stocks/{warehouseId} }}
Returns product inventory.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 minute | 300 requests | 200 milliseconds | 20 requests |
One request with a response code of 409 is counted as 10 requests
Authorizations:
path Parameters
| warehouseId required | integer <int64> Example: 2 The seller's warehouse ID |
Request Body schema: application/jsonrequired
| skus required | Array of strings [ 1 .. 1000 ] items SKUs array |
Responses
Request samples
- Payload
{- "skus": [
- "BarcodeTest123"
]
}Response samples
- 200
- 400
- 401
- 403
- 404
- 429
{- "stocks": [
- {
- "sku": "SkuTest123",
- "amount": 10
}
]
}