Loading...
Loading...
Generate smooth video transitions between two key frames with Gemini Omni 1.1 Flash. Provide a start frame, an end frame and a text prompt to guide the in-between motion.
Entre para executar modelos
No output yet
Run the model to see generated results.
import requests
result = requests.post(
'https://api.e2x.ai/v1/jobs/submit',
headers={
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json'
},
json={
'model': 'google/omni-1.1-flash/start-end-frame-to-video',
'input': {}
}
)import time
job_id = result.json()['jobId']
while True:
response = requests.get(
f'https://api.e2x.ai/v1/jobs/{'{job_id}'}',
headers={'Authorization': f'Bearer {'{API_KEY}'}'}
)
data = response.json()['data']
if data['status'] == 'completed':
print('Done!', data['outputs'][0]['url'])
break
elif data['status'] == 'failed':
raise Exception(f"Job failed: {'{'}data['error']['message']{'}'}")
time.sleep(2)Custo estimado por geração de acordo com duração e resolução. Você só paga pelo que executar.
O Gemini Omni 1.1 Flash é o gemini-omni-1.1-flash do Google, em GA desde 27 de agosto de 2026 e um modelo da família Gemini, não da Veo. Rodamos a capability de dois quadros dele como google/omni-1.1-flash/start-end-frame-to-video e cobramos por segundo de saída — $0.09 em 720p, um desconto fixo de 40% sobre a tabela de $0.15. O clipe padrão de oito segundos sai por $0.72.
Três campos entram: um quadro inicial, um quadro final, um prompt. Sua primeira imagem vira o primeiro quadro, a segunda vira o último, e tudo entre elas é inventado. Isso não é um pedido de clipe, é um pedido de ponte — e uma ponte vale o que valem as suas duas margens.
Novidade aqui, também — a geração anterior do Omni Flash saiu sem isso, a evidência mais simples do argumento no nosso texto sobre o lançamento do 1.1. Um release de continuidade, não de qualidade.
Nossas taxas, checadas em 28 de agosto de 2026:
| Duração | 360p | 720p | 1080p | 4K |
|---|---|---|---|---|
| 4 s | $0.1188 | $0.36 | $0.54 | $0.72 |
| 6 s | $0.1782 | $0.54 | $0.81 | $1.08 |
| 8 s (padrão) | $0.2376 | $0.72 | $1.08 | $1.44 |
| 10 s | $0.297 | $0.90 | $1.35 | $1.80 |
1080p e 4K são upscale, não nativos.
Tweening é o modelo mental errado. Uma ferramenta de tweening mistura o pixel A na direção do pixel B. Este modelo lê as duas imagens, decide que evento plausivelmente levou a cena de uma à outra, e renderiza isso — áudio incluído, gerado nativamente a partir do mesmo prompt. Sem campo has_sound, sem botão de mudo.
A 24 fps, uma ponte de quatro segundos são noventa e seis quadros, dois deles fornecidos por você. Os outros noventa e quatro são uma tese sobre física, defendida quer ela se sustente ou não. O enquadramento é 16:9 ou 9:16; conte com quatro minutos por job.
Três perguntas resolvem o par. Mesmo sujeito? Não parecido — o mesmo. Mesma luz? Direção da luz principal, temperatura de cor, contraste. Uma câmera poderia ter feito esse movimento? Se você não consegue dizer isso numa frase que um operador seguiria, o modelo também não consegue.
Quando a resposta é não, nada dá erro — o modelo disfarça o vão, de quatro maneiras:
Um clipe que você não pode usar custa o mesmo que um aproveitável.
A $0.0297 por segundo, um teste de quatro segundos em 360p custa $0.1188; o final de oito segundos em 720p custa $0.72, cinco vezes mais. E 360p, pequeno demais para julgar um rosto, serve muito bem para julgar o meio. Um corte é um corte em qualquer resolução. Um morph é um morph. O Google ainda afirma que a faixa roda até 60% mais rápido — texto de blog de lançamento, não número de referência de API.
Isso torna o trabalho de storyboard barato de iterar. Dois key frames por beat, a lista de planos rodada em quatro segundos e 360p, reproduzida como animatic — doze beats por cerca de $1.73. As falhas quase sempre são um problema do par de quadros, resolvido redesenhando um board em vez de reescrever o prompt cinco vezes. Renderize só os sobreviventes. O Veo 3.1 Fast start-end-frame-to-video não tem faixa de rascunho nenhuma.
duration aceita 4, 6, 8 ou 10, como string. Cada segundo custa o mesmo, então parece um botão de orçamento. É um botão de direção.
Os mesmos dois quadros em quatro segundos e em dez são dois planos diferentes. Quatro forçam o trajeto — a câmera se compromete, sobra pouco espaço para inventar. Dez precisam ser preenchidos, e o modelo vai achar o próprio recheio: uma deriva, uma pausa segurada, um segundo gesto. Essa ação inventada é a saída menos previsível daqui.
Case a duração com a distância: dois ângulos de produto a trinta graus um do outro, esticados para dez segundos, compram um rastejo e um vazio. Dez é o teto do Omni e uma vantagem real — o Veo para em oito.
Gere uma key, guarde ela no servidor, envie o job. prompt, start_frame_url e end_frame_url são obrigatórios, e nós buscamos as duas imagens, então cada URL precisa responder a um request sem autenticação.
curl -X POST https://api.e2x.ai/v1/jobs/submit \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/omni-1.1-flash/start-end-frame-to-video",
"input": {
"prompt": "A câmera faz um arco para a direita ao redor da máquina de espresso enquanto o vapor cresce. Zumbido do moedor, conversa de cafeteria.",
"start_frame_url": "https://example.com/07a-left.jpg",
"end_frame_url": "https://example.com/07b-right.jpg",
"duration": "6",
"resolution": "360p"
}
}'
Faça polling no id do job, ou passe um webhookUrl:
const headers = {
Authorization: `Bearer ${process.env.E2X_API_KEY}`,
"Content-Type": "application/json",
};
const { data } = await fetch("https://api.e2x.ai/v1/jobs/submit", {
method: "POST",
headers,
body: JSON.stringify({
model: "google/omni-1.1-flash/start-end-frame-to-video",
input: {
prompt: "Uma descida lenta de grua do parapeito da cobertura até a mesa do pátio. Um movimento contínuo.",
start_frame_url: "https://example.com/12a-roof.jpg",
end_frame_url: "https://example.com/12b-courtyard.jpg",
duration: "10",
resolution: "720p",
},
}),
}).then((r) => r.json());
let url = null;
while (!url) {
const job = await fetch(`https://api.e2x.ai/v1/jobs/${data.jobId}`, { headers })
.then((r) => r.json());
if (job.data.status === "completed") url = job.data.outputs[0].url;
else if (["failed", "cancelled"].includes(job.data.status))
throw new Error(job.data.error?.message ?? job.data.status);
else await new Promise((r) => setTimeout(r, 5000));
}
O status corre pending, processing, completed, ou para em failed/cancelled. Duas armadilhas de schema: duration e resolution são strings, e os campos são start_frame_url e end_frame_url, não o image_url no singular usado em outros lugares. Os valores ao vivo estão na spec legível por máquina.
O Veo 3.1 Fast faz o mesmo trabalho por um nono do dinheiro:
| Endpoint | 8 s em 720p | Vá nele quando |
|---|---|---|
| Veo 3.1 Fast start-end-frame-to-video | $0.08 | Os quadros conectam e oito segundos bastam |
| Omni 1.1 Flash start-end-frame-to-video | $0.72 | Você precisa de dez segundos, 4K, ou de uma passada de rascunho |
| Omni 1.1 Flash image-to-video | $0.72 | Só uma ponta do plano está fixada |
| Omni 1.1 Flash reference-to-video | $0.72 | Um sujeito precisa continuar sendo ele mesmo em vários planos |
| Omni 1.1 Flash text-to-video | $0.72 | Não existe quadro de origem nenhum |
Os preços e as condições dos produtos podem mudar. Verifique o preço atual de cada provider antes de tomar uma decisão de compra. O preço do Google Batch ou Flex não é diretamente equivalente a um request de API on-demand padrão, porque as condições de agendamento, disponibilidade e processamento são diferentes; por isso ele ficou fora desta comparação. Esta é uma comparação de escopo limitado, não uma afirmação de que a E2X é a opção mais barata do mundo em qualquer configuração.
Comece pelo Veo. Volte para cá quando a parede de oito segundos dele estiver no caminho, quando a entrega for em 4K, ou quando uma passada de rascunho economizar mais do que custa. O resto está em image-to-video e text-to-video, e o catálogo de modelos inteiro cabe em uma página.
Descreva o trajeto, não o cenário — o modelo já vê as duas pontas. Nomeie o movimento que as conecta ("arco para a direita", "descida de grua", "mudança de foco para a janela do fundo") e então diga como aquilo deve soar — o áudio é escrito a partir dessa mesma linha. Não peça eventos que nenhum dos dois quadros sugere. Mais vocabulário de câmera está no nosso guia de prompt do Omni; o inglês é o único idioma de prompt avaliado.
Três coisas antes disto chegar perto de um cliente. Cada quadro carrega o SynthID, o marcador de proveniência invisível do Google, e nenhum provider consegue remover. O model card do Google é direto ao dizer que "manter consistência completa ao longo das edições, gerar cenas com movimento complexo ou renderizar texto perfeitamente correto continua sendo um desafio" — e movimento complexo é exatamente o que um vão largo entre quadros pede. No EEE, na Suíça e no Reino Unido você não pode subir imagens contendo menores de idade ou certas pessoas reconhecíveis — um limite sobre as suas entradas. As URLs de resultado são temporárias: re-hospede elas no handler de conclusão.
Cobramos $0.09 por cada segundo de saída em 720p, então um clipe de oito segundos sai por $0.72 e o máximo de dez segundos, $0.90 — 40% abaixo de uma tabela de $0.15. A resolução multiplica isso, deixando um rascunho de quatro segundos em 360p em $0.1188 e uma renderização de dez segundos em 4K em $1.80. Checado em 28 de agosto de 2026.
Mesmo sujeito, mesmo esquema de iluminação, e um movimento de câmera que fisicamente conseguiria ir de um ao outro no tempo pedido. Dois frames parados do mesmo set, com minutos de diferença, quase sempre funcionam. Quadros feitos em condições diferentes obrigam o modelo a resolver a diferença na tela.
Nada dá erro. Você recebe um clipe que esconde o vão de quatro jeitos possíveis: um corte inventado, um morph por uma geometria impossível, um salto de luz, ou figuras surgindo do nada. Todos custam o mesmo que uma boa renderização, que é por que o rascunho de $0.1188 se paga.
Veo 3.1 Fast primeiro, na maioria dos casos — ele faz quadro inicial e final a $0.01 por segundo contra os nossos $0.09, então oito segundos custam $0.08, não $0.72. O Omni justifica a diferença em três pontos: a duração de dez segundos, a saída em 4K e a faixa de teste em 360p.
De três a dez segundos por chamada. O enum duration carrega 4, 6, 8, 10, todos strings. Dez é o teto duro, e qualquer coisa mais longa é costurada a partir de vários jobs.
Sim. Os dois são buscados no servidor, então cada um precisa responder a um request sem autenticação até o job terminar. URLs assinadas de vida curta, buckets privados, endereços localhost e data URIs falham.
Sim — cada quadro é marcado com o SynthID, o sinal de proveniência imperceptível do Google, invisível para quem assiste e verificável pelas ferramentas deles. Nenhum provider consegue desligar. Resolva isso com o seu cliente se algum contrato proibir assets de IA rotulados.