Geração de imagens no OpenRouter: modelos, API e preços
O OpenRouter reúne modelos de imagem do Google, da OpenAI, da Black Forest Labs, da ByteDance e de outras empresas em um único endpoint. Este artigo mostra o formato da requisição, os parâmetros que mudam a qualidade e o custo, a diferença de preço entre os modelos e quando uma plataforma dedicada de imagens se encaixa melhor.
O OpenRouter ficou conhecido como uma porta de entrada para centenas de modelos de texto, e agora faz o mesmo com imagens. Uma conta, uma fatura e um único formato de requisição permitem trocar de modelo de imagem do Google, da OpenAI, da Black Forest Labs, da ByteDance e de outras empresas mudando apenas uma string. Essa praticidade é real, mas alguns detalhes decidem se um recurso de imagem continua barato ou fica caro sem você perceber.
Este artigo percorre a geração de imagens no OpenRouter desde a primeira requisição até a fatura mensal: os modelos que você pode escolher, a chamada exata da API, os parâmetros que mudam a qualidade e uma visão direta do que custa uma imagem. Ele também mostra onde uma plataforma dedicada como o PicassoIA se encaixa quando você prefere controle pelo navegador em vez de código.
O que a geração de imagens do OpenRouter faz
Um endpoint, vários provedores
A geração de imagens no OpenRouter passa por um endpoint dedicado, POST /api/v1/images. Você envia um slug de model e um prompt, e de volta chegam os dados da imagem em base64. Por trás dessa única porta ficam provedores separados, cada um com seu modelo, seus limites e seu preço. O OpenRouter cuida do roteamento, da autenticação e da cobrança, então seu código nunca fala diretamente com esses provedores.
O catálogo é amplo. No momento em que escrevemos, ele inclui modelos de imagem da Google, OpenAI, Black Forest Labs, xAI, ByteDance, Microsoft, Recraft, Krea e Sourceful, e a lista muda com frequência. Filtrar a lista pública de modelos do OpenRouter pela saída de imagem mostra o que está disponível em qualquer dia.
Para quem serve melhor
Um gateway único compensa em algumas situações:
Prototipagem: teste cinco modelos com o mesmo prompt sem abrir cinco contas.
Alternativas de contingência: se um provedor estiver lento ou fora do ar, encaminhe a mesma requisição para outro.
Cobrança unificada: uma fatura em vez de uma por fornecedor.
Pipelines mistos: um app que já envia prompts de texto pelo OpenRouter pode adicionar imagens com o mesmo token.
Ele compensa menos quando você precisa de um editor visual, de uma galeria com resultados anteriores ou de controle manual sobre cada configuração. Isso é trabalho para o navegador, e voltaremos ao assunto perto do fim.
Como chamar o endpoint de imagens
A menor requisição que funciona
Você precisa de uma conta no OpenRouter, de um token secreto com crédito disponível e de um slug de modelo. Guarde o token em uma variável de ambiente. Este artigo a chama de OPENROUTER_TOKEN, mas o nome fica a seu critério.
curl -X POST "https://openrouter.ai/api/v1/images" \
-H "Authorization: Bearer $OPENROUTER_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"model": "bytedance-seed/seedream-4.5",
"prompt": "a red panda astronaut floating in space"
}'
Essa é a requisição inteira. O slug segue o padrão author/model-name, e aqui ele aponta para o Seedream 4.5. Todo o restante é opcional, por isso um primeiro teste leva cerca de dois minutos.
Parâmetros que mudam o resultado
O endpoint de imagens aceita uma longa lista de campos opcionais. Estes são os que mais importam:
Parâmetro
O que controla
Valores de exemplo
resolution
Nível de tamanho da saída
512, 768, 1K, 2K, 4K
aspect_ratio
Formato do quadro
1:1, 16:9, 9:16, 4:3, 3:4
size
Atalho para um nível ou para pixels explícitos
Um nome de nível ou uma largura e altura
quality
Esforço de renderização
auto, low, medium, high
output_format
Tipo de arquivo
png, jpeg, webp, svg
background
Transparência
auto, transparent, opaque
output_compression
Tamanho do arquivo para webp e jpeg
0 a 100
n
Imagens por requisição
1 a 10, onde houver suporte
seed
Saída repetível
Qualquer número inteiro, onde houver suporte
input_references
Imagens de referência para trabalho de imagem para imagem
Uma lista de imagens
stream
Prévias parciais por server-sent events
true ou false
Nem todo modelo aceita todos os campos. Cada modelo tem uma rota de endpoints que lista os parâmetros suportados, os preços e se o streaming funciona, então leia-a antes de depender de uma configuração. O formato de saída svg só faz sentido com modelos capazes de vetor.
O streaming merece uma menção especial. Com stream ativado, o endpoint envia imagens parciais conforme elas se formam, então uma interface pode mostrar uma prévia aproximada em instantes, em vez de um carregamento em branco. As prévias são gratuitas: só a imagem finalizada é cobrada. Se o seu app tem uma tela de espera, essa é a forma mais barata de fazê-la parecer mais rápida.
💡 Dica: Mude uma coisa de cada vez. Se você trocar o modelo e o prompt juntos, não vai saber qual dos dois alterou o resultado. Fixe um seed quando o modelo suportar e varie um único campo por execução.
Lendo a resposta
As imagens chegam como texto base64 dentro de um array data. Cada item traz b64_json, os bytes codificados, e media_type, como image/png ou image/svg+xml. A resposta também inclui um objeto usage, e usage.cost informa quanto aquele trabalho cobrou.
import base64, os, requests
resp = requests.post(
"https://openrouter.ai/api/v1/images",
headers={"Authorization": f"Bearer {os.environ['OPENROUTER_TOKEN']}"},
json={
"model": "bytedance-seed/seedream-4.5",
"prompt": "a ceramic mug on a marble counter, soft window light",
"aspect_ratio": "16:9",
},
timeout=120,
)
resp.raise_for_status()
body = resp.json()
image = body["data"][0]
with open("mug.png", "wb") as f:
f.write(base64.b64decode(image["b64_json"]))
print(image["media_type"], body["usage"]["cost"])
Decodifique os bytes, grave-os em disco ou em armazenamento de objetos e registre usage.cost junto com o prompt que gerou a imagem. Depois de uma semana, esse registro é uma lista de preços mais honesta do que qualquer página de preços.
Trabalhos com imagem levam mais tempo do que chamadas de texto, então defina um timeout generoso no cliente, como o exemplo acima faz com 120 segundos. Um padrão de poucos segundos vai cortar resultados perfeitamente bons.
Modelos que vale testar
Provedores no catálogo
Veja como se alinham os principais provedores, com as páginas dos modelos correspondentes no PicassoIA quando existirem:
Google: a família de imagens do Gemini. O slug google/gemini-2.5-flash-image aparece nos exemplos do próprio OpenRouter, e o mesmo modelo está no PicassoIA como Gemini 2.5 Flash Image.
OpenAI: GPT Image, em que a configuração de qualidade muda muito o preço. Veja o GPT Image 2.
Black Forest Labs: a linha Flux, por exemplo o Flux 2 Pro.
Recraft: modelos amigáveis a vetor que podem retornar SVG, como o Recraft v4.1.
xAI, Microsoft, Krea e Sourceful: Grok Imagine, MAI-Image, os modelos da Krea e o Riverflow, que você vai encontrar sobretudo por meio de gateways como o OpenRouter.
Para puxar a lista atualizada em código, chame a rota de modelos. Para inspecionar os provedores, os parâmetros e os preços de um modelo, acrescente o slug dele e /endpoints:
Os pontos fortes mudam a cada lançamento, então rode seus próprios prompts antes de comprometer um projeto com um modelo. Um teste justo leva cerca de uma hora:
Escreva dez prompts de trabalho real, não exemplos de brincadeira, incluindo dois com texto na imagem e dois com pessoas.
Rode cada prompt pelos mesmos três modelos com valores idênticos de aspect_ratio e resolution.
Registre usage.cost e os segundos que cada trabalho levou.
Avalie os resultados às cegas, com os nomes dos modelos ocultos, e depois divida o custo total pelo número de imagens que você realmente publicaria.
Esse último número, o custo por imagem utilizável, resolve a discussão. Um modelo a US$ 0,02 que precisa de quatro tentativas para acertar custa US$ 0,08 por imagem utilizável, o dobro de um modelo a US$ 0,04 que acerta na primeira.
Quanto custa de fato uma imagem
A diferença de preço
O próprio tutorial do OpenRouter calculou o preço de uma imagem com as configurações padrão em 20 modelos. A faixa foi de US$ 0,006 a US$ 0,134, uma diferença de 22 vezes. Os modelos mais baratos começam por volta de um centavo por imagem. Essa diferença pesa mais na sua fatura do que o tamanho do prompt, as novas tentativas ou qualquer truque engenhoso de cache.
Na prática, a diferença divide os modelos em dois grupos. Os modelos de rascunho, perto de um centavo por imagem, servem para ideias, miniaturas e testes rápidos. Os modelos premium, mais perto do topo da faixa, servem para renderizações finais e imagens de destaque. Muitas equipes usam os dois: rascunho barato, renderização cara.
Três estilos de cobrança
Os modelos não cobram todos do mesmo jeito:
Por imagem: um preço fixo por resultado, qualquer que seja o tamanho.
Por megapixel: o preço cresce com a resolução, então 4K custa mais do que 1K.
Por token: os tokens de entrada e de saída são medidos. Conforme a lista publicada quando isto foi escrito, o GPT-5.4 Image 2 cobra US$ 8,00 por milhão de tokens de entrada e US$ 15,00 por milhão de tokens de saída, com a saída de imagem a US$ 30,00 por milhão de tokens.
A cobrança por token é a mais difícil de prever. O tamanho do prompt, as imagens de referência e a configuração de qualidade alimentam o valor final, então usage.cost é o único número em que vale confiar. Os preços mudam, então confira a página do modelo antes de planejar um orçamento.
Trabalhos que falham não custam nada
A cobrança é tudo ou nada. Uma geração ou termina e é cobrada integralmente, ou falha e não é cobrada. Streams cancelados também não são cobrados, e as prévias parciais que chegam antes de um stream terminar não geram cobranças parciais. Isso torna as novas tentativas mais seguras do que parecem: você paga uma vez pelo resultado que guarda. Ainda assim, trate os erros direito. Verifique o status HTTP, espere antes de tentar de novo um trabalho que falhou e pare após algumas tentativas, para que um prompt ruim não entre em loop para sempre.
Conta de orçamento para 1.000 imagens
Pegue três preços dessa faixa e escale-os:
Preço por imagem
1.000 imagens
10.000 imagens
US$ 0,006
US$ 6
US$ 60
US$ 0,04
US$ 40
US$ 400
US$ 0,134
US$ 134
US$ 1.340
💡 Dica: Inclua a sua taxa de novas tentativas. Se um prompt em cada três precisar de uma segunda tentativa porque o primeiro resultado não acertou, acrescente cerca de um terço ao orçamento. Trabalhos que falham não custam nada, mas os resultados decepcionantes custam.
3 erros que inflam sua fatura
Deixar a qualidade no automático
Com quality definido como auto, o provedor decide quanto esforço gastar. Em modelos cujo preço acompanha a qualidade, um resultado high pode custar muito mais do que um low. Use low enquanto itera um prompt e mude para high apenas na renderização final.
Guardar base64 dentro do banco de dados
Uma imagem de 2K codificada em base64 costuma ter vários megabytes de texto. Salvar essa string em uma linha do banco deixa mais lenta toda consulta que a acessa. Grave o arquivo em armazenamento de objetos, guarde apenas a URL dele no banco e use webp ou jpeg com output_compression quando o tamanho do arquivo importar mais do que o detalhe sem perdas.
Ignorar o roteamento de provedores
Vários provedores podem servir o mesmo modelo, e seus endpoints podem diferir em preço e em parâmetros suportados. Se você nunca define uma preferência, o OpenRouter escolhe por você. Fixe a ordem e decida se as alternativas de contingência são aceitáveis:
{
"model": "google/gemini-2.5-flash-image",
"prompt": "A minimalist logo for a coffee roaster",
"provider": {
"order": ["google-ai-studio", "google-vertex"],
"allow_fallbacks": true
}
}
Desative allow_fallbacks quando precisar de saída e preço idênticos em cada chamada, e deixe ativado quando a disponibilidade importar mais.
Como usar o Seedream 4.5 no PicassoIA
Se preferir pular o código, o mesmo modelo dos exemplos do OpenRouter está disponível no navegador. O Seedream 4.5 cria imagens de até 4K a partir de um prompt de texto, e não há nada para instalar.
Abra a página do modelo do Seedream 4.5 e faça login.
Escreva o prompt com quatro partes: assunto, cenário, luz e lente. Experimente: uma caneca de café de cerâmica sobre um balcão de mármore, luz suave de janela vinda da esquerda, lente de 85mm, profundidade de campo rasa, grão de filme Kodak Portra 400.
Escolha a proporção: 16:9 para cabeçalhos de blog, 1:1 para blocos de produto, 9:16 para posts verticais.
Gere e revise. Mude um detalhe e rode de novo, do mesmo jeito que você mudaria um campo da API.
💡 Dica: Ideias vagas geram prompts fracos. Peça a um modelo de linguagem como o Claude Sonnet 5 ou o Gemini 3.5 Flash para expandir uma ideia de uma linha em um prompt fotográfico detalhado, com luz, lente e textura, e depois cole o resultado no modelo de imagem.
API para desenvolvedores do PicassoIA
O PicassoIA também mantém uma API própria para desenvolvedores, voltada a pipelines e scripts. A URL base é https://api.picassoia.com/v1, e as requisições se autenticam com um bearer token que começa com pia_sk_. O fluxo é assíncrono e vai parecer familiar se você já usou outras APIs de predição: crie um trabalho, consulte o status e depois busque o resultado.
POST /v1/models/{owner}/{name}/predictions cria um trabalho.
GET /v1/predictions/{id} verifica o status e retorna a saída.
POST /v1/predictions/{id}/cancel interrompe um trabalho que ainda está em execução.
GET /v1/predictions lista seus trabalhos recentes.
Para imagens, a API oferece o PicassoIA Image e o PicassoIA Image Editor Pro, além de dois modelos de vídeo. Uma conta pode rodar 5 predições ao mesmo tempo, e os prompts são limitados a 4.000 caracteres. O acesso à API está ligado a planos específicos, então confirme qual deles na página de preços antes de construir algo em cima. O catálogo do navegador é bem maior, com mais de 200 modelos de texto para imagem para testar antes de escolher um para um script.
Crie suas primeiras imagens hoje
A melhor forma de resolver a questão do gateway é rodar um prompt nos dois caminhos. Envie-o pelo endpoint de imagens do OpenRouter, registre usage.cost e depois cole o mesmo texto em uma página de modelo no PicassoIA e compare o visual, a velocidade e o esforço.
Escolha um prompt do seu próprio trabalho: uma foto de produto, um cabeçalho de blog, um retrato para uma landing page. Teste dois ou três modelos no PicassoIA, mude um detalhe por execução e guarde os resultados que você publicaria de fato. Em uma tarde você vai saber qual caminho combina com o seu projeto, e terá imagens reais para mostrar.