Visão geral
Em vez de consultarGET /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çalhoX-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 deGET /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:
- Confirme que
X-Krea-Webhook-Urlcorresponde exatamente aoX-Webhook-URLque enviou com a tarefa. - Confirme que o timestamp não difere mais de 5 minutos da hora atual do seu servidor.
- 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.
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 um2xx 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