Skip to main content
Los webhooks permiten que tu backend reciba notificaciones de eventos en lugar de hacer polling. Registras un endpoint HTTPS; Telepatia le envía por POST un sobre JSON firmado cada vez que ocurre un evento suscrito. Cada entrega se firma con HMAC-SHA256 para que puedas comprobar que proviene de Telepatia. Registra un webhook con POST /v1/webhooks; la respuesta devuelve un signingSecret una sola vez — guárdalo ahora.

Events

Event catalog

Suscríbete a uno o más eventos por webhook (el array events en la creación).

Subscribing to events

Pasa un array events al registrar un webhook para elegir exactamente qué eventos recibe. El campo type de cada entrega indica qué evento se disparó, así un mismo endpoint maneja todo el ciclo.
Actualiza la suscripción en cualquier momento con PATCH /v1/webhooks/{id} y un nuevo array events.

Event envelope

El cuerpo de cada POST de webhook es un sobre JSON. id es estable entre reentregas — deduplica por él. data lleva el objeto de negocio del evento — para los eventos scribe_session.*, una instantánea de la sesión:
El objeto data para los eventos scribe_session.*: Se envía la misma forma de data para cada evento scribe_session.*; status refleja el estado real de la sesión y completedAt es null cuando la sesión no se completó.

Verifying the signature

Cada solicitud lleva un encabezado X-Scribe-Api-Signature (estilo Stripe):
t es la marca de tiempo Unix en que se firmó la solicitud; v1 es el HMAC-SHA256 en hexadecimal de "{t}." + raw_request_body, con clave tu secreto de firma. Verifica sobre el cuerpo crudo de la solicitud antes de parsearlo — reserializar el JSON puede cambiar los bytes y romper la comparación. Usa una comparación de tiempo constante y rechaza marcas de tiempo fuera de una ventana de 5 minutos para mitigar ataques de repetición.
Cada solicitud también lleva X-Scribe-Api-Event-Id (igual al id del sobre) para registro rápido.

Retry & delivery

  • Devuelve un 2xx rápidamente para confirmar. Haz el trabajo lento de forma asíncrona.
  • Un 5xx, error de red o timeout se reintenta con backoff exponencial (≈2s hasta ≈2min entre intentos) por hasta 6 intentos a lo largo de ~15 minutos.
  • Cualquier 4xx (incluidos 408 y 429) se trata como permanente — la entrega no se reintenta.
  • Los reintentos reutilizan el mismo id del sobre, así que deduplica por él para ser idempotente.

Rotating the signing secret

Llama a POST /v1/webhooks/{id}/rotate-secret para generar un nuevo secreto. La respuesta devuelve el nuevo signingSecret una sola vez e incrementa signingSecretVersion. El secreto anterior deja de verificar de inmediato, así que despliega el nuevo valor en tu endpoint antes de rotar.