Запросите список доступных полей
В документации API статистики указано, что токен доступен в профиле. Используйте его на сервере или в локальной среде. В HTML сайта, виджет, скриншот или публичный репозиторий токен не вставляйте. Передайте его в заголовке X-Access-Token.
curl --fail-with-body --silent --show-error \
--header "X-Access-Token: ${TRAVELPAYOUTS_API_TOKEN}" \
'https://api.travelpayouts.com/statistics/v1/get_fields_list'
Переменная окружения должна быть уже задана в безопасной среде. Команда запрашивает список полей и поддерживаемых фильтров. Сверьте ответ со своей задачей: для выгрузки броней пригодятся идентификатор события, статус, даты, метка и сумма. Выбирайте только поля, которые подтверждены ответом. Документация отдельно описывает программные поля и агрегированный режим.
Соберите запрос для одного периода
Для данных используйте POST на https://api.travelpayouts.com/statistics/v1/execute_query. В теле укажите fields, фильтры и параметры страниц. Фильтр по дате обязателен. Сначала возьмите один короткий период и одну программу, чтобы сравнить результат с личным кабинетом. ID программы можно посмотреть в её адресе в кабинете. Для следующей страницы меняйте offset и соблюдайте действующие лимиты.
Сохраняйте дату выгрузки и фильтры. Если отчёт обновляется ежедневно, повторно проверяйте небольшое окно предыдущих дней: статус брони может измениться. Не складывайте сумму повторной выгрузки с предыдущей. Храните последнюю версию действия по стабильному идентификатору в пределах программы. Даты события и обновления могут отличаться.
Сверьте отчёт с выплатой
Учебный пример. В понедельник выгрузка показала пять броней, четыре подтверждены. В среду один статус изменился. При повторном импорте запись нужно обновить, иначе в отчёте станет шесть броней вместо пяти. Проверьте также валюту и дату. Финансовый API Travelpayouts показывает остаток и историю выплат, поэтому используйте его для отдельной сверки денежных движений.
При ошибке проверьте токен, адрес, метод и обязательные фильтры. Если запрос ограничен по частоте, сделайте паузу и повторите его по правилам API. При пустом ответе сначала расширьте период и убедитесь, что программа подключена, а в кабинете есть данные с теми же фильтрами.