Saltar para o conteúdo principal

Visão geral

Em vez de consultar GET /jobs/{id}, forneça à Krea um URL de webhook. A Krea envia a tarefa para esse URL quando esta termina.

Utilizar webhooks

Adicione o cabeçalho X-Webhook-URL a qualquer pedido de geração. Quando a tarefa for concluída, falhar ou for cancelada, a Krea envia um pedido POST para esse URL.

Payload do webhook

O corpo do pedido tem o mesmo formato da resposta de GET /jobs/{id}:

Verificar assinaturas

A Krea assina todos os webhooks com Ed25519. Verifique a assinatura antes de confiar num payload e rejeite pedidos que não tenham assinatura. A Krea assina o SHA-256 em hexadecimal minúsculo do timestamp, do URL, dos metadados e do corpo em bruto do pedido, unidos por quebras de linha:
Para verificar um pedido:
  1. Confirme que X-Krea-Webhook-Url corresponde exatamente ao X-Webhook-URL que enviou com a tarefa.
  2. Confirme que o timestamp não difere mais de 5 minutos da hora atual do seu servidor.
  3. Aceite o pedido se a assinatura for válida com qualquer chave em https://api.krea.ai/.well-known/jwks.json. Guarde as chaves em cache durante, no máximo, 24 horas. A Krea publica uma nova chave 24 horas antes de começar a assinar com ela.
Calcule o hash dos bytes do corpo em bruto, não de um JSON novamente serializado. Por exemplo, utilize express.raw() no Express, await request.arrayBuffer() em frameworks baseadas na Fetch API ou request.get_data() no Flask. Se o cabeçalho X-Krea-Webhook-Metadata estiver em falta, trate-o como uma string vazia.

Entrega e novas tentativas

Devolva um 2xx no prazo de 15 segundos. Se o pedido exceder o tempo limite, não conseguir estabelecer ligação ou receber um 5xx, 408, 423, 425 ou 429, a Krea volta a tentar durante cerca de 10 minutos, com um novo timestamp e uma nova assinatura em cada tentativa. A Krea não volta a tentar para nenhum outro 4xx. A mesma tarefa pode chegar mais do que uma vez, por isso elimine duplicados com base em job_id e status.

Webhooks vs. polling

Use webhooks quando tiver um servidor que possa receber pedidos HTTP. Use polling em aplicações do lado do cliente ou quando não puder expor um endpoint público.

Próximos passos

Ciclo de vida das tarefas

Saiba mais sobre os estados das tarefas e o polling de estado

Exemplos de código

Gere uma imagem com a API, do início ao fim