Общее (general)
В этом разделе:
- общая информация о WB API
- как начать работу с WB API
- как авторизоваться и создавать токены
- основные статус-коды ответов
- лимиты запросов
- как обратиться в поддержку
С помощью методов этого раздела вы можете:
- проверить подключение к WB API
- получить новости портала продавцов
- получить информацию о продавце
- управлять пользователями продавца
В этом разделе:
- общая информация о WB API
- как начать работу с WB API
- как авторизоваться и создавать токены
- основные статус-коды ответов
- лимиты запросов
- как обратиться в поддержку
С помощью методов этого раздела вы можете:
- проверить подключение к WB API
- получить новости портала продавцов
- получить информацию о продавце
- управлять пользователями продавца
Wildberries API предоставляет продавцам инструменты для управления магазином и получения оперативной и статистической информации по протоколу HTTP REST API.
Главное преимущество API — возможность автоматизировать процессы за счет интеграции с информационными системами продавца: например, ERP, WMS, OMS, CRM. С WB API продавец может не управлять магазином через интерфейс сайта вручную.
Использование API для работы с магазином на Wildberries — это отличный способ:
- автоматизировать рутинные процессы
- получить доступ к актуальной информации
- оптимизировать управление ассортиментом
Документация API предоставлена в формате Swagger OpenAPI и может быть использована для импорта в другие инструменты — например, Postman — или генерации клиентского кода на различных языках программирования с помощью Swagger CodeGen.
Для ручного тестирования API вы можете использовать:
- Зарегистрируйтесь в личном кабинете Продавца.
- Выберите способ интеграции:
- Самостоятельная интеграция с WB API с помощью собственных разработчиков или внешних специалистов. Для этого вы можете использовать спецификации в формате OpenAPI. Методы регулярно обновляются, поэтому для корректной работы интеграции необходимо следить за журналом изменений.
- Подключение партнёрских сервисы из Каталога решений для бизнеса. Сервисы сами поддерживают обновления WB API.
- Создайте API-токен в настройках магазина. Токен позволит получить доступ к WB API. Система токенов позволит вам контролировать, кто и как взаимодействует с вашими данными через API.
Практические советы:
- Используйте документацию.
Официальная документация WB API поможет разобраться в функциональности и возможностях API. В ней приводятся примеры возможных запросов и ответов, список возможных ошибок, лимиты запросов, правила безопасности и так далее. - Регулярно проверяйте работу интеграции.
Следите, корректно ли вы передаете данные и какие вы получаете ответы, чтобы вовремя дорабатывать интеграцию. Не забывайте про ограничения и учитывайте лимиты на количество запросов. - Тестируйте основные сценарии работы в песочнице
- Храните API-токен в безопасности.
Не передавайте его третьим лицам без необходимости. Используйте только доверенные сервисы. При обнаружении подозрительной активности немедленно удалите и замените токен. - При необходимости обращайтесь в техническую поддержку.
- Следите за новостями и изменениями WB API в:
Техническая поддержка происходит через диалоги в личном кабинете продавца. При создании нового обращения в техподдержку используйте категорию Интеграции по API.
Основные статус-коды ответов на запросы в WB API:
| Код | Описание | Как решить |
|---|---|---|
| 200 | Успешно | |
| 204 | Удалено/Обновлено/Добавлено | |
| 400 | Неправильный запрос | Проверьте синтаксис запроса |
| 401 | Пользователь не авторизован | Проверьте токен авторизации. Токен не должен: • быть просроченным • быть некорректным • отсутствовать в запросе |
| 402 | Требуется платёж | На балансе сервиса недостаточно средств. Ошибка возвращается только сервисам из Каталога решений для бизнеса |
| 403 | Доступ запрещён | Проверьте токен авторизации: • Категория токена должна совпадать с категорией API. • Метод должен быть доступен по вашему типу токена. • Токен не должен быть сгенерирован удалённым пользователем. • Доступ к методу не должен быть заблокирован. • Чтобы использовать методы Джема, проверьте подписку в личном кабинете. |
| 404 | Не найдено | Проверьте URL запроса |
| 409 | Ошибка сохранения для части ссылок/обновления статуса/добавления сборочного задания/т.д. | Проверьте данные запроса. Они должны отвечать требованиям и ограничениям сервиса |
| 413 | Превышен лимит объёма данных в запросе | Уменьшите количество объектов в запросе |
| 422 | Отсутствие в запросе параметра nmId/Размер ставки не изменен/т.д. | Проверьте данные запроса. Данные запроса не должны противоречить друг другу |
| 429 | Слишком много запросов | Проверьте лимиты запросов и повторите запрос позже |
| 5ХХ | Внутренние ошибки сервиса | Сервис недоступен. Повторите запрос позже или обратитесь в техническую поддержку |
details в ошибках 404 и 429 — туда мы добавляем полезную информацию по использованию методов
Пример ошибки:
{
"title": "path not found",
"detail": "Please consult the https://dev.wildberries.kg/openapi/api-information",
...
"status": 404,
"statusText": "Not Found",
"timestamp": "2025-04-24T07:25:28Z"
}
В WB API есть ограничения на скорость отправки запросов. Для равномерного распределения нагрузки используется алгоритм token bucket. Лимиты для конкретных методов API указаны в документации.
Например:
| Тип | Период | Лимит | Интервал | Всплеск |
|---|---|---|---|---|
| Персональный | 1 минута | 300 запросов | 200 миллисекунд | 20 запросов |
| Сервисный | 1 минута | 300 запросов | 200 миллисекунд | 20 запросов |
| Базовый | 1 минута | 150 запросов | 200 миллисекунд | 10 запросов |
| Тестовый | 1 минута | 150 запросов | 200 миллисекунд | 10 запросов |
Один запрос с кодами ответов 4XX учитывается как 10 запросов
- Тип — тип лимита. Определяется типом токена и аутентификацией.
• для запросов с сервисным токеном от сервисов из Каталога готовых решений для бизнеса
• для запросов с базовым токеном с секретом от зарегистрированных и авторизованных сервисов, которые не включены в Каталог
Сервисный лимит распространяется на все токены в пределах одного сервиса
- Период — временной интервал, в течение которого можно отправить максимальное количество запросов по лимиту.
- Лимит — максимальное количество запросов за период. В примере за одну минуту можно отправить до 300 запросов. Запросы должны быть равномерно распределены по времени.
- Интервал — промежуток времени для пауз между запросами. В примере должен составлять
60 секунд/300 запросов—200 миллисекундили0.2 секунды. Используйте интервал, чтобы равномерно распределить отправку запросов. - Всплеск —
burst, максимальное количество запросов, которое можно отправить одновременно, без интервальных пауз. Допустимый всплеск также возвращается в ответе в заголовкеX-Ratelimit-Remaining. Он встречается во всех статусах ответов, кроме ошибки429.
X-Ratelimit-Remaining — это количество запросов, которое можно выполнить на данный момент без пауз. Значение X-Ratelimit-Remaining уменьшается на единицу после каждого запроса. Если X-Ratelimit-Remaining равен 0 и вы сделали следующий запрос без задержки, в ответ вы получите ошибку 429. Значение X-Ratelimit-Remaining восстанавливается со временем.
4XX будет равен 10 запросам с другими статусами. Тогда значение X-Ratelimit-Remaining снизится сразу на 10 единиц.
Если вы превысите скорость выполнения запросов, вы получите ошибку 429. В этом случае следующий запрос вы сможете сделать только после небольшого ожидания. Чтобы понять, сколько времени вам нужно ждать, используйте заголовки ответа 429:
X-Ratelimit-Retry— через сколько секунд вы можете повторить запрос. Если вы сделаете попытку раньше, вы все равно будете получать ошибку429.X-Ratelimit-Limit— максимальное значение всплеска запросов —burst, которое будет восстановлено черезX-Ratelimit-Resetсекунд.X-Ratelimit-Reset— через сколько секунд допустимый всплеск запросов восстановится до максимального значения, указанного вX-Ratelimit-Limit.
Пример ответа:
HTTP/1.1 429 Too Many Requests
...
X-Ratelimit-Reset: 29
X-Ratelimit-Retry: 2
...
X-Ratelimit-Limit: 10
Проверить подключение можно с токеном любой категории
Проверка подключения{{ /ping }}
Метод проверяет:
- Успешно ли запрос доходит до WB API
- Валидность токена авторизации и URL запроса
- Совпадают ли категория токена и сервис
У каждого сервиса есть свой вариант метода в зависимости от домена.
| Период | Лимит | Интервал | Всплеск |
|---|---|---|---|
| 30 сек | 3 запроса | 10 сек | 99 запросов |
Лимит действует отдельно для каждого варианта метода в зависимости от домена
Authorizations:
Responses
Response samples
- 200
- 401
- 403
- 429
{- "TS": "2024-08-16T11:19:05+03:00",
- "Status": "OK"
}Получить новости портала продавцов{{ /api/communications/v2/news }}
Метод позволяет получать новости портала продавцов.
Для получения успешного ответа необходимо указать
один из параметров from или fromID.
За один запрос можно получить не более 100 новостей.
| Тип | Период | Лимит | Интервал | Всплеск |
|---|---|---|---|---|
| Персональный | 1 мин | 1 запрос | 1 мин | 10 запросов |
| Сервисный | 1 мин | 1 запрос | 1 мин | 10 запросов |
| Базовый с секретом | 1 мин | 1 запрос | 1 мин | 10 запросов |
| Базовый | 1 ч | 1 запрос | 1 ч | 1 запрос |
Authorizations:
query Parameters
| from | string <date> Example: from=2025-02-06 Дата, от которой необходимо выдать новости |
| fromID | integer <uint64> Example: fromID=7369 ID новости, начиная с которой — включая её — нужно получить список новостей |
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": "Аналитика продавца"
}
]
}
]
}С помощью этих методов вы можете получить:
Получить информацию о продавце{{ /api/v1/seller-info }}
Метод позволяет получать наименование продавца и ID его профиля.
| Тип | Период | Лимит | Интервал | Всплеск |
|---|---|---|---|---|
| Персональный | 1 мин | 1 запрос | 1 мин | 10 запросов |
| Сервисный | 1 мин | 1 запрос | 1 мин | 10 запросов |
| Базовый с секретом | 1 мин | 1 запрос | 1 мин | 10 запросов |
| Базовый | 24 ч | 1 запрос | 24 ч | 1 запрос |
Authorizations:
Responses
Response samples
- 200
- 401
- 402
- 429
{- "name": "ИП Кружинин В. Р.",
- "sid": "e8923014-e233-47q8-898e-3cc86d67ea61",
- "tin": "1234567890",
- "tradeMark": "Flax Store",
- "country": "ru"
}Получить рейтинг продавца{{ /api/common/v1/rating }}
Метод возвращает пользовательский рейтинг продавца и количество отзывов.
| Период | Лимит | Интервал | Всплеск |
|---|---|---|---|
| 1 мин | 1 запрос | 1 мин | 1 запрос |
Authorizations:
Responses
Response samples
- 200
- 401
- 402
- 403
- 429
{- "feedbackCount": 12355,
- "valuation": 4.55
}Получить информацию о подписке Джем{{ /api/common/v1/subscriptions }}
Метод возвращает информацию о подписке Джем:
- Если продавец никогда не подключал подписку Джем, возвращается пустой ответ
200. - Если продавец активировал и никогда не отменял подписку, возвращается:
- дата активации подписки
since - дата окончания текущего оплаченного периода
till
- дата активации подписки
- Если подписка закончилась или была отменена, но продавец подключил её повторно, возвращается:
- дата первой активации подписки
since - дата окончания текущего оплаченного периода
till
- дата первой активации подписки
- Если подписка неактивна, возвращается:
- дата первой активации подписки
since - дата окончания последнего оплаченного периода
till
- дата первой активации подписки
| Период | Лимит | Интервал | Всплеск |
|---|---|---|---|
| 1 мин | 1 запрос | 1 мин | 10 запросов |
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"
}С помощью этих методов вы можете:
- Создать приглашение для пользователя с доступом к профилю продавца
- Получить список активных или приглашённых пользователей продавца
- Изменить права доступа пользователей к профилю продавца
- Закрыть доступ пользователю к профилю продавца
Управлять доступом пользователей можно только с токеном активного владельца профиля продавца.
Создать приглашение для нового пользователя{{ /api/v1/invite }}
Метод создаёт приглашение для нового пользователя с настройкой доступов к разделам профиля продавца.
Как выдаются права доступа:
- Если
accessпустой ([]) или не указан — по умолчанию выдаются все доступы, кроме доступов к витрине (showcase) и Джем (changeJam) - Если в
accessуказана часть разделов профиля, то кроме тех доступов, что указаны в запросе, также выдаются все доступы по умолчанию - Если в
accessперечислены все возможные разделы, доступы будут выданы согласно запросу, без доступов по умолчанию - Если в
accessдважды указан один и тот же раздел (code):- при разных значениях
disabled(trueиfalse) доступ не будет выдан - при одинаковых значениях
"disabled": trueдоступ не будет выдан - при одинаковых значениях
"disabled": falseдоступ будет выдан
- при разных значениях
| Период | Лимит | Интервал | Всплеск |
|---|---|---|---|
| 1 сек | 1 запрос | 1 сек | 5 запросов |
Authorizations:
Request Body schema: application/jsonrequired
Array of objects Настройки доступа к разделам профиля продавца | |
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,
}Получить список активных или приглашённых пользователей продавца{{ /api/v1/users }}
Метод возвращает список активных или приглашённых пользователей профиля продавца.
Чтобы выбрать список, укажите значение параметра isInviteOnly:
isInviteOnly=true— список приглашённых пользователей, которые ещё не активировали доступisInviteOnly=falseили не указан — список активных пользователей
По каждому пользователю можно получить:
- роль пользователя
- разделы, к которым есть доступы
- статус приглашения
Список приглашённых пользователей в ответе всегда отсортирован по дате создания: от новых до старых.
| Период | Лимит | Интервал | Всплеск |
|---|---|---|---|
| 1 сек | 1 запрос | 1 сек | 5 запросов |
Authorizations:
query Parameters
| limit | integer <int64> <= 100 Default: 100 Количество активных или приглашённых пользователей в ответе |
| offset | integer <int64> Default: 0 Сколько элементов пропустить. Например, для значения 10 ответ начнется с 11 элемента |
| isInviteOnly | boolean Default: false
|
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
Список приглашённых пользователей
{- "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
}
]
}
]
}Изменить права доступа пользователей{{ /api/v1/users/access }}
Метод меняет права доступа одному или нескольким пользователям.
Обновляются только права доступа, переданные в параметрах запроса. Остальные поля остаются без изменений.
| Период | Лимит | Интервал | Всплеск |
|---|---|---|---|
| 1 сек | 1 запрос | 1 сек | 5 запросов |
Authorizations:
Request Body schema: application/jsonrequired
required | Array of objects Настройки доступа для пользователя |
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"
}Удалить пользователя{{ /api/v1/user }}
Метод удаляет пользователя из списка сотрудников продавца. Этому пользователю будет закрыт доступ в профиль продавца.
| Период | Лимит | Интервал | Всплеск |
|---|---|---|---|
| 1 сек | 1 запрос | 1 сек | 10 запросов |
Authorizations:
query Parameters
| deletedUserID required | integer <int64> ID пользователя, которому будет закрыт доступ |
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"
}