API v1

Вебхуки

Вебхуки сообщают вашему серверу о событиях без опроса API. Адрес обработчика и список событий задаются в кабинете: «Настройки» → «Вебхуки».

События

СобытиеОписание
generation.completedВсе варианты генерации готовы.
generation.failedГенерация завершилась ошибкой.
export.readyФайл экспорта готов к скачиванию.
quota.lowОсталось меньше 10% генераций по тарифу.

Формат запроса

Мы отправляем POST с JSON-телом на ваш адрес. Ответьте любым кодом 2xx в течение 10 секунд.

json
{
  "id": "evt_0Qz4nB8s",
  "type": "export.ready",
  "created_at": "2026-10-02T09:15:02Z",
  "data": { "export_id": "exp_2Lc7pQ0d", "generation_id": "gen_5mWq1xR7", "preset": "wildberries-3x4" }
}

Проверка подписи

Каждый запрос подписан заголовком Accelator-Signature: время отправки и HMAC-SHA256 от строки {t}.{тело запроса} с секретом обработчика. Отклоняйте запросы с неверной подписью или старше 5 минут.

javascript
import crypto from 'node:crypto';

function isValid(rawBody, header, secret) {
  // header: "t=1759396502,v1=5f2b…"
  const parts = Object.fromEntries(header.split(',').map((p) => p.split('=')));
  const expected = crypto
    .createHmac('sha256', secret)
    .update(`${parts.t}.${rawBody}`)
    .digest('hex');
  const fresh = Math.abs(Date.now() / 1000 - Number(parts.t)) < 300;
  return fresh && crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));
}

Повторная доставка

Если обработчик не ответил 2xx, мы повторим отправку 6 раз с растущим интервалом в течение 12 часов. Используйте id события, чтобы не обработать его дважды.