Skip to main content

Blog

Polling e webhooks da PiAPI: processe a conclusão com confiança

Ilustração das ferramentas de desenvolvimento PiAPI

Uma solicitação de imagem ou vídeo aceita ainda precisa de um fluxo de conclusão. Nas tarefas da API unificada da PiAPI, salve o ID, observe o estado final e processe a saída específica do modelo. Polling funciona bem na primeira integração; webhooks permitem que o backend reaja ao término.

1. Salve o ID e limite o polling

Após criar a tarefa, persista data.task_id junto ao ID do seu trabalho. Consulte a mesma tarefa com a chave API do servidor. Uma resposta HTTP bem-sucedida não comprova o fim da geração: verifique data.status.

curl --fail-with-body --silent --show-error \
  "https://api.piapi.ai/api/v1/task/${PIAPI_TASK_ID}" \
  --header "x-api-key: ${PIAPI_API_KEY}"

Para completed, valide data.output conforme o modelo; para failed, registre data.error. Limite tentativas e aumente os intervalos com variação aleatória. O prazo de espera da aplicação é uma escolha local: esgotá-lo não prova falha ou cancelamento da tarefa remota. Preserve o ID para reconciliar o estado depois.

2. Adicione um callback autenticado

Mescle o trecho abaixo a um corpo válido de criação de tarefa, preservando os campos existentes de configuração. Use um endpoint HTTPS público e um segredo do armazenamento seguro do backend. A documentação informa que a PiAPI envia esse segredo no cabeçalho x-webhook-secret; valide-o antes de aceitar a notificação.

{
  "config": {
    "webhook_config": {
      "endpoint": "https://your-app.example/piapi/callback",
      "secret": "YOUR_WEBHOOK_SECRET"
    }
  }
}

O JSON do webhook contém timestamp e data. Confira se a tarefa pertence à aplicação, grave o evento de forma durável ou em uma fila persistente e retorne 2xx rapidamente. Execute downloads e outras operações demoradas fora do manipulador HTTP. Preveja duplicatas: a documentação descreve novas tentativas quando não recebe uma resposta de sucesso.

3. Una polling e callbacks

Use o mesmo manipulador de conclusão nos dois caminhos. Uma restrição persistente de unicidade sobre o ID e a ação final evita notificações duplicadas ou dois trabalhos subsequentes. Um timestamp sozinho não identifica eventos de tarefas diferentes. Ignore atualizações antigas após o estado final e permita repetir o worker com segurança depois de uma falha.

Se o callback não chegar ou o estado for incerto, consulte novamente o ID salvo. Um timeout de consulta não é motivo para criar cegamente outra tarefa paga. Separe erros de transporte de uma falha confirmada da tarefa e reconcilie antes de decidir reenviar.

4. Verifique os cenários de falha

Antes da implantação, repita um callback, envie um segredo incorreto, atrase a entrega e simule a reinicialização do worker. Cada tarefa concluída deve produzir um único resultado durável; cada falha deve manter seu erro. Depois siga o guia de armazenamento de saídas.

Referências: esquema da API unificada, exemplo de consulta de tarefa e documentação de webhooks. Os exemplos ilustram a integração, não um benchmark de geração real.