Skip to main content
Webhooks permitem que seu backend receba notificações de eventos em vez de fazer polling. Você registra um endpoint HTTPS; a Telepatia envia por POST um envelope JSON assinado sempre que um evento assinado ocorre. Cada entrega é assinada com HMAC-SHA256 para que você possa provar que veio da Telepatia. Registre um webhook com POST /v1/webhooks; a resposta retorna um signingSecret uma única vez — guarde-o agora.

Events

Event catalog

Assine um ou mais eventos por webhook (o array events na criação).

Subscribing to events

Envie um array events ao registrar um webhook para escolher exatamente quais eventos ele recebe. O campo type de cada entrega indica qual evento disparou, então um único endpoint trata todo o ciclo.
Atualize a assinatura a qualquer momento com PATCH /v1/webhooks/{id} e um novo array events.

Event envelope

O corpo de cada POST de webhook é um envelope JSON. id é estável entre reentregas — deduplique por ele. data carrega o objeto de negócio do evento — para os eventos scribe_session.*, um instantâneo da sessão:
O objeto data para os eventos scribe_session.*: A mesma forma de data é enviada para cada evento scribe_session.*; status reflete o estado real da sessão e completedAt é null quando a sessão não foi concluída.

Verifying the signature

Cada requisição carrega um cabeçalho X-Scribe-Api-Signature (estilo Stripe):
t é o timestamp Unix em que a requisição foi assinada; v1 é o HMAC-SHA256 em hexadecimal de "{t}." + raw_request_body, com chave o seu segredo de assinatura. Verifique sobre o corpo cru da requisição antes de fazer o parse — reserializar o JSON pode mudar os bytes e quebrar a comparação. Use uma comparação de tempo constante e rejeite timestamps fora de uma janela de 5 minutos para mitigar ataques de repetição.
Cada requisição também carrega X-Scribe-Api-Event-Id (igual ao id do envelope) para log rápido.

Retry & delivery

  • Retorne um 2xx rapidamente para confirmar. Faça o trabalho lento de forma assíncrona.
  • Um 5xx, erro de rede ou timeout é repetido com backoff exponencial (≈2s até ≈2min entre tentativas) por até 6 tentativas ao longo de ~15 minutos.
  • Qualquer 4xx (incluindo 408 e 429) é tratado como permanente — a entrega não é repetida.
  • As repetições reutilizam o mesmo id do envelope, então deduplique por ele para ser idempotente.

Rotating the signing secret

Chame POST /v1/webhooks/{id}/rotate-secret para gerar um novo segredo. A resposta retorna o novo signingSecret uma única vez e incrementa signingSecretVersion. O segredo anterior para de verificar imediatamente, então implante o novo valor no seu endpoint antes de rotacionar.