Wildberries API можно освоить на одном небольшом проекте, если сразу видеть вход, действие и результат. Остатки из API можно превратить в обычный CSV, который открывается в Excel и подходит для первого полезного проекта автоматизации. Ниже вы соберёте работающий пример и проверите обычный и граничный сценарии.
Токен продавца нельзя вставлять в пример, а реальная структура ответа, пагинация и лимиты отличаются между методами API. Поэтому отделим настройку, входные данные, основное действие и проверку. В этой статье вы соберёте скрипт с отдельной функцией преобразования ответа в строки CSV и безопасным сетевым слоем. Проверка: фикстура JSON превращается в таблицу, пустой список создаёт только заголовок, а HTTP-ошибка не затирает прошлый файл.
выбрать endpoint остатков в актуальном разделе документации. Не расширяйте проект до первого успешного запуска.
ответ успешно декодируется. Проверяйте значение, а не отсутствие ошибки.
После успеха добавьте порог дефицита и второй файл только для малых остатков. Так копирование станет практикой.
Как устроен учебный проект Wildberries API
Wildberries API разделяет подготовку, основное действие, проверку ответа и сохранение результата. Держите ввод, логику и отображение раздельно: тогда каждый этап можно проверить отдельно.
| Этап | Действие | Проверяемый результат |
|---|---|---|
| Метод | выбрать endpoint остатков в актуальном разделе документации | понятны параметры и категория токена |
| Запрос | передать Authorization и тайм-аут | ответ успешно декодируется |
| Преобразование | выбрать артикул, склад и количество | каждый остаток становится строкой |
| CSV | записать временный файл и заменить отчёт | старый отчёт не теряется при ошибке |
Контрольные точки: метод, запрос, преобразование и csv. Следующий шаг начинается после совпадения с ожидаемым результатом.

От входных данных до видимого результата. Сначала проверяется вход, затем действие и только потом интерфейс.
Собираем рабочий пример шаг за шагом
Материал сверялся с официальной документацией сервиса 21 октября 2026 года. Установите httpx, задайте WB_API_TOKEN и сверьте endpoint с текущим разделом официальной документации. Проверьте текущую папку через pwd или Get-Location. Вставьте пример целиком, выполните один раз, затем разбирайте по частям.
import csv
import os
from pathlib import Path
import httpx
TOKEN = os.environ["WB_API_TOKEN"]
URL = os.environ["WB_STOCKS_URL"]
def rows_from_payload(payload: list[dict]):
for item in payload:
yield {
"nm_id": item.get("nmId"),
"warehouse": item.get("warehouseName", ""),
"quantity": item.get("quantity", 0),
"in_way": item.get("inWayToClient", 0),
}
def download() -> list[dict]:
response = httpx.get(URL, headers={"Authorization": TOKEN}, timeout=30)
response.raise_for_status()
return response.json()
def save_csv(items: list[dict], filename='wb-stocks.csv'):
target = Path(filename)
temp = target.with_suffix('.tmp')
fields = ['nm_id', 'warehouse', 'quantity', 'in_way']
with temp.open('w', newline='', encoding='utf-8-sig') as file:
writer = csv.DictWriter(file, fieldnames=fields)
writer.writeheader(); writer.writerows(rows_from_payload(items))
temp.replace(target)
if __name__ == '__main__':
save_csv(download())- CSV содержит стабильные колонки и открывается в Excel с русскими названиями складов.
- При сетевой ошибке финальный файл не заменяется пустым отчётом.
- Повторный запуск даёт тот же предсказуемый результат.
- Пустой ввод получает понятное сообщение вместо падения.
Код держит подготовку отдельно от внешнего действия, поэтому ошибку можно найти на конкретном шаге. Найдите в примере вход, проверку и место формирования результата.

Что отличает устойчивый проект от случайного запуска. Явные границы делают ошибку локальной и понятной.
Что происходит внутри и почему это работает
HTTP-слой получает сырые данные, генератор rows_from_payload нормализует поля, а CSV-слой ничего не знает о токене и сети. Логику держите отдельно от вывода: функция получает аргумент и возвращает значение, а интерфейс показывает его. Секреты и персональные данные не должны попадать в репозиторий, журнал или публичный скриншот.
| Часть | За что отвечает | Что проверить |
|---|---|---|
| API-клиент | добавляет токен и проверяет статус | есть тайм-аут |
| Нормализация | превращает JSON в плоские строки | отсутствующее поле имеет значение по умолчанию |
| CSV writer | создаёт отчёт в utf-8-sig | файл заменяется атомарно |
Не угадывайте endpoint по старому блогу: WB API разделён на категории и меняется. Храните URL или версию рядом с конфигурацией, а поля ответа сверяйте с текущей схемой метода. Не прячьте поток в одном обработчике: сохраните вход, проверьте его, вызовите операцию и только затем обновите интерфейс.
Проверяем проект и добавляем свою функцию
Добавьте колонку доступного остатка, фильтр quantity ниже порога и отдельный CSV дефицита. До правки запишите ожидаемое поведение одним предложением. После граничного теста повторите обычный сценарий.
- Сохраните ожидаемый результат: фикстура JSON превращается в таблицу, пустой список создаёт только заголовок, а HTTP-ошибка не затирает прошлый файл.
- Измените правило: добавьте порог дефицита и второй файл только для малых остатков. Сначала предскажите итог.
- Передайте граничное значение и убедитесь, что приложение не падает.
- Верните корректные данные и объясните роли трёх основных частей.
- понятны параметры и категория токена
- ответ успешно декодируется
- каждый остаток становится строкой
- старый отчёт не теряется при ошибке
Полезное улучшение сохраняет исходный сценарий и добавляет одну новую проверяемую возможность. Полезная правка проходит от нового ввода до видимого результата.

Четыре проверки перед следующим шагом. Каждый следующий этап начинается после наблюдаемого результата.
Что запомнить и куда двигаться дальше
Для расписания добавьте безопасный секрет CI, повтор только временных ошибок и отметку времени отчёта. Для закрепления откройте в анализе CSV через pandas, в автоматизации Excel и в отчёте Ozon Seller.
Как изучить тему в Кодике
Сначала разберите входные данные и один успешный вызов, затем изучайте дополнительные параметры. Сначала восстановите главную функцию и проверьте её на трёх значениях.
| Шаг | Что разобрать | Мини-проверка |
|---|---|---|
| 1. Основа | Файлы, словари, генераторы и csv в Python | Объясните вход и выход функции. |
| 2. Инструмент | HTTP-заголовки, токены и статусы WB API | Повторите команду по памяти. |
| 3. Проект | Нормализацию JSON и атомарную запись | Проверьте два сценария. |
| 4. Рефакторинг | Пагинацию, лимиты, расписание и мониторинг | Разделите ввод, логику и вывод. |
Перепишите ключевую функцию по памяти и проверьте её на корректном, пустом и ошибочном вводе. Базовый синтаксис закрепите через курс Python.
Он попадает в Git и скриншоты. Используйте окружение.
Контракт мог измениться. Сверяйтесь с dev.wildberries.ru.
Ошибка сети оставляет пустой отчёт. Сначала создавайте temp.
Отчёт нельзя фильтровать. Нормализуйте нужные поля.
Что получится в итоге

Финальный экран показывает результат, состояние запроса и понятное сообщение об ошибке без раскрытия секретов.
Зачем писать во временный файл?
Чтобы не потерять предыдущий отчёт при ошибке запроса или записи.
Почему преобразование тестируют без API?
Чистую функцию можно проверить на фикстурах без секрета и лимитов.
Что проверять первым, если Wildberries API не запускается?
Версию среды, текущую папку, команду запуска и первую строку ошибки.
Как понять, что проект Wildberries API работает?
Проверьте основной сценарий, неверный ввод, повторный запуск и один граничный случай.
Можно ли начать с готового кода?
Да. Добейтесь результата, измените одно правило и восстановите ключевую функцию без копирования.
Выберите одно улучшение и проведите его от ввода до результата.
Если не хватает основы, перейдите курс Python, затем восстановите ключевую функцию без подсказки.