docs
UAEN
Docs/Гайди/Вебхуки

Вебхуки

Вебхуки дозволяють отримувати повідомлення в реальному часі про завершення обробки документів, замість постійного поллінгу API.

Як працюють вебхуки

  1. Ви вказуєте webhook_url при створенні документа.
  2. Rekognita обробляє документ.
  3. Після завершення Rekognita надсилає POST-запит на ваш URL із результатом.

Налаштування

Вкажіть URL вебхука при відправці документа:

curl -X POST https://api.rekognita.com/v1/documents \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@invoice.pdf" \
  -F "language=uk" \
  -F "webhook_url=https://your-server.com/webhooks/rekognita"

Формат payload

Rekognita надсилає POST-запит з JSON-тілом:

{
  "event": "document.completed",
  "document_id": "doc_abc123",
  "status": "completed",
  "created_at": "2025-01-15T12:00:00Z",
  "completed_at": "2025-01-15T12:00:03Z",
  "result": {
    "text": "Розпізнаний текст документа...",
    "confidence": 0.991,
    "pages": 1,
    "language": "uk"
  }
}

Типи подій

ПодіяОпис
document.completedДокумент успішно оброблено
document.failedПомилка при обробці документа
document.partialЧастковий результат (для великих документів)

Верифікація запитів

Кожен вебхук містить заголовок X-Rekognita-Signature для перевірки автентичності. Підпис створюється за допомогою HMAC-SHA256:

import crypto from 'crypto';

function verifyWebhook(payload: string, signature: string, secret: string) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');
  
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}

// Middleware для Express
app.post('/webhooks/rekognita', express.raw({ type: 'application/json' }), (req, res) => {
  const signature = req.headers['x-rekognita-signature'] as string;
  
  if (!verifyWebhook(req.body.toString(), signature, process.env.WEBHOOK_SECRET!)) {
    return res.status(401).send('Invalid signature');
  }
  
  const event = JSON.parse(req.body.toString());
  // Обробка події...
  
  res.sendStatus(200);
});
Безпека. Завжди перевіряйте підпис вебхука. Webhook secret можна знайти у Dashboard → Settings → Webhooks.

Повторні спроби

Якщо ваш сервер не повернув код 2xx, Rekognita повторить запит:

  • 1-ша повторна спроба — через 30 секунд
  • 2-га повторна спроба — через 5 хвилин
  • 3-тя повторна спроба — через 30 хвилин
  • Фінальна спроба — через 2 години
Ваш ендпоінт повинен відповідати протягом 10 секунд. Якщо обробка займає більше часу, збережіть payload та обробіть асинхронно.