Интеграции с Kaspi Shop API ходят за заказами, статусами и профилем магазина. Если скрипт запрашивает API слишком агрессивно или долго «долбит» один эндпоинт, на стороне защиты может сработать HTTP 429 Too Many Requests.
Почему в теле ответа HTML, а не JSON
На ряде конфигураций WAF/CDN отдаёт статическую HTML-заглушку вместо структурированной ошибки API. Для вашего кода это выглядит как «парсер JSON упал», но корень — ограничение по частоте или по IP, а не обязательно неверный токен.
Что сделать в первую очередь
- Снизить параллелизм (последовательные запросы вместо пачки одновременных).
- Ввести паузу и экспоненциальную задержку при 429, не бесконечный цикл «сразу повторить».
- Указать осмысленный User-Agent и заголовок
Accept, ожидаемый API. - Проверить с другого IP или через VPN: если с другого адреса тот же токен даёт 200 — вероятна блокировка исходящего IP сервера.
Поддержка Kaspi
Если блокировка IP подтвердилась, обычно нужен тикет в поддержку магазина Kaspi с указанием IP сервера, времени начала проблемы и обещанием соблюдать разумные лимиты после разблокировки. Официальные лимиты RPS лучше уточнять у поддержки — они меняются, а публичный гид не всегда содержит цифры.
OptiSellerDM — сторонний SaaS; настройка крона и частоты запросов лежит на стороне интеграции и хостинга.
