O serviço de edição de imagens da OpenAI permite enviar qualquer número de imagens e instruções para obter imagens modificadas. Atualmente, a API suporta os modelosDocumentation Index
Fetch the complete documentation index at: https://docs.xhuoapi.ai/llms.txt
Use this file to discover all available pages before exploring further.
dall-e-2, gpt-image-1, o mais recente gpt-image-2, bem como a série de modelos nano-banana / nano-banana-2 / nano-banana-pro acessados pela mesma interface.
Este documento apresenta principalmente o fluxo de uso da OpenAI Images Edits API, que facilita o uso da funcionalidade oficial de edição de imagens da OpenAI.
Processo de Solicitação
Para usar a OpenAI Images Edits API, primeiro acesse a página OpenAI Images Edits API e clique no botão “Acquire” para obter as credenciais necessárias para a requisição:
Se você ainda não estiver logado ou registrado, será redirecionado automaticamente para a página de login para se registrar e entrar. Após o login ou registro, você será redirecionado de volta para esta página.
Na primeira solicitação, há uma cota gratuita concedida, permitindo o uso gratuito da API.
Modelo GPT-Image-2
Ogpt-image-2 apresenta melhorias significativas em relação ao gpt-image-1 no cenário de edição de imagens:
- Manutenção mais estável da estrutura: ao trocar a pele, cores ou fundo, quase não há destruição do layout e composição da imagem original.
- Preservação mais precisa do texto: imagens com texto, como infográficos, pôsteres e menus, mantêm o texto claro e legível após a edição.
- Suporte a URL direta: além do tradicional upload de arquivo via
multipart/form-data, ogpt-image-2também suporta passar URLs de imagens via JSON, sem necessidade de baixar a imagem localmente, ideal para integração em pipelines de servidor. - Suporte a redesenho em alta resolução: é possível enviar uma imagem original 1K e, via parâmetro
size, solicitar saída em 2K / 4K; o modelo realiza o redimensionamento durante a edição.
Valores suportados para size e faixas de cobrança
As restrições para size na API de edição são as mesmas da API de geração — gpt-image-2 aceita size como auto, vazio ou no formato WIDTHxHEIGHT; qualquer outro formato retorna erro 400. A cobrança é dividida em duas faixas, independentemente da resolução da imagem original, considerando apenas o valor solicitado em size:
- Preço padrão 1K: qualquer tamanho recomendado 1K da tabela abaixo, ou apelidos comuns 1K do upstream (
1254x1254,1672x941,941x1672). - Outras faixas (1.5×): inclui os presets 2K / 4K da tabela e quaisquer dimensões personalizadas
WIDTHxHEIGHT.
| Proporção | 1K (Preço padrão) | 2K recomendado (×1.5) | 4K recomendado (×1.5) |
|---|---|---|---|
| 1:1 | 1024x1024 | 2048x2048 | 2880x2880 |
| 4:3 | 1536x1024 | 2048x1536 | 3264x2448 |
| 3:4 | 1024x1536 | 1536x2048 | 2448x3264 |
| 16:9 | 1792x1024 | 2048x1152 | 3840x2160 |
| 9:16 | 1024x1792 | 1152x2048 | 2160x3840 |
Por exemplo: se a imagem original for1024x1024e osizefor2048x2048, o modelo redesenha e gera uma imagem 2K, cobrando na faixa “outras”; sesizefor3840x2160, gera uma imagem 4K horizontal, também na faixa “outras”; sesizeforautoou omitido, cobra na faixa padrão 1K.
Sobre o parâmetroA seguir, apresentamos dois exemplos reais para demonstrar as capacidades de edição donAtualmente, a API de ediçãogpt-image-2não suportan > 1: esse parâmetro é silenciosamente ignorado, e independentemente den=1oun=10, apenas uma imagem será retornada e cobrada por requisição. Se desejar múltiplas imagens candidatas, faça múltiplas requisições concorrentes. Essa restrição também vale paragpt-image-1/gpt-image-1.5e para a sérienano-banana. Odall-e-2é o único modelo de edição que suporta nativamenten > 1.
gpt-image-2.
Modo de chamada 1: JSON + URL da imagem (recomendado)
Envie a requisição comContent-Type: application/json, preenchendo o campo image com a URL da imagem; o modelo buscará a imagem e a editará conforme o prompt.
Por exemplo, esta imagem original foi gerada pelo gpt-image-2 como um infográfico científico:


Dica: o campoimagetambém aceita um array, por exemplo"image": ["url1", "url2", "url3"], com até 16 imagens de referência para que o modelo faça uma edição considerando múltiplas imagens.
Modo de chamada 2: JSON + múltiplas imagens de referência
Ogpt-image-2 suporta múltiplas imagens de referência para gerar o resultado final, por exemplo, combinando várias fotos de produtos em uma cesta de presente:
Exemplo de cenário: trocar estilo mantendo estrutura
Outro exemplo: substituir uma estante de madeira por uma prateleira flutuante moderna, mantendo rigorosamente a quantidade e disposição dos livros em cada prateleira. Imagem original (estante de madeira gerada pelogpt-image-2):

task_id: e9544dba-727e-44a2-81e1-223d49869380):

Modo de chamada 3: multipart/form-data (compatível com OpenAI SDK)
Se você já usa o SDK oficial OpenAI Python, o método tradicional de upload viamultipart/form-data também funciona, basta alterar o model para gpt-image-2:
OPENAI_BASE_URL para https://api.xhuoapi.ai/v1/openai e OPENAI_API_KEY para o token obtido:
Série Nano Banana
A sérienano-banana também está integrada ao endpoint /openai/images/edits; basta alterar o model para qualquer um da tabela abaixo.
| Modelo | Cobrança (Créditos / chamada) | Cenário de uso |
|---|---|---|
nano-banana | 0.14 | Edição comum, mais rápido e barato |
nano-banana-2 | 0.28 | Qualidade e detalhes significativamente melhores |
nano-banana-pro | 0.35 | Topo da linha, melhor preservação de estrutura, texto e estilo |
Importante: parâmetros suportados Nano Banana usa uma camada adaptadora para aderir ao protocolo OpenAI, suportando apenas os parâmetros:model,prompt,image.
imagepode ser enviado via uploadmultipart/form-data(internamente convertido paradata:<mime>;base64,...para o upstream) ou como URL via campo de formulário.- Não suporta
mask,n,size,response_formatetc.; esses parâmetros serão ignorados.- A estrutura de retorno segue o formato OpenAI (
data[].url), mascreatedé sempre0, não retornab64_json, erevised_prompté sempre igual aopromptoriginal.
Chamada via formulário + URL da imagem

Chamada via formulário + arquivo local
Callback assíncrono
O mecanismo de callback assíncrono viacallback_url também funciona para nano-banana, seguindo o mesmo fluxo dos outros modelos, conforme detalhado na seção Callback assíncrono.
Uso básico
A seguir, um exemplo de chamada via CURL:authorization (selecionado na lista suspensa), model (modelo OpenAI a usar; aqui temos 1 modelo principal, consulte os modelos disponíveis), prompt (texto que descreve a imagem a ser gerada) e image (caminho da imagem a ser editada, conforme a imagem abaixo):

OPENAI_BASE_URL para https://api.xhuoapi.ai/v1/openai e OPENAI_API_KEY para o token obtido:
gift-basket.png será gerada no diretório atual, conforme resultado abaixo:

dall-e-2, gpt-image-1 e gpt-image-2, sendo o gpt-image-2 o modelo recomendado, conforme a seção Modelo GPT-Image-2.
Callback assíncrono
Como a edição de imagens pode levar algum tempo, a API OpenAI Images Edits oferece suporte a callbacks assíncronos para evitar que a conexão HTTP fique aberta por muito tempo, consumindo recursos. O fluxo é: o cliente envia a requisição incluindo o campocallback_url; a API responde imediatamente com um task_id identificando a tarefa; quando a edição termina, o resultado é enviado via POST JSON para o callback_url informado, incluindo o task_id para associação.
Exemplo prático:
Um webhook é um serviço HTTP que recebe requisições; substitua pelo URL do seu servidor HTTP. Para demonstração, usamos o site público https://webhook.site/, que gera um URL de webhook, como mostrado:
Copie o URL, por exemplo https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab.
Configure o campo callback_url com esse URL e envie a requisição:
task_id permite associar o resultado à tarefa, e o campo data contém o resultado da edição, igual à chamada síncrona.
Tratamento de erros
Ao chamar a API, se ocorrer erro, a API retorna código e mensagem correspondentes. Exemplos:400 token_mismatched: Requisição inválida, possivelmente parâmetros ausentes ou inválidos.400 api_not_implemented: Requisição inválida, possivelmente parâmetros ausentes ou inválidos.401 invalid_token: Não autorizado, token de autorização inválido ou ausente.429 too_many_requests: Muitas requisições, limite de taxa excedido.500 api_error: Erro interno do servidor.

