{
  "aboutHtml": "<p>O FLUX 3 Video é o modelo multimodal da Black Forest Labs para gerar vídeo com áudio sincronizado. Cria cenas a partir de um pedido em texto, constrói movimento em torno de imagens fixadas ou continua um clip existente. Fala, efeitos e ambiente podem ser gerados em conjunto com os fotogramas, apoiando uma cena curta cujo movimento de câmara, ação e som são concebidos como uma única sequência.</p><p>Para texto para vídeo, descreva o sujeito, o cenário, a ação visível, o comportamento da câmara e o som. Uma cena de produto útil pode começar com uma vista ampla, aproximar-se de um pormenor de material e terminar com o produto em utilização. Pedidos com vários planos podem nomear cada plano e a transição entre ângulos de câmara, mantendo o sujeito e o estilo visual consistentes ao longo da sequência. A tipografia pode aparecer na cena, por isso forneça as palavras exatas e a sua posição quando um letreiro ou título for importante. O modelo abrange imagem real, animação, grafismo em movimento e visuais estilizados.</p><p>Imagem para vídeo usa de uma a dez imagens de fotogramas-chave. Uma única imagem estabelece o fotograma inicial; um par fixa o início e o fim, enquanto imagens ordenadas com marcas temporais orientam momentos específicos do clip. Estas imagens tornam-se fotogramas do vídeo, em vez de servirem apenas como referências gerais de estilo. Com três ou mais imagens sem marcas temporais, o fabricante exige uma duração explícita: a primeira e a última fixam os extremos e as restantes são distribuídas uniformemente entre elas. Os fotogramas com marcas temporais devem estar por ordem cronológica; a duração automática vai até à última marca temporal arredondada por excesso, dentro do máximo de 20 segundos. Prepare fotogramas-chave com sujeitos, enquadramento e pormenores visuais compatíveis, depois descreva o movimento entre eles. Para uma revelação de produto, o primeiro fotograma pode mostrar o objeto fechado e o último a disposição aberta, com a ação intermédia definida no pedido.</p><p>A continuação de vídeo parte dos fotogramas finais do clip fornecido. O fluxo de lançamento usa até quatro segundos de vídeo e áudio existentes como contexto para a ação seguinte, transportando o comportamento de câmara, o movimento e o som através da junção. Escolha um final de origem que estabeleça claramente para onde se dirigem o sujeito e a câmara e descreva o que acontece a seguir. Continuação é diferente de reescrever um plano existente: o FLUX Video Edit é um modelo de edição separado e não passa a fazer parte do modelo de geração apenas porque ambos aceitam vídeo.</p><p>A geração condicionada por texto e imagem suporta clips de 5 a 20 segundos. A apresentação específica por modo atribui à continuação de vídeo um intervalo de saída de 5–15 segundos. A duração e a proporção podem ser escolhidas automaticamente, ou o pedido pode especificar uma forma horizontal, quadrada ou vertical suportada, incluindo 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16 e 9:21. A saída tem 24 fotogramas por segundo. Escolha a duração em torno de um pequeno número de ações visíveis, em vez de tentar incluir uma história inteira numa geração curta.</p><p>A saída HD vem diretamente da geração; FHD, QHD e UHD acabam a mesma cena com um ampliador de vídeo. Para 16:9, as dimensões entregues são, respetivamente, 1280 × 704, 1920 × 1088, 2560 × 1440 e 3840 × 2176. As dimensões são alinhadas a múltiplos de 32, pelo que uma classe de resolução designada pode diferir de um tamanho convencional de entrega. Recorte o fotograma acabado quando precisar de uma tela standard exata, preservando o conteúdo importante nas suas margens. A resolução mais alta é uma etapa de acabamento, não uma interpretação diferente do plano.</p><p>O áudio nativo está ativo por predefinição e pode ser desativado para um clip silencioso. Para diálogo, cite a fala, identifique o locutor e descreva a interpretação; fala multilingue, sotaques e sincronização labial fazem parte das capacidades audiovisuais do modelo. Mantenha o diálogo e as indicações sonoras ligados ao acontecimento visível, como uma tampa a fechar ou passos a afastarem-se. Reveja a voz, os tempos e as palavras pronunciadas juntamente com a imagem, em vez de tratar o som como uma camada sem relação acrescentada após a geração.</p><p>O modo Draft produz uma pré-visualização HD e um pacote de prévia. Melhore o pacote selecionado para renderizar essa geração com qualidade completa; enviar o mesmo pedido como um novo pedido de renderização completa é uma nova interpretação e pode produzir uma tomada diferente. As prévias usam apenas HD, enquanto a melhoria pode selecionar as quatro classes de resolução e tem FHD como predefinição. Isto permite uma sequência prática de explorar primeiro a ação e a composição e depois acabar a tomada escolhida no tamanho de entrega pretendido.</p><p>O fluxo do fabricante devolve um identificador de tarefa antes de o MP4 estar pronto e fornece depois o clip concluído quando o processamento termina. Os locais assinados de resultados expiram após cerca de duas horas, por isso guarde o recurso efetivo quando o plano for selecionado. Examine as transições de fotogramas-chave, os cortes, a tipografia, os pormenores do sujeito e a junção áudio face ao pedido. Para uma sequência mais longa, conserve as referências e o contexto final do plano bem-sucedido como entrada para o clip seguinte, em vez de assumir que um pedido curto contém toda a produção.</p>",
  "aboutText": "O FLUX 3 Video é o modelo multimodal da Black Forest Labs para gerar vídeo com áudio sincronizado. Cria cenas a partir de um pedido em texto, constrói movimento em torno de imagens fixadas ou continua um clip existente. Fala, efeitos e ambiente podem ser gerados em conjunto com os fotogramas, apoiando uma cena curta cujo movimento de câmara, ação e som são concebidos como uma única sequência.\n\nPara texto para vídeo, descreva o sujeito, o cenário, a ação visível, o comportamento da câmara e o som. Uma cena de produto útil pode começar com uma vista ampla, aproximar-se de um pormenor de material e terminar com o produto em utilização. Pedidos com vários planos podem nomear cada plano e a transição entre ângulos de câmara, mantendo o sujeito e o estilo visual consistentes ao longo da sequência. A tipografia pode aparecer na cena, por isso forneça as palavras exatas e a sua posição quando um letreiro ou título for importante. O modelo abrange imagem real, animação, grafismo em movimento e visuais estilizados.\n\nImagem para vídeo usa de uma a dez imagens de fotogramas-chave. Uma única imagem estabelece o fotograma inicial; um par fixa o início e o fim, enquanto imagens ordenadas com marcas temporais orientam momentos específicos do clip. Estas imagens tornam-se fotogramas do vídeo, em vez de servirem apenas como referências gerais de estilo. Com três ou mais imagens sem marcas temporais, o fabricante exige uma duração explícita: a primeira e a última fixam os extremos e as restantes são distribuídas uniformemente entre elas. Os fotogramas com marcas temporais devem estar por ordem cronológica; a duração automática vai até à última marca temporal arredondada por excesso, dentro do máximo de 20 segundos. Prepare fotogramas-chave com sujeitos, enquadramento e pormenores visuais compatíveis, depois descreva o movimento entre eles. Para uma revelação de produto, o primeiro fotograma pode mostrar o objeto fechado e o último a disposição aberta, com a ação intermédia definida no pedido.\n\nA continuação de vídeo parte dos fotogramas finais do clip fornecido. O fluxo de lançamento usa até quatro segundos de vídeo e áudio existentes como contexto para a ação seguinte, transportando o comportamento de câmara, o movimento e o som através da junção. Escolha um final de origem que estabeleça claramente para onde se dirigem o sujeito e a câmara e descreva o que acontece a seguir. Continuação é diferente de reescrever um plano existente: o FLUX Video Edit é um modelo de edição separado e não passa a fazer parte do modelo de geração apenas porque ambos aceitam vídeo.\n\nA geração condicionada por texto e imagem suporta clips de 5 a 20 segundos. A apresentação específica por modo atribui à continuação de vídeo um intervalo de saída de 5–15 segundos. A duração e a proporção podem ser escolhidas automaticamente, ou o pedido pode especificar uma forma horizontal, quadrada ou vertical suportada, incluindo 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16 e 9:21. A saída tem 24 fotogramas por segundo. Escolha a duração em torno de um pequeno número de ações visíveis, em vez de tentar incluir uma história inteira numa geração curta.\n\nA saída HD vem diretamente da geração; FHD, QHD e UHD acabam a mesma cena com um ampliador de vídeo. Para 16:9, as dimensões entregues são, respetivamente, 1280 × 704, 1920 × 1088, 2560 × 1440 e 3840 × 2176. As dimensões são alinhadas a múltiplos de 32, pelo que uma classe de resolução designada pode diferir de um tamanho convencional de entrega. Recorte o fotograma acabado quando precisar de uma tela standard exata, preservando o conteúdo importante nas suas margens. A resolução mais alta é uma etapa de acabamento, não uma interpretação diferente do plano.\n\nO áudio nativo está ativo por predefinição e pode ser desativado para um clip silencioso. Para diálogo, cite a fala, identifique o locutor e descreva a interpretação; fala multilingue, sotaques e sincronização labial fazem parte das capacidades audiovisuais do modelo. Mantenha o diálogo e as indicações sonoras ligados ao acontecimento visível, como uma tampa a fechar ou passos a afastarem-se. Reveja a voz, os tempos e as palavras pronunciadas juntamente com a imagem, em vez de tratar o som como uma camada sem relação acrescentada após a geração.\n\nO modo Draft produz uma pré-visualização HD e um pacote de prévia. Melhore o pacote selecionado para renderizar essa geração com qualidade completa; enviar o mesmo pedido como um novo pedido de renderização completa é uma nova interpretação e pode produzir uma tomada diferente. As prévias usam apenas HD, enquanto a melhoria pode selecionar as quatro classes de resolução e tem FHD como predefinição. Isto permite uma sequência prática de explorar primeiro a ação e a composição e depois acabar a tomada escolhida no tamanho de entrega pretendido.\n\nO fluxo do fabricante devolve um identificador de tarefa antes de o MP4 estar pronto e fornece depois o clip concluído quando o processamento termina. Os locais assinados de resultados expiram após cerca de duas horas, por isso guarde o recurso efetivo quando o plano for selecionado. Examine as transições de fotogramas-chave, os cortes, a tipografia, os pormenores do sujeito e a junção áudio face ao pedido. Para uma sequência mais longa, conserve as referências e o contexto final do plano bem-sucedido como entrada para o clip seguinte, em vez de assumir que um pedido curto contém toda a produção.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "1fe5b8d3f24172e2b41dd1a1a4132f49b12e9a5cf44a6c2f2636a92a21bb952e",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "pt-pt",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Black Forest Labs: FLUX.3 Video</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Fechar\">×</button></div><div class=\"idline\"><span>Black Forest Labs /</span><code>black-forest-labs/flux-3-video</code><button type=\"button\" id=\"copy-id\">Copiar ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Secções do cartão do modelo\"><button type=\"button\" data-card-jump=\"overview\">Introdução</button><button type=\"button\" data-card-jump=\"methods\">Entradas e métodos</button><button type=\"button\" data-card-jump=\"pricing\">Tarifários</button><button type=\"button\" data-card-jump=\"examples\">Exemplos</button><button type=\"button\" data-card-jump=\"results\">Resultados</button><button type=\"button\" data-card-jump=\"aliases\">Aliases</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Métodos da 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-3-video\">Vídeo</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\">Introdução</h3><p class=\"mdesc-full\">O FLUX 3 Video cria clips com diálogo, efeitos e ambiente sincronizados a partir de texto, imagens fixadas ou um clip a continuar. Fotogramas-chave, composição com vários planos e melhoria de prévias ajudam a desenvolver uma sequência controlada e a conservar a tomada selecionada.</p><dl class=\"card-io\" data-card-io><div><dt>Entradas aceites</dt><dd>Texto · Imagens</dd></div><div><dt>Resultados</dt><dd>Vídeo</dd></div></dl><details class=\"card-about\"><summary>Sobre o modelo</summary><p class=\"note-s\" data-model-method-boundary>Esta descrição apresenta as capacidades do modelo. As entradas, saídas e opções disponíveis no Ailoot para o método selecionado estão indicadas abaixo.</p><div class=\"mabout\" id=\"m-about\"><p>O FLUX 3 Video é o modelo multimodal da Black Forest Labs para gerar vídeo com áudio sincronizado. Cria cenas a partir de um pedido em texto, constrói movimento em torno de imagens fixadas ou continua um clip existente. Fala, efeitos e ambiente podem ser gerados em conjunto com os fotogramas, apoiando uma cena curta cujo movimento de câmara, ação e som são concebidos como uma única sequência.</p><p>Para texto para vídeo, descreva o sujeito, o cenário, a ação visível, o comportamento da câmara e o som. Uma cena de produto útil pode começar com uma vista ampla, aproximar-se de um pormenor de material e terminar com o produto em utilização. Pedidos com vários planos podem nomear cada plano e a transição entre ângulos de câmara, mantendo o sujeito e o estilo visual consistentes ao longo da sequência. A tipografia pode aparecer na cena, por isso forneça as palavras exatas e a sua posição quando um letreiro ou título for importante. O modelo abrange imagem real, animação, grafismo em movimento e visuais estilizados.</p><p>Imagem para vídeo usa de uma a dez imagens de fotogramas-chave. Uma única imagem estabelece o fotograma inicial; um par fixa o início e o fim, enquanto imagens ordenadas com marcas temporais orientam momentos específicos do clip. Estas imagens tornam-se fotogramas do vídeo, em vez de servirem apenas como referências gerais de estilo. Com três ou mais imagens sem marcas temporais, o fabricante exige uma duração explícita: a primeira e a última fixam os extremos e as restantes são distribuídas uniformemente entre elas. Os fotogramas com marcas temporais devem estar por ordem cronológica; a duração automática vai até à última marca temporal arredondada por excesso, dentro do máximo de 20 segundos. Prepare fotogramas-chave com sujeitos, enquadramento e pormenores visuais compatíveis, depois descreva o movimento entre eles. Para uma revelação de produto, o primeiro fotograma pode mostrar o objeto fechado e o último a disposição aberta, com a ação intermédia definida no pedido.</p><p>A continuação de vídeo parte dos fotogramas finais do clip fornecido. O fluxo de lançamento usa até quatro segundos de vídeo e áudio existentes como contexto para a ação seguinte, transportando o comportamento de câmara, o movimento e o som através da junção. Escolha um final de origem que estabeleça claramente para onde se dirigem o sujeito e a câmara e descreva o que acontece a seguir. Continuação é diferente de reescrever um plano existente: o FLUX Video Edit é um modelo de edição separado e não passa a fazer parte do modelo de geração apenas porque ambos aceitam vídeo.</p><p>A geração condicionada por texto e imagem suporta clips de 5 a 20 segundos. A apresentação específica por modo atribui à continuação de vídeo um intervalo de saída de 5–15 segundos. A duração e a proporção podem ser escolhidas automaticamente, ou o pedido pode especificar uma forma horizontal, quadrada ou vertical suportada, incluindo 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16 e 9:21. A saída tem 24 fotogramas por segundo. Escolha a duração em torno de um pequeno número de ações visíveis, em vez de tentar incluir uma história inteira numa geração curta.</p><p>A saída HD vem diretamente da geração; FHD, QHD e UHD acabam a mesma cena com um ampliador de vídeo. Para 16:9, as dimensões entregues são, respetivamente, 1280 × 704, 1920 × 1088, 2560 × 1440 e 3840 × 2176. As dimensões são alinhadas a múltiplos de 32, pelo que uma classe de resolução designada pode diferir de um tamanho convencional de entrega. Recorte o fotograma acabado quando precisar de uma tela standard exata, preservando o conteúdo importante nas suas margens. A resolução mais alta é uma etapa de acabamento, não uma interpretação diferente do plano.</p><p>O áudio nativo está ativo por predefinição e pode ser desativado para um clip silencioso. Para diálogo, cite a fala, identifique o locutor e descreva a interpretação; fala multilingue, sotaques e sincronização labial fazem parte das capacidades audiovisuais do modelo. Mantenha o diálogo e as indicações sonoras ligados ao acontecimento visível, como uma tampa a fechar ou passos a afastarem-se. Reveja a voz, os tempos e as palavras pronunciadas juntamente com a imagem, em vez de tratar o som como uma camada sem relação acrescentada após a geração.</p><p>O modo Draft produz uma pré-visualização HD e um pacote de prévia. Melhore o pacote selecionado para renderizar essa geração com qualidade completa; enviar o mesmo pedido como um novo pedido de renderização completa é uma nova interpretação e pode produzir uma tomada diferente. As prévias usam apenas HD, enquanto a melhoria pode selecionar as quatro classes de resolução e tem FHD como predefinição. Isto permite uma sequência prática de explorar primeiro a ação e a composição e depois acabar a tomada escolhida no tamanho de entrega pretendido.</p><p>O fluxo do fabricante devolve um identificador de tarefa antes de o MP4 estar pronto e fornece depois o clip concluído quando o processamento termina. Os locais assinados de resultados expiram após cerca de duas horas, por isso guarde o recurso efetivo quando o plano for selecionado. Examine as transições de fotogramas-chave, os cortes, a tipografia, os pormenores do sujeito e a junção áudio face ao pedido. Para uma sequência mais longa, conserve as referências e o contexto final do plano bem-sucedido como entrada para o clip seguinte, em vez de assumir que um pedido curto contém toda a produção.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Disponível no Ailoot · entradas e métodos</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Vídeo</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Entrada</dt><dd><code>text</code>, <code>image</code></dd></div><div><dt>Saída</dt><dd><code>video</code></dd></div><div><dt>Formato de saída</dt><dd>bytes MP4 originais; sem normalização nem transcodificação</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>Valores e limites</th><th>Predefinição</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><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>Obrigatório</td><td data-cell-label=\"Valores e limites\"><span class=\"card-cell-label\">Valores e limites</span><div>black-forest-labs/flux-3-video</div></td><td data-cell-label=\"Predefinição\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinição</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><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>Obrigatório</td><td data-cell-label=\"Valores e limites\"><span class=\"card-cell-label\">Valores e limites</span></td><td data-cell-label=\"Predefinição\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinição</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>integer</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obrigatório</td><td data-cell-label=\"Valores e limites\"><span class=\"card-cell-label\">Valores e limites</span><div>5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20</div><div>Mínimo: 1</div><div>Máximo: 600</div></td><td data-cell-label=\"Predefinição\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinição</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">resolution</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>Opcional</td><td data-cell-label=\"Valores e limites\"><span class=\"card-cell-label\">Valores e limites</span><div>720p, 1080p</div></td><td data-cell-label=\"Predefinição\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinição</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">aspect_ratio</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>Opcional</td><td data-cell-label=\"Valores e limites\"><span class=\"card-cell-label\">Valores e limites</span><div>21:9, 16:9, 4:3, 1:1, 3:4, 9:16</div></td><td data-cell-label=\"Predefinição\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinição</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">generate_audio</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>boolean</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Opcional</td><td data-cell-label=\"Valores e limites\"><span class=\"card-cell-label\">Valores e limites</span><div>false, true</div></td><td data-cell-label=\"Predefinição\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinição</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">frame_images</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>Opcional</td><td data-cell-label=\"Valores e limites\"><span class=\"card-cell-label\">Valores e limites</span><div>Número mínimo de elementos: 1</div><div>Número máximo de elementos: 2</div><div>Conteúdo de entrada: Matriz de objetos de fotograma. Cada objeto tem type=image_url, image_url com url e frame_type. Utilize um URL HTTPS de imagem e defina frame_type como first_frame ou last_frame. Cada função de fotograma aparece, no máximo, uma vez.</div><div>Chaves exatas: type, image_url, frame_type</div><div>Condições: Estas chaves descrevem cada objeto de fotograma; image_url contém apenas url. Omita frame_images num pedido apenas de texto.</div></td><td data-cell-label=\"Predefinição\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinição</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><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>Opcional</td><td data-cell-label=\"Valores e limites\"><span class=\"card-cell-label\">Valores e limites</span></td><td data-cell-label=\"Predefinição\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinição</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">previous_job_id</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>Opcional</td><td data-cell-label=\"Valores e limites\"><span class=\"card-cell-label\">Valores e limites</span><div>Padrão: ^video_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$</div></td><td data-cell-label=\"Predefinição\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinição</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">callback_url</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>Opcional</td><td data-cell-label=\"Valores e limites\"><span class=\"card-cell-label\">Valores e limites</span><div>Padrão: ^https://</div></td><td data-cell-label=\"Predefinição\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinição</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">session_id</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>Opcional</td><td data-cell-label=\"Valores e limites\"><span class=\"card-cell-label\">Valores e limites</span></td><td data-cell-label=\"Predefinição\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinição</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">trace</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>object</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Opcional</td><td data-cell-label=\"Valores e limites\"><span class=\"card-cell-label\">Valores e limites</span></td><td data-cell-label=\"Predefinição\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinição</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">user</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>Opcional</td><td data-cell-label=\"Valores e limites\"><span class=\"card-cell-label\">Valores e limites</span></td><td data-cell-label=\"Predefinição\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinição</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Combinações de materiais de entrada</summary><p class=\"note-s\"><b>Texto para vídeo</b> · Uma instrução escrita. · Obrigatório: model, prompt, duration</p><p class=\"note-s\"><code>Forneça prompt como texto e duration em segundos inteiros. Escolha uma resolução suportada e, se necessário, uma proporção.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Tipo: string · black-forest-labs/flux-3-video</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Tipo: string · Número máximo de bytes UTF-8: 10 000 · São obrigatórios caracteres que não sejam espaços: Sim</p><p class=\"note-s\"><b>Imagem para vídeo</b> · Uma instrução escrita e uma imagem do primeiro fotograma. · Obrigatório: model, prompt, duration, frame_images</p><p class=\"note-s\"><code>frame_images é uma matriz. Cada objeto de fotograma tem type, image_url e frame_type; image_url contém url. Defina type como image_url. Utilize first_frame com um last_frame opcional. Cada função de fotograma aparece, no máximo, uma vez. Forneça um URL HTTPS público de imagem para cada fotograma. Escolha uma resolução suportada e, se necessário, uma proporção.</code></p><p class=\"note-s\">Chaves exatas: type, image_url, frame_type</p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Tipo: string · black-forest-labs/flux-3-video</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Tipo: string · Número máximo de bytes UTF-8: 10 000 · São obrigatórios caracteres que não sejam espaços: Sim</p><p class=\"note-s\"><b>Continue a video</b> · Uma instrução escrita e o seu vídeo original concluído. · Obrigatório: model, prompt, duration, previous_job_id</p><p class=\"note-s\"><code>Defina previous_job_id como o ID público de vídeo do seu original concluído. Utilize o mesmo modelo, conta e chave API. Conserve a identidade da tarefa existente; este pedido cria uma tarefa de continuação separada. Escolha uma resolução suportada e, se necessário, uma proporção.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Tipo: string · black-forest-labs/flux-3-video</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Tipo: string · Número máximo de bytes UTF-8: 10 000 · São obrigatórios caracteres que não sejam espaços: Sim</p></details><details class=\"note-s\" data-method-contract><summary>Parâmetros e ciclo de vida do método</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parâmetro</th><th>Contrato</th></tr></thead><tbody><tr><th data-cell-label=\"Parâmetro\" scope=\"row\"><span class=\"card-cell-label\">Parâmetro</span><code>content_type</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>application/json</td></tr><tr><th data-cell-label=\"Parâmetro\" scope=\"row\"><span class=\"card-cell-label\">Parâmetro</span><code>required</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>model, prompt, duration</td></tr><tr><th data-cell-label=\"Parâmetro\" scope=\"row\"><span class=\"card-cell-label\">Parâmetro</span><code>material_types</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>text, image</td></tr><tr><th data-cell-label=\"Parâmetro\" scope=\"row\"><span class=\"card-cell-label\">Parâmetro</span><code>additional_properties</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>false</td></tr><tr><th data-cell-label=\"Parâmetro\" scope=\"row\"><span class=\"card-cell-label\">Parâmetro</span><code>optional_controls</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>resolution, aspect_ratio, generate_audio, frame_images, input_references, previous_job_id, callback_url, session_id, trace, user</td></tr></tbody></table></div><p>Ciclo de vida: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}/content</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tarifários</h3><div class=\"card-result-process\" data-billing-basis><h5>Cálculo do custo final</h5><p class=\"note-s\">As tarifas apresentadas permitem estimar o custo antes da geração. O montante final cobrado é calculado a partir do custo registado para a geração original. A duração medida do resultado e as quantidades previstas não correspondem à quantidade final faturável.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.</p><dl data-price-conditions><dt>Modo rápido</dt><dd>Não especificado <span class=\"note-s\">Quando o modo rápido está selecionado</span></dd><dt>Modo flex</dt><dd>Não especificado <span class=\"note-s\">Quando o modo flex está selecionado</span></dd><dt>Esforço máximo de raciocínio</dt><dd>Não especificado <span class=\"note-s\">Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Tarifas estimadas para comparação</h4><h4>Preços por configuração</h4><p class=\"note-s\">Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuração</th><th>Tabela de tarifas</th><th>Quantidade prevista</th><th>Componente do custo</th><th>Modo de referência</th><th>Unidade de faturação</th><th>Condições de faturação</th><th>Custo</th></tr></thead><tbody><tr><th data-cell-label=\"Configuração\" scope=\"row\"><span class=\"card-cell-label\">Configuração</span>Tarifas base por token</th><td data-cell-label=\"Tabela de tarifas\"><span class=\"card-cell-label\">Tabela de tarifas</span>Tarifa base</td><td data-cell-label=\"Quantidade prevista\"><span class=\"card-cell-label\">Quantidade prevista</span>—</td><td data-cell-label=\"Componente do custo\"><span class=\"card-cell-label\">Componente do custo</span>—</td><td data-cell-label=\"Modo de referência\"><span class=\"card-cell-label\">Modo de referência</span>—</td><td data-cell-label=\"Unidade de faturação\"><span class=\"card-cell-label\">Unidade de faturação</span>—</td><td data-cell-label=\"Condições de faturação\"><span class=\"card-cell-label\">Condições de faturação</span>—</td><td data-cell-label=\"Custo\"><span class=\"card-cell-label\">Custo</span><div><span>Entrada · Tokens de entrada · Estimativa apenas para comparação</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Saída · Tokens de saída · Estimativa apenas para comparação</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrada · Leitura da cache · Estimativa apenas para comparação</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrada · Escrita na cache · Estimativa apenas para comparação</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrada · Escrita na cache, 1 hora · Estimativa apenas para comparação</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div></td></tr><tr><th data-cell-label=\"Configuração\" scope=\"row\"><span class=\"card-cell-label\">Configuração</span>Texto para vídeo · Imagem para vídeo (imagens de fotogramas) · tarifa de referência</th><td data-cell-label=\"Tabela de tarifas\"><span class=\"card-cell-label\">Tabela de tarifas</span>—</td><td data-cell-label=\"Quantidade prevista\"><span class=\"card-cell-label\">Quantidade prevista</span>—</td><td data-cell-label=\"Componente do custo\"><span class=\"card-cell-label\">Componente do custo</span><code>reference_output_rate</code></td><td data-cell-label=\"Modo de referência\"><span class=\"card-cell-label\">Modo de referência</span>Texto para vídeo · Imagem para vídeo (fotogramas)</td><td data-cell-label=\"Unidade de faturação\"><span class=\"card-cell-label\">Unidade de faturação</span>por segundo de saída</td><td data-cell-label=\"Condições de faturação\"><span class=\"card-cell-label\">Condições de faturação</span>—</td><td data-cell-label=\"Custo\"><span class=\"card-cell-label\">Custo</span><div><span>Saída · Tarifa de referência por segundo de vídeo de saída · Estimativa apenas para comparação</span> <b>$0.34</b> <span class=\"price-unit\">por segundo de saída</span></div></td></tr><tr><th data-cell-label=\"Configuração\" scope=\"row\"><span class=\"card-cell-label\">Configuração</span>Preço do vídeo</th><td data-cell-label=\"Tabela de tarifas\"><span class=\"card-cell-label\">Tabela de tarifas</span>—</td><td data-cell-label=\"Quantidade prevista\"><span class=\"card-cell-label\">Quantidade prevista</span>—</td><td data-cell-label=\"Componente do custo\"><span class=\"card-cell-label\">Componente do custo</span>—</td><td data-cell-label=\"Modo de referência\"><span class=\"card-cell-label\">Modo de referência</span>—</td><td data-cell-label=\"Unidade de faturação\"><span class=\"card-cell-label\">Unidade de faturação</span>por segundo de vídeo</td><td data-cell-label=\"Condições de faturação\"><span class=\"card-cell-label\">Condições de faturação</span>resolution: 1080p</td><td data-cell-label=\"Custo\"><span class=\"card-cell-label\">Custo</span><div><span>Saída · Preço do vídeo · Estimativa apenas para comparação</span> <b>$0.58</b> <span class=\"price-unit\">por segundo de vídeo</span></div></td></tr><tr><th data-cell-label=\"Configuração\" scope=\"row\"><span class=\"card-cell-label\">Configuração</span>Preço do vídeo</th><td data-cell-label=\"Tabela de tarifas\"><span class=\"card-cell-label\">Tabela de tarifas</span>—</td><td data-cell-label=\"Quantidade prevista\"><span class=\"card-cell-label\">Quantidade prevista</span>—</td><td data-cell-label=\"Componente do custo\"><span class=\"card-cell-label\">Componente do custo</span>—</td><td data-cell-label=\"Modo de referência\"><span class=\"card-cell-label\">Modo de referência</span>—</td><td data-cell-label=\"Unidade de faturação\"><span class=\"card-cell-label\">Unidade de faturação</span>por segundo de vídeo</td><td data-cell-label=\"Condições de faturação\"><span class=\"card-cell-label\">Condições de faturação</span>resolution: 720p</td><td data-cell-label=\"Custo\"><span class=\"card-cell-label\">Custo</span><div><span>Saída · Preço do vídeo · Estimativa apenas para comparação</span> <b>$0.34</b> <span class=\"price-unit\">por segundo de vídeo</span></div></td></tr><tr><th data-cell-label=\"Configuração\" scope=\"row\"><span class=\"card-cell-label\">Configuração</span>Preço do vídeo</th><td data-cell-label=\"Tabela de tarifas\"><span class=\"card-cell-label\">Tabela de tarifas</span>—</td><td data-cell-label=\"Quantidade prevista\"><span class=\"card-cell-label\">Quantidade prevista</span>—</td><td data-cell-label=\"Componente do custo\"><span class=\"card-cell-label\">Componente do custo</span>—</td><td data-cell-label=\"Modo de referência\"><span class=\"card-cell-label\">Modo de referência</span>—</td><td data-cell-label=\"Unidade de faturação\"><span class=\"card-cell-label\">Unidade de faturação</span>por segundo de vídeo</td><td data-cell-label=\"Condições de faturação\"><span class=\"card-cell-label\">Condições de faturação</span>entrada: video_continuation; resolução: 1080p</td><td data-cell-label=\"Custo\"><span class=\"card-cell-label\">Custo</span><div><span>Saída · Preço do vídeo · Estimativa apenas para comparação</span> <b>$1.06</b> <span class=\"price-unit\">por segundo de vídeo</span></div></td></tr><tr><th data-cell-label=\"Configuração\" scope=\"row\"><span class=\"card-cell-label\">Configuração</span>Preço do vídeo</th><td data-cell-label=\"Tabela de tarifas\"><span class=\"card-cell-label\">Tabela de tarifas</span>—</td><td data-cell-label=\"Quantidade prevista\"><span class=\"card-cell-label\">Quantidade prevista</span>—</td><td data-cell-label=\"Componente do custo\"><span class=\"card-cell-label\">Componente do custo</span>—</td><td data-cell-label=\"Modo de referência\"><span class=\"card-cell-label\">Modo de referência</span>—</td><td data-cell-label=\"Unidade de faturação\"><span class=\"card-cell-label\">Unidade de faturação</span>por segundo de vídeo</td><td data-cell-label=\"Condições de faturação\"><span class=\"card-cell-label\">Condições de faturação</span>entrada: video_continuation; resolução: 720p</td><td data-cell-label=\"Custo\"><span class=\"card-cell-label\">Custo</span><div><span>Saída · Preço do vídeo · Estimativa apenas para comparação</span> <b>$0.82</b> <span class=\"price-unit\">por segundo de vídeo</span></div></td></tr><tr><th data-cell-label=\"Configuração\" scope=\"row\"><span class=\"card-cell-label\">Configuração</span>Custo estimado de geração</th><td data-cell-label=\"Tabela de tarifas\"><span class=\"card-cell-label\">Tabela de tarifas</span>—</td><td data-cell-label=\"Quantidade prevista\"><span class=\"card-cell-label\">Quantidade prevista</span>estimativa para uma geração</td><td data-cell-label=\"Componente do custo\"><span class=\"card-cell-label\">Componente do custo</span>—</td><td data-cell-label=\"Modo de referência\"><span class=\"card-cell-label\">Modo de referência</span>—</td><td data-cell-label=\"Unidade de faturação\"><span class=\"card-cell-label\">Unidade de faturação</span>—</td><td data-cell-label=\"Condições de faturação\"><span class=\"card-cell-label\">Condições de faturação</span>—</td><td data-cell-label=\"Custo\"><span class=\"card-cell-label\">Custo</span><div><span>Saída · Custo estimado de geração · Estimativa apenas para comparação</span> <b>$1.7</b> <span class=\"price-unit\">estimativa antes da geração</span></div><p class=\"note-s\">Esta estimativa não é um encargo adicional nem uma tarifa fixa para a geração concluída.</p></td></tr></tbody></table></div></div><p class=\"note-s\">O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. <a href=\"/docs/pt-pt/billing/reserve/\">Como funcionam a reserva e a liquidação →</a></p><div data-declared-reference-pricing><h4>Detalhes da tarifa de referência</h4><p class=\"note-s\">As tabelas de referência do modelo não alteram a seleção do método, as cotações ou os custos. Os custos ativos usam as tarifas do método Ailoot selecionado.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Referências de preços das configurações de vídeo</summary><h4>Preços por configuração</h4><p class=\"note-s\">Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuração</th><th>Condições de faturação</th><th>Custo</th></tr></thead><tbody><tr><th data-cell-label=\"Configuração\" scope=\"row\"><span class=\"card-cell-label\">Configuração</span>Preço do vídeo</th><td data-cell-label=\"Condições de faturação\"><span class=\"card-cell-label\">Condições de faturação</span>Não é declarada nenhuma condição adicional nesta chave de preços.</td><td data-cell-label=\"Custo\"><span class=\"card-cell-label\">Custo</span><div><span>Saída · Preço do vídeo</span> <b>$0.34</b> <span class=\"price-unit\">por segundo de vídeo</span></div><p class=\"note-s\">Referência de preço publicada para a configuração apresentada. Os montantes finais cobrados seguem a configuração efetivamente faturada.</p></td></tr><tr><th data-cell-label=\"Configuração\" scope=\"row\"><span class=\"card-cell-label\">Configuração</span>Preço do vídeo</th><td data-cell-label=\"Condições de faturação\"><span class=\"card-cell-label\">Condições de faturação</span>resolution: 720p</td><td data-cell-label=\"Custo\"><span class=\"card-cell-label\">Custo</span><div><span>Saída · Preço do vídeo</span> <b>$0.34</b> <span class=\"price-unit\">por segundo de vídeo</span></div><p class=\"note-s\">Referência de preço publicada para a configuração apresentada. Os montantes finais cobrados seguem a configuração efetivamente faturada.</p></td></tr><tr><th data-cell-label=\"Configuração\" scope=\"row\"><span class=\"card-cell-label\">Configuração</span>Preço do vídeo</th><td data-cell-label=\"Condições de faturação\"><span class=\"card-cell-label\">Condições de faturação</span>resolution: 1080p</td><td data-cell-label=\"Custo\"><span class=\"card-cell-label\">Custo</span><div><span>Saída · Preço do vídeo</span> <b>$0.58</b> <span class=\"price-unit\">por segundo de vídeo</span></div><p class=\"note-s\">Referência de preço publicada para a configuração apresentada. Os montantes finais cobrados seguem a configuração efetivamente faturada.</p></td></tr><tr><th data-cell-label=\"Configuração\" scope=\"row\"><span class=\"card-cell-label\">Configuração</span>Preço do vídeo</th><td data-cell-label=\"Condições de faturação\"><span class=\"card-cell-label\">Condições de faturação</span>entrada: video_continuation; resolução: 720p</td><td data-cell-label=\"Custo\"><span class=\"card-cell-label\">Custo</span><div><span>Saída · Preço do vídeo</span> <b>$0.82</b> <span class=\"price-unit\">por segundo de vídeo</span></div><p class=\"note-s\">Referência de preço publicada para a configuração apresentada. Os montantes finais cobrados seguem a configuração efetivamente faturada.</p></td></tr><tr><th data-cell-label=\"Configuração\" scope=\"row\"><span class=\"card-cell-label\">Configuração</span>Preço do vídeo</th><td data-cell-label=\"Condições de faturação\"><span class=\"card-cell-label\">Condições de faturação</span>entrada: video_continuation; resolução: 1080p</td><td data-cell-label=\"Custo\"><span class=\"card-cell-label\">Custo</span><div><span>Saída · Preço do vídeo</span> <b>$1.06</b> <span class=\"price-unit\">por segundo de vídeo</span></div><p class=\"note-s\">Referência de preço publicada para a configuração apresentada. Os montantes finais cobrados seguem a configuração efetivamente faturada.</p></td></tr></tbody></table></div></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Exemplos de pedidos</h3><h4>Ailoot Ultra · Vídeo</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Variantes de código\"><button class=\"cg-tab\" id=\"model-code-1092-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1092-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · crie um vídeo</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copiar código\"><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-1092-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1092-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nfrom pathlib import Path\nPath(&#39;request.json&#39;).write_text(&#39;{&quot;aspect_ratio&quot;:&quot;16:9&quot;,&quot;duration&quot;:8,&quot;model&quot;:&quot;black-forest-labs/flux-3-video&quot;,&quot;prompt&quot;:&quot;A serene mountain landscape at sunset&quot;,&quot;resolution&quot;:&quot;720p&quot;}&#39;, 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 result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Receber e guardar os resultados</h3><h4>Ailoot Ultra · Vídeo</h4><p class=\"note-s\">URLs assinados para conteúdo pertencente ao utilizador</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{public_id}</code></li><li><code>GET /v1/videos/{public_id}/content</code></li></ul><h5>Verificar o estado da tarefa</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Variantes de código\"><button class=\"cg-tab\" id=\"model-code-1093-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1093-panel-0\" aria-selected=\"true\" tabindex=\"0\">GET estado da operação original</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copiar código\"><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-1093-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1093-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_STATUS_URL&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nif not isinstance(r.get(&#39;id&#39;),str) or not r[&#39;id&#39;]:raise SystemExit(&#39;Keep the original response and headers for reconciliation; no returned ID&#39;)\nPath(&#39;status-url.txt&#39;).write_text(&#39;https://api.ailoot.ai/v1/videos/&#39;+quote(r[&#39;id&#39;],safe=&#39;&#39;))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error &quot;$(cat status-url.txt)&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -D status-headers.txt -o status.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div><details class=\"card-about\"><summary>Outras leituras de conteúdo</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Variantes de código\"><button class=\"cg-tab\" id=\"model-code-1094-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1094-panel-0\" aria-selected=\"true\" tabindex=\"0\">Guardar cada saída concluída de que é titular</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copiar código\"><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-1094-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1094-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nif r.get(&#39;status&#39;)!=&#39;completed&#39;:raise SystemExit(&#39;Keep the original ID and read its status; never recreate an unknown job&#39;)\nif not isinstance(r.get(&#39;data&#39;),list) or not r[&#39;data&#39;]:raise SystemExit(&#39;Keep the complete original status; no completed outputs supplied&#39;)\nurls=[]\nfor i,u in enumerate(r.get(&#39;data&#39;,[])):\n    if not isinstance(u,str):raise SystemExit(&#39;Keep the original response; unexpected asset shape&#39;)\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin(&#39;https://api.ailoot.ai&#39;,path);z=urlsplit(u)\n    if z.scheme!=&#39;https&#39; or z.netloc!=&#39;api.ailoot.ai&#39; or z.username or z.password:raise SystemExit(&#39;Use the actual returned Ailoot owned content URL&#39;)\n    target=Path(&#39;owned-&#39;+label+&#39;.bin&#39;)\n    subprocess.run([&#39;curl&#39;,&#39;--fail-with-body&#39;,&#39;--silent&#39;,&#39;--show-error&#39;,u,&#39;-H&#39;,&#39;Authorization: Bearer &#39;+os.environ[&#39;AILOOT_API_KEY&#39;],&#39;-D&#39;,str(target)+&#39;.headers&#39;,&#39;-o&#39;,str(target)],check=True)\nprint(&#39;All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.&#39;)\nPY_ASSETS\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>Guardar todos os resultados concluídos</h5><p class=\"note-s\">Guarde cada vídeo concluído ou ficheiro devolvido; obtenha cada URL de recurso efetivamente devolvido.</p><p class=\"note-s\">Conserve todos os resultados reais que pertencem ao utilizador e os respetivos metadados medidos devolvidos.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Se for necessário verificar a resposta original</h5><p class=\"note-s\">503 result_pending_check + id original + X-Should-Retry:false; nunca repita o original</p></div><details class=\"card-about\" data-output-fields><summary>Campos da resposta</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Campo</th><th>Tipo</th><th>Significado</th></tr></thead><tbody><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">index</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>integer</td><td data-cell-label=\"Significado\"><span class=\"card-cell-label\">Significado</span>Posição deste vídeo na lista de saídas, com contagem a partir de zero.</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">content_url</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>string</td><td data-cell-label=\"Significado\"><span class=\"card-cell-label\">Significado</span>URL HTTPS assinado para transferir este vídeo concluído.</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">sha256</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>string | null</td><td data-cell-label=\"Significado\"><span class=\"card-cell-label\">Significado</span>Resumo criptográfico SHA-256 dos bytes do vídeo original; null se não estiver disponível.</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">size_bytes</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>integer | null</td><td data-cell-label=\"Significado\"><span class=\"card-cell-label\">Significado</span>Tamanho do ficheiro de vídeo original em bytes; null se não estiver disponível.</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">duration_ms</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>integer | null</td><td data-cell-label=\"Significado\"><span class=\"card-cell-label\">Significado</span>Duração medida do vídeo em milissegundos; null se não estiver disponível.</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">width</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>integer | null</td><td data-cell-label=\"Significado\"><span class=\"card-cell-label\">Significado</span>Largura do vídeo em píxeis; null se não estiver disponível.</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">height</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>integer | null</td><td data-cell-label=\"Significado\"><span class=\"card-cell-label\">Significado</span>Altura do vídeo em píxeis; null se não estiver disponível.</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">video_codec</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>string | null</td><td data-cell-label=\"Significado\"><span class=\"card-cell-label\">Significado</span>Identificador do codec de vídeo; null se não estiver registado.</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">has_audio</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>boolean | null</td><td data-cell-label=\"Significado\"><span class=\"card-cell-label\">Significado</span>Indica se o vídeo contém uma faixa de áudio; null se não tiver sido medido.</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">audio_codec</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>string | null</td><td data-cell-label=\"Significado\"><span class=\"card-cell-label\">Significado</span>Identificador do codec de áudio; null quando não está registado qualquer identificador.</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Erros e passos seguintes</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Resposta</th><th>Condição</th><th>Passo seguinte</th></tr></thead><tbody><tr><th data-cell-label=\"Resposta\" scope=\"row\"><span class=\"card-cell-label\">Resposta</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Condição\"><span class=\"card-cell-label\">Condição</span>O acesso ao vídeo não está disponível ou este ID de vídeo não foi encontrado.</td><td data-cell-label=\"Passo seguinte\"><span class=\"card-cell-label\">Passo seguinte</span>Verifique o acesso ao vídeo. Para um vídeo existente, utilize o ID público original e a mesma chave API.</td></tr><tr><th data-cell-label=\"Resposta\" scope=\"row\"><span class=\"card-cell-label\">Resposta</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Condição\"><span class=\"card-cell-label\">Condição</span>A chave API não corresponde à conta autenticada.</td><td data-cell-label=\"Passo seguinte\"><span class=\"card-cell-label\">Passo seguinte</span>Verifique a sua chave API e o acesso à conta antes de enviar.</td></tr><tr><th data-cell-label=\"Resposta\" scope=\"row\"><span class=\"card-cell-label\">Resposta</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Condição\"><span class=\"card-cell-label\">Condição</span>Não foi possível ler o pedido ou o índice de transferência é inválido.</td><td data-cell-label=\"Passo seguinte\"><span class=\"card-cell-label\">Passo seguinte</span>Corrija o corpo do pedido. Para uma transferência, escolha um índice de saída devolvido pela tarefa original.</td></tr><tr><th data-cell-label=\"Resposta\" scope=\"row\"><span class=\"card-cell-label\">Resposta</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Condição\"><span class=\"card-cell-label\">Condição</span>Não é possível calcular o preço da configuração de vídeo selecionada.</td><td data-cell-label=\"Passo seguinte\"><span class=\"card-cell-label\">Passo seguinte</span>Escolha uma configuração de vídeo suportada e preencha as opções obrigatórias antes de enviar um pedido corrigido.</td></tr><tr><th data-cell-label=\"Resposta\" scope=\"row\"><span class=\"card-cell-label\">Resposta</span>422 · <code>invalid_request_error</code></th><td data-cell-label=\"Condição\"><span class=\"card-cell-label\">Condição</span>Uma entrada de vídeo ou a tarefa original de continuação é inválida.</td><td data-cell-label=\"Passo seguinte\"><span class=\"card-cell-label\">Passo seguinte</span>Utilize entradas HTTPS válidas. Para continuação, utilize o ID público do seu vídeo original concluído com a mesma chave API.</td></tr><tr><th data-cell-label=\"Resposta\" scope=\"row\"><span class=\"card-cell-label\">Resposta</span>402 · <code>billing_error</code></th><td data-cell-label=\"Condição\"><span class=\"card-cell-label\">Condição</span>O saldo disponível ou os limites não permitem efetuar uma reserva.</td><td data-cell-label=\"Passo seguinte\"><span class=\"card-cell-label\">Passo seguinte</span>Verifique o saldo disponível e os limites antes de enviar um novo pedido.</td></tr><tr><th data-cell-label=\"Resposta\" scope=\"row\"><span class=\"card-cell-label\">Resposta</span>503 · <code>server_error</code></th><td data-cell-label=\"Condição\"><span class=\"card-cell-label\">Condição</span>A verificação, o armazenamento ou o acesso ao serviço de vídeo está temporariamente indisponível.</td><td data-cell-label=\"Passo seguinte\"><span class=\"card-cell-label\">Passo seguinte</span>Aguarde a disponibilidade do serviço. Se já tiver um ID de vídeo, consulte essa tarefa original em vez de criar outra geração.</td></tr><tr><th data-cell-label=\"Resposta\" scope=\"row\"><span class=\"card-cell-label\">Resposta</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Condição\"><span class=\"card-cell-label\">Condição</span>O resultado e a cobrança do vídeo original precisam de verificação.</td><td data-cell-label=\"Passo seguinte\"><span class=\"card-cell-label\">Passo seguinte</span>Conserve o ID de vídeo devolvido e consulte essa tarefa. Não envie um pedido de geração substituto enquanto estiver a ser verificada.</td></tr><tr><th data-cell-label=\"Resposta\" scope=\"row\"><span class=\"card-cell-label\">Resposta</span>503 · <code>owned_result_unavailable</code></th><td data-cell-label=\"Condição\"><span class=\"card-cell-label\">Condição</span>A transferência do vídeo existente está temporariamente indisponível.</td><td data-cell-label=\"Passo seguinte\"><span class=\"card-cell-label\">Passo seguinte</span>Consulte a mesma tarefa de vídeo mais tarde e transfira a saída existente. Uma nova geração cria uma operação separada.</td></tr><tr><th data-cell-label=\"Resposta\" scope=\"row\"><span class=\"card-cell-label\">Resposta</span>409 · <code>video_not_ready</code></th><td data-cell-label=\"Condição\"><span class=\"card-cell-label\">Condição</span>O conteúdo do vídeo não foi publicado.</td><td data-cell-label=\"Passo seguinte\"><span class=\"card-cell-label\">Passo seguinte</span>Consulte o estado da tarefa original. Transfira quando indicar completed; se indicar failed, siga o aviso de verificação da cobrança.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliases</h3><h4>Aliases do modelo</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=black-forest-labs%2Fflux-3-video&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux-3-video&amp;fmt=videos\"><code>black-forest-labs/flux-3-video</code></a></span></p><h4>Aliases dos caminhos dos métodos</h4><p class=\"note-s\">Use os caminhos dos métodos indicados acima.</p><h4>IDs de chamada relacionados</h4><p class=\"note-s\"><a href=\"#m=black-forest-labs%2Fflux-3-video&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux-3-video&amp;fmt=videos\"><code>black-forest-labs/flux-3-video</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "black-forest-labs/flux-3-video",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "black-forest-labs/flux-3-video",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|black-forest-labs%2Fflux-3-video",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "As tarifas apresentadas permitem estimar o custo antes da geração. O montante final cobrado é calculado a partir do custo registado para a geração original. A duração medida do resultado e as quantidades previstas não correspondem à quantidade final faturável.",
          "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": "Conserve todos os resultados reais que pertencem ao utilizador e os respetivos metadados medidos devolvidos.",
            "defaults": {
              "aspect_ratio": null,
              "duration": null,
              "generate_audio": "endpoint capability flag when published; omitted unknown stays unknown; never guarantees audio track",
              "resolution": null,
              "seed": null,
              "size": null,
              "wire_omissions_preserved": true
            },
            "errors": [
              {
                "condition": "O acesso ao vídeo não está disponível ou este ID de vídeo não foi encontrado.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Verifique o acesso ao vídeo. Para um vídeo existente, utilize o ID público original e a mesma chave API.",
                "type": "not_found_error"
              },
              {
                "condition": "A chave API não corresponde à conta autenticada.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Verifique a sua chave API e o acesso à conta antes de enviar.",
                "type": "authentication_error"
              },
              {
                "condition": "Não foi possível ler o pedido ou o índice de transferência é inválido.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Corrija o corpo do pedido. Para uma transferência, escolha um índice de saída devolvido pela tarefa original.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Não é possível calcular o preço da configuração de vídeo selecionada.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Escolha uma configuração de vídeo suportada e preencha as opções obrigatórias antes de enviar um pedido corrigido.",
                "type": "price_unavailable"
              },
              {
                "condition": "Uma entrada de vídeo ou a tarefa original de continuação é inválida.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Utilize entradas HTTPS válidas. Para continuação, utilize o ID público do seu vídeo original concluído com a mesma chave API.",
                "type": "invalid_request_error"
              },
              {
                "condition": "O saldo disponível ou os limites não permitem efetuar uma reserva.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Verifique o saldo disponível e os limites antes de enviar um novo pedido.",
                "type": "billing_error"
              },
              {
                "condition": "A verificação, o armazenamento ou o acesso ao serviço de vídeo está temporariamente indisponível.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Aguarde a disponibilidade do serviço. Se já tiver um ID de vídeo, consulte essa tarefa original em vez de criar outra geração.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "O resultado e a cobrança do vídeo original precisam de verificação.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Conserve o ID de vídeo devolvido e consulte essa tarefa. Não envie um pedido de geração substituto enquanto estiver a ser verificada.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "A transferência do vídeo existente está temporariamente indisponível.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Consulte a mesma tarefa de vídeo mais tarde e transfira a saída existente. Uma nova geração cria uma operação separada.",
                "type": "server_error"
              },
              {
                "condition": "O conteúdo do vídeo não foi publicado.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Consulte o estado da tarefa original. Transfira quando indicar completed; se indicar failed, siga o aviso de verificação da cobrança.",
                "type": "video_not_ready"
              }
            ],
            "hints": [
              "No null values or duplicate keys at any JSON object level",
              "No duration/resolution/aspect default is inserted",
              "Prompt required for all21 despite broader official image-only schema",
              "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
              "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
              "No n/output-count/client price fields accepted",
              "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}/content",
                  "query": {
                    "index": "actual output index"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "mode": "submit_once_poll_original",
              "public_id": "video_<uuid>; owner user/key/group scope",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}"
                }
              ],
              "submit_status": 202,
              "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
              "terminal_provider_states": [
                "failed",
                "cancelled",
                "expired"
              ],
              "unknown": "503 result_pending_check + id original + X-Should-Retry:false; nunca repita o original"
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "black-forest-labs/flux-3-video"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Forneça prompt como texto e duration em segundos inteiros. Escolha uma resolução suportada e, se necessário, uma proporção.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "Uma instrução escrita."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "black-forest-labs/flux-3-video"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images é uma matriz. Cada objeto de fotograma tem type, image_url e frame_type; image_url contém url. Defina type como image_url. Utilize first_frame com um last_frame opcional. Cada função de fotograma aparece, no máximo, uma vez. Forneça um URL HTTPS público de imagem para cada fotograma. Escolha uma resolução suportada e, se necessário, uma proporção.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "Uma instrução escrita e uma imagem do primeiro fotograma."
              },
              {
                "mode": "Continue a video",
                "model": {
                  "enum": [
                    "black-forest-labs/flux-3-video"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Defina previous_job_id como o ID público de vídeo do seu original concluído. Utilize o mesmo modelo, conta e chave API. Conserve a identidade da tarefa existente; este pedido cria uma tarefa de continuação separada. Escolha uma resolução suportada e, se necessário, uma proporção.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "previous_job_id"
                ],
                "required_material": "Uma instrução escrita e o seu vídeo original concluído."
              }
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video_frame_images",
              "video_extension_or_continuation"
            ],
            "outputs": {
              "content_range_supported": true,
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "condition": "Always present for each completed output.",
                  "description": "Posição deste vídeo na lista de saídas, com contagem a partir de zero.",
                  "field_path": "outputs[].index",
                  "json_schema": {
                    "type": "integer"
                  },
                  "name": "index",
                  "nullable": false,
                  "type": "integer"
                },
                {
                  "condition": "Present after the owned result is available and a signed URL is created.",
                  "description": "URL HTTPS assinado para transferir este vídeo concluído.",
                  "field_path": "outputs[].content_url",
                  "json_schema": {
                    "type": "string"
                  },
                  "name": "content_url",
                  "nullable": false,
                  "type": "string"
                },
                {
                  "condition": "A nonempty recorded digest is returned; otherwise null.",
                  "description": "Resumo criptográfico SHA-256 dos bytes do vídeo original; null se não estiver disponível.",
                  "field_path": "outputs[].sha256",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "sha256",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when the recorded file size is positive.",
                  "description": "Tamanho do ficheiro de vídeo original em bytes; null se não estiver disponível.",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "Duração medida do vídeo em milissegundos; null se não estiver disponível.",
                  "field_path": "outputs[].duration_ms",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "duration_ms",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Largura do vídeo em píxeis; null se não estiver disponível.",
                  "field_path": "outputs[].width",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "width",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Altura do vídeo em píxeis; null se não estiver disponível.",
                  "field_path": "outputs[].height",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "height",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned together with positive recorded width and height.",
                  "description": "Identificador do codec de vídeo; null se não estiver registado.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "Indica se o vídeo contém uma faixa de áudio; null se não tiver sido medido.",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "Identificador do codec de áudio; null quando não está registado qualquer identificador.",
                  "field_path": "outputs[].audio_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "audio_codec",
                  "nullable": true,
                  "type": "string | null"
                }
              ],
              "format": "original MP4 bytes; no normalization/transcode",
              "max_aggregate_seconds": 2400,
              "max_bytes_per_output": 67108864,
              "max_seconds_per_output": 600,
              "result": "URLs assinados para conteúdo pertencente ao utilizador",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "black-forest-labs/flux-3-video"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "black-forest-labs/flux-3-video"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "schema": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16,
                    17,
                    18,
                    19,
                    20
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "720p",
                  "1080p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "720p",
                    "1080p"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "21:9",
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "21:9",
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Estas chaves descrevem cada objeto de fotograma; image_url contém apenas url. Omita frame_images num pedido apenas de texto.",
                "content": "Matriz de objetos de fotograma. Cada objeto tem type=image_url, image_url com url e frame_type. Utilize um URL HTTPS de imagem e defina frame_type como first_frame ou last_frame. Cada função de fotograma aparece, no máximo, uma vez.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 2,
                "max_items": 2,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxItems": 0,
                "name": "input_references",
                "required": false,
                "schema": {
                  "items": false,
                  "maxItems": 0,
                  "type": "array"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "previous_job_id",
                "pattern": "^video_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
                "required": false,
                "schema": {
                  "pattern": "^video_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
                  "type": "string",
                  "x-source-rule": "real public original id, sameowner/account/proxy/model and published/completed"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "callback_url",
                "pattern": "^https://",
                "required": false,
                "schema": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "session_id",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "user",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              }
            ],
            "request_schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "21:9",
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "callback_url": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "creativity": false,
                "duration": {
                  "enum": [
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16,
                    17,
                    18,
                    19,
                    20
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "frame_images": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "generate_audio": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "input_references": {
                  "items": false,
                  "maxItems": 0,
                  "type": "array"
                },
                "model": {
                  "const": "black-forest-labs/flux-3-video"
                },
                "previous_job_id": {
                  "pattern": "^video_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
                  "type": "string",
                  "x-source-rule": "real public original id, sameowner/account/proxy/model and published/completed"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "720p",
                    "1080p"
                  ]
                },
                "seed": false,
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": false,
                "trace": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "upscale_factor": false,
                "user": {
                  "maxLength": 256,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration"
              ],
              "title": "Video generation request",
              "type": "object",
              "x-source-global-rules": [
                "No null values or duplicate keys at any JSON object level",
                "No duration/resolution/aspect default is inserted",
                "Prompt required for all21 despite broader official image-only schema",
                "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
                "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
                "No n/output-count/client price fields accepted",
                "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
              ],
              "x-source-material-combinations": [
                "Exact model/card, positive published duration, model resolution/aspect membership and valid frozen quote are all required; independent enum arrays are not proven provider Cartesian combinations.",
                "Use exact published size or compatible resolution/aspect. Omitted options stay omitted; no guessed geometry.",
                "first_frame/last_frame roles each occur at most once; frame_images wins mode precedence over input_references.",
                "provider options are unavailable for this model despite any published passthrough-name allowlist.",
                "Continuation uses a real same-owner/account/proxy/model published completed public Ailoot video ID; constructible continuation is absent from current discovery profile projection."
              ]
            },
            "unsupported": [
              "size",
              "seed",
              "provider",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "previous_job_id",
              "callback_url",
              "session_id",
              "trace",
              "user"
            ],
            "required": [
              "model",
              "prompt",
              "duration"
            ]
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}/content",
                "query": {
                  "index": "actual output index"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "mode": "submit_once_poll_original",
            "public_id": "video_<uuid>; owner user/key/group scope",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}"
              }
            ],
            "submit_status": 202,
            "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
            "terminal_provider_states": [
              "failed",
              "cancelled",
              "expired"
            ],
            "unknown": "503 result_pending_check + originalid + X-Should-Retry:false; never replay original"
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_video",
            "image_to_video_frame_images",
            "video_extension_or_continuation"
          ],
          "output": {
            "content_range_supported": true,
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "condition": "Always present for each completed output.",
                "description": "Zero-based position of this video in the outputs list.",
                "field_path": "outputs[].index",
                "json_schema": {
                  "type": "integer"
                },
                "name": "index",
                "nullable": false,
                "type": "integer"
              },
              {
                "condition": "Present after the owned result is available and a signed URL is created.",
                "description": "Signed HTTPS download URL for this completed video.",
                "field_path": "outputs[].content_url",
                "json_schema": {
                  "type": "string"
                },
                "name": "content_url",
                "nullable": false,
                "type": "string"
              },
              {
                "condition": "A nonempty recorded digest is returned; otherwise null.",
                "description": "SHA-256 digest of the original video bytes; null if unavailable.",
                "field_path": "outputs[].sha256",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "sha256",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when the recorded file size is positive.",
                "description": "Size of the original video file in bytes; null if unavailable.",
                "field_path": "outputs[].size_bytes",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "size_bytes",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned when the measured duration is positive.",
                "description": "Measured video duration in milliseconds; null if unavailable.",
                "field_path": "outputs[].duration_ms",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "duration_ms",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video width in pixels; null if unavailable.",
                "field_path": "outputs[].width",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "width",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video height in pixels; null if unavailable.",
                "field_path": "outputs[].height",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "height",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned together with positive recorded width and height.",
                "description": "Video codec identifier; null if not recorded.",
                "field_path": "outputs[].video_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "video_codec",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                "description": "Whether the video contains an audio track; null if not measured.",
                "field_path": "outputs[].has_audio",
                "json_schema": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "name": "has_audio",
                "nullable": true,
                "type": "boolean | null"
              },
              {
                "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                "description": "Audio codec identifier; null when no identifier is recorded.",
                "field_path": "outputs[].audio_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "audio_codec",
                "nullable": true,
                "type": "string | null"
              }
            ],
            "format": "original MP4 bytes; no normalization/transcode",
            "max_aggregate_seconds": 2400,
            "max_bytes_per_output": 67108864,
            "max_seconds_per_output": 600,
            "result": "signed owned content URLs",
            "unmeasured_fields_nullable": true
          }
        },
        "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": {
              "billing_component_role": "reference_output_rate",
              "billing_input": false,
              "estimate_only": true,
              "fallback_reference": true,
              "quoted_unit": "per output second",
              "rate_modes": [
                "text_to_video",
                "image_to_video_frame_images"
              ],
              "selectable_request_branch": false,
              "selector_reference_only": true
            },
            "label": "Texto para vídeo · Imagem para vídeo (imagens de fotogramas) · tarifa de referência",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Output video second reference rate",
                "native_amount_usd_per_unit": "0.34",
                "native_quantity": 1,
                "public_unit_label": "per output second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Preço do vídeo",
            "units": [
              {
                "amount": "0.58",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.58",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Preço do vídeo",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.34",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "entrada: video_continuation; resolução: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Preço do vídeo",
            "units": [
              {
                "amount": "1.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_video_continuation_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "1.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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "input: video_continuation; resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.82",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_video_continuation_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.82",
                "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": "Esta estimativa não é um encargo adicional nem uma tarifa fixa para a geração concluída.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Custo estimado de geração",
            "units": [
              {
                "amount": "1.7",
                "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": "1.7",
                "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}\"\npython3 - <<'PY_REQUEST'\nfrom pathlib import Path\nPath('request.json').write_text('{\"aspect_ratio\":\"16:9\",\"duration\":8,\"model\":\"black-forest-labs/flux-3-video\",\"prompt\":\"A serene mountain landscape at sunset\",\"resolution\":\"720p\"}', 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 result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_STATUS_URL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path('result.json').read_text())\nif not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')\nPath('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error \"$(cat status-url.txt)\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('status.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "GET original status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('status.json').read_text())\nif r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')\nif not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')\nurls=[]\nfor i,u in enumerate(r.get('data',[])):\n    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);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 returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every completed owned output",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "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": {
              "billing_component_role": "reference_output_rate",
              "billing_input": false,
              "estimate_only": true,
              "fallback_reference": true,
              "quoted_unit": "per output second",
              "rate_modes": [
                "text_to_video",
                "image_to_video_frame_images"
              ],
              "selectable_request_branch": false,
              "selector_reference_only": true
            },
            "label": "Text to video · Image to video (frame images) · reference rate",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Output video second reference rate",
                "native_amount_usd_per_unit": "0.34",
                "native_quantity": 1,
                "public_unit_label": "per output second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.58",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.58",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.34",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "input: video_continuation; resolution: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "1.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_video_continuation_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "1.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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "input: video_continuation; resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.82",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_video_continuation_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.82",
                "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": "1.7",
                "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": "1.7",
                "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-3-video",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{public_id}",
          "GET /v1/videos/{public_id}/content"
        ],
        "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.34",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output",
            "label": "Output video second reference rate",
            "native_amount_usd_per_unit": "0.34",
            "native_quantity": 1,
            "public_unit_label": "per output second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.58",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output_1080p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.58",
            "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.34",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output_720p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.34",
            "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": "1.06",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_video_continuation_1080p",
            "label": "Video price",
            "native_amount_usd_per_unit": "1.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.82",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_video_continuation_720p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.82",
            "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": "1.7",
            "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": "1.7",
            "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-3-video",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "f9588d4213316a25d15a7e5baa57703d6b9bb9bfd56a9d108edd88e0ba8e5447",
    "input_html_sha256": "f07093fdf783e33d64892fbe60a13c9713b61336429c40bd5369ca7ea84b2ea7",
    "private_audit_sha256": "6249e6c4390d9b260988b6580f1a41a0930949b209637bf5a8acd5784f4f0bf5",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/pt-pt/black-forest-labs-flux-3-video/",
    "description": "O FLUX 3 Video cria clips com diálogo, efeitos e ambiente sincronizados a partir de texto, imagens fixadas ou um clip a continuar. Fotogramas-chave, composição com vários planos e melhoria de prévias ajudam a desenvolver uma sequência controlada e a conservar a tomada selecionada.",
    "locale": "pt-pt",
    "md_url": "https://ailoot.ai/models/pt-pt/black-forest-labs-flux-3-video/index.md",
    "title": "Black Forest Labs: FLUX.3 Video — Ailoot",
    "url": "https://ailoot.ai/models/pt-pt/black-forest-labs-flux-3-video/"
  },
  "rawModel": {
    "about": "O FLUX 3 Video é o modelo multimodal da Black Forest Labs para gerar vídeo com áudio sincronizado. Cria cenas a partir de um pedido em texto, constrói movimento em torno de imagens fixadas ou continua um clip existente. Fala, efeitos e ambiente podem ser gerados em conjunto com os fotogramas, apoiando uma cena curta cujo movimento de câmara, ação e som são concebidos como uma única sequência.\n\nPara texto para vídeo, descreva o sujeito, o cenário, a ação visível, o comportamento da câmara e o som. Uma cena de produto útil pode começar com uma vista ampla, aproximar-se de um pormenor de material e terminar com o produto em utilização. Pedidos com vários planos podem nomear cada plano e a transição entre ângulos de câmara, mantendo o sujeito e o estilo visual consistentes ao longo da sequência. A tipografia pode aparecer na cena, por isso forneça as palavras exatas e a sua posição quando um letreiro ou título for importante. O modelo abrange imagem real, animação, grafismo em movimento e visuais estilizados.\n\nImagem para vídeo usa de uma a dez imagens de fotogramas-chave. Uma única imagem estabelece o fotograma inicial; um par fixa o início e o fim, enquanto imagens ordenadas com marcas temporais orientam momentos específicos do clip. Estas imagens tornam-se fotogramas do vídeo, em vez de servirem apenas como referências gerais de estilo. Com três ou mais imagens sem marcas temporais, o fabricante exige uma duração explícita: a primeira e a última fixam os extremos e as restantes são distribuídas uniformemente entre elas. Os fotogramas com marcas temporais devem estar por ordem cronológica; a duração automática vai até à última marca temporal arredondada por excesso, dentro do máximo de 20 segundos. Prepare fotogramas-chave com sujeitos, enquadramento e pormenores visuais compatíveis, depois descreva o movimento entre eles. Para uma revelação de produto, o primeiro fotograma pode mostrar o objeto fechado e o último a disposição aberta, com a ação intermédia definida no pedido.\n\nA continuação de vídeo parte dos fotogramas finais do clip fornecido. O fluxo de lançamento usa até quatro segundos de vídeo e áudio existentes como contexto para a ação seguinte, transportando o comportamento de câmara, o movimento e o som através da junção. Escolha um final de origem que estabeleça claramente para onde se dirigem o sujeito e a câmara e descreva o que acontece a seguir. Continuação é diferente de reescrever um plano existente: o FLUX Video Edit é um modelo de edição separado e não passa a fazer parte do modelo de geração apenas porque ambos aceitam vídeo.\n\nA geração condicionada por texto e imagem suporta clips de 5 a 20 segundos. A apresentação específica por modo atribui à continuação de vídeo um intervalo de saída de 5–15 segundos. A duração e a proporção podem ser escolhidas automaticamente, ou o pedido pode especificar uma forma horizontal, quadrada ou vertical suportada, incluindo 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16 e 9:21. A saída tem 24 fotogramas por segundo. Escolha a duração em torno de um pequeno número de ações visíveis, em vez de tentar incluir uma história inteira numa geração curta.\n\nA saída HD vem diretamente da geração; FHD, QHD e UHD acabam a mesma cena com um ampliador de vídeo. Para 16:9, as dimensões entregues são, respetivamente, 1280 × 704, 1920 × 1088, 2560 × 1440 e 3840 × 2176. As dimensões são alinhadas a múltiplos de 32, pelo que uma classe de resolução designada pode diferir de um tamanho convencional de entrega. Recorte o fotograma acabado quando precisar de uma tela standard exata, preservando o conteúdo importante nas suas margens. A resolução mais alta é uma etapa de acabamento, não uma interpretação diferente do plano.\n\nO áudio nativo está ativo por predefinição e pode ser desativado para um clip silencioso. Para diálogo, cite a fala, identifique o locutor e descreva a interpretação; fala multilingue, sotaques e sincronização labial fazem parte das capacidades audiovisuais do modelo. Mantenha o diálogo e as indicações sonoras ligados ao acontecimento visível, como uma tampa a fechar ou passos a afastarem-se. Reveja a voz, os tempos e as palavras pronunciadas juntamente com a imagem, em vez de tratar o som como uma camada sem relação acrescentada após a geração.\n\nO modo Draft produz uma pré-visualização HD e um pacote de prévia. Melhore o pacote selecionado para renderizar essa geração com qualidade completa; enviar o mesmo pedido como um novo pedido de renderização completa é uma nova interpretação e pode produzir uma tomada diferente. As prévias usam apenas HD, enquanto a melhoria pode selecionar as quatro classes de resolução e tem FHD como predefinição. Isto permite uma sequência prática de explorar primeiro a ação e a composição e depois acabar a tomada escolhida no tamanho de entrega pretendido.\n\nO fluxo do fabricante devolve um identificador de tarefa antes de o MP4 estar pronto e fornece depois o clip concluído quando o processamento termina. Os locais assinados de resultados expiram após cerca de duas horas, por isso guarde o recurso efetivo quando o plano for selecionado. Examine as transições de fotogramas-chave, os cortes, a tipografia, os pormenores do sujeito e a junção áudio face ao pedido. Para uma sequência mais longa, conserve as referências e o contexto final do plano bem-sucedido como entrada para o clip seguinte, em vez de assumir que um pedido curto contém toda a produção.",
    "alias_of": null,
    "aliases": [],
    "author": "Black Forest Labs",
    "available": null,
    "canonical_model": "black-forest-labs/flux-3-video",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image",
        "video"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "1.7",
            "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": "1.7",
            "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": "Todas as tarifas da configuração constam dos detalhes."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "b4dc879135bc0b33150a530a",
        "label": "Referências de preços das configurações de vídeo",
        "profiles": [
          {
            "basis": "Referência de preço publicada para a configuração apresentada. Os montantes finais cobrados seguem a configuração efetivamente faturada.",
            "dimensions": {
              "conditions": "Não é declarada nenhuma condição adicional nesta chave de preços."
            },
            "label": "Preço do vídeo",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Referência de preço publicada para a configuração apresentada. Os montantes finais cobrados seguem a configuração efetivamente faturada.",
            "dimensions": {
              "conditions": "resolution: 720p"
            },
            "label": "Preço do vídeo",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Referência de preço publicada para a configuração apresentada. Os montantes finais cobrados seguem a configuração efetivamente faturada.",
            "dimensions": {
              "conditions": "resolution: 1080p"
            },
            "label": "Preço do vídeo",
            "units": [
              {
                "amount": "0.58",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Referência de preço publicada para a configuração apresentada. Os montantes finais cobrados seguem a configuração efetivamente faturada.",
            "dimensions": {
              "conditions": "entrada: video_continuation; resolução: 720p"
            },
            "label": "Preço do vídeo",
            "units": [
              {
                "amount": "0.82",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Referência de preço publicada para a configuração apresentada. Os montantes finais cobrados seguem a configuração efetivamente faturada.",
            "dimensions": {
              "conditions": "entrada: video_continuation; resolução: 1080p"
            },
            "label": "Preço do vídeo",
            "units": [
              {
                "amount": "1.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "videos"
    ],
    "id": "black-forest-labs/flux-3-video",
    "input": [
      "text",
      "image"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "As tarifas apresentadas permitem estimar o custo antes da geração. O montante final cobrado é calculado a partir do custo registado para a geração original. A duração medida do resultado e as quantidades previstas não correspondem à quantidade final faturável.",
          "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": "Conserve todos os resultados reais que pertencem ao utilizador e os respetivos metadados medidos devolvidos.",
            "defaults": {
              "aspect_ratio": null,
              "duration": null,
              "generate_audio": "endpoint capability flag when published; omitted unknown stays unknown; never guarantees audio track",
              "resolution": null,
              "seed": null,
              "size": null,
              "wire_omissions_preserved": true
            },
            "errors": [
              {
                "condition": "O acesso ao vídeo não está disponível ou este ID de vídeo não foi encontrado.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Verifique o acesso ao vídeo. Para um vídeo existente, utilize o ID público original e a mesma chave API.",
                "type": "not_found_error"
              },
              {
                "condition": "A chave API não corresponde à conta autenticada.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Verifique a sua chave API e o acesso à conta antes de enviar.",
                "type": "authentication_error"
              },
              {
                "condition": "Não foi possível ler o pedido ou o índice de transferência é inválido.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Corrija o corpo do pedido. Para uma transferência, escolha um índice de saída devolvido pela tarefa original.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Não é possível calcular o preço da configuração de vídeo selecionada.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Escolha uma configuração de vídeo suportada e preencha as opções obrigatórias antes de enviar um pedido corrigido.",
                "type": "price_unavailable"
              },
              {
                "condition": "Uma entrada de vídeo ou a tarefa original de continuação é inválida.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Utilize entradas HTTPS válidas. Para continuação, utilize o ID público do seu vídeo original concluído com a mesma chave API.",
                "type": "invalid_request_error"
              },
              {
                "condition": "O saldo disponível ou os limites não permitem efetuar uma reserva.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Verifique o saldo disponível e os limites antes de enviar um novo pedido.",
                "type": "billing_error"
              },
              {
                "condition": "A verificação, o armazenamento ou o acesso ao serviço de vídeo está temporariamente indisponível.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Aguarde a disponibilidade do serviço. Se já tiver um ID de vídeo, consulte essa tarefa original em vez de criar outra geração.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "O resultado e a cobrança do vídeo original precisam de verificação.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Conserve o ID de vídeo devolvido e consulte essa tarefa. Não envie um pedido de geração substituto enquanto estiver a ser verificada.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "A transferência do vídeo existente está temporariamente indisponível.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Consulte a mesma tarefa de vídeo mais tarde e transfira a saída existente. Uma nova geração cria uma operação separada.",
                "type": "server_error"
              },
              {
                "condition": "O conteúdo do vídeo não foi publicado.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Consulte o estado da tarefa original. Transfira quando indicar completed; se indicar failed, siga o aviso de verificação da cobrança.",
                "type": "video_not_ready"
              }
            ],
            "hints": [
              "No null values or duplicate keys at any JSON object level",
              "No duration/resolution/aspect default is inserted",
              "Prompt required for all21 despite broader official image-only schema",
              "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
              "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
              "No n/output-count/client price fields accepted",
              "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}/content",
                  "query": {
                    "index": "actual output index"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "mode": "submit_once_poll_original",
              "public_id": "video_<uuid>; owner user/key/group scope",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}"
                }
              ],
              "submit_status": 202,
              "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
              "terminal_provider_states": [
                "failed",
                "cancelled",
                "expired"
              ],
              "unknown": "503 result_pending_check + id original + X-Should-Retry:false; nunca repita o original"
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "black-forest-labs/flux-3-video"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Forneça prompt como texto e duration em segundos inteiros. Escolha uma resolução suportada e, se necessário, uma proporção.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "Uma instrução escrita."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "black-forest-labs/flux-3-video"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images é uma matriz. Cada objeto de fotograma tem type, image_url e frame_type; image_url contém url. Defina type como image_url. Utilize first_frame com um last_frame opcional. Cada função de fotograma aparece, no máximo, uma vez. Forneça um URL HTTPS público de imagem para cada fotograma. Escolha uma resolução suportada e, se necessário, uma proporção.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "Uma instrução escrita e uma imagem do primeiro fotograma."
              },
              {
                "mode": "Continue a video",
                "model": {
                  "enum": [
                    "black-forest-labs/flux-3-video"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Defina previous_job_id como o ID público de vídeo do seu original concluído. Utilize o mesmo modelo, conta e chave API. Conserve a identidade da tarefa existente; este pedido cria uma tarefa de continuação separada. Escolha uma resolução suportada e, se necessário, uma proporção.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "previous_job_id"
                ],
                "required_material": "Uma instrução escrita e o seu vídeo original concluído."
              }
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video_frame_images",
              "video_extension_or_continuation"
            ],
            "outputs": {
              "content_range_supported": true,
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "condition": "Always present for each completed output.",
                  "description": "Posição deste vídeo na lista de saídas, com contagem a partir de zero.",
                  "field_path": "outputs[].index",
                  "json_schema": {
                    "type": "integer"
                  },
                  "name": "index",
                  "nullable": false,
                  "type": "integer"
                },
                {
                  "condition": "Present after the owned result is available and a signed URL is created.",
                  "description": "URL HTTPS assinado para transferir este vídeo concluído.",
                  "field_path": "outputs[].content_url",
                  "json_schema": {
                    "type": "string"
                  },
                  "name": "content_url",
                  "nullable": false,
                  "type": "string"
                },
                {
                  "condition": "A nonempty recorded digest is returned; otherwise null.",
                  "description": "Resumo criptográfico SHA-256 dos bytes do vídeo original; null se não estiver disponível.",
                  "field_path": "outputs[].sha256",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "sha256",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when the recorded file size is positive.",
                  "description": "Tamanho do ficheiro de vídeo original em bytes; null se não estiver disponível.",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "Duração medida do vídeo em milissegundos; null se não estiver disponível.",
                  "field_path": "outputs[].duration_ms",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "duration_ms",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Largura do vídeo em píxeis; null se não estiver disponível.",
                  "field_path": "outputs[].width",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "width",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Altura do vídeo em píxeis; null se não estiver disponível.",
                  "field_path": "outputs[].height",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "height",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned together with positive recorded width and height.",
                  "description": "Identificador do codec de vídeo; null se não estiver registado.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "Indica se o vídeo contém uma faixa de áudio; null se não tiver sido medido.",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "Identificador do codec de áudio; null quando não está registado qualquer identificador.",
                  "field_path": "outputs[].audio_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "audio_codec",
                  "nullable": true,
                  "type": "string | null"
                }
              ],
              "format": "original MP4 bytes; no normalization/transcode",
              "max_aggregate_seconds": 2400,
              "max_bytes_per_output": 67108864,
              "max_seconds_per_output": 600,
              "result": "URLs assinados para conteúdo pertencente ao utilizador",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "black-forest-labs/flux-3-video"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "black-forest-labs/flux-3-video"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "schema": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16,
                    17,
                    18,
                    19,
                    20
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "720p",
                  "1080p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "720p",
                    "1080p"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "21:9",
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "21:9",
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Estas chaves descrevem cada objeto de fotograma; image_url contém apenas url. Omita frame_images num pedido apenas de texto.",
                "content": "Matriz de objetos de fotograma. Cada objeto tem type=image_url, image_url com url e frame_type. Utilize um URL HTTPS de imagem e defina frame_type como first_frame ou last_frame. Cada função de fotograma aparece, no máximo, uma vez.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 2,
                "max_items": 2,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxItems": 0,
                "name": "input_references",
                "required": false,
                "schema": {
                  "items": false,
                  "maxItems": 0,
                  "type": "array"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "previous_job_id",
                "pattern": "^video_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
                "required": false,
                "schema": {
                  "pattern": "^video_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
                  "type": "string",
                  "x-source-rule": "real public original id, sameowner/account/proxy/model and published/completed"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "callback_url",
                "pattern": "^https://",
                "required": false,
                "schema": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "session_id",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "user",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              }
            ],
            "request_schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "21:9",
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "callback_url": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "creativity": false,
                "duration": {
                  "enum": [
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16,
                    17,
                    18,
                    19,
                    20
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "frame_images": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "generate_audio": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "input_references": {
                  "items": false,
                  "maxItems": 0,
                  "type": "array"
                },
                "model": {
                  "const": "black-forest-labs/flux-3-video"
                },
                "previous_job_id": {
                  "pattern": "^video_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
                  "type": "string",
                  "x-source-rule": "real public original id, sameowner/account/proxy/model and published/completed"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "720p",
                    "1080p"
                  ]
                },
                "seed": false,
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": false,
                "trace": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "upscale_factor": false,
                "user": {
                  "maxLength": 256,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration"
              ],
              "title": "Video generation request",
              "type": "object",
              "x-source-global-rules": [
                "No null values or duplicate keys at any JSON object level",
                "No duration/resolution/aspect default is inserted",
                "Prompt required for all21 despite broader official image-only schema",
                "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
                "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
                "No n/output-count/client price fields accepted",
                "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
              ],
              "x-source-material-combinations": [
                "Exact model/card, positive published duration, model resolution/aspect membership and valid frozen quote are all required; independent enum arrays are not proven provider Cartesian combinations.",
                "Use exact published size or compatible resolution/aspect. Omitted options stay omitted; no guessed geometry.",
                "first_frame/last_frame roles each occur at most once; frame_images wins mode precedence over input_references.",
                "provider options are unavailable for this model despite any published passthrough-name allowlist.",
                "Continuation uses a real same-owner/account/proxy/model published completed public Ailoot video ID; constructible continuation is absent from current discovery profile projection."
              ]
            },
            "unsupported": [
              "size",
              "seed",
              "provider",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "previous_job_id",
              "callback_url",
              "session_id",
              "trace",
              "user"
            ],
            "required": [
              "model",
              "prompt",
              "duration"
            ]
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}/content",
                "query": {
                  "index": "actual output index"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "mode": "submit_once_poll_original",
            "public_id": "video_<uuid>; owner user/key/group scope",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}"
              }
            ],
            "submit_status": 202,
            "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
            "terminal_provider_states": [
              "failed",
              "cancelled",
              "expired"
            ],
            "unknown": "503 result_pending_check + originalid + X-Should-Retry:false; never replay original"
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_video",
            "image_to_video_frame_images",
            "video_extension_or_continuation"
          ],
          "output": {
            "content_range_supported": true,
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "condition": "Always present for each completed output.",
                "description": "Zero-based position of this video in the outputs list.",
                "field_path": "outputs[].index",
                "json_schema": {
                  "type": "integer"
                },
                "name": "index",
                "nullable": false,
                "type": "integer"
              },
              {
                "condition": "Present after the owned result is available and a signed URL is created.",
                "description": "Signed HTTPS download URL for this completed video.",
                "field_path": "outputs[].content_url",
                "json_schema": {
                  "type": "string"
                },
                "name": "content_url",
                "nullable": false,
                "type": "string"
              },
              {
                "condition": "A nonempty recorded digest is returned; otherwise null.",
                "description": "SHA-256 digest of the original video bytes; null if unavailable.",
                "field_path": "outputs[].sha256",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "sha256",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when the recorded file size is positive.",
                "description": "Size of the original video file in bytes; null if unavailable.",
                "field_path": "outputs[].size_bytes",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "size_bytes",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned when the measured duration is positive.",
                "description": "Measured video duration in milliseconds; null if unavailable.",
                "field_path": "outputs[].duration_ms",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "duration_ms",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video width in pixels; null if unavailable.",
                "field_path": "outputs[].width",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "width",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video height in pixels; null if unavailable.",
                "field_path": "outputs[].height",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "height",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned together with positive recorded width and height.",
                "description": "Video codec identifier; null if not recorded.",
                "field_path": "outputs[].video_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "video_codec",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                "description": "Whether the video contains an audio track; null if not measured.",
                "field_path": "outputs[].has_audio",
                "json_schema": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "name": "has_audio",
                "nullable": true,
                "type": "boolean | null"
              },
              {
                "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                "description": "Audio codec identifier; null when no identifier is recorded.",
                "field_path": "outputs[].audio_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "audio_codec",
                "nullable": true,
                "type": "string | null"
              }
            ],
            "format": "original MP4 bytes; no normalization/transcode",
            "max_aggregate_seconds": 2400,
            "max_bytes_per_output": 67108864,
            "max_seconds_per_output": 600,
            "result": "signed owned content URLs",
            "unmeasured_fields_nullable": true
          }
        },
        "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": {
              "billing_component_role": "reference_output_rate",
              "billing_input": false,
              "estimate_only": true,
              "fallback_reference": true,
              "quoted_unit": "per output second",
              "rate_modes": [
                "text_to_video",
                "image_to_video_frame_images"
              ],
              "selectable_request_branch": false,
              "selector_reference_only": true
            },
            "label": "Texto para vídeo · Imagem para vídeo (imagens de fotogramas) · tarifa de referência",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Output video second reference rate",
                "native_amount_usd_per_unit": "0.34",
                "native_quantity": 1,
                "public_unit_label": "per output second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Preço do vídeo",
            "units": [
              {
                "amount": "0.58",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.58",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Preço do vídeo",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.34",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "entrada: video_continuation; resolução: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Preço do vídeo",
            "units": [
              {
                "amount": "1.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_video_continuation_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "1.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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "input: video_continuation; resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.82",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_video_continuation_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.82",
                "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": "Esta estimativa não é um encargo adicional nem uma tarifa fixa para a geração concluída.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Custo estimado de geração",
            "units": [
              {
                "amount": "1.7",
                "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": "1.7",
                "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}\"\npython3 - <<'PY_REQUEST'\nfrom pathlib import Path\nPath('request.json').write_text('{\"aspect_ratio\":\"16:9\",\"duration\":8,\"model\":\"black-forest-labs/flux-3-video\",\"prompt\":\"A serene mountain landscape at sunset\",\"resolution\":\"720p\"}', 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 result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_STATUS_URL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path('result.json').read_text())\nif not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')\nPath('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error \"$(cat status-url.txt)\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('status.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "GET original status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('status.json').read_text())\nif r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')\nif not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')\nurls=[]\nfor i,u in enumerate(r.get('data',[])):\n    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);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 returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every completed owned output",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "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": {
              "billing_component_role": "reference_output_rate",
              "billing_input": false,
              "estimate_only": true,
              "fallback_reference": true,
              "quoted_unit": "per output second",
              "rate_modes": [
                "text_to_video",
                "image_to_video_frame_images"
              ],
              "selectable_request_branch": false,
              "selector_reference_only": true
            },
            "label": "Text to video · Image to video (frame images) · reference rate",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Output video second reference rate",
                "native_amount_usd_per_unit": "0.34",
                "native_quantity": 1,
                "public_unit_label": "per output second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.58",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.58",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.34",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "input: video_continuation; resolution: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "1.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_video_continuation_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "1.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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "input: video_continuation; resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.82",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_video_continuation_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.82",
                "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": "1.7",
                "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": "1.7",
                "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-3-video",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{public_id}",
          "GET /v1/videos/{public_id}/content"
        ],
        "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.34",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output",
            "label": "Output video second reference rate",
            "native_amount_usd_per_unit": "0.34",
            "native_quantity": 1,
            "public_unit_label": "per output second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.58",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output_1080p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.58",
            "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.34",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output_720p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.34",
            "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": "1.06",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_video_continuation_1080p",
            "label": "Video price",
            "native_amount_usd_per_unit": "1.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.82",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_video_continuation_720p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.82",
            "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": "1.7",
            "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": "1.7",
            "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-3-video",
        "request_model_id": "black-forest-labs/flux-3-video",
        "route_label": "Ultra"
      }
    ],
    "name": "Black Forest Labs: FLUX.3 Video",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 1.7,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 1.7,
      "varies": false
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "hd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.34",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "hd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "fhd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.58",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "fhd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 1,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "qhd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.80",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "qhd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 2,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "uhd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "1.60",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "uhd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 3,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": true,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "draft_hd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.12",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": true,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "draft_hd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 4,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "hd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.34",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "hd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 5,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "fhd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.58",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "fhd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 6,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "qhd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.80",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "qhd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 7,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "uhd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "1.60",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "uhd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 8,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": true,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "draft_hd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.12",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": true,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "draft_hd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 9,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "hd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.82",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "hd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 10,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "fhd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "1.06",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "fhd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 11,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "qhd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "1.30",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "qhd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 12,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "uhd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "1.90",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "uhd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 13,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": true,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "draft_hd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.24",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": true,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "draft_hd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 14,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "no_method_admission_claim": true,
          "scope": "supplier_tariff_reference"
        },
        "dimensions": {},
        "label": "Ailoot Ultra · Tariff components",
        "units": [
          {
            "amount": "0.34",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "output second Source-only tariff component.",
            "billing_original_currency": "USD_cent",
            "billing_original_rate": "34",
            "key": "cents_per_second_output",
            "label": "output second",
            "native_amount_usd_per_unit": "0.34",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.34",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=720p",
            "billing_original_currency": "USD_cent",
            "billing_original_rate": "34",
            "key": "cents_per_second_output_720p",
            "label": "output second",
            "native_amount_usd_per_unit": "0.34",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.58",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=1080p",
            "billing_original_currency": "USD_cent",
            "billing_original_rate": "58",
            "key": "cents_per_second_output_1080p",
            "label": "output second",
            "native_amount_usd_per_unit": "0.58",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.82",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=720p · video_continuation",
            "billing_original_currency": "USD_cent",
            "billing_original_rate": "82",
            "key": "cents_per_second_video_continuation_720p",
            "label": "output second",
            "native_amount_usd_per_unit": "0.82",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "1.06",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=1080p · video_continuation",
            "billing_original_currency": "USD_cent",
            "billing_original_rate": "106",
            "key": "cents_per_second_video_continuation_1080p",
            "label": "output second",
            "native_amount_usd_per_unit": "1.06",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          }
        ]
      }
    ],
    "public_id": "black-forest-labs/flux-3-video",
    "short": "O FLUX 3 Video cria clips com diálogo, efeitos e ambiente sincronizados a partir de texto, imagens fixadas ou um clip a continuar. Fotogramas-chave, composição com vários planos e melhoria de prévias ajudam a desenvolver uma sequência controlada e a conservar a tomada selecionada."
  },
  "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": "O FLUX 3 Video cria clips com diálogo, efeitos e ambiente sincronizados a partir de texto, imagens fixadas ou um clip a continuar. Fotogramas-chave, composição com vários planos e melhoria de prévias ajudam a desenvolver uma sequência controlada e a conservar a tomada selecionada.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "22144b853dd1418b1dd14ad36767abc771ccd9c13c03bf9a7cf26e595edf85fa",
    "renderer_sha256": "8caea4544177cc2b7d2cb3356b5f07bfd3660386d75f2714a6f603fa5e2a6cd2"
  },
  "sourceRevision": "13fb69cbe619deb94dec0f24220ae5e2e5faedc637964d83a453f314581bb9df"
}
