{
  "aboutHtml": "<p>FLUX Video Edit [fast] è il flusso di Black Forest Labs guidato da prompt per modificare un video esistente. Riceve un clip sorgente e un’istruzione che descrive la modifica, quindi restituisce un MP4 modificato. La sorgente definisce l’inquadratura: durata, composizione, movimento di camera e tempi forniscono la struttura di partenza. Usa il prompt per identificare ciò che deve cambiare, invece di scrivere la descrizione di una scena completamente nuova che lascia poco chiara la modifica desiderata.</p><h4>Indicare la modifica e la sua posizione</h4><p>Le modifiche documentate comprendono rimozione, aggiunta o sostituzione di oggetti e personaggi, ricostruzione dell’ambientazione, cambiamento dello stile di un clip, modifica del testo visibile e revisione di dialoghi o suoni. Inizia dall’elemento da modificare e dall’operazione. Un’istruzione può rimuovere una borsa da una sedia mantenendo la persona seduta e la stanza, oppure sostituire una tazza semplice con una tazza smaltata blu senza cambiare l’azione della mano. Se sono visibili più oggetti simili, distingui quello interessato tramite posizione, aspetto o ruolo.</p><p>Per un’aggiunta, descrivi posizione, scala e azione pertinente. Una lampada rossa alta accanto al divano è più specifica di una lampada aggiuntiva non meglio definita in qualche punto dell’inquadratura. Per una sostituzione, identifica che cosa deve diventare che cosa e il movimento o il contatto da mantenere. La guida ai prompt del produttore consiglia l’istruzione più breve che descriva completamente la modifica, aggiungendo dettagli quando necessari. Preserva deliberatamente le caratteristiche sorgenti invece di chiedere un miglioramento generale di cui non si può valutare la portata.</p><h4>Ambientazioni, stili e animazione preliminare</h4><p>Un cambiamento di ambientazione può ricostruire l’ambiente visibile mantenendo l’azione. Il produttore mostra la sostituzione di una superficie da arrampicata con una struttura diversa e la specifica dei nuovi punti di contatto, così mani e piedi del personaggio continuano ad avere una superficie sensata. In una scena pratica, descrivi il nuovo ambiente e la geometria su cui si basa il movimento esistente. Un nuovo sfondo è più facile da valutare quando l’azione originale ha un rapporto esplicito con esso.</p><p>La guida mostra anche la trasformazione di un’animazione preliminare in un trattamento visivo finito. Indica quali oggetti schematici diventano i veicoli o gli oggetti di scena previsti, quindi mantieni traiettorie, velocità e rapporto con la camera. Per un cambiamento di stile, descrivi materiali, superfici, luce e riflessi risultanti oltre all’estetica. Una scena dall’aspetto di argilla e una dall’aspetto fotografico richiedono indicazioni visive differenti anche quando seguono la stessa azione.</p><p>Un’ulteriore modifica può usare il primo risultato modificato come nuova sorgente. Conserva l’originale e ogni fase selezionata e assegna al passaggio successivo uno scopo chiaro. L’esempio documentato porta un’anteprima preliminare a un’ambientazione finita e poi a un altro trattamento dell’illuminazione. Dopo ogni passaggio, confronta il clip modificato con la sorgente precedente e controlla che le caratteristiche da mantenere siano ancora presenti.</p><h4>Il dialogo deve rientrare nel tempo esistente</h4><p>Il flusso mantiene l’audio sorgente, salvo quando l’istruzione richiede un cambiamento di dialogo o suono. Una sorgente muta restituisce un risultato muto, quindi non fornisce parlato esistente da modificare. Per una modifica del dialogo, cita la battuta desiderata, identifica chi parla e adatta le nuove parole al tempo occupato dalla battuta sorgente. La guida riporta il taglio di una sostituzione più lunga quando superava l’intervallo di parlato disponibile. Scrivere più parole non crea tempo aggiuntivo per parlare all’interno dell’inquadratura esistente.</p><p>Controlla la battuta udibile insieme alla recitazione visibile. Conserva una copia del testo sorgente e della sostituzione prevista, così da identificare una parola omessa, una frase fuori tempo o un cambiamento sonoro indesiderato. Il risultato utile è il momento parlato modificato all’interno della scena, non una trascrizione presumibilmente fedele soltanto perché il rendering è terminato.</p><h4>Limiti della sorgente e output ereditato</h4><p>Il profilo esatto del produttore richiede un video e un prompt di modifica. L’istruzione contiene da uno a 4.096 caratteri dopo la rimozione degli spazi bianchi iniziali e finali. Il clip viene fornito tramite un URL o un MP4 codificato, con durata massima di quindici secondi e limite di ingresso di cinquanta MiB. Ogni lato deve essere di almeno 160 pixel, e il clip normalizzato deve contenere almeno diciassette fotogrammi a 24 fps, circa sette decimi di secondo. Le sorgenti troppo lunghe vengono rifiutate anziché tagliate silenziosamente; quelle troppo piccole possono fallire durante l’elaborazione.</p><p>Il flusso documentato usa l’elaborazione a 24 fps e segue durata e rapporto d’aspetto della sorgente. Gli input superiori al profilo 720p vengono ridotti; il produttore mostra una sorgente 1920×1088 restituita a 1248×704. Durata, risoluzione e rapporto d’aspetto non sono impostazioni indipendenti di uscita in questo profilo di modifica. La procedura di campionamento viene gestita internamente e campi come mode, version, seed o generate_audio non sono accettati nel contratto di richiesta dichiarato.</p><p>Un video usato soltanto come ispirazione di movimento o stile per un’inquadratura nuova appartiene a un flusso diverso. Questo editor non accetta immagini di riferimento, input costituiti soltanto da audio, maschere o richieste di estensione del clip. Prepara il video effettivo da modificare e mantienine la durata scelta prima di scrivere l’istruzione. Dopo l’elaborazione asincrona, il produttore restituisce il MP4 modificato tramite un link temporaneo firmato, valido per circa un’ora. Salva il risultato e confronta oggetto modificato, fotogrammi circostanti, tempi e audio con la sorgente prima di usare il clip in un montaggio più lungo.</p>",
  "aboutText": "FLUX Video Edit [fast] è il flusso di Black Forest Labs guidato da prompt per modificare un video esistente. Riceve un clip sorgente e un’istruzione che descrive la modifica, quindi restituisce un MP4 modificato. La sorgente definisce l’inquadratura: durata, composizione, movimento di camera e tempi forniscono la struttura di partenza. Usa il prompt per identificare ciò che deve cambiare, invece di scrivere la descrizione di una scena completamente nuova che lascia poco chiara la modifica desiderata.\n\n### Indicare la modifica e la sua posizione\n\nLe modifiche documentate comprendono rimozione, aggiunta o sostituzione di oggetti e personaggi, ricostruzione dell’ambientazione, cambiamento dello stile di un clip, modifica del testo visibile e revisione di dialoghi o suoni. Inizia dall’elemento da modificare e dall’operazione. Un’istruzione può rimuovere una borsa da una sedia mantenendo la persona seduta e la stanza, oppure sostituire una tazza semplice con una tazza smaltata blu senza cambiare l’azione della mano. Se sono visibili più oggetti simili, distingui quello interessato tramite posizione, aspetto o ruolo.\n\nPer un’aggiunta, descrivi posizione, scala e azione pertinente. Una lampada rossa alta accanto al divano è più specifica di una lampada aggiuntiva non meglio definita in qualche punto dell’inquadratura. Per una sostituzione, identifica che cosa deve diventare che cosa e il movimento o il contatto da mantenere. La guida ai prompt del produttore consiglia l’istruzione più breve che descriva completamente la modifica, aggiungendo dettagli quando necessari. Preserva deliberatamente le caratteristiche sorgenti invece di chiedere un miglioramento generale di cui non si può valutare la portata.\n\n### Ambientazioni, stili e animazione preliminare\n\nUn cambiamento di ambientazione può ricostruire l’ambiente visibile mantenendo l’azione. Il produttore mostra la sostituzione di una superficie da arrampicata con una struttura diversa e la specifica dei nuovi punti di contatto, così mani e piedi del personaggio continuano ad avere una superficie sensata. In una scena pratica, descrivi il nuovo ambiente e la geometria su cui si basa il movimento esistente. Un nuovo sfondo è più facile da valutare quando l’azione originale ha un rapporto esplicito con esso.\n\nLa guida mostra anche la trasformazione di un’animazione preliminare in un trattamento visivo finito. Indica quali oggetti schematici diventano i veicoli o gli oggetti di scena previsti, quindi mantieni traiettorie, velocità e rapporto con la camera. Per un cambiamento di stile, descrivi materiali, superfici, luce e riflessi risultanti oltre all’estetica. Una scena dall’aspetto di argilla e una dall’aspetto fotografico richiedono indicazioni visive differenti anche quando seguono la stessa azione.\n\nUn’ulteriore modifica può usare il primo risultato modificato come nuova sorgente. Conserva l’originale e ogni fase selezionata e assegna al passaggio successivo uno scopo chiaro. L’esempio documentato porta un’anteprima preliminare a un’ambientazione finita e poi a un altro trattamento dell’illuminazione. Dopo ogni passaggio, confronta il clip modificato con la sorgente precedente e controlla che le caratteristiche da mantenere siano ancora presenti.\n\n### Il dialogo deve rientrare nel tempo esistente\n\nIl flusso mantiene l’audio sorgente, salvo quando l’istruzione richiede un cambiamento di dialogo o suono. Una sorgente muta restituisce un risultato muto, quindi non fornisce parlato esistente da modificare. Per una modifica del dialogo, cita la battuta desiderata, identifica chi parla e adatta le nuove parole al tempo occupato dalla battuta sorgente. La guida riporta il taglio di una sostituzione più lunga quando superava l’intervallo di parlato disponibile. Scrivere più parole non crea tempo aggiuntivo per parlare all’interno dell’inquadratura esistente.\n\nControlla la battuta udibile insieme alla recitazione visibile. Conserva una copia del testo sorgente e della sostituzione prevista, così da identificare una parola omessa, una frase fuori tempo o un cambiamento sonoro indesiderato. Il risultato utile è il momento parlato modificato all’interno della scena, non una trascrizione presumibilmente fedele soltanto perché il rendering è terminato.\n\n### Limiti della sorgente e output ereditato\n\nIl profilo esatto del produttore richiede un video e un prompt di modifica. L’istruzione contiene da uno a 4.096 caratteri dopo la rimozione degli spazi bianchi iniziali e finali. Il clip viene fornito tramite un URL o un MP4 codificato, con durata massima di quindici secondi e limite di ingresso di cinquanta MiB. Ogni lato deve essere di almeno 160 pixel, e il clip normalizzato deve contenere almeno diciassette fotogrammi a 24 fps, circa sette decimi di secondo. Le sorgenti troppo lunghe vengono rifiutate anziché tagliate silenziosamente; quelle troppo piccole possono fallire durante l’elaborazione.\n\nIl flusso documentato usa l’elaborazione a 24 fps e segue durata e rapporto d’aspetto della sorgente. Gli input superiori al profilo 720p vengono ridotti; il produttore mostra una sorgente 1920×1088 restituita a 1248×704. Durata, risoluzione e rapporto d’aspetto non sono impostazioni indipendenti di uscita in questo profilo di modifica. La procedura di campionamento viene gestita internamente e campi come mode, version, seed o generate_audio non sono accettati nel contratto di richiesta dichiarato.\n\nUn video usato soltanto come ispirazione di movimento o stile per un’inquadratura nuova appartiene a un flusso diverso. Questo editor non accetta immagini di riferimento, input costituiti soltanto da audio, maschere o richieste di estensione del clip. Prepara il video effettivo da modificare e mantienine la durata scelta prima di scrivere l’istruzione. Dopo l’elaborazione asincrona, il produttore restituisce il MP4 modificato tramite un link temporaneo firmato, valido per circa un’ora. Salva il risultato e confronta oggetto modificato, fotogrammi circostanti, tempi e audio con la sorgente prima di usare il clip in un montaggio più lungo.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "41ef7062c744203453822e7e9eaf4ccec5344a6416b98a4500c811e52f8b6431",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "it",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Black Forest Labs: FLUX Video Edit</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Chiudi\">×</button></div><div class=\"idline\"><span>Black Forest Labs /</span><code>black-forest-labs/flux-video-edit</code><button type=\"button\" id=\"copy-id\">Copia ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Sezioni della scheda del modello\"><button type=\"button\" data-card-jump=\"overview\">Introduzione</button><button type=\"button\" data-card-jump=\"methods\">Input e metodi</button><button type=\"button\" data-card-jump=\"pricing\">Tariffe</button><button type=\"button\" data-card-jump=\"examples\">Esempi</button><button type=\"button\" data-card-jump=\"results\">Risultati</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metodi API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|videos|/v1/videos|black-forest-labs%2Fflux-video-edit\">Video</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Introduzione</h3><p class=\"mdesc-full\">FLUX Video Edit [fast] trasforma un clip esistente mediante un’istruzione scritta di modifica. Aggiungi, rimuovi o sostituisci elementi, cambia ambientazione o stile e modifica dialoghi esistenti rispettando i vincoli documentati di durata sorgente, inquadratura e audio.</p><dl class=\"card-io\" data-card-io><div><dt>Input accettati</dt><dd>Testo · Immagini · Audio · Video</dd></div><div><dt>Risultati</dt><dd>Video</dd></div></dl><details class=\"card-about\"><summary>Informazioni sul modello</summary><p class=\"note-s\" data-model-method-boundary>Questa descrizione illustra le funzionalità del modello. Gli input, gli output e le opzioni disponibili in Ailoot per il metodo selezionato sono elencati di seguito.</p><div class=\"mabout\" id=\"m-about\"><p>FLUX Video Edit [fast] è il flusso di Black Forest Labs guidato da prompt per modificare un video esistente. Riceve un clip sorgente e un’istruzione che descrive la modifica, quindi restituisce un MP4 modificato. La sorgente definisce l’inquadratura: durata, composizione, movimento di camera e tempi forniscono la struttura di partenza. Usa il prompt per identificare ciò che deve cambiare, invece di scrivere la descrizione di una scena completamente nuova che lascia poco chiara la modifica desiderata.</p><h4>Indicare la modifica e la sua posizione</h4><p>Le modifiche documentate comprendono rimozione, aggiunta o sostituzione di oggetti e personaggi, ricostruzione dell’ambientazione, cambiamento dello stile di un clip, modifica del testo visibile e revisione di dialoghi o suoni. Inizia dall’elemento da modificare e dall’operazione. Un’istruzione può rimuovere una borsa da una sedia mantenendo la persona seduta e la stanza, oppure sostituire una tazza semplice con una tazza smaltata blu senza cambiare l’azione della mano. Se sono visibili più oggetti simili, distingui quello interessato tramite posizione, aspetto o ruolo.</p><p>Per un’aggiunta, descrivi posizione, scala e azione pertinente. Una lampada rossa alta accanto al divano è più specifica di una lampada aggiuntiva non meglio definita in qualche punto dell’inquadratura. Per una sostituzione, identifica che cosa deve diventare che cosa e il movimento o il contatto da mantenere. La guida ai prompt del produttore consiglia l’istruzione più breve che descriva completamente la modifica, aggiungendo dettagli quando necessari. Preserva deliberatamente le caratteristiche sorgenti invece di chiedere un miglioramento generale di cui non si può valutare la portata.</p><h4>Ambientazioni, stili e animazione preliminare</h4><p>Un cambiamento di ambientazione può ricostruire l’ambiente visibile mantenendo l’azione. Il produttore mostra la sostituzione di una superficie da arrampicata con una struttura diversa e la specifica dei nuovi punti di contatto, così mani e piedi del personaggio continuano ad avere una superficie sensata. In una scena pratica, descrivi il nuovo ambiente e la geometria su cui si basa il movimento esistente. Un nuovo sfondo è più facile da valutare quando l’azione originale ha un rapporto esplicito con esso.</p><p>La guida mostra anche la trasformazione di un’animazione preliminare in un trattamento visivo finito. Indica quali oggetti schematici diventano i veicoli o gli oggetti di scena previsti, quindi mantieni traiettorie, velocità e rapporto con la camera. Per un cambiamento di stile, descrivi materiali, superfici, luce e riflessi risultanti oltre all’estetica. Una scena dall’aspetto di argilla e una dall’aspetto fotografico richiedono indicazioni visive differenti anche quando seguono la stessa azione.</p><p>Un’ulteriore modifica può usare il primo risultato modificato come nuova sorgente. Conserva l’originale e ogni fase selezionata e assegna al passaggio successivo uno scopo chiaro. L’esempio documentato porta un’anteprima preliminare a un’ambientazione finita e poi a un altro trattamento dell’illuminazione. Dopo ogni passaggio, confronta il clip modificato con la sorgente precedente e controlla che le caratteristiche da mantenere siano ancora presenti.</p><h4>Il dialogo deve rientrare nel tempo esistente</h4><p>Il flusso mantiene l’audio sorgente, salvo quando l’istruzione richiede un cambiamento di dialogo o suono. Una sorgente muta restituisce un risultato muto, quindi non fornisce parlato esistente da modificare. Per una modifica del dialogo, cita la battuta desiderata, identifica chi parla e adatta le nuove parole al tempo occupato dalla battuta sorgente. La guida riporta il taglio di una sostituzione più lunga quando superava l’intervallo di parlato disponibile. Scrivere più parole non crea tempo aggiuntivo per parlare all’interno dell’inquadratura esistente.</p><p>Controlla la battuta udibile insieme alla recitazione visibile. Conserva una copia del testo sorgente e della sostituzione prevista, così da identificare una parola omessa, una frase fuori tempo o un cambiamento sonoro indesiderato. Il risultato utile è il momento parlato modificato all’interno della scena, non una trascrizione presumibilmente fedele soltanto perché il rendering è terminato.</p><h4>Limiti della sorgente e output ereditato</h4><p>Il profilo esatto del produttore richiede un video e un prompt di modifica. L’istruzione contiene da uno a 4.096 caratteri dopo la rimozione degli spazi bianchi iniziali e finali. Il clip viene fornito tramite un URL o un MP4 codificato, con durata massima di quindici secondi e limite di ingresso di cinquanta MiB. Ogni lato deve essere di almeno 160 pixel, e il clip normalizzato deve contenere almeno diciassette fotogrammi a 24 fps, circa sette decimi di secondo. Le sorgenti troppo lunghe vengono rifiutate anziché tagliate silenziosamente; quelle troppo piccole possono fallire durante l’elaborazione.</p><p>Il flusso documentato usa l’elaborazione a 24 fps e segue durata e rapporto d’aspetto della sorgente. Gli input superiori al profilo 720p vengono ridotti; il produttore mostra una sorgente 1920×1088 restituita a 1248×704. Durata, risoluzione e rapporto d’aspetto non sono impostazioni indipendenti di uscita in questo profilo di modifica. La procedura di campionamento viene gestita internamente e campi come mode, version, seed o generate_audio non sono accettati nel contratto di richiesta dichiarato.</p><p>Un video usato soltanto come ispirazione di movimento o stile per un’inquadratura nuova appartiene a un flusso diverso. Questo editor non accetta immagini di riferimento, input costituiti soltanto da audio, maschere o richieste di estensione del clip. Prepara il video effettivo da modificare e mantienine la durata scelta prima di scrivere l’istruzione. Dopo l’elaborazione asincrona, il produttore restituisce il MP4 modificato tramite un link temporaneo firmato, valido per circa un’ora. Salva il risultato e confronta oggetto modificato, fotogrammi circostanti, tempi e audio con la sorgente prima di usare il clip in un montaggio più lungo.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Disponibile in Ailoot · input e metodi</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Generazione video</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Tipi di input</dt><dd><code>text</code>, <code>image</code>, <code>audio</code>, <code>video</code></dd></div><div><dt>Tipi di output</dt><dd><code>video</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Campo</th><th>Tipo</th><th>Requisito</th><th>Valori e limiti</th><th>Predefinito</th></tr></thead><tbody><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obbligatorio</td><td data-cell-label=\"Valori e limiti\"><span class=\"card-cell-label\">Valori e limiti</span><div>black-forest-labs/flux-video-edit</div></td><td data-cell-label=\"Predefinito\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinito</span>—</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>array</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obbligatorio</td><td data-cell-label=\"Valori e limiti\"><span class=\"card-cell-label\">Valori e limiti</span><div>Numero minimo di elementi: 1</div><div>Numero massimo di elementi: 1</div></td><td data-cell-label=\"Predefinito\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinito</span>—</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obbligatorio</td><td data-cell-label=\"Valori e limiti\"><span class=\"card-cell-label\">Valori e limiti</span><div>Lunghezza minima: 1</div></td><td data-cell-label=\"Predefinito\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinito</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Parametri e ciclo di vita del metodo</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parametro</th><th>Contratto</th></tr></thead><tbody><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>content_type</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>application/json</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>required</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>model, input_references, prompt</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>material_types</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>text, image, audio, video</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>material_conditions</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>Usa esattamente un URL reale del contenuto di una risorsa video completata di tua proprietà con la firma restituita. Il proprietario della risorsa, il tipo e la prova dei byte memorizzati devono corrispondere alla richiesta.</td></tr></tbody></table></div><p>Ciclo di vita: <code>asynchronous_job_then_owned_outputs</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}</code> · id o polling_url effettivamente restituito</p><p class=\"note-s\"><code>GET /v1/videos/{request_id}/content</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tariffe</h3><div class=\"card-result-process\" data-billing-basis><h5>Calcolo del costo finale</h5><p class=\"note-s\">Le tariffe visualizzate stimano il costo prima della generazione. L&#39;addebito finale viene calcolato in base al costo registrato per la generazione originale. La durata misurata dell&#39;output e le quantità previste non costituiscono la quantità finale fatturabile.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Le tariffe non aggiungono opzioni alla richiesta. I parametri supportati sono elencati nel metodo selezionato.</p><dl data-price-conditions><dt>Modalità rapida</dt><dd>Non specificato <span class=\"note-s\">Quando è selezionata la modalità rapida</span></dd><dt>Modalità flex</dt><dd>Non specificato <span class=\"note-s\">Quando è selezionata la modalità flex</span></dd><dt>Sforzo massimo di ragionamento</dt><dd>Non specificato <span class=\"note-s\">Quando lo sforzo massimo di ragionamento usa l&#39;adeguamento predefinito (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Tariffe stimate per il confronto</h4><h4>Prezzi per configurazione</h4><p class=\"note-s\">Associa ogni costo alle condizioni indicate. Usa una sola tariffa per ogni insieme di configurazioni alternative.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configurazione</th><th>Listino delle tariffe</th><th>Quantità prevista</th><th>Unità di fatturazione</th><th>Condizioni di fatturazione</th><th>Costo</th></tr></thead><tbody><tr><th data-cell-label=\"Configurazione\" scope=\"row\"><span class=\"card-cell-label\">Configurazione</span>Tariffe base dei token</th><td data-cell-label=\"Listino delle tariffe\"><span class=\"card-cell-label\">Listino delle tariffe</span>Tariffa base</td><td data-cell-label=\"Quantità prevista\"><span class=\"card-cell-label\">Quantità prevista</span>—</td><td data-cell-label=\"Unità di fatturazione\"><span class=\"card-cell-label\">Unità di fatturazione</span>—</td><td data-cell-label=\"Condizioni di fatturazione\"><span class=\"card-cell-label\">Condizioni di fatturazione</span>—</td><td data-cell-label=\"Costo\"><span class=\"card-cell-label\">Costo</span><div><span>Input · Token in input · Stima solo a fini di confronto</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Output · Token in output · Stima solo a fini di confronto</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Lettura dalla cache · Stima solo a fini di confronto</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Scrittura nella cache · Stima solo a fini di confronto</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Scrittura nella cache, 1 ora · Stima solo a fini di confronto</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Configurazione\" scope=\"row\"><span class=\"card-cell-label\">Configurazione</span>Prezzo del video</th><td data-cell-label=\"Listino delle tariffe\"><span class=\"card-cell-label\">Listino delle tariffe</span>—</td><td data-cell-label=\"Quantità prevista\"><span class=\"card-cell-label\">Quantità prevista</span>—</td><td data-cell-label=\"Unità di fatturazione\"><span class=\"card-cell-label\">Unità di fatturazione</span>per secondo di video</td><td data-cell-label=\"Condizioni di fatturazione\"><span class=\"card-cell-label\">Condizioni di fatturazione</span>In questa chiave tariffaria non è dichiarata alcuna condizione aggiuntiva.</td><td data-cell-label=\"Costo\"><span class=\"card-cell-label\">Costo</span><div><span>Output · Prezzo del video · Stima solo a fini di confronto</span> <b>$0.06</b> <span class=\"price-unit\">per secondo di video</span></div></td></tr><tr><th data-cell-label=\"Configurazione\" scope=\"row\"><span class=\"card-cell-label\">Configurazione</span>Costo stimato della generazione</th><td data-cell-label=\"Listino delle tariffe\"><span class=\"card-cell-label\">Listino delle tariffe</span>—</td><td data-cell-label=\"Quantità prevista\"><span class=\"card-cell-label\">Quantità prevista</span>stima per una generazione</td><td data-cell-label=\"Unità di fatturazione\"><span class=\"card-cell-label\">Unità di fatturazione</span>—</td><td data-cell-label=\"Condizioni di fatturazione\"><span class=\"card-cell-label\">Condizioni di fatturazione</span>—</td><td data-cell-label=\"Costo\"><span class=\"card-cell-label\">Costo</span><div><span>Output · Costo di generazione stimato · Stima solo a fini di confronto</span> <b>$0.06</b> <span class=\"price-unit\">stima prima della generazione</span></div><p class=\"note-s\">Questa stima non è un addebito aggiuntivo né una tariffa fissa per la generazione completata.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot prenota un importo stimato prima di una richiesta. Dopo il risultato, addebita il costo finale in base all’utilizzo misurato. Per lo streaming, l’addebito usa il record finale di utilizzo. <a href=\"/docs/it/billing/reserve/\">Come funzionano la prenotazione e l’addebito finale →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Esempi di richieste</h3><h4>Ailoot Ultra · Generazione video</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Varianti di codice\"><button class=\"cg-tab\" id=\"model-code-1095-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1095-panel-0\" aria-selected=\"true\" tabindex=\"0\">Usa l’input effettivo e conserva il risultato completo</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copia il codice\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1095-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1095-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_INPUT_REFERENCES_JSON:?Set the actual documented input value}&quot;\nexport AILOOT_INPUT_REFERENCES_JSON\n: &quot;${AILOOT_PROMPT:?Set the actual documented input value}&quot;\nexport AILOOT_PROMPT\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nrequest={&#39;model&#39;: &#39;black-forest-labs/flux-video-edit&#39;, &#39;input_references&#39;: &#39;${ACTUAL_OWNED_INPUT_REFERENCES}&#39;, &#39;prompt&#39;: &#39;${ACTUAL_EDIT_PROMPT}&#39;}\nrequest[&#39;input_references&#39;]=json.loads(os.environ[&#39;AILOOT_INPUT_REFERENCES_JSON&#39;])\nrequest[&#39;prompt&#39;]=os.environ[&#39;AILOOT_PROMPT&#39;]\nPath(&#39;request.json&#39;).write_text(json.dumps(request,ensure_ascii=False),encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Ricevi e salva i risultati</h3><h4>Ailoot Ultra · Generazione video</h4><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{request_id}</code></li><li><code>GET /v1/videos/{request_id}/content</code></li></ul><h5>Salva tutte le risorse completate</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Varianti di codice\"><button class=\"cg-tab\" id=\"model-code-1096-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1096-panel-0\" aria-selected=\"true\" tabindex=\"0\">GET tutte le risorse completate</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copia il codice\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1096-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1096-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}&quot;\nexport AILOOT_STATUS_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[&quot;AILOOT_STATUS_FILE&quot;])\nif not f.is_file():raise SystemExit(&quot;Choose the actual completed status file&quot;)\nr=json.loads(f.read_text())\nif r.get(&quot;status&quot;)!=&quot;completed&quot; or not isinstance(r.get(&quot;data&quot;),list) or not r[&quot;data&quot;]:raise SystemExit(&quot;Wait for a completed status with asset paths&quot;)\nurls=[]\nfor x in r[&quot;data&quot;]:\n    if not isinstance(x,str) or &quot;\\n&quot; in x or &quot;\\r&quot; in x:raise SystemExit(&quot;Invalid asset path&quot;)\n    u=urljoin(&quot;https://api.ailoot.ai&quot;,x)\n    z=urlsplit(u)\n    if z.scheme!=&quot;https&quot; or z.netloc!=&quot;api.ailoot.ai&quot; or z.username or z.password:raise SystemExit(&quot;Use the actual Ailoot asset paths from status&quot;)\n    urls.append(u)\nPath(&quot;asset-urls.txt&quot;).write_text(&quot;\\n&quot;.join(urls)+&quot;\\n&quot;)\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error &quot;$asset_url&quot; \\\n    -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o &quot;video-${index}.mp4&quot;\n  index=$((index + 1))\ndone &lt; asset-urls.txt\n</code></pre></div></div></div><div class=\"card-result-process\" data-all-results><h5>Conserva tutti i risultati completati</h5><p class=\"note-s\">Salva ogni video completato o file restituito; recupera ogni URL di risorsa effettivamente restituito.</p><p class=\"note-s\">Conserva la risposta completa e gli header, ogni output effettivo, gli identificatori originali restituiti e tutti i campi di utilizzo. Recupera l&#39;operazione originale senza inviare nuovamente la richiesta di creazione.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Se occorre verificare la risposta originale</h5><p class=\"note-s\">Conserva X-Client-Request-ID, X-Ailoot-Task-Id e id/polling_url effettivamente restituiti. Prosegui con l&#39;attività originale; non inviare nuovamente la richiesta di creazione.</p></div><details class=\"card-about\" data-output-fields><summary>Campi della risposta</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Campo</th><th>Tipo</th></tr></thead><tbody><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span></td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span></td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">data[]</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span></td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">outputs[]</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span></td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias del modello</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=black-forest-labs%2Fflux-video-edit&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux-video-edit&amp;fmt=videos\"><code>black-forest-labs/flux-video-edit</code></a></span></p><h4>Alias dei percorsi dei metodi</h4><p class=\"note-s\">Usa i percorsi dei metodi indicati sopra.</p><h4>ID di chiamata correlati</h4><p class=\"note-s\"><a href=\"#m=black-forest-labs%2Fflux-video-edit&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux-video-edit&amp;fmt=videos\"><code>black-forest-labs/flux-video-edit</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "black-forest-labs/flux-video-edit",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "black-forest-labs/flux-video-edit",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|black-forest-labs%2Fflux-video-edit",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Le tariffe visualizzate stimano il costo prima della generazione. L'addebito finale viene calcolato in base al costo registrato per la generazione originale. La durata misurata dell'output e le quantità previste non costituiscono la quantità finale fatturabile.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual zero-based output index from completed manifest"
                  }
                }
              ],
              "creation_id_field": "id",
              "media_library": {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              "mode": "asynchronous_job_then_owned_outputs",
              "operation_id_is_not_task_id": true,
              "output_content_response": "owned MP4 bytes with Range support",
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned id or polling_url",
                  "path": "/v1/videos/{request_id}"
                }
              ],
              "unknown": "Conserva X-Client-Request-ID, X-Ailoot-Task-Id e id/polling_url effettivamente restituiti. Prosegui con l'attività originale; non inviare nuovamente la richiesta di creazione."
            },
            "outputs": {
              "all_results": "Conserva la risposta completa e gli header, ogni output effettivo, gli identificatori originali restituiti e tutti i campi di utilizzo. Recupera l'operazione originale senza inviare nuovamente la richiesta di creazione.",
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": null
                },
                {
                  "description": null,
                  "name": "status",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": null
                },
                {
                  "description": null,
                  "name": "outputs[]",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "black-forest-labs/flux-video-edit"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "const": "video_url"
                    },
                    "video_url": {
                      "additionalProperties": false,
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "type",
                    "video_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 1,
                "minimum_items": 1,
                "name": "input_references",
                "required": true,
                "type": "array"
              },
              {
                "max_length": 4096,
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "input_references": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "const": "video_url"
                      },
                      "video_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "type",
                      "video_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "black-forest-labs/flux-video-edit"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "maxLength": 4096,
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_references",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input_references": "${ACTUAL_OWNED_INPUT_REFERENCES}",
                "model": "black-forest-labs/flux-video-edit",
                "prompt": "${ACTUAL_EDIT_PROMPT}"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "Usa esattamente un URL reale del contenuto di una risorsa video completata di tua proprietà con la firma restituita. Il proprietario della risorsa, il tipo e la prova dei byte memorizzati devono corrispondere alla richiesta."
            ],
            "material_types": [
              "text",
              "image",
              "audio",
              "video"
            ],
            "required": [
              "model",
              "input_references",
              "prompt"
            ]
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual zero-based output index from completed manifest"
                }
              }
            ],
            "creation_id_field": "id",
            "media_library": {
              "http": "GET",
              "path": "/v1/media/assets"
            },
            "mode": "asynchronous_job_then_owned_outputs",
            "operation_id_is_not_task_id": true,
            "output_content_response": "owned MP4 bytes with Range support",
            "status": [
              {
                "http": "GET",
                "id_source": "id o polling_url effettivamente restituito",
                "path": "/v1/videos/{request_id}"
              }
            ],
            "unknown": "Keep X-Client-Request-ID, X-Ailoot-Task-Id and actual returned id/polling_url. Continue the original job; do not submit creation again."
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": null
              },
              {
                "description": null,
                "name": "status",
                "type": null
              },
              {
                "description": null,
                "name": "data[]",
                "type": null
              },
              {
                "description": null,
                "name": "outputs[]",
                "type": null
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Questa stima non è un addebito aggiuntivo né una tariffa fissa per la generazione completata.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Costo stimato della generazione",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_INPUT_REFERENCES_JSON:?Set the actual documented input value}\"\nexport AILOOT_INPUT_REFERENCES_JSON\n: \"${AILOOT_PROMPT:?Set the actual documented input value}\"\nexport AILOOT_PROMPT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'black-forest-labs/flux-video-edit', 'input_references': '${ACTUAL_OWNED_INPUT_REFERENCES}', 'prompt': '${ACTUAL_EDIT_PROMPT}'}\nrequest['input_references']=json.loads(os.environ['AILOOT_INPUT_REFERENCES_JSON'])\nrequest['prompt']=os.environ['AILOOT_PROMPT']\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}\"\nexport AILOOT_STATUS_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[\"AILOOT_STATUS_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose the actual completed status file\")\nr=json.loads(f.read_text())\nif r.get(\"status\")!=\"completed\" or not isinstance(r.get(\"data\"),list) or not r[\"data\"]:raise SystemExit(\"Wait for a completed status with asset paths\")\nurls=[]\nfor x in r[\"data\"]:\n    if not isinstance(x,str) or \"\\n\" in x or \"\\r\" in x:raise SystemExit(\"Invalid asset path\")\n    u=urljoin(\"https://api.ailoot.ai\",x)\n    z=urlsplit(u)\n    if z.scheme!=\"https\" or z.netloc!=\"api.ailoot.ai\" or z.username or z.password:raise SystemExit(\"Use the actual Ailoot asset paths from status\")\n    urls.append(u)\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" \\\n    -H \"Authorization: Bearer $AILOOT_API_KEY\" -o \"video-${index}.mp4\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "GET all completed assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "audio",
          "video"
        ],
        "label": "Generazione video",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "videos",
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "black-forest-labs/flux-video-edit",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.06",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.06",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.06",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.06",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    }
  ],
  "model_id": "black-forest-labs/flux-video-edit",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "fa971e6223c1f648445e7668ca3684891793aa18c6b881fb44345ab278bd2a6b",
    "input_html_sha256": "6bdc5f87d4b1242a1777be7670d768e3adb109bd0d69d2a5e0d6c29aac8463f7",
    "private_audit_sha256": "db43ea8119ec0b0fa4e71f645fcb69d770a883202eaa771c561f0fcbe87c9abc",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/it/black-forest-labs-flux-video-edit/",
    "description": "FLUX Video Edit [fast] trasforma un clip esistente mediante un’istruzione scritta di modifica. Aggiungi, rimuovi o sostituisci elementi, cambia ambientazione o stile e modifica dialoghi esistenti rispettando i vincoli documentati di durata sorgente, inquadratura e audio.",
    "locale": "it",
    "md_url": "https://ailoot.ai/models/it/black-forest-labs-flux-video-edit/index.md",
    "title": "Black Forest Labs: FLUX Video Edit — Ailoot",
    "url": "https://ailoot.ai/models/it/black-forest-labs-flux-video-edit/"
  },
  "rawModel": {
    "about": "FLUX Video Edit [fast] è il flusso di Black Forest Labs guidato da prompt per modificare un video esistente. Riceve un clip sorgente e un’istruzione che descrive la modifica, quindi restituisce un MP4 modificato. La sorgente definisce l’inquadratura: durata, composizione, movimento di camera e tempi forniscono la struttura di partenza. Usa il prompt per identificare ciò che deve cambiare, invece di scrivere la descrizione di una scena completamente nuova che lascia poco chiara la modifica desiderata.\n\n### Indicare la modifica e la sua posizione\n\nLe modifiche documentate comprendono rimozione, aggiunta o sostituzione di oggetti e personaggi, ricostruzione dell’ambientazione, cambiamento dello stile di un clip, modifica del testo visibile e revisione di dialoghi o suoni. Inizia dall’elemento da modificare e dall’operazione. Un’istruzione può rimuovere una borsa da una sedia mantenendo la persona seduta e la stanza, oppure sostituire una tazza semplice con una tazza smaltata blu senza cambiare l’azione della mano. Se sono visibili più oggetti simili, distingui quello interessato tramite posizione, aspetto o ruolo.\n\nPer un’aggiunta, descrivi posizione, scala e azione pertinente. Una lampada rossa alta accanto al divano è più specifica di una lampada aggiuntiva non meglio definita in qualche punto dell’inquadratura. Per una sostituzione, identifica che cosa deve diventare che cosa e il movimento o il contatto da mantenere. La guida ai prompt del produttore consiglia l’istruzione più breve che descriva completamente la modifica, aggiungendo dettagli quando necessari. Preserva deliberatamente le caratteristiche sorgenti invece di chiedere un miglioramento generale di cui non si può valutare la portata.\n\n### Ambientazioni, stili e animazione preliminare\n\nUn cambiamento di ambientazione può ricostruire l’ambiente visibile mantenendo l’azione. Il produttore mostra la sostituzione di una superficie da arrampicata con una struttura diversa e la specifica dei nuovi punti di contatto, così mani e piedi del personaggio continuano ad avere una superficie sensata. In una scena pratica, descrivi il nuovo ambiente e la geometria su cui si basa il movimento esistente. Un nuovo sfondo è più facile da valutare quando l’azione originale ha un rapporto esplicito con esso.\n\nLa guida mostra anche la trasformazione di un’animazione preliminare in un trattamento visivo finito. Indica quali oggetti schematici diventano i veicoli o gli oggetti di scena previsti, quindi mantieni traiettorie, velocità e rapporto con la camera. Per un cambiamento di stile, descrivi materiali, superfici, luce e riflessi risultanti oltre all’estetica. Una scena dall’aspetto di argilla e una dall’aspetto fotografico richiedono indicazioni visive differenti anche quando seguono la stessa azione.\n\nUn’ulteriore modifica può usare il primo risultato modificato come nuova sorgente. Conserva l’originale e ogni fase selezionata e assegna al passaggio successivo uno scopo chiaro. L’esempio documentato porta un’anteprima preliminare a un’ambientazione finita e poi a un altro trattamento dell’illuminazione. Dopo ogni passaggio, confronta il clip modificato con la sorgente precedente e controlla che le caratteristiche da mantenere siano ancora presenti.\n\n### Il dialogo deve rientrare nel tempo esistente\n\nIl flusso mantiene l’audio sorgente, salvo quando l’istruzione richiede un cambiamento di dialogo o suono. Una sorgente muta restituisce un risultato muto, quindi non fornisce parlato esistente da modificare. Per una modifica del dialogo, cita la battuta desiderata, identifica chi parla e adatta le nuove parole al tempo occupato dalla battuta sorgente. La guida riporta il taglio di una sostituzione più lunga quando superava l’intervallo di parlato disponibile. Scrivere più parole non crea tempo aggiuntivo per parlare all’interno dell’inquadratura esistente.\n\nControlla la battuta udibile insieme alla recitazione visibile. Conserva una copia del testo sorgente e della sostituzione prevista, così da identificare una parola omessa, una frase fuori tempo o un cambiamento sonoro indesiderato. Il risultato utile è il momento parlato modificato all’interno della scena, non una trascrizione presumibilmente fedele soltanto perché il rendering è terminato.\n\n### Limiti della sorgente e output ereditato\n\nIl profilo esatto del produttore richiede un video e un prompt di modifica. L’istruzione contiene da uno a 4.096 caratteri dopo la rimozione degli spazi bianchi iniziali e finali. Il clip viene fornito tramite un URL o un MP4 codificato, con durata massima di quindici secondi e limite di ingresso di cinquanta MiB. Ogni lato deve essere di almeno 160 pixel, e il clip normalizzato deve contenere almeno diciassette fotogrammi a 24 fps, circa sette decimi di secondo. Le sorgenti troppo lunghe vengono rifiutate anziché tagliate silenziosamente; quelle troppo piccole possono fallire durante l’elaborazione.\n\nIl flusso documentato usa l’elaborazione a 24 fps e segue durata e rapporto d’aspetto della sorgente. Gli input superiori al profilo 720p vengono ridotti; il produttore mostra una sorgente 1920×1088 restituita a 1248×704. Durata, risoluzione e rapporto d’aspetto non sono impostazioni indipendenti di uscita in questo profilo di modifica. La procedura di campionamento viene gestita internamente e campi come mode, version, seed o generate_audio non sono accettati nel contratto di richiesta dichiarato.\n\nUn video usato soltanto come ispirazione di movimento o stile per un’inquadratura nuova appartiene a un flusso diverso. Questo editor non accetta immagini di riferimento, input costituiti soltanto da audio, maschere o richieste di estensione del clip. Prepara il video effettivo da modificare e mantienine la durata scelta prima di scrivere l’istruzione. Dopo l’elaborazione asincrona, il produttore restituisce il MP4 modificato tramite un link temporaneo firmato, valido per circa un’ora. Salva il risultato e confronta oggetto modificato, fotogrammi circostanti, tempi e audio con la sorgente prima di usare il clip in un montaggio più lungo.",
    "alias_of": null,
    "aliases": [],
    "author": "Black Forest Labs",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "video"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.06",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.06",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ],
        "summary": "Tutte le tariffe della configurazione sono riportate nei dettagli."
      }
    ],
    "ctx": null,
    "formats": [
      "videos"
    ],
    "id": "black-forest-labs/flux-video-edit",
    "input": [
      "text",
      "image",
      "audio",
      "video"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Le tariffe visualizzate stimano il costo prima della generazione. L'addebito finale viene calcolato in base al costo registrato per la generazione originale. La durata misurata dell'output e le quantità previste non costituiscono la quantità finale fatturabile.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual zero-based output index from completed manifest"
                  }
                }
              ],
              "creation_id_field": "id",
              "media_library": {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              "mode": "asynchronous_job_then_owned_outputs",
              "operation_id_is_not_task_id": true,
              "output_content_response": "owned MP4 bytes with Range support",
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned id or polling_url",
                  "path": "/v1/videos/{request_id}"
                }
              ],
              "unknown": "Conserva X-Client-Request-ID, X-Ailoot-Task-Id e id/polling_url effettivamente restituiti. Prosegui con l'attività originale; non inviare nuovamente la richiesta di creazione."
            },
            "outputs": {
              "all_results": "Conserva la risposta completa e gli header, ogni output effettivo, gli identificatori originali restituiti e tutti i campi di utilizzo. Recupera l'operazione originale senza inviare nuovamente la richiesta di creazione.",
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": null
                },
                {
                  "description": null,
                  "name": "status",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": null
                },
                {
                  "description": null,
                  "name": "outputs[]",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "black-forest-labs/flux-video-edit"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "const": "video_url"
                    },
                    "video_url": {
                      "additionalProperties": false,
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "type",
                    "video_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 1,
                "minimum_items": 1,
                "name": "input_references",
                "required": true,
                "type": "array"
              },
              {
                "max_length": 4096,
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "input_references": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "const": "video_url"
                      },
                      "video_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "type",
                      "video_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "black-forest-labs/flux-video-edit"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "maxLength": 4096,
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_references",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input_references": "${ACTUAL_OWNED_INPUT_REFERENCES}",
                "model": "black-forest-labs/flux-video-edit",
                "prompt": "${ACTUAL_EDIT_PROMPT}"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "Usa esattamente un URL reale del contenuto di una risorsa video completata di tua proprietà con la firma restituita. Il proprietario della risorsa, il tipo e la prova dei byte memorizzati devono corrispondere alla richiesta."
            ],
            "material_types": [
              "text",
              "image",
              "audio",
              "video"
            ],
            "required": [
              "model",
              "input_references",
              "prompt"
            ]
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual zero-based output index from completed manifest"
                }
              }
            ],
            "creation_id_field": "id",
            "media_library": {
              "http": "GET",
              "path": "/v1/media/assets"
            },
            "mode": "asynchronous_job_then_owned_outputs",
            "operation_id_is_not_task_id": true,
            "output_content_response": "owned MP4 bytes with Range support",
            "status": [
              {
                "http": "GET",
                "id_source": "id o polling_url effettivamente restituito",
                "path": "/v1/videos/{request_id}"
              }
            ],
            "unknown": "Keep X-Client-Request-ID, X-Ailoot-Task-Id and actual returned id/polling_url. Continue the original job; do not submit creation again."
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": null
              },
              {
                "description": null,
                "name": "status",
                "type": null
              },
              {
                "description": null,
                "name": "data[]",
                "type": null
              },
              {
                "description": null,
                "name": "outputs[]",
                "type": null
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Questa stima non è un addebito aggiuntivo né una tariffa fissa per la generazione completata.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Costo stimato della generazione",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_INPUT_REFERENCES_JSON:?Set the actual documented input value}\"\nexport AILOOT_INPUT_REFERENCES_JSON\n: \"${AILOOT_PROMPT:?Set the actual documented input value}\"\nexport AILOOT_PROMPT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'black-forest-labs/flux-video-edit', 'input_references': '${ACTUAL_OWNED_INPUT_REFERENCES}', 'prompt': '${ACTUAL_EDIT_PROMPT}'}\nrequest['input_references']=json.loads(os.environ['AILOOT_INPUT_REFERENCES_JSON'])\nrequest['prompt']=os.environ['AILOOT_PROMPT']\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}\"\nexport AILOOT_STATUS_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[\"AILOOT_STATUS_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose the actual completed status file\")\nr=json.loads(f.read_text())\nif r.get(\"status\")!=\"completed\" or not isinstance(r.get(\"data\"),list) or not r[\"data\"]:raise SystemExit(\"Wait for a completed status with asset paths\")\nurls=[]\nfor x in r[\"data\"]:\n    if not isinstance(x,str) or \"\\n\" in x or \"\\r\" in x:raise SystemExit(\"Invalid asset path\")\n    u=urljoin(\"https://api.ailoot.ai\",x)\n    z=urlsplit(u)\n    if z.scheme!=\"https\" or z.netloc!=\"api.ailoot.ai\" or z.username or z.password:raise SystemExit(\"Use the actual Ailoot asset paths from status\")\n    urls.append(u)\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" \\\n    -H \"Authorization: Bearer $AILOOT_API_KEY\" -o \"video-${index}.mp4\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "GET all completed assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "audio",
          "video"
        ],
        "label": "Generazione video",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "videos",
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "black-forest-labs/flux-video-edit",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.06",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.06",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.06",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.06",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "black-forest-labs/flux-video-edit",
        "request_model_id": "black-forest-labs/flux-video-edit",
        "route_label": "Ultra"
      }
    ],
    "name": "Black Forest Labs: FLUX Video Edit",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.06,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.06,
      "varies": false
    },
    "short": "FLUX Video Edit [fast] trasforma un clip esistente mediante un’istruzione scritta di modifica. Aggiungi, rimuovi o sostituisci elementi, cambia ambientazione o stile e modifica dialoghi esistenti rispettando i vincoli documentati di durata sorgente, inquadratura e audio."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "FLUX Video Edit [fast] trasforma un clip esistente mediante un’istruzione scritta di modifica. Aggiungi, rimuovi o sostituisci elementi, cambia ambientazione o stile e modifica dialoghi esistenti rispettando i vincoli documentati di durata sorgente, inquadratura e audio.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "d29340f59b0ff27e484f92508be74cc8b707cafef93450c211864dec4021468f",
    "renderer_sha256": "3be1a96012c3c76b38a7b9bea6a57c0def38c56103737bee6a5e77aaa75e488a"
  },
  "sourceRevision": "669577f736abe29475167814501bf25d1edebda12cce6401fe689b8958c3365f"
}
