General (general)
In this section:
- WB API general information
- how to get started with the WB API
- how to log in and create tokens
- main HTTP status codes
- rate limits
- how to contact support
Use the methods in this section to:
- check the WB API connection
- get seller portal news
- get seller information
- manage seller users
In this section:
- WB API general information
- how to get started with the WB API
- how to log in and create tokens
- main HTTP status codes
- rate limits
- how to contact support
Use the methods in this section to:
- check the WB API connection
- get seller portal news
- get seller information
- manage seller users
The Wildberries API provides sellers with tools to manage their store and obtain real-time and statistical information via the HTTP REST API protocol.
The main advantage of the API is the ability to automate processes through integration with the seller information systems, such as ERP, WMS, OMS, CRM. With the WB API, sellers can manage their store without manually using the website interface.
Using the API to operate a store on Wildberries is a great way to:
- automate routine processes
- access up-to-date information
- optimize inventory management
The API documentation is provided in the Swagger OpenAPI format and can be used for import into other tools, such as Postman, or for generating client code in various programming languages using Swagger CodeGen.
For manual API testing you can use:
- Register in the Seller personal account.
- Choose the integration type:
- Self-integration with the WB API using your own developers or outsource specialists. For this, you can use the specifications in OpenAPI format. Methods are updated regularly, so for the integration to work properly, please monitor the release notes.
- Connecting partner services from the Solutions for Business catalog. The services maintain updates for the WB API themselves.
- Create an API token in the store settings. The token will allow you to access the WB API. The token system lets you control who interacts with your data through the API and how.
Practical tips:
- Use the documentation.
Official WB API documentation will help you understand the functionality and capabilities of the API. It includes examples of possible requests and responses, a list of potential errors, rate limits, security rules, and more. - Regularly check the integration.
Ensure that you are transmitting data correctly and note the responses you receive to timely update the integration. Remember the restrictions and take into account the request limits. - Keep the API token secure.
Do not share it with third parties unnecessarily. Use only trusted services. If you detect suspicious activity, immediately delete and replace the token. - Contact technical support if needed.
- Stay updated on WB API news and changes in:
Technical support is conducted via chats in the seller personal account. When creating a new chat with the support, use the Интеграции по API category.
Main response status codes for requests in the WB API:
| Code | Description | How to resolve |
|---|---|---|
| 200 | Success | |
| 204 | Deleted/Updated/Confirmed | |
| 400 | Bad request | Check the request syntax |
| 401 | Unauthorized | Check the authorization token. The token must not be: • expired • incorrect • missing from the request |
| 402 | Payment required | The service has insufficient funds on its balance. The error is only returned to services from the Solutions for business Catalog |
| 403 | Access denied | Check the authorization token: • The token category must match the API category. • Method must be available by your token type. • The token must not be generated by a deleted user. • Access to the method must not be blocked. • To use the Jam methods, check your subscription in your personal account. |
| 404 | Not found | Check the request URL |
| 409 | Status update error/Error adding label/etc | Check the request data. It must meet the service's requirements and limitations |
| 413 | The request body size exceeds the given limit | Reduce the number of objects in the request |
| 422 | Error processing request parameters/Unexpected result/etc | Check the request data. The request data must not contradict each other |
| 429 | Too many requests | Check the method rate limits and retry the request later |
| 5ХХ | Internal service error | Service is unavailable. Retry the request later or contact WB technical support |
details field in 404 and 429 errors — we add useful information there regarding the use of methods
Example of an error:
{
"title": "path not found",
"detail": "Please consult the https://dev.wildberries.cn/openapi/api-information",
...
"status": 404,
"statusText": "Not Found",
"timestamp": "2025-04-24T07:25:28Z"
}
The WB API has request rate limits. To evenly distribute the load, the token bucket algorithm is used. Limits for specific API methods are specified in the documentation.
For example:
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 minute | 300 requests | 200 milliseconds | 20 requests |
| Service | 1 minute | 300 requests | 200 milliseconds | 20 requests |
| Base | 1 minute | 150 requests | 200 milliseconds | 10 requests |
| Test | 1 minute | 150 requests | 200 milliseconds | 10 requests |
One request with 4XX response codes is counted as 10 requests
- Type — the type of limit. Determined by the token type and authentication.
• for requests with a service token from services in the Catalog for business solutions
• for requests with a basic token with a secret from registered and authorized services that are not included in the Catalog
The service limit applies to all tokens within a single service.
- Period — the time interval during which the maximum number of requests according to the limit can be sent.
- Limit — the maximum number of requests per period. In the example, up to 300 requests can be sent in one minute. Requests should be evenly distributed over time.
- Interval — the time gap for pauses between requests. In the example, it should be
60 seconds/300 requests—200 millisecondsor0.2 seconds. Use the interval to evenly distribute the sending of requests. - Burst — the maximum number of requests that can be sent simultaneously, without interval pauses. The allowed burst is also returned in the response header
X-Ratelimit-Remaining. It appears in all response statuses except for error429.
X-Ratelimit-Remaining is the number of requests that can currently be sent without pauses. The value of X-Ratelimit-Remaining decreases by one after each request. If X-Ratelimit-Remaining is 0 and you make the next request without a delay, you will receive a 429 error in response. The value of X-Ratelimit-Remaining is restored over time.
4XX errors will count as 10 requests with other statuses. In such cases, the value of X-Ratelimit-Remaining will decrease by 10 units immediately.
If you exceed the request rate limit, you will receive a 429 error. In this case, you need to wait a short period before making the next request. To determine how long you need to wait, use the headers from the 429 response:
X-Ratelimit-Retry— the number of seconds after which you can retry the request. If you attempt it earlier, you will continue to receive a429error.X-Ratelimit-Limit— the maximum allowable burst of requests, which will be replenished afterX-Ratelimit-Resetseconds.X-Ratelimit-Reset— the number of seconds after which the allowable burst of requests will be restored to the maximum value specified inX-Ratelimit-Limit.
Response example:
HTTP/1.1 429 Too Many Requests
...
X-Ratelimit-Reset: 29
X-Ratelimit-Retry: 2
...
X-Ratelimit-Limit: 10
Connection Check{{ /ping }}
Checks:
- Whether the request successfully reaches the WB API.
- The validity of the authorization token and request URL.
- Whether the token category matches the service.
Each service has its own version of the method depending on the domain:
| Category | Request URL |
|---|---|
| Content | https://content-api.wildberries.cn/pinghttps://content-api-sandbox.wildberries.cn/ping |
| Analytics | https://seller-analytics-api.wildberries.cn/ping |
| Prices and Discounts | https://discounts-prices-api.wildberries.cn/pinghttps://discounts-prices-api-sandbox.wildberries.cn/ping |
| Marketplace | https://marketplace-api.wildberries.cn/ping |
| Statistics | https://statistics-api.wildberries.cn/pinghttps://statistics-api-sandbox.wildberries.cn/ping |
| Promotion | https://advert-api.wildberries.cn/pinghttps://advert-api-sandbox.wildberries.cn/ping |
| Feedbacks and Questions | https://feedbacks-api.wildberries.cn/pinghttps://feedbacks-api-sandbox.wildberries.cn/ping |
| Buyers Chat | https://buyer-chat-api.wildberries.cn/ping |
| Buyers Returns | https://returns-api.wildberries.cn/ping |
| Documents | https://documents-api.wildberries.cn/ping |
| Finance | https://finance-api.wildberries.cn/ping |
| Rates, News, Get Seller Information | https://common-api.wildberries.cn/ping |
| Seller User Management | https://user-management-api.wildberries.cn/ping |
Authorizations:
Responses
Response samples
- 200
- 401
- 403
- 429
{- "TS": "2024-08-16T11:19:05+03:00",
- "Status": "OK"
}Getting Seller Portal News{{ /api/communications/v2/news }}
The method allows getting news from the seller portal.
To receive a successful response, one of the parameters from or fromID must be specified.
You can get up to 100 news items per request.
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 1 request | 1 min | 10 requests |
| Service | 1 min | 1 request | 1 min | 10 requests |
| Base with secret | 1 min | 1 request | 1 min | 10 requests |
| Base | 1 h | 1 request | 1 h | 1 request |
Authorizations:
query Parameters
| from | string <date> Example: from=2025-02-06 Date from which to get news |
| fromID | integer <uint64> Example: fromID=7369 The news ID, starting from which — including it — you need to get the list of news |
Responses
Response samples
- 200
- 401
- 429
{- "data": [
- {
- "content": "Теперь в кампаниях ВБ.Медиа вы можете размещать баннеры для пользователей, которые взаимодействовали\nс товарами из определённой категории: покупали, искали, добавляли в корзину и избранное. Также можно\nвыбрать период, за который хотите учитывать эти действия.Например, вы продаёте обувь. Рекламу можно\nпоказать людям, которые добавляли в корзину или избранное товары из этой категории за последние 14\nдней. Возможно, пользователи, которые попадают под этот критерий, уже совершили покупку. Поэтому вы\nможете уточнить настройки показа: добавить параметр «Не покупал товар из категории „Обувь“ в последние\n14 дней». Так вероятность того, что ваш баннер приведёт к покупке, будет выше.Чтобы запустить рекламу,\nсоздайте в кабинете ВБ.Медиа кампанию «По показам» и на шаге 4 включите «Поведенческие параметры».\nЭти параметры можно комбинировать с таргетированием по предполагаемым интересам, полу, возрасту и\nрегиону.Подробнее о том, как настроить таргетинг, — в инструкции «По показам».Запустить рекламу на\nWildberries\n",
- "date": "2025-02-05T14:10:35+03:00",
- "header": "Новые настройки кампаний в ВБ.Медиа: таргетируйте рекламу в зависимости от того, как аудитория\nиспользует сервисы Wildberries\n",
- "id": 7369,
- "types": [
- {
- "id": 4,
- "name": "Маркетинг"
}
]
}, - {
- "content": "Добавили получение отчётов по текстам поисковых запросов в формате CSV. В описания методов «Создать\nотчёт» и «Получить отчёт» добавили описания и примеры моделей: • запросов — SearchReportTextReq, •\nуспешных ответов (статус-код 200) — SearchReportTextRes.В ответ метода «Поисковые запросы по товару»\nдобавили 8 полей и структуры price и medianPosition. Узнать больше можно в Журнале изменений.Эти методы\nдоступны только с подпиской «Джем»\n",
- "date": "2025-02-06T18:14:58+03:00",
- "header": "Изменения в API «Аналитики и данных»",
- "id": 7373,
- "types": [
- {
- "id": 8,
- "name": "API"
}, - {
- "id": 41,
- "name": "Аналитика продавца"
}
]
}
]
}Using these methods, you can get:
Get Seller Information{{ /api/v1/seller-info }}
This method allows you to obtain the seller's name and account ID.
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 1 request | 1 min | 10 requests |
| Service | 1 min | 1 request | 1 min | 10 requests |
| Base with secret | 1 min | 1 request | 1 min | 10 requests |
| Base | 24 h | 1 request | 24 h | 1 request |
Authorizations:
Responses
Response samples
- 200
- 401
- 402
- 429
{- "name": "ИП Кружинин В. Р.",
- "sid": "e8923014-e233-47q8-898e-3cc86d67ea61",
- "tin": "1234567890",
- "tradeMark": "Flax Store"
}Get Seller Rating{{ /api/common/v1/rating }}
The method returns the seller user rating and feedbacks count.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 min | 1 request | 1 min | 1 request |
Authorizations:
Responses
Response samples
- 200
- 401
- 402
- 403
- 429
{- "feedbackCount": 12355,
- "valuation": 4.55
}Get Jam Subscription Information{{ /api/common/v1/subscriptions }}
The method returns Jam subscription information:
- If seller has never activated the Jam subscription, an empty
200response is returned. - If seller activated the subscription and never canceled it, the following is returned:
- subscription activation date
since - end date of the current paid period
till
- subscription activation date
- If the subscription expired or was canceled but seller reactivated it, the following is returned:
- date of the first subscription activation
since - end date of the current paid period
till
- date of the first subscription activation
- If the subscription is inactive, the following is returned:
- date of the first subscription activation
since - end date of the last paid period
till
- date of the first subscription activation
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 min | 1 request | 1 min | 10 requests |
Authorizations:
Responses
Response samples
- 200
- 401
- 402
- 403
- 429
{- "state": "active",
- "activationSource": "jam",
- "level": "premium",
- "since": "2026-03-16T08:38:08.056406Z",
- "till": "2026-04-25T14:44:28.393587Z"
}With these methods, you can:
- Create an invitation for a user with access to the seller account
- Get a list of the seller active or invited users
- Update user's access permissions for the seller account
- Revoke a user's access to the seller account
You can manage user access only with a token from the active owner of the seller account.
Create an Invitation for a New User{{ /api/v1/invite }}
The method creates an invitation for a new user with access settings to the seller account sections.
How access rights are assigned:
- If
accessis empty ([]) or not provided — by default, all access is granted, except for access to the showcase (showcase) and Jam (changeJam) - If
accessspecifies some of the account sections, then in addition to the access rights specified in the request, all default access rights are also granted - If
accesslists all possible sections, access rights will be granted according to the request, without the default access rights - If the same section (
code) is specified twice inaccess:- with different
disabledvalues (trueandfalse), access will not be granted - with identical values of
"disabled": true, access will not be granted - with identical values of
"disabled": false, access will be granted
- with different
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 s | 1 request | 1 s | 5 requests |
Authorizations:
Request Body schema: application/jsonrequired
Array of objects Access settings for seller account sections | |
required | object |
Responses
Request samples
- Payload
{- "access": [
- {
- "code": "balance",
- "disabled": false
}, - {
- "code": "pointsForReviews",
- "disabled": false
}, - {
- "code": "brands",
- "disabled": true
}, - {
- "code": "finance",
- "disabled": true
}, - {
- "code": "supply",
- "disabled": true
}
], - "invite": {
- "phoneNumber": "79999999999",
- "position": "Менеджер"
}
}Response samples
- 200
- 400
- 401
- 403
- 429
{- "inviteID": "741b8aa6-08ac-4782-8a9d-d931bcbbf608",
- "expiredAt": "2025-10-06T10:56:04.335060746Z",
- "isSuccess": true,
}Get a List of Seller Active or Invited Users{{ /api/v1/users }}
The method returns a list of seller account active or invited users.
Specify the value of the isInviteOnly parameter to select the list:
isInviteOnly=true— invited users list who have not yet activated accessisInviteOnly=falseor is not provided — active users list
For each user, you can get:
- user's role
- accessible sections
- invitation status
The list of invited users in the response is always sorted by creation date: from newest to oldest.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 s | 1 request | 1 s | 5 requests |
Authorizations:
query Parameters
| limit | integer <int64> <= 100 Default: 100 The number of active or invited users in the response |
| offset | integer <int64> Default: 0 How many results to skip. For example, for the value 10, the response will start with the 11 element |
| isInviteOnly | boolean Default: false
|
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
List of invited users
{- "total": 2,
- "countInResponse": 2,
- "users": [
- {
- "id": 0,
- "role": "",
- "position": "Аналитик",
- "phone": "79998888888",
- "email": "",
- "isOwner": false,
- "firstName": "",
- "secondName": "",
- "patronymic": "",
- "goodsReturn": false,
- "isInvitee": true,
- "inviteeInfo": {
- "phoneNumber": "79998888888",
- "position": "Аналитик",
- "inviteUuid": "00000000-0000-4000-8000-000000000001",
- "expiredAt": "2025-12-01T00:00:00Z",
- "isActive": true
}, - "access": [
- {
- "code": "supply",
- "disabled": true
}, - {
- "code": "changeJam",
- "disabled": true
}, - {
- "code": "showcase",
- "disabled": false
}, - {
- "code": "suppliersDocuments",
- "disabled": false
}, - {
- "code": "discountPrice",
- "disabled": true
}, - {
- "code": "feedbacks",
- "disabled": false
}, - {
- "code": "questions",
- "disabled": false
}, - {
- "code": "brands",
- "disabled": true
}, - {
- "code": "pointsForReviews",
- "disabled": false
}, - {
- "code": "pinFeedbacks",
- "disabled": false
}, - {
- "code": "finance",
- "disabled": true
}, - {
- "code": "balance",
- "disabled": false
}, - {
- "code": "oldAnalyticsReports",
- "disabled": false
}, - {
- "code": "marketplace",
- "disabled": false
}, - {
- "code": "brandsFlow",
- "disabled": false
}, - {
- "code": "copyrightComplaints",
- "disabled": false
}, - {
- "code": "pretrialClaims",
- "disabled": false
}, - {
- "code": "sellersChat",
- "disabled": false
}, - {
- "code": "brandzone",
- "disabled": false
}, - {
- "code": "brandzoneSubscribe",
- "disabled": false
}
]
}, - {
- "id": 0,
- "role": "",
- "position": "",
- "phone": "7999XXXX102",
- "email": "",
- "isOwner": false,
- "firstName": "",
- "secondName": "",
- "patronymic": "",
- "goodsReturn": false,
- "isInvitee": true,
- "inviteeInfo": {
- "phoneNumber": "79996666666",
- "position": "Аналитик",
- "inviteUuid": "00000000-0000-4000-8000-000000000002",
- "expiredAt": "2025-12-10T00:00:00Z",
- "isActive": false
}, - "access": [
- {
- "code": "supply",
- "disabled": true
}, - {
- "code": "changeJam",
- "disabled": true
}, - {
- "code": "showcase",
- "disabled": false
}, - {
- "code": "suppliersDocuments",
- "disabled": false
}, - {
- "code": "discountPrice",
- "disabled": true
}, - {
- "code": "feedbacks",
- "disabled": false
}, - {
- "code": "questions",
- "disabled": false
}, - {
- "code": "brands",
- "disabled": true
}, - {
- "code": "pointsForReviews",
- "disabled": false
}, - {
- "code": "pinFeedbacks",
- "disabled": false
}, - {
- "code": "finance",
- "disabled": true
}, - {
- "code": "balance",
- "disabled": false
}, - {
- "code": "oldAnalyticsReports",
- "disabled": false
}, - {
- "code": "marketplace",
- "disabled": false
}, - {
- "code": "brandsFlow",
- "disabled": false
}, - {
- "code": "copyrightComplaints",
- "disabled": false
}, - {
- "code": "pretrialClaims",
- "disabled": false
}, - {
- "code": "sellersChat",
- "disabled": false
}, - {
- "code": "brandzone",
- "disabled": false
}, - {
- "code": "brandzoneSubscribe",
- "disabled": false
}
]
}
]
}Update User's Access Permissions{{ /api/v1/users/access }}
The method changes the access rights for one or more users.
Only the data passed in the request parameters will be updated. The other fields will remain unchanged.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 s | 1 request | 1 s | 5 requests |
Authorizations:
Request Body schema: application/jsonrequired
required | Array of objects Access settings for user |
Responses
Request samples
- Payload
{- "usersAccesses": [
- {
- "userId": 42334965,
- "access": [
- {
- "code": "balance",
- "disabled": false
}, - {
- "code": "finance",
- "disabled": true
}, - {
- "code": "feedbacks",
- "disabled": false
}
]
}, - {
- "userId": 52334965,
- "access": [
- {
- "code": "balance",
- "disabled": true
}, - {
- "code": "changeJam",
- "disabled": false
}, - {
- "code": "showcase",
- "disabled": false
}
]
}
]
}Response samples
- 400
- 401
- 403
- 429
{- "title": "Bad Request",
- "status": 400,
- "detail": "bad request cause: user is not in current supplier",
- "requestId": "c479c04d0b576a9ba0b20fdf235004c2",
- "origin": "public-acl"
}Delete User{{ /api/v1/user }}
The method removes a user from the seller users list. This user will no longer have access to the seller account.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 s | 1 request | 1 s | 10 requests |
Authorizations:
query Parameters
| deletedUserID required | integer <int64> ID of the user whose access will be revoked |
Responses
Response samples
- 400
- 401
- 403
- 429
{- "title": "Bad Request",
- "status": 400,
- "detail": "bad request cause: user is not in current supplier",
- "requestId": "c479c04d0b576a9ba0b20fdf235004c2",
- "origin": "public-acl"
}