Uma API para todos os modelos de vídeo com IA
Se você conhece a OpenRouter para modelos de linguagem, a Revana é a mesma ideia para geração de vídeo e imagem: uma chave de API, um formato de requisição e um saldo pré-pago para Seedance, Veo, Kling, Wan, Nano Banana Pro, GPT Image 2 e o resto do catálogo, com fallback automático quando uma rota upstream falha.
O problema de chamar cada modelo diretamente
Cada criador de modelo mantém a sua própria API, com conta, chaves, formato de requisição, fluxo de status de jobs e cobrança próprios. Construir sobre três deles significa três integrações para manter, três saldos para recarregar e três conjuntos de códigos de erro para tratar. Alguns modelos são oferecidos por várias plataformas a preços diferentes, com limites diferentes e uma capacidade que vai e volta.
O custo aparece quando você quer testar um novo modelo, o que em 2026 acontece a cada poucos meses. Cada novo modelo significa mais uma integração antes mesmo de você poder ver se ele serve para o seu produto.
Como a Revana funciona
- Uma chave. Cadastre-se e crie uma chave de API no painel. Ela funciona para todos os modelos do catálogo.
- Uma requisição. Envie
POST /v1/generationscom um idmodele um objetoinput. Os nomes dos campos são os mesmos para todos os modelos:prompt,image_url,end_image_url,image_urls,resolution,duration,aspect_ratioeaudio. - Um preço antes de qualquer execução. O preço do job vem do catálogo e é reservado do seu saldo pré-pago. Um campo ou valor que o modelo não suporta é rejeitado com um
422antes de qualquer cobrança. Você também pode definirmax_cost_usdcomo teto. - Roteamento. O roteador envia o job para a rota mais barata daquele modelo. Se a rota falhar ou estourar o tempo limite, o job passa para a próxima.
- Um formato de resultado. Consulte
GET /v1/generations/{id}. Quando o status forsucceeded, os arquivos estão emoutput.urlse o valor cobrado está emcost_usd. Se o job falhar, a reserva é liberada.
Os jobs são assíncronos: imagens costumam levar segundos, e vídeo leva de menos de um minuto a vários minutos. A documentação traz a referência completa de campos e os códigos de erro.
A mesma requisição em três modelos
Como o formato de requisição é compartilhado, comparar modelos é um loop. Este script envia um prompt ao Seedance 2.0, ao Veo 3.1 Fast e ao Wan 3.0, e depois imprime cada resultado e seu custo. Cada modelo mantém suas próprias opções, então escolha valores que os três aceitem; aqui são 720p, 8 segundos e 16:9.
import os
import time
import requests
API = "https://api.revana.si/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}
PROMPT = (
"A paper boat sails down a rain-soaked street gutter at dusk, "
"neon signs reflected in the water. Rain, distant traffic."
)
MODELS = ["seedance-2.0", "veo-3.1-fast", "wan-3.0"]
# Submit the same job to every model; each call returns 202 with an id.
jobs = {}
for model in MODELS:
resp = requests.post(f"{API}/generations", headers=HEADERS, json={
"model": model,
"input": {
"prompt": PROMPT,
"resolution": "720p",
"duration": 8,
"aspect_ratio": "16:9",
"audio": True,
},
"max_cost_usd": 1.5,
})
resp.raise_for_status()
jobs[model] = resp.json()["id"]
# Poll each job until it finishes.
for model, job_id in jobs.items():
while True:
job = requests.get(f"{API}/generations/{job_id}", headers=HEADERS).json()
if job["status"] in ("succeeded", "failed"):
break
time.sleep(5)
if job["status"] == "succeeded":
print(model, job["output"]["urls"][0], job["cost_usd"])
else:
print(model, "failed:", job["error"])Nos preços do catálogo de outubro de 2026, os três jobs custam:
| Modelo | Requisição | Preço |
|---|---|---|
| Seedance 2.0 | 720p, 8 s, som incluído na tarifa | $1.20 |
| Veo 3.1 Fast | 720p, 8 s, com som (preço separado) | $0.80 |
| Wan 3.0 | 720p, 8 s, som incluído na tarifa | $0.72 |
O max_cost_usd de 1.5 vale para os três. Um job que custaria mais que o seu teto não é executado.
Fallback entre rotas
Uma rota é uma fonte de capacidade upstream para um modelo. Muitos modelos da Revana têm mais de uma, e o roteador as usa em ordem:
- A mais barata primeiro. Cada job vai para a rota de menor custo que aceita as suas opções.
- A próxima em caso de falha. Se essa rota falhar ou estourar o tempo limite, o job passa automaticamente para a próxima rota. O campo
attemptsmostra quantas foram tentadas. - Mesmo modelo, mesmo preço. Toda rota atende o modelo que você pediu, pelo preço listado. O roteador nunca troca por um modelo diferente.
- Uma só cobrança. Só a rota que dá certo é cobrada. Se todas as rotas falharem, o job termina como
failede não custa nada.
| Modelo | Tipo | Rotas |
|---|---|---|
| Seedance 2.5 | video | cinco rotas |
| Seedance 2.0 | video | três rotas |
| Kling 3.0 | video | duas rotas |
| Veo 3.1 Fast | video | duas rotas |
| Veo 3.1 | video | duas rotas |
| Wan 3.0 | video | três rotas |
| Nano Banana Pro | image | uma rota |
| GPT Image 2 | image | duas rotas |
Um modelo com uma rota não pode fazer fallback. O fallback aumenta a chance de um job ser concluído, mas não é uma garantia de disponibilidade: trate os jobs failed no seu código, por exemplo tentando de novo mais tarde ou trocando você mesmo para outro modelo.
Preços e créditos
A Revana é pay as you go. Não há assinatura, assentos nem mínimo mensal: você compra crédito pré-pago em pacotes de $10, $50, $100, $500, $1,000 ou $5,000 e o gasta em qualquer modelo pelo preço listado.
- A maioria dos modelos de vídeo tem preço por segundo de saída, por resolução e, em alguns modelos, conforme o som esteja ligado ou não.
- Os modelos de imagem têm preço por imagem, por tamanho.
- O preço é reservado quando você envia, cobrado quando o job dá certo e liberado quando ele falha.
A página de preços lista os preços de cada modelo. Nossos guias mostram quanto custam trabalhos comuns no Seedance 2.0, no Veo 3.1 e no Kling 3.0.
Leia o catálogo em código
O catálogo completo é um arquivo JSON público em https://revana.si/data/models.json. Os principais campos de cada modelo:
| Campo | O que contém |
|---|---|
id | a string a enviar como model |
name, maker | nome de exibição e a empresa que faz o modelo |
kind | video or image |
tasks | o que o modelo aceita, como text_to_video ou image_to_video |
options | resoluções, proporções, durações, som e o limite de imagens de entrada |
price | a unidade (por segundo, por imagem ou por job) e o preço de cada opção |
routes | quantas rotas atendem o modelo |
Por exemplo, para listar todos os modelos que podem fazer um vídeo a partir de texto:
# Every model that can make a video from a text prompt
curl -s https://revana.si/data/models.json \
| jq -r '.models[] | select(any(.tasks[]; . == "text_to_video")) | .id'Use-o para criar um seletor de modelos, conferir as opções antes de enviar ou estimar o preço de um job na sua própria interface. Os mesmos dados alimentam a página de modelos.
O que saber antes de migrar
- As opções variam por modelo. Os nomes dos campos são compartilhados, mas cada modelo aceita seus próprios valores. O Kling 3.0, por exemplo, não lista opção de proporção. Confira a página do modelo antes de mudar a string de
model. - Os links de saída expiram. Baixe os arquivos finalizados e guarde-os no seu próprio armazenamento.
- O modelo é escolha sua. O roteamento muda onde um job roda, nunca qual modelo o executa. Recorrer a um modelo diferente é uma decisão do seu código.
- Os preços podem mudar. O catálogo sempre mostra os preços atuais, e o preço de cada job é fixado quando você o envia.
Pronto para testar? Obtenha uma chave de API, veja os modelos ou comece pelo início rápido.
Perguntas frequentes
Existe uma API para todos os modelos de vídeo com IA?
A Revana oferece uma chave de API, um formato de requisição e um saldo pré-pago para os principais modelos de vídeo e imagem, incluindo Seedance, Veo, Kling, Wan, Hailuo, Grok Imagine, Nano Banana e GPT Image. Cada modelo mantém suas próprias opções e seu próprio preço.
Em que a Revana se parece com a OpenRouter?
A OpenRouter oferece aos desenvolvedores uma API para muitos modelos de linguagem. A Revana faz o mesmo para modelos de geração de vídeo e imagem: uma chave, um saldo e roteamento entre várias fontes de capacidade para o mesmo modelo.
O que acontece quando uma rota upstream falha?
Se o modelo tem mais de uma rota, o roteador passa o job para a próxima rota pelo mesmo preço listado. Se todas as rotas falharem, o job termina como falho e o valor reservado é liberado.
A Revana troca por outro modelo se o meu estiver indisponível?
Não. O roteador muda a rota, nunca o modelo. Se você quiser recorrer a outro modelo, faça isso no seu código, enviando uma nova requisição com outro id de modelo.
Como funciona a cobrança?
Você compra crédito pré-pago em pacotes de $10 a $5,000, sem assinatura. Cada job tem o preço definido pelo catálogo, é reservado quando você envia e só é cobrado se der certo.
Como obtenho a lista de modelos e preços em código?
Busque https://revana.si/data/models.json. Ele lista cada modelo com seu id, criador, tarefas, opções, preços e número de rotas.
Uma chave para o catálogo inteiro
Crie uma chave, adicione crédito pré-pago e chame qualquer modelo de vídeo ou imagem com a mesma requisição.