Loading...
Loading...
Nível Veo 3.1 mais rápido e econômico, com texto em vídeo, imagem em vídeo, referência em vídeo e transições entre quadro inicial e final.
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/veo-3.1-fast/text-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.
Veo 3.1 Fast é o Veo 3.1 do Google ajustado para velocidade: as mesmas resoluções, as mesmas durações de 4/6/8 segundos, o mesmo áudio nativo sempre ligado, entregue mais rápido e com preço menor. Expomos como google/veo-3.1-fast/text-to-video e cobramos por segundo de saída — $0.01 por segundo, ×1.5 quando a trilha de áudio está ligada. Um clipe de 8 segundos em 720p com som sai por $0.12. Nada para subir. Um prompt é o input inteiro.
Tem uma imagem parada que você quer ver ganhar movimento? Então o seu endpoint é o Veo 3.1 Fast image-to-video — mesmo modelo, um frame inicial. Precisa que o mesmo rosto e a mesma jaqueta sobrevivam a uma leva de planos? Isso é o Veo 3.1 Fast reference-to-video.
Todo provider sério deste modelo cobra por segundo, nós inclusive. Então a única comparação honesta é uma configuração fixa — aqui está ela em 720p com áudio ligado, checada em 26 de agosto de 2026:
| Provider de API | Cobrança | Taxa (720p, áudio ligado) | Clipe de 8 segundos | vs. nós |
|---|---|---|---|---|
| E2X (atual) | por segundo | $0.01/s ×1.5 áudio | $0.12 | — |
| Google Gemini API | por segundo | $0.10/s | $0.80 | 6,7× o nosso preço |
| fal.ai | por segundo | $0.15/s | $1.20 | 10× o nosso preço |
| Replicate | por segundo | $0.15/s | $1.20 | 10× o nosso preço |
| E2X, preço de tabela (antes do desconto) | por segundo | $0.10/s ×1.5 | $1.20 | a nossa taxa sem desconto |
Leia a última linha contra fal.ai e Replicate. O nosso preço de tabela para um clipe de 8 segundos é $1.20 — exatamente o que eles cobram. O que você paga hoje é um décimo disso, e ainda 6,7× abaixo da própria API do Google para o request idêntico.
Faça o orçamento com uma nuance em mente: 720p → 1080p é de graça na fal.ai e na Replicate, enquanto o Google cobra mais por segundo por isso. Resolução também é multiplicador do nosso lado, então puxe o número atual do llms.txt deste modelo antes de se comprometer com um pipeline em 1080p.
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.
A maioria dos modelos de text-to-video te entrega um MP4 mudo e deixa o som por sua conta. O Veo 3.1 Fast não. A API do Google gera áudio nativamente e lá você não consegue desligar isso — diálogo sincronizado, foley e som de ambiente, produzidos junto com a imagem e travados nos frames. O próprio exemplo de prompt documentado pelo Google tem falas.
Isso muda o que uma chamada vale. Escreva "um peixeiro larga um caixote e grita chegou fresquinho, faz cinco minutos" e você recebe a pancada e o grito nos frames certos — não uma mímica que você precisa sonorizar depois. Para cortes de social e animatics, uma etapa inteira de pós desaparece.
O que você escolhe:
has_sound, com padrão true, acionando o multiplicador ×1.5.Oito segundos é o teto de um clipe. Sequências são várias chamadas.
Crie uma key no dashboard, mantenha ela do lado do servidor, poste o job. Só prompt é obrigatório.
curl -X POST https://api.e2x.ai/v1/jobs/submit \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/veo-3.1-fast/text-to-video",
"input": {
"prompt": "Plano com câmera na mão descendo um beco de Osaka molhado de chuva à noite. Um vendedor de ramen levanta o noren, o vapor jorra para fora e ele grita para um ciclista que passa: \"Última tigela da noite!\" Reflexos de neon tremem nas poças.",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": "8",
"has_sound": "true"
}
}'
Devolvemos um job ID. Faça polling nele, ou não:
const headers = {
Authorization: `Bearer ${process.env.E2X_API_KEY}`,
"Content-Type": "application/json",
};
const submitted = await fetch("https://api.e2x.ai/v1/jobs/submit", {
method: "POST",
headers,
body: JSON.stringify({
model: "google/veo-3.1-fast/text-to-video",
input: {
prompt:
"Push-in lento em uma faroleira escrevendo num diário de bordo. O vento chacoalha o vidro. Ela murmura: \"Terceira noite, ainda sem sinal.\" O facho da lâmpada cruza o rosto dela a cada quatro segundos.",
aspect_ratio: "9:16",
resolution: "720p",
duration: "6",
has_sound: "true",
seed: 41205,
},
}),
}).then((r) => r.json());
const jobId = submitted.data.jobId;
while (true) {
const job = await fetch(`https://api.e2x.ai/v1/jobs/${jobId}`, { headers })
.then((r) => r.json());
if (job.data.status === "completed") {
console.log(job.data.outputs[0].url);
break;
}
if (job.data.status === "failed") {
throw new Error(job.data.error?.message || "Generation failed");
}
await new Promise((r) => setTimeout(r, 5000));
}
Os status vão de pending → processing → completed, ou param em failed / cancelled. Mande um webhookUrl e a gente te chama. Reserve uns quatro minutos por job; o Google publica um piso de 11 segundos e um teto de 6 minutos em horário de pico, então construa para o teto.
Uma armadilha do schema: duration e resolution são strings. "8", não 8.
Mesmos pesos, mesmo preço por segundo, três portas de entrada diferentes. O input que você já tem decide:
| Endpoint | Clipe de 8s, 720p + áudio | Escolha quando |
|---|---|---|
| Veo 3.1 Fast text-to-video | $0.12 | Você tem palavras e mais nada — e quer 4s ou 6s |
| Veo 3.1 Fast image-to-video | $0.12 | Já existe uma imagem parada que deve virar o primeiro frame |
| Veo 3.1 Fast reference-to-video | $0.12 | Uma pessoa, produto ou lugar precisa ficar idêntico entre planos |
O preço não desempata, então siga o briefing. Se um cliente já aprovou um key visual, mandar isso como frame inicial é melhor do que redescrever em prosa. Se seis clipes precisam parecer uma campanha só, carregue até três referências — só saiba que reference-to-video força 8 segundos, sem exceção. Este endpoint mantém as durações curtas, o que faz dele o jeito mais barato de encher um storyboard de movimento tosco. O resto do que rodamos está na categoria text-to-video e no catálogo de modelos completo.
Trate o prompt como uma decupagem com mixagem de som anexada. Quatro coisas pesam mais que adjetivos:
Nomeie o movimento de câmera. "Plano aberto fixo", "dolly in lento", "câmera na mão acompanhando" — o modelo respeita isso. Enquadramento vago te dá movimento à deriva, sem compromisso.
Escreva o diálogo entre aspas. Falas curtas, uma ou duas por clipe. Oito segundos não é muito. Intenção parafraseada ("ele diz algo animador") produz enchimento resmungado.
Peça a ambiência. Chuva no telhado de zinco, o zumbido de uma geladeira, trânsito ao longe. O modelo inventa uma cama sonora se você não nomear uma, e ela pode não combinar com a sua edição.
Diga o que a luz está fazendo. Meio-dia nublado, luz de poste de sódio, uma única lâmpada prática. A iluminação decide se um clipe do tier Fast parece deliberado ou parece um render.
O inglês tem suporte completo; o Google não avaliou outros idiomas aqui. Escreva o diálogo no idioma que você quer ouvir falado e espere mais variação fora do inglês.
Baixe em até 48 horas. O Google guarda o arquivo por dois dias — a formulação deles é que você precisa baixar o seu vídeo em até 2 dias depois da geração. Copie toda saída para o seu próprio bucket no mesmo job que lê outputs[0].url. Um link de CDN não é arquivo.
Todo frame carrega SynthID. O watermark imperceptível do Google é aplicado a toda saída do Veo e pode ser conferido na plataforma de verificação deles. Ninguém desliga isso, nós inclusive.
Regras regionais sobre pessoas. Na UE, no Reino Unido, na Suíça e no MENA, personGeneration fica restrito a allow_adult.
Cobramos por segundo: $0.01 por segundo de saída, multiplicado por 1,5 quando o áudio está ligado. Um clipe de 8 segundos em 720p com som é $0.12, um de 6 segundos é $0.09 e 4 segundos é $0.06. Resolução acima de 720p tem o próprio multiplicador.
Na configuração e na data que checamos — 8 segundos, 720p, áudio ligado, 26 de agosto de 2026 — sim: $0.12 conosco contra $1.20 lá. O nosso próprio preço de tabela sem desconto é esse mesmo $1.20. A diferença é desconto, não produto diferente.
O nosso schema expõe has_sound e o padrão é true. A própria API Gemini do Google não oferece botão de desligar, então o áudio é melhor tratado como parte do que este modelo é — vale o mesmo no nosso endpoint image-to-video. É também a razão do multiplicador de ×1.5 no preço.
Oito segundos, numa única chamada. Você pode pedir 4 ou 6 neste endpoint, mas 1080p e 4k exigem os 8 completos. Sequências mais longas significam costurar vários jobs por conta própria, ou segurar o visual com reference-to-video.
Só 16:9 e 9:16, a 24fps, em 720p, 1080p ou 4k. O nosso padrão é 16:9 e 720p. Não existe opção quadrada nem 4:5, então corte na pós se precisar de uma.
Têm — toda saída do Veo é marcada com SynthID, o marcador de proveniência imperceptível do Google, e dá para verificar pela plataforma deles. Nenhum provider expõe um parâmetro para desativar.
Reservamos uns quatro minutos por job. O Google publica um mínimo de 11 segundos e um máximo de 6 minutos no pico, então use webhook em vez de um loop de polling apertado para trabalho em volume.