Veo 3.1
Gere clipes de vídeo com o Veo 3.1 por uma única API de tarefas: três modelos cobrados por clipe de 8 segundos e dois cobrados por segundo, com quadros, áudio e saída em GIF.
O Veo 3.1 é o modelo de geração de vídeo do Google. O SeedRouter o oferece em cinco IDs de modelo em um único endpoint: três cobrados por clipe, cada clipe com 8 segundos, e dois cobrados por segundo, com mais controles (duração, áudio, seed, prompt negativo, primeiro e último quadro). Envie a requisição, guarde o ID da tarefa retornado e leia o vídeo pronto a partir da tarefa. As imagens são enviadas como URLs.
IDs de modelo
| ID de modelo | Cobrança | Duração | Imagens | Áudio |
|---|---|---|---|---|
veo-3.1-fast | por clipe | 8 segundos | até 3, modo frame ou reference | sem chave |
veo-3.1-quality | por clipe | 8 segundos | até 3, modo frame | sem chave |
veo-3.1-lite | por clipe | 8 segundos | nenhuma (texto para vídeo) | sem chave |
veo-3.1-fast-official | por segundo | 4, 6 ou 8 segundos | primeiro e último quadro | generate_audio |
veo-3.1-quality-official | por segundo | 4, 6 ou 8 segundos | primeiro e último quadro | generate_audio |
Veja a página do modelo para os preços atuais.
Exemplo rápido
curl https://api.seedrouter.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3.1-fast",
"prompt": "A red paper boat drifts across a calm pond at sunrise, soft mist on the water, slow push-in on a 35mm lens, no text, no logos.",
"resolution": "720p",
"aspect_ratio": "16:9"
}'Endpoint
POST https://api.seedrouter.ai/v1/videos/generations| Cabeçalho | Valor |
|---|---|
| Authorization | Bearer YOUR_API_KEY |
| Content-Type | application/json |
A resposta é uma tarefa ({"id": "task_...", "status": "processing"}), não o vídeo pronto. Consulte GET /v1/tasks/{task_id} para obter o resultado. Mantenha as chaves de API no código do lado do servidor.
Parâmetros: modelos por clipe
veo-3.1-fast, veo-3.1-quality e veo-3.1-lite.
| Campo | Tipo | Padrão | Observações |
|---|---|---|---|
model | string | obrigatório | Um dos três IDs acima. |
prompt | string | obrigatório | Descreve a cena. |
duration | integer | 8 | Apenas 8 é aceito. |
aspect_ratio | enum | 16:9 ou 9:16. | |
resolution | enum | 720p | 720p, 1080p ou 4k (maiúsculas ou minúsculas). O veo-3.1-lite não tem 4k. |
enable_gif | boolean | false | Retorna o clipe como GIF animado em vez de MP4. Apenas 720p. |
nsfw_check | boolean | false | Verifica o prompt e as imagens em busca de conteúdo impróprio antes de gerar. |
image_urls | array | Apenas Fast e Quality. Até 3 URLs públicas de imagem. | |
generation_type | enum | pelo número de imagens | Apenas Fast e Quality. frame ou reference; o Quality aceita só frame. |
Parâmetros: modelos por segundo
veo-3.1-fast-official e veo-3.1-quality-official.
| Campo | Tipo | Padrão | Observações |
|---|---|---|---|
model | string | obrigatório | Um dos dois IDs acima. |
prompt | string | obrigatório | Descreve a cena. |
negative_prompt | string | O que deixar fora do clipe. | |
duration | integer | 8 | 4, 6 ou 8 segundos. |
aspect_ratio | enum | 16:9 | 16:9 ou 9:16. |
resolution | enum | 720p | 720p, 1080p ou 4k (maiúsculas ou minúsculas). |
first_frame_image | string | URL pública de imagem. O clipe começa nela. | |
last_frame_image | string | URL pública de imagem. Exige first_frame_image. | |
seed | integer | aleatório | De 0 a 4294967295. |
generate_audio | boolean | false | Adiciona uma faixa de áudio. Cobrado a uma tarifa por segundo mais alta. |
person_generation | enum | allow_adult | allow_adult ou disallow. |
resize_mode | enum | pad | pad ou crop. Exige first_frame_image. |
enhance_prompt | boolean | true | Apenas true é aceito; caso contrário, omita o campo. |
nsfw_check | boolean | false | Verifica o prompt e as imagens em busca de conteúdo impróprio antes de gerar. |
O esquema é estrito: campos desconhecidos são rejeitados em vez de ignorados, e cada modelo aceita apenas os próprios campos. Callbacks não estão disponíveis; consulte a tarefa.
Modos de imagem
No veo-3.1-fast e no veo-3.1-quality, generation_type define como as image_urls são usadas:
generation_type | Imagens | Efeito |
|---|---|---|
frame | 1 ou 2 | A primeira imagem é o primeiro quadro, a segunda é o último. |
reference | até 3 | As imagens servem de referência para o assunto e o estilo. Apenas Fast. |
| omitido | 2 ou 3 | Duas imagens usam o modo frame, três usam o modo reference. |
O veo-3.1-quality não executa o modo reference, então recusa generation_type: "reference" e três imagens sem generation_type. O veo-3.1-lite não aceita imagens.
Nos modelos por segundo, defina first_frame_image e, opcionalmente, last_frame_image. resize_mode escolhe se uma imagem com outro formato é preenchida ou cortada.
Entradas de mídia
As imagens são URLs HTTP(S) públicas:
{ "image_urls": ["https://example.com/first.jpg", "https://example.com/last.jpg"] }Nos modelos por clipe, cada imagem é JPEG, PNG ou WebP e tem no máximo 10 MB; um arquivo que não cumpre essas regras faz a tarefa falhar sem cobrança. Dados em base64 não são aceitos: envie o arquivo para o seu próprio armazenamento e passe a URL dele.
Fatores de custo
Veja a seção de preços do modelo para as tarifas atuais.
per-clip models: cost = price of one clip at the output resolution (720p and 1080p cost the same)
per-second models: cost = duration × rate for the resolution and audio settingA cobrança é fixada quando a requisição é aceita, então o valor reservado é o valor cobrado. Veja as cobranças finais no histórico de uso da sua conta. Tarefas que falham não são cobradas.
Esquema de saída
O envio retorna a tarefa:
{"id": "task_...", "model": "veo-3.1-fast", "status": "processing", "created_at": 1789689600}Consultar a tarefa
GET https://api.seedrouter.ai/v1/tasks/{task_id}Consulte a cada 10–20 segundos até que status seja completed ou failed. Um tempo limite de rede durante a consulta não significa que a geração falhou: guarde o ID da tarefa e retome a verificação. Não crie outra tarefa para acompanhar o progresso.
Tarefa concluída
{
"id": "task_...",
"model": "veo-3.1-fast",
"status": "completed",
"created_at": 1789689600,
"finished_at": 1789689720,
"output": {
"video_url": "https://static.seedrouter.ai/media/tasks/task_example/0.mp4"
}
}video_url é um MP4, ou um GIF quando a requisição definiu enable_gif. O link fica no armazenamento do SeedRouter.
O que nossas execuções de teste retornaram (uma de cada, 2026-10-04):
| Requisição | Arquivo |
|---|---|
veo-3.1-fast, 9:16, modo frame | MP4, H.264, 720 × 1280, 24 fps, 8 s, com faixa de áudio AAC estéreo |
veo-3.1-fast-official, 16:9, 720p, 4 s, sem generate_audio | MP4, H.264, 1280 × 720, 24 fps, 4 s, sem faixa de áudio |
veo-3.1-lite, enable_gif | GIF, 480 × 270, 16 fps, 8 s |
Os modelos por clipe não têm chave de áudio; os modelos por segundo só adicionam uma faixa de áudio com generate_audio.
Erros
Requisições rejeitadas antes de uma tarefa ser criada retornam um erro HTTP com um objeto error e não são cobradas. Uma tarefa que falha depois de aceita retorna HTTP 200 quando consultada, com status: "failed" e um objeto error.
Veja o catálogo de erros comum para códigos, status HTTP e orientações de nova tentativa.
{
"id": "task_...",
"model": "veo-3.1-fast",
"status": "failed",
"error": {
"code": 60001,
"message": "The request was rejected by the content policy. Please revise the prompt or input images."
}
}Se o próprio envio atingir o tempo limite, confira suas tarefas antes de enviar de novo: a primeira requisição pode ter sido aceita.
Dicas
- Comece no
veo-3.1-liteou noveo-3.1-fastem 720p para testar um prompt e depois passe para o Quality ou para 4k no render final. - Cite a câmera e a luz: uma lente e um movimento de câmera mudam a cena mais do que adjetivos.
- Adicione
no text, no logospara manter letreiros e marcas inventados fora do quadro. - Para uma cena que precisa começar e terminar em imagens conhecidas, use o modo frame com duas imagens, ou os modelos por segundo com
first_frame_imageelast_frame_image. - Fixe
seednos modelos por segundo e mude uma oração de cada vez para refinar uma cena.
