Vue d’ensemble
Au lieu d’interrogerGET /jobs/{id}, fournissez à Krea une URL de webhook. Krea envoie le job à cette URL lorsqu’il est terminé.
Utiliser les webhooks
Ajoutez l’en-têteX-Webhook-URL à toute requête de génération. Lorsque le job se termine, échoue ou est annulé, Krea envoie une requête POST à cette URL.
Charge utile du webhook
Le corps de la requête a la même structure que la réponse deGET /jobs/{id} :
Vérifier les signatures
Krea signe chaque webhook avec Ed25519. Vérifiez la signature avant de faire confiance à une charge utile, et rejetez les requêtes qui n’ont pas de signature.
Krea signe le hachage SHA-256, en hexadécimal minuscule, de l’horodatage, de l’URL, des métadonnées et du corps brut de la requête, joints par des retours à la ligne :
- Vérifiez que
X-Krea-Webhook-Urlcorrespond exactement à l’X-Webhook-URLque vous avez envoyée avec le job. - Vérifiez que l’horodatage ne s’écarte pas de plus de 5 minutes de l’heure actuelle de votre serveur.
- Acceptez la requête si la signature est validée par l’une des clés de
https://api.krea.ai/.well-known/jwks.json. Mettez les clés en cache pendant 24 heures au maximum. Krea publie une nouvelle clé 24 heures avant de commencer à signer avec elle.
express.raw() dans Express, await request.arrayBuffer() dans les frameworks basés sur la Fetch API, ou request.get_data() dans Flask. Si l’en-tête X-Krea-Webhook-Metadata est absent, traitez-le comme une chaîne vide.
Livraison et nouvelles tentatives
Retournez un2xx dans un délai de 15 secondes. Si la requête expire, ne parvient pas à se connecter ou reçoit un 5xx, 408, 423, 425 ou 429, Krea réessaie pendant environ 10 minutes, avec un nouvel horodatage et une nouvelle signature à chaque fois. Krea ne réessaie pour aucun autre 4xx.
Le même job peut arriver plusieurs fois : dédupliquez donc en fonction de job_id et status.
Webhooks vs polling
Utilisez les webhooks lorsque vous disposez d’un serveur capable de recevoir des requêtes HTTP. Utilisez le polling pour les applications côté client ou lorsque vous ne pouvez pas exposer un point de terminaison public.
Étapes suivantes
Cycle de vie des jobs
Découvrez les états des jobs et l’interrogation d’état
Exemples de code
Générez une image avec l’API, de bout en bout