webhook.url em uma tarefa e enviaremos o resultado por POST quando a tarefa chegar a um estado final:
COMPLETED ou FAILED.
Payload de entrega
Enviamos por POSTContent-Type: application/json com este corpo:
object
obrigatório
Os mesmos metadados de tarefa recebidos no envio, agora com um
status final e o seu idempotencyKey devolvido.object
obrigatório
O custo em créditos do mecanismo:
2 para Perplexity, 3 para ChatGPT e assim por diante (1–3 créditos conforme o
mecanismo). creditsCharged é 0 quando a tarefa falhou. Ao contrário das respostas de envio e polling, que sempre
informam zero, este campo não é zero.object
obrigatório
O resultado específico do mecanismo. Veja Mecanismos. Em uma tarefa com falha, é
{ "error": "<reason>" } em vez do resultado do mecanismo.Novas tentativas
Retorne qualquer2xx para confirmar. Qualquer outra coisa, inclusive um timeout, é falha, e tentamos de novo com
backoff exponencial:
Depois da quinta tentativa, a entrega é abandonada e registrada em log. Não existe fila de mensagens mortas que você
possa ler. Para obter o resultado pela API de tarefas, consulte dentro da janela pública de polling de 24 horas. Essa
janela não define a vida útil do registro subjacente.
Cada tentativa tem timeout de requisição de 30 segundos.
Escrevendo um handler seguro
1
Confirme rápido
Retorne
200 assim que tiver enfileirado o payload de forma persistente. Faça o parsing e as gravações no banco
depois. Um handler lento consome o timeout de 30 segundos e provoca uma nova tentativa indesejada.2
Deduplique pelo idempotencyKey
Por causa das novas tentativas, seu handler pode receber legitimamente a mesma tarefa mais de uma vez. Compare por
task.idempotencyKey (ou task.id) e torne a gravação idempotente.3
Ramifique pelo status, não pela presença
Verifique
task.status === "FAILED" explicitamente. Uma tarefa com falha também entrega webhook.As requisições de webhook não têm assinatura nem segredo compartilhado. Se seu endpoint for público, trate o payload
como não confiável e use um caminho de URL impossível de adivinhar, ou coloque o handler atrás de restrições de rede.