Generazione di video IA in blocco: centinaia di clip senza intoppi
Come lanciare centinaia di generazioni di video IA da script o agente: limiti di concorrenza, backoff, retry idempotenti, rimborsi e spesa per chiave.
Generazione di video IA in blocco: centinaia di clip senza intoppi
La prima volta che lanci trecento generazioni video da uno script, qualcosa si rompe verso il job quaranta. Un provider risponde con un 429, il tuo ciclo riprova subito, i retry si scontrano tra loro e, quando l'esecuzione finisce, hai 280 file, qualche duplicato pagato due volte e una dozzina di job i cui link di output sono già scaduti. I modelli funzionano bene; il guasto nasce dal trattare un batch come un semplice ciclo for.
Ecco l'impianto che permette di lasciare girare senza supervisione un generatore di video IA in blocco: stimare il costo del batch in anticipo, mettere in coda entro i limiti di concorrenza, riprovare senza pagare due volte, riconciliare i rimborsi e nominare gli output in modo da ritrovarli il mese dopo.
Tre limiti che decidono la velocità di un batch
Le API di generazione applicano limiti su tre assi distinti, che la documentazione di Leonardo.Ai definisce con chiarezza:
- La concorrenza è il numero di job di generazione elaborati in parallelo.
- Il limite di coda (pending) è quante richieste possono attendere quando tutti gli slot concorrenti sono occupati.
- Il rate limit dell'API è quante richieste puoi fare in una finestra di tempo, qualunque cosa facciano.
La concorrenza non limita il totale delle richieste: il lavoro in più attende in coda, se c'è spazio. La concorrenza determina il tuo throughput; il rate limit determina quanto spesso puoi inviare e interrogare.
Come sono i valori predefiniti
I valori predefiniti sono bassi e di solito si applicano per organizzazione e non per chiave:
- fal: gli account nuovi partono da 2 richieste concorrenti e crescono con le fatture pagate nelle ultime quattro settimane fino a 40 in self-service. Le richieste in IN_QUEUE non contano per il limite; solo quelle in IN_PROGRESS.
- Vidu: fino a 5 task concorrenti per organizzazione, e il limite vale per organizzazione, non per chiave API.
- LTX: secondo la sua pagina sui rate limit, di default fino a 2 generazioni simultanee, con le richieste oltre il limite respinte con un 429 e un header Retry-After.
- Replicate: 600 richieste al minuto per creare predizioni e 3.000 al minuto per gli altri endpoint, con brevi picchi tollerati prima del throttling.
Con una concorrenza di 2, un'esecuzione da 300 clip occupa una lunga serata, per veloce che sia il tuo codice. Trattala come un job in background, con un manifesto e un traguardo.
Calcola il costo del batch prima di premere avvio
Con prezzi a chiamata, il costo di un batch è un prodotto di numeri che conosci già. La formula per il tuo runbook:
Costo del batch = clip x secondi per clip x prezzo al secondo + immagini x prezzo per immagine + (caratteri / 450) x prezzo per 450 caratteri di voce.
Con i prezzi pubblici di Aitachyon al momento della scrittura (l'elenco completo è nella pagina dei modelli con il prezzo di ogni chiamata), ecco quanto costano batch realistici da capo a fondo, con clip da 5 secondi:
- 20 hook su Hailuo 02 a $0.085/s: 20 x 5 x $0.085 = $8.50.
- Gli stessi 20 hook su Kling v3: $16.00 senza audio a $0.16/s, oppure $32.00 con audio nativo a $0.32/s.
- Gli stessi 20 hook su Seedance 2.5: $20.00 a 480p ($0.20/s) oppure $44.00 a 720p ($0.44/s).
- 50 foto prodotto su Seedream 4.0 a $0.057 per immagine: $2.85. Su FLUX.2 [pro] da $0.057 a $0.086: da $2.85 a $4.30. Su Nano Banana a $0.13: $6.50.
- Una settimana di short, sette video composti ciascuno da tre clip Hailuo 02 da 5 secondi più circa 900 caratteri di voce fuori campo ElevenLabs (da $0.043 a $0.086 ogni 450 caratteri): per ogni short, 15 x $0.085 = $1.275 di video e da $0.086 a $0.172 di voce, cioè circa $9.53 a $10.13 per la settimana.
- 300 clip: 1.500 secondi di video. Sono $127.50 su Hailuo 02 e $480.00 su Kling v3 con audio.
Lo stesso batch varia di circa quattro a uno tra i modelli, quindi la scelta del modello pesa di più a volumi alti. Uno schema comune: generare tutte le varianti su un modello più economico, scegliere le vincenti e rifare il rendering solo di quelle sul modello con l'aspetto o l'audio nativo che vuoi. L'analisi dei prezzi API modello per modello passa in rassegna i compromessi.
Due voci che si dimenticano. I retry: con una cattiva logica di retry, un'esecuzione da 300 clip ne fattura ben più di 300. E il tasso di scelta: se tieni una clip su cinque, una clip utilizzabile costa cinque volte il prezzo della chiamata. La domanda a monte è quante inserzioni conviene davvero far girare.
Il manifesto dei job: dai un nome a ogni job prima di inviarlo
L'abitudine più utile nella generazione in blocco è scrivere tutto il batch in un file manifesto prima che parta qualsiasi richiesta. Registra cosa deve esistere, cosa è stato inviato, cosa è finito e quanto è costato. Quando lo script si ferma al job 140, riparti dal manifesto invece di tirare a indovinare.
Una riga di manifesto che sopravvive a un crash
- job_key: un ID deterministico costruito da campagna, inquadratura, modello e variante, per esempio spring-launch_hook-07_kling3_v2.
- modello e parametri: slug del modello, durata, risoluzione, audio attivo o no, seed se il modello lo accetta.
- prompt: il testo esatto inviato, per poter riprodurre un vincitore.
- estimated_cost: ricavato dalla formula qui sopra.
- status: planned, submitted, running, done, failed.
- provider_id: l'ID di richiesta o di job che l'API restituisce all'invio.
- output_ref e local_path: dove si trova il file una volta ottenuto.
- actual_cost e attempts: compilati al termine.
Somma estimated_cost e rifiuta di partire se supera il budget. Questo controllo intercetta il refuso che trasforma 30 clip in 300.
Idempotenza: la regola che evita la doppia fatturazione
Il momento pericoloso è un timeout di rete all'invio: non sai se il job è stato creato, e un retry alla cieca può fatturarlo due volte. Stripe documenta la difesa standard per i POST a pagamento: il server memorizza codice di stato e corpo della prima richiesta per ogni chiave di idempotenza, anche per gli errori 500, e restituisce lo stesso risultato alle ripetizioni. Le chiavi possono arrivare a 255 caratteri, possono essere eliminate dopo almeno 24 ore, e riusare una chiave con parametri diversi restituisce un errore.
Molte API di generazione non documentano l'idempotenza; la pagina sull'affidabilità di fal non affronta esplicitamente le garanzie di idempotenza. Quando il provider non offre una chiave, il tuo manifesto è lo strato di idempotenza: prima di reinviare un job il cui invio è andato in timeout, cercalo lato provider e reinvia solo dopo aver confermato che non esiste.
Metti il lavoro in coda, limita ciò che è in corso
Le API video sono asincrone: invii, ricevi un ID, torni a prendere il risultato. La coda di fal restituisce un request_id da conservare per i controlli di stato successivi e fa passare ogni richiesta per IN_QUEUE, IN_PROGRESS e COMPLETED. La guida video di OpenAI usava lo stesso schema, con gli stati queued, in_progress, completed e failed.
Lo schema che evita i rifiuti di massa, secondo la documentazione di LTX, è una coda locale che limita i job attivi alla concorrenza consentita. In pratica:
- Carica tutte le righe pianificate del manifesto in una coda locale.
- Avvia un pool di worker dimensionato sul tuo limite di concorrenza. Se il provider conta solo i job in esecuzione, come fal, puoi inviare in anticipo nella sua coda; fal dichiara che le richieste in coda non vengono mai scartate a causa dei limiti di concorrenza, a meno che scada uno start_timeout.
- Ogni worker invia un job, registra subito l'ID del provider nel manifesto e attende il completamento.
- Al completamento, il worker scarica l'output, scrive la riga e prende il job successivo.
- Metti in testa i job che ti servono e segna le varianti in blocco a bassa priorità dove possibile; fal accetta per questo priority impostato su low.
Webhook o polling
Preferisci i webhook quando puoi riceverli. Replicate invia POST HTTP quando le predizioni vengono create, aggiornate e concluse, e fal accetta un webhook_url all'invio e vi pubblica ID della richiesta, stato e output al completamento. Rendi idempotente l'handler: lo stesso completamento può arrivare più volte, quindi cerca il job per ID e non fare nulla se la riga è già done.
Se fai polling, fallo lentamente. OpenAI suggeriva ogni 10-20 secondi, con backoff esponenziale se serve. Interrogare 300 job ogni secondo brucia il tuo rate limit generale (quello di Replicate è 3.000 richieste al minuto per gli endpoint diversi dalla creazione) e ti fa limitare proprio sulle chiamate che contano.
Retry che non moltiplicano il conto
Riprovare dopo un ritardo fisso sincronizza i worker: si svegliano insieme e si scontrano di nuovo. AWS l'ha misurato nel suo studio su exponential backoff e jitter. Con 100 client in competizione, il full jitter ha ridotto le chiamate totali di oltre la metà rispetto al backoff esponenziale senza jitter, che impiegava talmente tanto da essere escluso dal grafico dei tempi di completamento.
La formula del full jitter:
sleep = random(0, min(cap, base x 2^attempt))
Con base = 1 secondo e cap = 60 secondi, il tentativo 3 attende un tempo casuale tra 0 e 8 secondi. Le indicazioni di fal per i client HTTP grezzi seguono la stessa forma, con un backoff di 1 s, 2 s, 4 s, 8 s, e il suo SDK riprova fino a 10 volte.
Una regola decisionale per i retry
Non ogni errore merita un retry:
- 429 con header Retry-After: attendi esattamente quel tempo, più un po' di jitter. Il messaggio di throttling di Replicate dice quando il limite si azzera, intorno ai 30 secondi.
- 429 senza header, o concurrent_requests_limit di fal (fal imposta anche X-Fal-needs-retry: 1): backoff con full jitter e riduci di uno i worker se continua a succedere.
- 503, 504 o errore di connessione: riprova con backoff. Sono gli errori che la coda di fal riprova in automatico, insieme al 429.
- Timeout all'invio: non reinviare finché non hai verificato se il job esiste (vedi l'idempotenza sopra).
- Errori 4xx di validazione o di contenuto: non riprovare. Segna la riga come failed con il messaggio, correggi prompt o parametri e rimettila in coda come nuova variante.
- Job completato con stato failed: riprova una volta con gli stessi parametri. Se fallisce ancora, trattalo come un problema di prompt e vai avanti.
Limita i tentativi per job (tre è un buon default) e i retry totali per esecuzione. Quando un decimo dei job sta riprovando, qualcosa non va a monte: metti in pausa l'esecuzione.
Fallimenti, rimborsi e riconciliazione
A volumi alti alcuni rendering falliscono, e la domanda è chi paga. fal dichiara che le richieste fallite con 5xx non comportano addebiti. Su Aitachyon, un rendering fallito viene rimborsato automaticamente, al centesimo, e ogni job è dettagliato con il modello su cui è girato e quanto è costato. Qualunque sia la politica del tuo provider, riconcilia dopo ogni esecuzione invece di fidarti.
Checklist di riconciliazione dopo l'esecuzione
- Conta le righe per stato. Planned meno done meno failed deve dare zero; ciò che resta è bloccato e richiede un controllo di stato.
- Somma actual_cost e confrontalo con estimated_cost. Uno scarto oltre qualche punto percentuale di solito indica invii duplicati, oppure un modello o una durata diversi dal piano.
- Associa ogni job addebitato a una riga del manifesto. Un addebito senza riga è un duplicato causato da un retry.
- Verifica che ogni job fallito mostri il rimborso o un addebito zero, e che ogni riga done abbia un file locale della durata attesa.
- Registra la selezione: quali output hai tenuto. Quel rapporto alimenta il budget del batch successivo.
Con uno script servono pochi minuti, e si trasferisce direttamente alla produzione di 50 varianti UGC a settimana, dove mantiene costante la spesa settimanale.
Porta via i file prima che spariscano
Gli output ospitati dal provider sono temporanei. Replicate elimina dopo un'ora i file di output delle predizioni create via API e ti dice di salvarne una copia; le predizioni dall'interfaccia web mantengono i loro file, quindi un flusso che funzionava a mano può perdere file una volta automatizzato. Gli URL di download video di OpenAI erano validi al massimo 1 ora dopo la generazione.
Lancia di notte, scarica al mattino e trovi link morti. Scarica nell'handler di completamento, nel passaggio che segna la riga come done.
Una convenzione di nomi in cui si può cercare
Rinomina ogni file al download con la sua job key, per esempio spring-launch_hook-07_kling3_v2.mp4, e conserva il riferimento del provider nel manifesto. Aitachyon assegna a ogni file generato una ref stabile (img_, scn_, vo_ e così via) che il codice può recuperare in qualsiasi momento con GET /api/generations/{ref}, quindi la ref è l'identificativo duraturo e il file locale è la tua copia di lavoro. Con entrambi nel manifesto, una domanda come "quale prompt ha prodotto l'hook che ha vinto a marzo" si risolve con un grep.
Anche la dipendenza dal provider è un rischio del batch
La guida di OpenAI segnala ora che i modelli Sora 2 e la Videos API sono stati dismessi il 24 settembre 2026. Le pipeline collegate a quell'endpoint hanno dovuto essere riscritte. Con il modello tenuto come parametro del manifesto, una dismissione costa una modifica di configurazione.
Controllo dei costi per chiave e batch guidati da un agente
Uno script difettoso con un saldo illimitato è la combinazione costosa. Replicate applica limiti progressivamente più severi man mano che il credito cala e consiglia di tenere il saldo sopra i $20 con ricarica automatica, mentre gli account senza metodo di pagamento sono limitati a 1 richiesta al secondo. Le tue protezioni vanno messe sopra:
Protezioni di spesa per le esecuzioni senza supervisione
- Una chiave API per pipeline. Il job notturno degli short, lo script delle varianti di inserzioni e la sessione del tuo agente hanno ciascuno la propria chiave, così la spesa è attribuibile. Su Aitachyon ogni chiave ha la sua spesa, un avviso quando spende in modo insolitamente rapido e una revoca con un clic.
- Un tetto prepagato. Un saldo prepagato è per costruzione un limite rigido. Il saldo di Aitachyon non scade mai, quindi ricaricare per una grande esecuzione non crea pressione a consumare entro una scadenza. Il confronto tra crediti e pagamento a chiamata passa in rassegna dove ciascun modello perde denaro.
- Un controllo di budget nel codice. Il totale del manifesto, verificato prima dell'esecuzione e poi ogni 50 job rispetto alla spesa reale.
- Un interruttore di emergenza. Se scatta l'avviso per chiave, revoca la chiave. I worker falliscono subito sugli errori di autenticazione, ed è ciò che vuoi.
Lo stesso batch, guidato da un agente
Sempre più spesso è un agente di coding a scrivere e lanciare lo script. Con un server MCP ospitato collegato a Claude Code o Cursor, descrivi il batch ("venti hook da 5 secondi da questi prompt su Hailuo 02, salvati in ./hooks e nominati per numero di hook") e l'agente invia, attende, scarica e riporta ogni file con il suo costo. Collegare Claude Code ad Aitachyon richiede un solo comando:
claude mcp add --transport http aitachyon https://aitachyon.com/api/mcp --header "Authorization: Bearer ait_..."
Le esecuzioni di un agente richiedono le stesse protezioni: una chiave dedicata, un budget dichiarato nel prompt e il manifesto scritto su disco mentre procede. La guida su come generare video da Claude Code tramite MCP mostra la configurazione, e una configurazione di agente funzionante per la produzione video spiega come concatenare script, clip e voce fino ai pezzi finiti.
Checklist prima di un'esecuzione in blocco
Copiala in cima al tuo script di batch o al prompt del tuo agente:
- Manifesto scritto, una riga per output, job key deterministiche.
- Totale stimato sotto il budget.
- Una chiave API dedicata con avvisi di spesa.
- Worker limitati al tetto di concorrenza.
- Backoff con full jitter, Retry-After rispettato, al massimo tre tentativi.
- Invii andati in timeout verificati prima di ogni reinvio.
- Handler di webhook o polling lento, idempotente in entrambi i casi.
- Download e rinomina al completamento.
- Un batch di prova da cinque, eseguito da capo a fondo.
- Script di riconciliazione pronto.
Il batch di prova è il passaggio che tutti saltano e il più economico: su Hailuo 02, al momento della scrittura, cinque clip da 5 secondi costano $2.13 e intercettano il formato sbagliato prima che ti costi trecento volte tanto.
FAQ
Pago le generazioni di video IA che falliscono?
Dipende dal provider. fal non addebita le richieste che falliscono con un errore 5xx, e Aitachyon rimborsa automaticamente i rendering falliti, al centesimo. In entrambi i casi, riconcilia gli addebiti dettagliati con l'elenco dei job dopo ogni esecuzione, perché un invio duplicato causato da un cattivo retry è un job riuscito che hai pagato.
Per quanto tempo restano disponibili i file video generati?
Spesso poco. Replicate elimina i file di output dell'API dopo un'ora, e gli URL di download video di OpenAI duravano al massimo un'ora. Scarica ogni file appena il suo job termina e conservalo con un nome tuo. Su Aitachyon, ogni output ha anche una ref stabile che puoi recuperare più tardi con GET /api/generations/{ref}.
Quanto costa generare 100 brevi video IA?
Per 100 clip da cinque secondi ai prezzi di Aitachyon al momento della scrittura, sono $42.50 su Hailuo 02, $80 su Kling v3 senza audio e $100 su Seedance 2.5 a 480p. Dividi per il tuo tasso di scelta per ottenere il costo per clip utilizzabile.
Fonti
- Replicate: rate limit
- Replicate: file di output
- Replicate: webhook
- fal: limiti di concorrenza
- fal: inferenza asincrona e coda
- fal: affidabilità
- Leonardo.Ai: guida a concorrenza, coda e rate limit
- Vidu: utilizzo e limiti
- Stripe: richieste idempotenti
- AWS Architecture Blog: exponential backoff e jitter
Se vuoi eseguire questo tipo di batch senza creare un account separato per ogni modello, Aitachyon riunisce Seedance, Kling, Veo, Hailuo, i modelli di immagine e la voce ElevenLabs dietro un'unica chiave, utilizzabile da un'API HTTP o dal server MCP ospitato, con ogni job dettagliato, i rendering falliti rimborsati e la spesa tracciata per chiave. La guida rapida ad API e MCP spiega la configurazione.
Articoli correlati
Crediti IA o pagamento a chiamata: quale costa davvero meno
Come funzionano i crediti IA, dove scadenza, nuovi tentativi e render falliti nascondono costi, e un esempio con i numeri contro il prezzo al secondo in dollari
StrategieAutomatizzare la produzione video con agenti IA: un setup che funziona
Una pipeline per automatizzare la produzione video con agenti IA: script, inquadrature, voce e montaggio, con costi reali per fase e i controlli umani.
StrategieAnnunci UGC con l'IA su larga scala: 50 varianti a settimana, con costi e conformità
Come produrre 50 varianti di annunci UGC con l'IA a settimana: matrice delle varianti, costo reale per variante, test leggibile e informativa su TikTok e Meta.
StrategieVideo di prodotto con l'IA per l'e-commerce: un workflow su scala di catalogo
Trasforma un catalogo in brevi video con l'IA: dalla foto al clip, costo per SKU, batch da foglio di calcolo e le specifiche di Amazon, Google e Shopify.
StrategieCoerenza tra annuncio e landing page: la perdita di conversioni che nessuno controlla
Un annuncio efficace converte poco se la landing page non mantiene la sua promessa. Perché questa incoerenza brucia budget, con una checklist per allineare il messaggio dall'inizio alla fine.
StrategieLe metriche degli annunci video che predicono davvero i vincitori
Hook rate, hold rate e costo per clic in uscita anticipano un annuncio video vincente con bassa spesa. I numeri di vanità da ignorare, con benchmark citati.
Strumenti gratuiti da provare
Free AI image generator
Describe what you want and get a high-quality AI image in seconds. A free AI image generator, no account needed to preview, keep your first image when you sign up.
Prova gratisFree toolFree AI product photo generator
Generate clean, studio-style product photos for your store and listings in seconds. Crisp lighting and tidy backgrounds, free to try with no account, keep your first shot on signup.
Prova gratisFree toolFree background remover
Remove the background from any image in seconds and get a clean, transparent cutout. A free background remover, no account needed to preview, keep your first cutout when you sign up.
Prova gratisSmetti di descrivere il tuo brand. Incolla il tuo URL.
Aitachyon legge tutto il tuo brand dal tuo sito e crea video, immagini, caroselli, post e banner, fedeli al brand, per ogni formato e ogni feed.