Vai al contenuto principale

Panoramica

Invece di effettuare polling su GET /jobs/{id}, fornisci a Krea un URL webhook. Krea invia il job a quell’URL quando termina.

Utilizzo dei webhook

Aggiungi l’intestazione X-Webhook-URL a qualsiasi richiesta di generazione. Quando il job viene completato, fallisce o viene cancellato, Krea invia una richiesta POST a quell’URL.

Payload del webhook

Il corpo della richiesta ha la stessa struttura della risposta di GET /jobs/{id}:

Verifica delle firme

Krea firma ogni webhook con Ed25519. Verifica la firma prima di considerare attendibile un payload e rifiuta le richieste prive di firma. Krea firma l’hash SHA-256 in esadecimale minuscolo di timestamp, URL, metadati e corpo grezzo della richiesta, uniti da caratteri di nuova riga:
Per verificare una richiesta:
  1. Controlla che X-Krea-Webhook-Url corrisponda esattamente all’X-Webhook-URL che hai inviato con il job.
  2. Controlla che il timestamp non si discosti di più di 5 minuti dall’ora corrente del tuo server.
  3. Accetta la richiesta se la firma risulta valida con una qualsiasi delle chiavi in https://api.krea.ai/.well-known/jwks.json. Memorizza le chiavi nella cache per non più di 24 ore. Krea pubblica una nuova chiave 24 ore prima di iniziare a usarla per firmare.
Calcola l’hash dei byte grezzi del corpo, non del JSON riserializzato. Ad esempio, usa express.raw() in Express, await request.arrayBuffer() nei framework basati su Fetch API o request.get_data() in Flask. Se l’intestazione X-Krea-Webhook-Metadata è assente, trattala come una stringa vuota.

Consegna e nuovi tentativi

Restituisci un 2xx entro 15 secondi. Se la richiesta va in timeout, non riesce a connettersi o riceve un 5xx, 408, 423, 425 o 429, Krea riprova per circa 10 minuti, con un nuovo timestamp e una nuova firma a ogni tentativo. Krea non riprova per nessun altro 4xx. Lo stesso job può arrivare più di una volta, quindi elimina i duplicati in base a job_id e status.

Webhook vs Polling

Usa i webhook quando hai un server in grado di ricevere richieste HTTP. Usa il polling per applicazioni lato client o quando non puoi esporre un endpoint pubblico.

Prossimi passi

Ciclo di vita del job

Scopri gli stati dei job e il polling dello stato

Esempi di codice

Genera un’immagine con l’API, dall’inizio alla fine