API запросы Wildberries нужны не ради самих запросов, а ради процессов, которые перестают делаться руками: обновление цен по расписанию, выгрузка сборочных заданий FBS и смена их статусов, синхронизация остатков со складской системой, сбор отзывов с автоответом, ночная заливка продаж в свою базу. Ниже разобран каждый сценарий: какие методы задействованы, какие ограничения на объём и частоту установил Wildberries, что делать при коде 429 и где данные приходят с задержкой.
Как получить токен, какие бывают категории и полный перечень методов, разобрано отдельно в статье документация API Wildberries. Здесь только прикладная часть, сверенная по порталу разработчиков WB на 22 августа 2026 года.
Wildberries Seller API устроен не как один сервис, а как набор доменов по категориям: у цен свой адрес, у сборочных заданий свой, у статистики третий. Связность каждого проверяется методом /ping, но не чаще трёх запросов за 30 секунд, и лимит считается отдельно для каждого домена. Автоматизировать пинг в цикле нельзя: запросы временно заблокируют.
Дальше архитектуру сценария определяет тип метода.
И у каждого процесса своя честная частота обновления. Тянуть данные чаще, чем их обновляет маркетплейс, бессмысленно, а лимит потратите.
| Процесс | Категория API | Ключевой метод | Как часто есть смысл спрашивать |
|---|---|---|---|
| Цены и скидки | Цены и скидки | POST /api/v2/upload/task | По событию: изменили цену в своей системе |
| Новые заказы FBS | Маркетплейс | GET /api/v3/orders/new | Каждые несколько минут в рабочие часы |
| Остатки на складе продавца | Маркетплейс | PUT /api/v3/stocks/{warehouseId} | По событию из WMS плюс полная сверка раз в сутки |
| Отзывы и вопросы | Вопросы и отзывы | GET /api/v1/new-feedbacks-questions | Раз в 5-15 минут |
| Продажи и заказы в свою базу | Статистика | GET /api/v1/supplier/sales | Не чаще раза в 30 минут: данные обновляются с этим шагом |
| Оперативная лента заказов | Аналитика | POST /api/analytics/v1/order-feed | Раз в минуту, глубина максимум 31 день |
Метод POST /api/v2/upload/task принимает максимум 1 000 товаров за запрос, цена и скидка не могут быть пустыми одновременно. Лимит категории «Цены и скидки» зависит от токена: персональный, сервисный и базовый с секретом дают 10 запросов за 6 секунд с интервалом 600 мс и всплеском 5, обычный базовый всего 4 запроса в час с интервалом 15 минут. Каталог на 40 000 SKU это 40 запросов: персональным токеном они уйдут за полминуты, обычным базовым растянутся почти на 10 часов.
Главная ловушка не в лимитах, а в карантине: если новая цена со скидкой окажется хотя бы в 3 раза меньше старой, товар попадёт в карантин и продолжит продаваться по старой цене. Ошибка придёт не в ответе на загрузку, а в методах состояния загрузок. Отсюда обязательный порядок действий в скрипте:
Ответ 200 на загрузку означает только то, что задание принято. Скрипт, который отправил цены и не проверил детализацию, это лотерея.
Одно сборочное задание всегда содержит одну единицу товара. Положил покупатель в корзину 10 одинаковых футболок, у продавца появится 10 отдельных заданий с общим полем orderUid. Расчёты «сколько заказов за день» ломаются, если этого не учесть.
Метод GET /api/v3/orders/new возвращает все новые задания на момент запроса, без параметров периода. Дальше цикл такой:
Два ограничения, о которые спотыкаются при первой сборке: поставка получает габаритный тип первого добавленного задания и дальше принимает только такие же, а задания с разных складов в одну поставку не собираются вовсе.
Статусы читает POST /api/v3/orders/status, от 1 до 1 000 ID за запрос. Полей два, и их постоянно путают.
| Поле | Кто меняет | Значения |
|---|---|---|
| supplierStatus | Продавец своими действиями | new, confirm, complete, cancel, cancel_carrier |
| wbStatus | Система Wildberries | waiting, sorted, sold, canceled, canceled_by_client, declined_by_client, defect и другие |
Сборку на своём складе ведут по supplierStatus, факт получения и отмены ловят по wbStatus. Значение declined_by_client это отмена покупателем в первый час после заказа, пока задание не переведено на сборку: если робот забирает задания в сборку мгновенно, такие отмены придут уже возвратом.
Лимит категории «Маркетплейс» на аккаунт продавца: 300 запросов в минуту с интервалом 200 мс и всплеском 20 для персонального и сервисного токенов, 150 запросов в минуту с всплеском 10 для базового и тестового.
Остатки продавца обновляются методом PUT /api/v3/stocks/{warehouseId}, до 1 000 позиций в одном запросе, ответ при успехе 204.
Здесь спрятана самая дорогая ловушка WB API: названия параметров запроса не валидируются. Отправите поле с опечаткой в имени, получите успешный 204, а остатки не изменятся. Ошибки не будет. Обмен «работает», отчёт зелёный, товар уходит в оверселл.
Защита одна и она обязательна: после записи прочитать остатки обратно и сверить с отправленным. Полную сверку гонят раз в сутки, даже если событийный обмен из WMS идёт непрерывно.
Код 406 означает, что обновление остатков заблокировано. Это не сетевой сбой, повторять бесполезно, причину разбирают в кабинете. Лимит тот же, что у всей категории «Маркетплейс», и помните про множитель: запрос с кодом 4XX списывается здесь как 10 запросов.
Опрашивать полный список отзывов каждые пять минут не нужно. Дешёвый метод GET /api/v1/new-feedbacks-questions отвечает, есть ли непросмотренные отзывы и вопросы, и только при положительном ответе имеет смысл идти за содержимым.
Список забирает GET /api/v1/feedbacks с обязательными параметрами isAnswered, take и skip, максимум 5 000 отзывов за запрос. Обработанным Wildberries считает отзыв, на который получен ответ, либо отзыв с одной оценкой без текста и фото.
Ответ отправляет POST /api/v1/feedbacks/answer, текст от 2 до 5 000 символов, успех это 204. И снова тихая ошибка: ID отзыва не валидируется, при некорректном ID ошибки не будет, ответ уйдёт в никуда, а лог покажет успех. Поэтому статус отзыва перечитывают через /api/v1/feedback.
Лимит категории «Вопросы и отзывы»: 3 запроса в секунду с интервалом 333 мс и всплеском 6 для персонального, сервисного и базового с секретом токенов. У обычного базового 5 запросов в час с интервалом 12 минут, для автоответчика этого не хватит физически.
Про сам автоответ: генерация текста нейросетью оправдана только в жёстких рамках. Шаблон под оценку, запрет на обещания компенсаций, ручная проверка всего, что ниже четырёх звёзд. Автоответ на негатив без человека в контуре стоит дороже сэкономленного времени.
Для аналитики в своей базе используют GET /api/v1/supplier/orders и GET /api/v1/supplier/sales. Их свойства надо знать до того, как строить витрину.
Последний пункт объясняет классический скандал в отчётности: дашборд, собранный утром по вчерашним данным, показывает выручку меньше реальной. Wildberries прямо предупреждает, что отчёт предварительный и служит для оперативного мониторинга, а для точных расчётов нужны детализации к отчётам реализации.
Лимит жёсткий: 1 запрос в минуту для персонального, сервисного и базового с секретом токенов. У обычного базового 1 запрос в 2 часа на продажи и 1 запрос в 3 часа на заказы. Схема «дёрнем при открытии дашборда» не работает, только инкрементальный забор в своё хранилище по расписанию.
Нужен обмен, который не врёт в цифрах
Соберём выгрузку заказов, продаж и остатков в вашу базу: с курсорами, повторами, логом запросов и сверкой. Без ручного экспорта и без тихих ошибок в отчётах.
Разработчики из других экосистем первым делом ищут вебхуки. В каталоге категорий WB API раздела вебхуков нет: маркетплейс не стучится к вам сам, все методы работают на запрос с вашей стороны. Реактивность строится опросом.
Ближе всего к реальному времени Лента заказов, метод POST /api/analytics/v1/order-feed. Данные обновляются в режиме реального времени, заказы отдаются по времени текущего статуса от нового к раннему, глубина максимум 31 день. Лимит: 1 запрос в минуту для персонального, сервисного и базового с секретом токенов, 1 запрос в 3 часа для базового.
Отсюда двухслойная схема. Быстрый слой раз в минуту забирает ленту заказов и новые сборочные задания и кладёт события в очередь. Медленный раз в 30 минут или ночью забирает статистику и пересобирает витрину. Смешивать их в одном скрипте не стоит: разные лимиты и разная цена ошибки.
Тяжёлые отчёты живут по третьей модели. Отчёт об остатках на складах WB создаётся заданием GET /api/v1/warehouse_remains, дальше проверяется /tasks/{task_id}/status и только после готовности скачивается через /download. Лимит на создание задания: 1 запрос в минуту, а статус опрашивают с шагом в несколько секунд и с ограничением числа попыток.
Токен API Wildberries живёт 180 дней с момента создания и передаётся в заголовке Authorization. Дата истечения зашита в поле exp самого токена, который представляет собой JWT по RFC 7519. Отсюда два правила для сценария.
Первое: срок жизни мониторят программно. Дату из exp кладут в мониторинг и напоминают за две недели, а не вспоминают в день, когда обмен встал.
Второе: один токен на все сценарии это плохая идея. Выгрузка отчётов в базу не должна уметь менять цены, под неё берут отдельный токен категории «Статистика» только на чтение: утечёт такой токен, посторонний получит ваши цифры продаж, а не управление магазином. Порядок создания токенов, их типы и полный список ограничений разобраны в статье про документацию API Wildberries.
Любой сценарий на API WB Wildberries рано или поздно упрётся в 429. Нагрузка распределяется алгоритмом token bucket, и всё нужное для расчёта паузы приходит прямо в заголовках ответа.
| Заголовок | Что означает | Как использовать |
|---|---|---|
| X-Ratelimit-Remaining | Сколько запросов можно сделать прямо сейчас без пауз | Приходит во всех ответах, кроме 429. Дошло до нуля: притормозить |
| X-Ratelimit-Retry | Через сколько секунд можно повторить запрос | Только в ответе 429. Раньше срока повтор снова вернёт 429 |
| X-Ratelimit-Reset | Через сколько секунд всплеск восстановится до максимума | Планирование следующей пачки |
| X-Ratelimit-Limit | Максимальное значение всплеска | Расчёт размера пачки |
Слепой экспоненциальный backoff здесь не нужен: ждите ровно X-Ratelimit-Retry секунд. И помните про множитель: в категории «Маркетплейс» один ответ 4XX списывается как 10 запросов, поэтому цикл, упорно бьющийся в 400, выжигает квоту почти мгновенно. Дальше вопрос, какие запросы безопасно повторять.
Ответ 401 чаще всего означает не «токен просрочен», а несовпадение категории токена и категории API: обращаетесь к ценам токеном для статистики. Ответ 403 приходит, когда токен создан удалённым пользователем. Повторами не лечится ни то ни другое. И мелочь, которая экономит часы: в ошибках 404 и 429 Wildberries кладёт подсказку в поле details, поэтому логируют всё тело ответа, а не только статус-код.
У Wildberries есть тестовый контур с отдельными доменами вида discounts-prices-api-sandbox.wildberries.ru и statistics-api-sandbox.wildberries.ru. Работает он по тестовому токену, данные сгенерированы случайно и реальным продавцам не принадлежат. Что учитывать при отладке:
Песочница закрывает форму запросов и разбор ответов, но не воспроизводит карантин цен, реальные задержки статистики и поведение под нагрузкой. Поэтому первый боевой прогон записи делают на узком срезе: один склад, десять артикулов, ручная сверка результата.
Разрозненные скрипты по крону это тот же ручной режим, только с отложенным разбором. Контур, который держится годами, состоит из пяти частей.
Порядок внедрения тоже важен. Сначала чтение: заказы, продажи, остатки. Затем запись с низкой ценой ошибки: ответы на отзывы. И только потом цены и статусы сборочных заданий, где неверный запрос стоит денег.
Соберём контур автоматизации на API Wildberries под ключ
Очередь, повторы по заголовкам лимитов, сверка после записи, выгрузка в вашу базу и мониторинг сроков токена. Работает без вашего участия и не ломается на первом 429.
До 1 000 товаров в одном вызове POST /api/v2/upload/task. Ограничение на частоту зависит от токена: 10 запросов за 6 секунд для персонального, сервисного и базового с секретом, и всего 4 запроса в час для обычного базового токена.
Метод PUT /api/v3/stocks/{warehouseId} не валидирует названия параметров запроса. При опечатке в имени поля вернётся 204, а остатки останутся прежними. Лечится только обратным чтением остатков и сверкой после каждой записи.
Раз в 30 минут. Дополнительно поля finishedPrice, priceWithDisc и forPay заполняются асинхронно и актуализируются в течение 24 часов, поэтому свежий отчёт может показывать заниженную выручку. Для точной сверки используют детализации к отчётам реализации.
Прочитать заголовок X-Ratelimit-Retry и подождать указанное в нём число секунд: более ранний повтор снова вернёт 429. Заодно стоит проверить долю ошибок 4XX, потому что в категории «Маркетплейс» один такой ответ списывается как 10 запросов.
Нет, в каталоге категорий WB API раздела вебхуков нет, все методы работают на запрос с вашей стороны. Ближе всего к реальному времени метод POST /api/analytics/v1/order-feed «Лента заказов»: данные обновляются в реальном времени, глубина до 31 дня, лимит 1 запрос в минуту.