APIs de imagens GPT Image 2 e Gemini
Gere imagens com o GPT Image 2 pela API Images compatível com OpenAI ou com Nano Banana Pro e Nano Banana 2 pela API nativa Gemini.
Esta página reúne dois contratos independentes de API para geração de imagens. Ambos usam a mesma chave API e os mesmos Credits da Modelflare, mas os formatos de pedido e resposta não são intercambiáveis.
- gpt-image-2 usa os contratos compatíveis com OpenAI /v1/images/generations e /v1/images/edits.
- gemini-3-pro-image e gemini-3.1-flash-image usam o contrato nativo Gemini generateContent.
Escolha a família de modelos antes de copiar um exemplo e não misture campos Gemini e GPT Images.
1. GPT Image 2 — Images API compatível com OpenAI
Gere PNGs ou edite imagens de referência por URL pública ou upload local com gpt-image-2 pela Images API compatível com OpenAI. Cada pedido devolve uma imagem e suporta qualidade média ou alta, URL assinado de curta duração ou base64 e SSE opcional.
Escolher endpoint e modo
- Use https://origin.modelflare.dev/v1 para JSON síncrono que possa demorar vários minutos.
- Use https://modelflare.dev/v1 com stream=true para pedidos longos via Cloudflare; heartbeats SSE mantêm a ligação até a imagem final ficar pronta.
- Não redirecione um POST em curso entre hosts.
Pedido síncrono
curl https://origin.modelflare.dev/v1/images/generations \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","prompt":"Uma cabana tranquila junto ao lago ao amanhecer","n":1,"quality":"medium","size":"1024x1024","response_format":"url","output_format":"png"}'
A resposta URL contém um link privado assinado do Modelflare que expira em uma hora. Use response_format=b64_json para receber o PNG validado sem persistir um objeto de saída.
A página ativa de Modelos e preços mostra preços medium e high para tamanhos comuns. A cobrança usa a qualidade e as dimensões exatas solicitadas, sem multiplicadores normais de grupos de roteamento, e registra o valor final nos logs de uso.
Editar uma imagem de referência
Envie um ou mais URLs HTTP(S) de imagem acessíveis publicamente para POST /v1/images/edits. Cada item de images contém exatamente um image_url:
curl https://origin.modelflare.dev/v1/images/edits \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","prompt":"Troque o fundo por um estúdio fotográfico branco e limpo","images":[{"image_url":"https://example.com/input.png"}],"size":"2048x2048","response_format":"url"}'
Também pode enviar um ficheiro PNG, JPEG ou WebP local com multipart/form-data:
curl https://origin.modelflare.dev/v1/images/edits \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-F "model=gpt-image-2" \
-F "prompt=Troque o fundo por um estúdio fotográfico branco e limpo" \
-F "image=@/path/to/input.png" \
-F "size=2048x2048" \
-F "response_format=url"
O pedido multipart deve conter exatamente um ficheiro de imagem e ter no máximo 20 MiB no total. O URL de referência ou o ficheiro enviado é transmitido ao fornecedor upstream selecionado; o URL deve permanecer acessível durante a obtenção. O Modelflare não conserva nenhuma referência como recurso de saída da API.
Pedido SSE
curl -N https://modelflare.dev/v1/images/generations \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","prompt":"Um gato branco corre por uma rua de néon sob a chuva","n":1,"quality":"high","size":"1024x1024","response_format":"url","stream":true}'
Os comentários SSE são apenas heartbeats. Termine após image_generation.completed e data: [DONE].
São aceites model, prompt, n=1, quality=medium|high, WIDTHxHEIGHT válido, response_format=url|b64_json, output_format=png e stream opcional. /v1/images/edits aceita um array images não vazio com um image_url HTTP(S) público por item, ou exatamente um PNG, JPEG ou WebP válido no campo multipart image. A geração rejeita referências; vários ficheiros, entradas data/base64, máscaras, input_fidelity, variações, imagens parciais e campos desconhecidos são rejeitados. Credits reservados para pedidos falhados são devolvidos pelo caminho de reembolso idempotente por Request ID.
Use uma API Key normal. Keys fixadas a um canal são rejeitadas e uma Key com limites de modelo deve incluir gpt-image-2.
2. Gemini Image — API nativa Gemini
Use Nano Banana Pro ou Nano Banana 2 no formato nativo Gemini. Estes modelos não usam /v1/images/generations.
Endpoint e pedidos longos
- Síncrono: POST https://modelflare.dev/v1beta/models/{model}:generateContent.
- Recomendado para imagens: POST https://modelflare.dev/v1beta/models/{model}:streamGenerateContent?alt=sse.
- origin.modelflare.dev não expõe /v1beta. Use o domínio principal e prefira streaming para tarefas longas.
Pedido por streaming
Este exemplo usa Nano Banana 2. Troque o modelo no URL por gemini-3-pro-image para usar Nano Banana Pro.
curl -N "https://modelflare.dev/v1beta/models/gemini-3.1-flash-image:streamGenerateContent?alt=sse" \
-H "x-goog-api-key: YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"role": "user",
"parts": [{"text": "Create a clean blue circle centered on a white background. No text."}]
}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {"aspectRatio": "1:1", "imageSize": "1K"}
}
}'
Contrato de resposta
Cada evento SSE data: contém JSON nativo Gemini. A imagem final em base64 está em candidates[].content.parts[].inlineData.data e o MIME em inlineData.mimeType. Também podem surgir partes de texto. Termine em finishReason=STOP ou quando o stream fechar; image_generation.completed não é usado aqui.
Modelos, resoluções e preços estimados
| Modelo | Resolução | Preço estimado por imagem |
|---|---|---|
| Nano Banana Pro | 1K / 2K | US$0.06720 |
| Nano Banana Pro | 4K | US$0.12000 |
| Nano Banana 2 | 0.5K | US$0.02241 |
| Nano Banana 2 | 1K | US$0.03360 |
| Nano Banana 2 | 2K | US$0.05040 |
| Nano Banana 2 | 4K | US$0.07560 |
Use K maiúsculo em imageSize. Estes são preços estimados por imagem; o valor final pode variar ligeiramente conforme o pedido e fica registado nos logs de utilização.
Use uma chave API normal da Modelflare via x-goog-api-key. Ela deve poder usar o grupo gemini-image e incluir o modelo escolhido quando houver limites de modelo.