Guías

Webhooks

Recibe notificaciones cuando un job en lote se completa

Para jobs en lote que duran más de un minuto, los Webhooks son más baratos y rápidos que el polling. Thunderbit hace POST a tu URL cuando un job alcanza un estado terminal.

Configurar al enviar

{
  "urls": ["https://example.com/page1"],
  "webhook": {
    "url": "https://your-server.com/api/webhook/distill",
    "secret": "whsec_your_secret_key",
    "headers": { "X-Custom-Auth": "your-token" }
  }
}

Payload

{
  "id": "batch_abc123",
  "status": "COMPLETED",
  "total": 50,
  "completed": 49,
  "failed": 1,
  "completedAt": "2026-04-26T10:00:00Z"
}

Los payloads son intencionalmente pequeños — recupera los resultados completos vía GET /batch/distill/{id} después de recibir el callback.

Verificación de firma

Cuando se establece secret, cada entrega incluye X-Webhook-Signature: sha256=<hex>. Verifica con HMAC-SHA256.

import hmac, hashlib

def verify(raw_body: bytes, signature: str, secret: str) -> bool:
    expected = "sha256=" + hmac.new(
        secret.encode(), raw_body, hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)

Nunca confíes en un Webhook sin firma en producción.

Comportamiento de reintento

  • No-2xx → 5 reintentos con backoff exponencial: 10s, 30s, 2m, 10m, 30m
  • Timeout por entrega: 15s
  • Tras fallar todos los reintentos, el job sigue marcado como completo en nuestro lado — tu Endpoint debe ser idempotente

Esta página se está ampliando con tips de depuración — vuelve pronto.