Passer au contenu principal

Vue d’ensemble

Au lieu d’interroger GET /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ête X-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 de GET /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 :
Pour vérifier une requête :
  1. Vérifiez que X-Krea-Webhook-Url correspond exactement à l’X-Webhook-URL que vous avez envoyée avec le job.
  2. Vérifiez que l’horodatage ne s’écarte pas de plus de 5 minutes de l’heure actuelle de votre serveur.
  3. 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.
Hachez les octets bruts du corps, et non le JSON resérialisé. Par exemple, utilisez 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 un 2xx 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