Inicio rápido
Al enviar una tarea, añade un campowebhook al cuerpo de la solicitud:
tu URL + /callback.
Otros endpoints de tareas asíncronas (video, audio, etc.) funcionan igual: solo añade el campo
webhook al cuerpo de la solicitud.Reglas de la URL
Elwebhook que proporcionas es la URL base, a la que añadimos automáticamente /callback:
Tu webhook | A dónde enviamos realmente el POST |
|---|---|
https://your-server.com | https://your-server.com/callback |
https://your-server.com/api | https://your-server.com/api/callback |
https://your-server.com/api/ | https://your-server.com/api/callback |
POST .../callback.
Qué vas a recibir
El contenido enviado es exactamente igual al que devuelve el endpoint «Obtener estado de la tarea»: puedes procesarlo con la misma lógica de análisis.Para tareas de video el resultado está en
result.videos, y para audio en result.audios.Reintentos y deduplicación (importante)
- Reintentos: Si tu servidor no devuelve
2xxen unos 10 segundos, o devuelve5xx, reintentaremos automáticamente, hasta 3 veces, con intervalos de aproximadamente 10 s, 30 s y 60 s. Si las 3 fallan, desistimos (en unos 2 minutos). - Sin reintento: Si tu endpoint devuelve
4xx(se considera URL / solicitud incorrecta), desistimos de inmediato sin reintentar. - Deduplicación: Normalmente una tarea se envía solo una vez. Pero en casos extremos (p. ej., un reinicio de nuestro lado tras el envío pero antes de la confirmación) podrías recibir envíos duplicados. Asegúrate de deduplicar de forma idempotente por
id(task_id) para evitar el procesamiento doble.
Devuelve 2xx lo antes posible
Recibe y encola primero, luego procesa de forma asíncrona; no nos hagas esperar a que termines de procesar.
Requisitos de la URL de devolución de llamada
Por seguridad, la URL de devolución de llamada debe cumplir:| Requisito | Descripción |
|---|---|
| Accesible públicamente | No puede ser una dirección interna / local (p. ej. 127.0.0.1, 10.x, 192.168.x serán rechazadas) |
| Protocolo | http o https (https recomendado) |
| Puerto | Usa puertos estándar (80 / 443); los puertos no estándar pueden bloquearse |
| Dominio | No puede apuntar a nuestro propio dominio de servicio |
Preguntas frecuentes
¿Envié una tarea con webhook pero no recibí ningún envío?
¿Envié una tarea con webhook pero no recibí ningún envío?
Revisa punto por punto:
- ¿La tarea realmente finalizó? Consulta los detalles de la tarea: ¿
statusescompleted/failed(no se envía durante el procesamiento)? - ¿Tu URL es accesible públicamente? ¿Podemos alcanzar tu
/callback? - ¿El puerto es estándar (80 / 443)? Los puertos no estándar pueden ser bloqueados por las políticas de seguridad.
- ¿Tu
/callbackdevolvió 2xx a tiempo? Si devuelve 4xx, desistimos de inmediato. - ¿Usas
https? ¿El certificado es válido?
¿Por qué url en el resultado es un array?
¿Por qué url en el resultado es un array?
Algunos modelos producen varias imágenes a la vez, por lo que
images[].url puede ser un array; simplemente trátalo como un array.¿Los enlaces de resultado caducan?
¿Los enlaces de resultado caducan?
Si
result incluye expires_at (marca de tiempo Unix), indica la hora de caducidad del enlace; transfiérelo/guárdalo a tiempo.¿Se envía el estado 'en procesamiento'?
¿Se envía el estado 'en procesamiento'?
No. Solo enviamos una vez, cuando la tarea finalmente tiene éxito o falla.
Ejemplo mínimo de receptor
Python
200 lo antes posible y ejecuta tu lógica de procesamiento de forma asíncrona en segundo plano.