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

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.