webhook.url sur une tâche et nous y enverrons le résultat en POST quand la tâche atteint un état final :
COMPLETED ou FAILED.
Charge utile de livraison
Nous envoyons en POSTContent-Type: application/json avec ce corps :
object
requis
Les mêmes métadonnées de tâche qu’à la soumission, désormais avec un
status final et votre idempotencyKey renvoyée.object
requis
Le coût en crédits du moteur :
2 pour Perplexity, 3 pour ChatGPT, etc. (1 à 3 crédits selon le moteur).
creditsCharged vaut 0 si la tâche a échoué. Contrairement aux réponses de soumission et de polling, qui indiquent
toujours zéro, ce champ n’est pas nul.object
requis
Le résultat propre au moteur. Consultez Moteurs. Pour une tâche échouée, c’est
{ "error": "<reason>" } au lieu du résultat du moteur.Nouvelles tentatives
Renvoyez n’importe quel2xx pour accuser réception. Tout le reste, timeout compris, est un échec et nous
réessayons avec un backoff exponentiel :
Après la cinquième tentative, la livraison est abandonnée et journalisée. Il n’existe pas de file de lettres mortes
consultable. Pour récupérer le résultat via l’API de tâches, interrogez-la pendant la fenêtre publique de 24 heures.
Cette fenêtre ne définit pas la durée de stockage de l’enregistrement sous-jacent.
Chaque tentative a un timeout de requête de 30 secondes.
Écrire un handler sûr
1
Accuser réception vite
Renvoyez
200 dès que vous avez mis la charge utile en file de façon durable. Faites l’analyse et les écritures en
base ensuite. Un handler lent consomme le timeout de 30 secondes et provoque une nouvelle tentative indésirable.2
Dédupliquer sur idempotencyKey
À cause des nouvelles tentatives, votre handler peut légitimement recevoir la même tâche plusieurs fois. Rapprochez
sur
task.idempotencyKey (ou task.id) et rendez l’écriture idempotente.3
Brancher sur le statut, pas sur la présence
Vérifiez explicitement
task.status === "FAILED". Une tâche échouée livre aussi un webhook.Les requêtes webhook ne portent ni signature ni secret partagé. Si votre endpoint est public, considérez la charge
utile comme non fiable et utilisez un chemin d’URL impossible à deviner, ou placez le handler derrière des
restrictions au niveau réseau.