Skip to Content
Referência da APIProtocolo compatível com OpenAIImages

Images API

Dois endpoints: geração (texto → imagem) e edição (imagem + texto → imagem). Ambas as respostas seguem a estrutura padrão da OpenAI em data[0].b64_json.

O que você deseja fazerEndpointModelos suportados
Gerar uma imagem a partir de textoPOST /v1/images/generationsFamílias GPT Image, Nano Banana (Gemini), Seedream, Qwen-Image e MAI Image
Enviar uma imagem e editá-la com uma instruçãoPOST /v1/images/editsGPT Image, Nano Banana (Gemini), MAI Image

Seedream e Qwen-Image não suportam /v1/images/edits; a geração de imagem a partir de imagem passa pelo endpoint generations, mas o campo da imagem de referência é diferente: Seedream usa image e Qwen usa input_images. Cuidado para não trocá-los. Para controlar a resolução do Gemini (de 512 a 4K), use o protocolo nativo do Gemini. As diferenças de parâmetros de cada família estão na página da família correspondente.

Início rápido

Uma requisição mínima executável: gera uma imagem de 1024×1024, decodifica e salva como output.png.

base_urlhttps://api.ofox.io/v1
Endpoint de geraçãohttps://api.ofox.io/v1/images/generations
Endpoint de ediçãohttps://api.ofox.io/v1/images/edits
ID do modeloopenai/gpt-image-2.5-flare
gen.py
import base64 from openai import OpenAI client = OpenAI( api_key="YOUR_OFOX_API_KEY", base_url="https://api.ofox.io/v1", timeout=600, # a API de imagens é síncrona e pode demorar ) resp = client.images.generate( model="openai/gpt-image-2.5-flare", prompt="Uma maçã vermelha sobre uma mesa branca", size="1024x1024", quality="low", ) with open("output.png", "wb") as f: f.write(base64.b64decode(resp.data[0].b64_json))

A API é síncrona: defina o timeout do cliente como 600 segundos. Requisições de alta qualidade, de tamanho grande e de edição podem levar vários minutos; consulte a latência medida.

Todas as famílias são chamadas da mesma forma; para trocar de modelo, basta alterar model. Os valores aceitos e os parâmetros exclusivos variam; consulte a descrição de cada parâmetro abaixo.

Gerar imagens

POST https://api.ofox.io/v1/images/generations

Parâmetros da requisição

Os valores e padrões abaixo se aplicam à família GPT Image (gpt-image-2.5-flare, gpt-image-2.5-sunburst, gpt-image-2). Quando outras famílias diferem, isso é indicado separadamente. Detalhes medidos: família GPT Image.

Obrigatórios
modelobrigatóriostring

ID do modelo; diferencia maiúsculas de minúsculas: um ID incorreto retorna 404 model_not_found.

▸ Detalhes

Os modelos suportados estão listados na tabela no início desta página. Use o ID completo com o prefixo do fornecedor, por exemplo openai/gpt-image-2.5-flare.

promptobrigatóriostring

Descreve a imagem a ser gerada.

Comuns
sizestring· padrão auto· valoresLARGURAxALTURAauto

Tamanho de saída. Largura e altura podem ser personalizadas, mas precisam atender a quatro regras; caso contrário, retorna 400 Invalid size.

▸ Detalhes

As quatro regras:

  • Largura e altura divisíveis por 16
  • Lado maior ≤ 3840
  • Proporção entre 1:3 e 3:1
  • Total de pixels ≥ 655.360 (768x768 é inválido, 1024x768 é válido)

Se omitido ou auto, o modelo decide; em nossas medições, o resultado foi 1254×1254. Informe o tamanho explicitamente se precisar de um tamanho fixo. As regras de tamanho das outras famílias são diferentes; consulte a página da família correspondente. Detalhes: GPT Image · tamanho.

qualitystring· valoreslowmediumhighxhighmaxauto

Nível de qualidade; afeta diretamente o preço. gpt-image-2 não tem xhigh / max.

▸ Detalhes
  • gpt-image-2 não tem xhigh / max: enviá-los retorna 400.
  • Os valores da era DALL·E standard / hd não são aceitos: enviá-los retorna 400.
  • Omiti-lo não equivale a medium: o modelo escolhe o nível por conta própria (em nossas medições, low). Para qualidade e custo estáveis, defina-o explicitamente.

A maioria das outras famílias não tem níveis; consulte a página da família correspondente. Detalhes: GPT Image · qualidade.

ninteger· padrão 1· valores1–10

Número de imagens; cada uma é cobrada separadamente. Não é suportado pelos modelos Gemini: não o envie.

output_formatstring· padrão png· valorespngjpegwebp

Formato do arquivo de saída.

▶Avançados · 7output_compression · background · moderation · stream · partial_images · input_images · extra_body.provider.typeExpand
output_compressioninteger· valores0–100

Nível de compressão; só tem efeito em jpeg / webp.

backgroundstring· padrão opaque· valoresopaquetransparentauto

Fundo. transparent exige um formato com canal alfa (png / webp).

moderationstring· valoresautolow

Rigor da moderação de conteúdo.

streamboolean· valorestruefalse

Retorna a resposta em streaming. Com partial_images, você recebe imagens intermediárias durante a geração.

partial_imagesinteger· valores0–3

Número de imagens intermediárias em streaming; requer stream: true. Segundo a documentação oficial da OpenAI, cada imagem intermediária adiciona 100 tokens de saída.

input_imagesstring[]· valores1–3 imagens

Array de imagens de referência (URL ou base64), suportado somente pela família Qwen, de 1 a 3 imagens.

▸ Detalhes

Nas demais famílias, o campo não gera erro, mas também não tem efeito; na Seedream, o campo da imagem de referência é image.

extra_body.provider.typestring· valoresazure_foundryopenai

Seleciona um provedor. É opcional e normalmente desnecessário: o gateway faz o roteamento automaticamente. Considere-o quando houver requisitos de moderação de conteúdo; depois que um provedor é selecionado, as requisições não recorrem a outro provedor se ele estiver indisponível.

▸ Detalhes

O cabeçalho X-OfoxAI-Provider-Type é equivalente. Consulte Avançado: fixar um provedor.

Resposta

200 OK (b64_json truncado)
{ "created": 1777385517, "data": [ { "b64_json": "iVBORw0KGgoAAAANSUhEUgAA…", "index": 0 } ], "model": "openai/gpt-image-2.5-flare", "size": "1024x1024", "quality": "low", "usage": { "input_tokens": 13, "input_tokens_details": { "text_tokens": 13 }, "output_tokens": 196, "output_tokens_details": { "image_tokens": 196 }, "total_tokens": 209 } }

A imagem em base64, sem o prefixo data:image/png;base64,.

▸ Detalhes

Decodifique-a e grave o arquivo; para exibi-la em um navegador, adicione o prefixo por conta própria. A resposta não tem o campo url.

Índice da imagem; distingue as imagens quando n > 1.

sizestring

Tamanho real de saída. Quando size foi omitido ou era auto, consulte aqui o tamanho real.

qualitystring

Nível de qualidade efetivamente utilizado. Quando quality foi omitido, este campo confirma qual nível foi usado.

Fundo e formato efetivamente utilizados. Nem sempre são retornados: não dependa desses dois campos.

usageobject

Uso para cobrança. output_tokens corresponde aos tokens da imagem de saída; input_tokens_details.text_tokens, aos tokens do prompt.

▸ Detalhes

Calcule o custo de cada chamada a partir desses números.

Editar imagens

POST https://api.ofox.io/v1/images/edits

Este endpoint suporta GPT Image, Nano Banana (Gemini) e MAI Image. Chamadas com Seedream e Qwen-Image retornam 400 endpoint_not_supported; use o campo de imagem de referência do endpoint de geração, conforme Seedream e Qwen-Image.

Parâmetros da requisição

Enviados como campos de formulário multipart/form-data, com o upload de um arquivo de imagem. Os valores e padrões também se aplicam à família GPT Image.

Obrigatórios
modelobrigatóriostringform

ID do modelo; mesmas regras do endpoint de geração. Os modelos suportados estão listados na tabela no início desta página.

imageobrigatóriofileform· valoresPNGJPEG

Imagem de referência como arquivo local (prefixo @ no cURL), não como URL.

▸ Detalhes

Para enviar várias, repita o campo como image[]. ≤ 15 MB por arquivo, ≤ 50 MB para o corpo da requisição; o gateway não impõe limite adicional de quantidade, mas recomenda-se no máximo 16 imagens.

promptobrigatóriostringform

Instrução de edição.

Comuns
maskfileform· valoresPNG (com alfa)

Máscara de inpainting: um PNG com canal alfa, do mesmo tamanho que image; área transparente = a parte a ser repintada.

▸ Detalhes

Só tem efeito neste endpoint: no endpoint de geração, é ignorada silenciosamente. Como criá-la e o efeito medido: GPT Image · inpainting com máscara.

sizestringform· padrão auto· valoresLARGURAxALTURAauto

Tamanho de saída; mesmas regras do endpoint de geração.

▸ Detalhes

Se omitido ou auto, o modelo decide: não há garantia de que corresponda à imagem original. Para manter o tamanho original, informe-o explicitamente.

qualitystringform· valoreslowmediumhighxhighmaxauto

Nível de qualidade; mesmas regras do endpoint de geração: gpt-image-2 não tem xhigh / max.

nintegerform· padrão 1· valores1–10

Número de imagens; cada uma é cobrada separadamente.

▶Avançados · 1X-OfoxAI-Provider-TypeExpand
X-OfoxAI-Provider-Typestringheader· valoresazure_foundryopenai

Seleciona um provedor. É opcional e normalmente desnecessário: o gateway faz o roteamento automaticamente. Considere-o quando houver requisitos de moderação de conteúdo; depois que um provedor é selecionado, as requisições não recorrem a outro provedor se ele estiver indisponível.

▸ Detalhes

Este endpoint é um upload multipart; para fixar um provedor, só o cabeçalho funciona: um campo de formulário extra_body é ignorado silenciosamente. Consulte Avançado: fixar um provedor.

Resposta

Mesma estrutura do endpoint de geração; usage inclui também os tokens de entrada das imagens de referência:

200 OK (b64_json truncado)
{ "created": 1777385669, "data": [ { "b64_json": "iVBORw0KGgoAAAANSUhEUgAA…", "index": 0 } ], "model": "openai/gpt-image-2", "size": "auto", "quality": "low", "usage": { "input_tokens": 1041, "input_tokens_details": { "image_tokens": 1024, "text_tokens": 17 }, "num_input_images": 1, "output_tokens": 358, "total_tokens": 1399 } }

Tokens de entrada correspondentes às imagens de referência. Em nossas medições, uma imagem de referência de 1024×1024 conta 1.024. É principalmente por isso que uma edição custa mais que uma geração de texto para imagem do mesmo tamanho.

Número de imagens de referência. Use-o para confirmar que o modelo realmente leu as imagens de referência.

Os demais campos são iguais aos da resposta do endpoint de geração.

Consulte os modelos suportados e os preços no catálogo de modelos .

Chamada

edit.py
import base64 from openai import OpenAI client = OpenAI(api_key="YOUR_OFOX_API_KEY", base_url="https://api.ofox.io/v1", timeout=600) with open("apple.png", "rb") as f: resp = client.images.edit( model="openai/gpt-image-2", image=f, prompt="Deixe a maçã verde e mantenha todo o resto igual", size="auto", quality="low", ) with open("apple_edited.png", "wb") as out: out.write(base64.b64decode(resp.data[0].b64_json))

O campo image recebe um caminho de arquivo local (com o prefixo @ no cURL), não uma URL.

Comparação medida:

OriginalEditada
Maçã vermelha originalMaçã verde editada

Erros

Em caso de erro, a API retorna um status HTTP de erro e a estrutura abaixo (medido):

400 Bad Request
{ "error": { "code": null, "message": "The model 'gpt-image-2' does not support quality 'xhigh'.", "param": null, "request_id": "fbe4f24c-779d-41a0-8b3a-c62886cdd1ae", "type": "image_generation_user_error" } }

code pode ser null. Baseie a lógica no status HTTP e em message.

StatusErroCausaSolução
400Invalid size '…'O tamanho não atende às quatro regrasAjuste conforme as regras de size
400does not support quality '…' ou valor inválidoxhigh / max enviado para gpt-image-2, ou standard / hd enviadoUse um valor listado em quality
400Unknown parameter: '…'Campo não suportado, por exemplo style do DALL·ERemova o campo
400Invalid image file or mode for image 1A imagem de referência não é PNG / JPEG, ou a máscara não é um PNG com alfa ou não tem o mesmo tamanho da imagem originalVerifique image e mask
400provider_type_unavailableO provedor indicado não oferece este modeloRemova o parâmetro de provedor e deixe o gateway rotear automaticamente
404model_not_foundID do modelo com erro de digitação ou de maiúsculas/minúsculasCopie o ID completo da tabela desta página
429rate_limit_exceededMais de 100 RPM por equipe; criar mais chaves não aumenta o limiteReduza a concorrência, aguarde e tente novamente

Ao entrar em contato com o suporte, inclua o request_id da resposta e os detalhes do erro (status HTTP e error.message). Recomendamos registrá-los nos seus logs.

Avançado: fixar um provedor

É opcional e normalmente desnecessário. Os três modelos GPT Image (gpt-image-2.5-flare, gpt-image-2.5-sunburst, gpt-image-2) são atendidos por azure_foundry e openai, tanto na geração quanto na edição. Sem indicação, o gateway faz o roteamento automaticamente.

Selecione um provedor quando houver requisitos de moderação de conteúdo. As requisições passam a ir somente para esse provedor; se ele estiver indisponível, elas não recorrem automaticamente a outro provedor.

Indicar um provedor que não oferece o modelo retorna 400 provider_type_unavailable.

ProvedorDescriçãoModeração (gpt-image-2)
azure_foundryHospedado na nuvem da MicrosoftMais rígida
openaiAPI oficial da OpenAIRelativamente permissiva

Os dois provedores de openai/gpt-image-2 aplicam critérios de moderação diferentes. Se um prompt for recusado repetidamente, você pode indicar openai explicitamente. Sem indicação, as requisições são distribuídas de forma ponderada e podem cair em azure_foundry.

Texto para imagem /v1/images/generations

Corpo JSON; funcionam tanto o campo do corpo extra_body.provider.type quanto o cabeçalho X-OfoxAI-Provider-Type.

gen_pinned.py
resp = client.images.generate( model="openai/gpt-image-2", prompt="A simple red apple on a white table", size="1024x1024", extra_body={"extra_body": {"provider": {"type": "openai"}}}, )

Com os SDKs oficiais da OpenAI, extra_body precisa existir como chave literal no corpo da requisição. No SDK de TypeScript, basta escrever extra_body diretamente no objeto de parâmetros. O argumento extra_body= do SDK de Python mescla seu conteúdo no nível superior do corpo; por isso, aninhe-o um nível a mais ou use o cabeçalho.

Imagem para imagem /v1/images/edits

Um upload multipart não tem corpo JSON onde aninhar extra_body; por isso, só é possível usar o cabeçalho.

Terminal
curl https://api.ofox.io/v1/images/edits \ -H "Authorization: Bearer $OFOX_API_KEY" \ -H "X-OfoxAI-Provider-Type: openai" \ -F "model=openai/gpt-image-2" \ -F "prompt=..." \ -F "image=@input.png"

Com os SDKs: em Python, passe extra_headers={"X-OfoxAI-Provider-Type": "openai"}; em TypeScript, passe { headers: { 'X-OfoxAI-Provider-Type': 'openai' } } como segundo argumento.

Em /v1/images/edits, um extra_body enviado como campo de formulário é ignorado silenciosamente: a imagem é gerada normalmente, mas a restrição não tem efeito. Use X-OfoxAI-Provider-Type em vez disso.

Referência completa: API · Roteamento de provedores.

Documentação oficial e mais

A documentação oficial descreve o comportamento das chamadas diretas à OpenAI. Quando ela diverge das medições na OfoxAI, prevalecem as medições deste site.

OpenAI (oficial)

Páginas de família da OfoxAI

Última atualização em