Ответ WB API может содержать только часть каталога, заказов или отчёта. Успешный первый запрос ещё не означает, что выгрузка завершена. Для продавца последствие незаметной ошибки серьёзное: аналитика строится по неполному набору данных, хотя программа показывает обычный статус успеха.

Сначала определите механизм продолжения

Официальная инструкция от 6 апреля 2026 года описывает три подхода: курсор, смещение и токен продолжения. В карточках используются поля курсора, в отдельных методах — limit и offset, в других — next. Финансовая детализация применяет rrdid. Конкретные параметры и условие окончания нужно брать из описания выбранного метода.

Не создавайте единое правило «пустой ответ означает конец» для всех интеграций. Зафиксируйте в настройках загрузчика название метода, фильтр периода, размер страницы и признак завершения. Разработчик должен показать, как каждый из этих параметров проверен. Смена периода посреди обхода делает сохранённое положение неоднозначным и требует отдельного решения.

Что сохранять после каждой страницы

В справке рекомендовано хранить cursor или next, чтобы продолжать загрузку после сбоя. При ошибке между страницами повторяют именно неудачный запрос. Для offset есть дополнительный риск: изменение набора данных между запросами может приводить к пропускам и дублям.

Практически полезно связывать запись полученной страницы и нового положения продолжения одной проверяемой операцией. Если программа сначала продвинет курсор, а затем не сохранит строки, часть данных потеряется. Если сначала сохранит строки и упадёт до курсора, повторный запуск может принести их снова. Поэтому заранее определите способ распознавания повторной записи по устойчивому идентификатору, а не по порядковому номеру строки.

Как проверить полноту выгрузки

Для теста подготовьте объём, который точно превышает одну страницу. Проверьте нормальное завершение, остановку между страницами и повторный запуск с сохранённой позиции. Отдельно сравните набор уникальных идентификаторов, а не только общее количество строк: одинаковая сумма может скрывать одновременно дубли и пропуски.

Фиксируйте время начала и окончания обхода. Если данные меняются в процессе, полученная выгрузка не обязательно является снимком одного момента. Этот предел нужно учитывать при сравнении с кабинетом и объяснять пользователю отчёта. Для исторических стабильных периодов сверка обычно проще, чем для постоянно меняющихся оперативных данных.

Когда выгрузка считается готовой

Готовность подтверждают условие окончания метода, отсутствие необработанных ошибок и сохранённый итог проверки. Не отправляйте частичный файл как полный после тайм-аута. Лучше явно показать незавершённый статус и продолжить загрузку, чем незаметно занизить продажи или остатки в рабочей аналитике.