Démarrage rapide
Lors de la soumission d’une tâche, ajoutez un champwebhook au corps de la requête :
votre URL + /callback.
Les autres points de terminaison de tâches asynchrones (vidéo, audio, etc.) fonctionnent de la même manière : ajoutez simplement le champ
webhook au corps de la requête.Règles d’URL
Lewebhook que vous fournissez est l’URL de base, à laquelle nous ajoutons automatiquement /callback :
Votre webhook | Où nous envoyons réellement le 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.
Ce que vous allez recevoir
Le contenu envoyé est exactement identique à ce que renvoie le point de terminaison « Obtenir le statut d’une tâche » : vous pouvez le traiter avec la même logique d’analyse.Pour les tâches vidéo, le résultat se trouve dans
result.videos, et pour l’audio dans result.audios.Nouvelles tentatives et déduplication (important)
- Nouvelles tentatives : Si votre serveur ne renvoie pas
2xxen environ 10 secondes, ou renvoie5xx, nous réessaierons automatiquement, jusqu’à 3 fois, à des intervalles d’environ 10 s, 30 s et 60 s. Si les 3 échouent, nous abandonnons (en environ 2 minutes). - Pas de nouvelle tentative : Si votre point de terminaison renvoie
4xx(considéré comme une URL / requête incorrecte), nous abandonnons immédiatement sans réessayer. - Déduplication : Normalement, une tâche n’est envoyée qu’une seule fois. Mais dans des cas extrêmes (p. ex. un redémarrage de notre côté après l’envoi mais avant la confirmation), vous pourriez recevoir des envois en double. Veillez à dédupliquer de manière idempotente par
id(task_id) pour éviter un double traitement.
Renvoyez 2xx le plus tôt possible
Acceptez et mettez en file d’attente d’abord, puis traitez de manière asynchrone : ne nous faites pas attendre la fin de votre traitement.
Exigences pour l’URL de rappel
Pour des raisons de sécurité, l’URL de rappel doit respecter les conditions suivantes :| Exigence | Description |
|---|---|
| Accessible publiquement | Ne peut pas être une adresse interne / locale (p. ex. 127.0.0.1, 10.x, 192.168.x seront rejetées) |
| Protocole | http ou https (https recommandé) |
| Port | Utilisez des ports standard (80 / 443) ; les ports non standard peuvent être bloqués |
| Domaine | Ne peut pas pointer vers notre propre domaine de service |
FAQ
J'ai soumis une tâche avec un webhook mais je n'ai rien reçu ?
J'ai soumis une tâche avec un webhook mais je n'ai rien reçu ?
Vérifiez point par point :
- La tâche est-elle réellement terminée ? Consultez les détails de la tâche :
statusest-ilcompleted/failed(aucun envoi pendant le traitement) ? - Votre URL est-elle accessible publiquement ? Pouvons-nous atteindre votre
/callback? - Le port est-il un port standard (80 / 443) ? Les ports non standard peuvent être bloqués par les politiques de sécurité.
- Votre
/callbacka-t-il renvoyé 2xx à temps ? En cas de 4xx, nous abandonnons immédiatement. - Utilisez-vous
https? Le certificat est-il valide ?
Pourquoi url dans le résultat est-il un tableau ?
Pourquoi url dans le résultat est-il un tableau ?
Certains modèles produisent plusieurs images à la fois, donc
images[].url peut être un tableau : traitez-le simplement comme un tableau.Les liens de résultat expirent-ils ?
Les liens de résultat expirent-ils ?
Si
result contient expires_at (horodatage Unix), cela indique l’heure d’expiration du lien : transférez-le/sauvegardez-le rapidement.Envoyez-vous le statut « en cours de traitement » ?
Envoyez-vous le statut « en cours de traitement » ?
Non. Nous n’envoyons qu’une seule fois, lorsque la tâche réussit ou échoue définitivement.
Exemple minimal de récepteur
Python
200 le plus tôt possible et exécutez votre logique de traitement de manière asynchrone en arrière-plan.