Panoramica
Invece di effettuare polling suGET /jobs/{id}, fornisci a Krea un URL webhook. Krea invia il job a quell’URL quando termina.
Utilizzo dei webhook
Aggiungi l’intestazioneX-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 diGET /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:
- Controlla che
X-Krea-Webhook-Urlcorrisponda esattamente all’X-Webhook-URLche hai inviato con il job. - Controlla che il timestamp non si discosti di più di 5 minuti dall’ora corrente del tuo server.
- 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.
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 un2xx 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