callbackUrl ao criar um run e a Leme envia um POST assinado para essa URL quando o run chega a um estado final — ou pausa para aprovação.
422 callback_url_invalid.
Eventos
O payload é propositalmente enxuto — identificadores e status, nunca a resposta do agent:
GET /api/v1/runs/:id. Isso mantém conteúdo sensível fora do seu endpoint de webhook e garante que você sempre leia o estado mais recente.
Verificar a assinatura
Toda entrega é assinada seguindo a especificação Standard Webhooks, o mesmo esquema usado por OpenAI e Svix. Três headers acompanham a requisição:
Primeiro, obtenha o secret de assinatura do projeto (exige token
read_write):
Rotacionar o secret
Se o secret vazar — ou no seu ciclo normal de rotação — gere um novo:webhook-signature carrega duas assinaturas — a entrega é válida se qualquer uma bater, o que toda biblioteca Standard Webhooks já trata por você.
Retentativas e confiabilidade
Entregas são at least once. Se o seu endpoint não responder2xx em 15 segundos, a Leme tenta de novo: após 1 minuto, 5 minutos, 30 minutos e 2 horas. Depois de cinco tentativas falhas, a entrega é marcada como esgotada.
Como retentativas podem se sobrepor ao seu processamento, torne seu handler idempotente — deduplique pelo webhook-id.
Você pode inspecionar o estado da entrega a qualquer momento no recurso do run:
Boas práticas
- Responda rápido. Confirme com
2xximediatamente e processe de forma assíncrona; o timeout de 15 segundos inclui o seu handler. - Deduplique pelo
webhook-id. Retentativas reutilizam o mesmo ID. - Não confie só no payload. Verifique a assinatura e busque o run pela API para obter o estado autoritativo.
- Fique de olho em entregas esgotadas. Se esgotaram, seu endpoint ficou fora do ar por horas — consulte os runs em andamento para se atualizar.