Início rápido
Ao enviar uma tarefa, adicione um campowebhook ao corpo da requisição:
sua URL + /callback.
Outros endpoints de tarefas assíncronas (vídeo, áudio, etc.) funcionam da mesma forma — basta adicionar o campo
webhook ao corpo da requisição.Regras de URL
Owebhook que você fornece é a URL base, à qual anexamos automaticamente /callback:
Portanto, seu servidor precisa de um endpoint que aceite
POST .../callback.
O que você vai receber
O conteúdo enviado é exatamente igual ao que o endpoint “Obter status da tarefa” retorna — você pode processá-lo com a mesma lógica de análise.Para tarefas de vídeo, o resultado fica em
result.videos, e para áudio em result.audios.Novas tentativas e deduplicação (importante)
- Novas tentativas: Se o seu servidor não retornar
2xxem cerca de 10 segundos, ou retornar5xx, tentaremos novamente de forma automática, até 3 vezes, em intervalos de aproximadamente 10s, 30s e 60s. Se as 3 falharem, desistimos (em cerca de 2 minutos). - Sem nova tentativa: Se o seu endpoint retornar
4xx(considerado URL / requisição com problema), desistimos imediatamente, sem tentar de novo. - Deduplicação: Normalmente uma tarefa é enviada apenas uma vez. Mas em casos extremos (ex.: um reinício do nosso lado após o envio, mas antes da confirmação) você pode receber envios duplicados. Certifique-se de deduplicar de forma idempotente por
id(task_id) para evitar processamento em duplicidade.
1
Retorne 2xx o quanto antes
Aceite e enfileire primeiro, depois processe de forma assíncrona — não nos faça esperar até você terminar o processamento.
2
Deduplique por id
Use
id (task_id) como chave de idempotência para evitar processamento em duplicidade.3
Configure e verifique a assinatura
Em produção, verifique a origem das requisições de callback e rejeite as falsificadas.
Requisitos para a URL de callback
Por segurança, a URL de callback deve atender a:
URLs que não atendem a esses requisitos são descartadas (sem envio nem nova tentativa).
Perguntas frequentes
Enviei uma tarefa com webhook, mas não recebi nenhum envio?
Enviei uma tarefa com webhook, mas não recebi nenhum envio?
Verifique item por item:
- A tarefa realmente terminou? Consulte os detalhes da tarefa — o
statusestácompleted/failed(não há envio durante o processamento)? - Sua URL está acessível publicamente? Conseguimos alcançar o seu
/callback? - A porta é padrão (80 / 443)? Portas não padrão podem ser bloqueadas por políticas de segurança.
- Seu
/callbackretornou 2xx a tempo? Retornar 4xx é descartado imediatamente. - Você está usando
https? O certificado é válido?
Por que url no result é um array?
Por que url no result é um array?
Alguns modelos produzem várias imagens de uma vez, então
images[].url pode ser um array — basta tratá-lo como um array.Os links de resultado expiram?
Os links de resultado expiram?
Se
result incluir expires_at (timestamp Unix), ele indica a hora de expiração do link — transfira/salve-o a tempo.Vocês enviam o status 'em processamento'?
Vocês enviam o status 'em processamento'?
Não. Enviamos apenas uma vez, quando a tarefa finalmente tem sucesso ou falha.
Exemplo mínimo de receptor
Python
200 o quanto antes e execute sua lógica de processamento de forma assíncrona em segundo plano.