API Aberta

GPT Image API

Chame o gpt-image-2 pela API do LMU AI compatível com OpenAI Images para geração de texto para imagem, edição de imagem, parâmetros, salvamento em Base64, consulta de modelos e correção de erros.

O LMU AI fornece uma API compatível com OpenAI Images para texto para imagem e edição de imagem / imagem para imagem usando gpt-image-2.

Base URL

SDK da OpenAI:

https://api.lmuai.com/v1

Ao escrever requisições HTTP manualmente, use os endpoints completos:

POST https://api.lmuai.com/v1/images/generations
POST https://api.lmuai.com/v1/images/edits

1. Visão geral da API

MétodoCaminhoContent-TypeDescrição
GET/v1/modelsConsulta os modelos disponíveis para sua chave de API atual
POST/v1/images/generationsapplication/jsonTexto para imagem GPT, resposta síncrona
POST/v1/images/editsmultipart/form-dataEdição de imagem / imagem para imagem GPT, resposta síncrona

Ainda não há API de lote com múltiplos itens para GPT

O /v1/images/batches atualmente suporta apenas Gemini e não pode aceitar gpt-image-2. Para gerar múltiplas imagens GPT, faça o cliente enviar as requisições uma de cada vez e gerencie a concorrência e o RPM por conta própria.

O ambiente de produção também não tem nenhum endpoint de job de imagem assíncrono habilitado no momento, então dependa das duas APIs síncronas desta página.

2. Autenticação

Authorization: Bearer YOUR_API_KEY

Não coloque sua chave de API em código front-end de navegador, repositórios públicos, strings de query de URL ou logs. Recomendamos chamar a partir do seu próprio servidor.

3. Consultar modelos

curl https://api.lmuai.com/v1/models \
  -H "Authorization: Bearer YOUR_API_KEY"

Procure o modelo de imagem em data[].id na resposta, por exemplo:

{
  "object": "list",
  "data": [
    {"id": "gpt-image-2", "object": "model"}
  ]
}

A lista de modelos é determinada pelo grupo ao qual sua chave de API pertence. Chaves de API diferentes no mesmo site podem retornar modelos diferentes.

4. Texto para imagem

POST /v1/images/generations

curl https://api.lmuai.com/v1/images/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "A red ceramic mug, centered on a light-gray studio background, soft side lighting, no text",
    "n": 1,
    "size": "1024x1024",
    "quality": "low",
    "output_format": "png"
  }'

SDK Python

from openai import OpenAI
import base64

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.lmuai.com/v1",
)

result = client.images.generate(
    model="gpt-image-2",
    prompt="A red ceramic mug, light-gray studio background, soft side lighting, no text",
    size="1024x1024",
    quality="low",
)

item = result.data[0]

if item.b64_json:
    with open("gpt-output.png", "wb") as f:
        f.write(base64.b64decode(item.b64_json))
elif item.url:
    print(item.url)
else:
    raise RuntimeError("No valid image in the response")

JavaScript

import OpenAI from "openai";
import fs from "node:fs";

const client = new OpenAI({
  apiKey: process.env.LMU_API_KEY,
  baseURL: "https://api.lmuai.com/v1",
});

const result = await client.images.generate({
  model: "gpt-image-2",
  prompt: "A red ceramic mug, light-gray studio background, soft side lighting, no text",
  size: "1024x1024",
  quality: "low",
  output_format: "png",
});

const item = result.data?.[0];
if (item?.b64_json) {
  fs.writeFileSync("gpt-output.png", Buffer.from(item.b64_json, "base64"));
} else if (item?.url) {
  console.log(item.url);
} else {
  throw new Error("No valid image in the response");
}

5. Parâmetros de texto para imagem

CampoTipoObrigatórioDescrição
modelstringRecomendadoAtualmente gpt-image-2
promptstringSimDescrição da imagem
nintegerNãoNúmero de imagens; o intervalo disponível é determinado pelo modelo e pelo canal upstream
sizestringNãoTamanho solicitado, ex.: 1024x1024; as dimensões reais em pixels seguem a imagem retornada
qualitystringNãoNível de qualidade, ex.: low, medium, high; sujeito às capacidades do modelo
backgroundstringNãoConfiguração de fundo, ex.: fundo transparente; sujeito às capacidades do modelo
output_formatstringNãopng, jpeg, webp, etc.; sujeito às capacidades do modelo
output_compressionintegerNãoQualidade de compressão para formatos como JPEG / WebP
response_formatstringNãoParâmetro de compatibilidade de formato de resposta; os clientes ainda devem verificar tanto b64_json quanto url
moderationstringNãoParâmetro de moderação de conteúdo; sujeito às capacidades do modelo
streambooleanNãoAlternância para respostas de imagem em streaming; para chamadas normais no servidor, recomendamos não usar streaming
partial_imagesintegerNãoNúmero de imagens parciais em cenários de streaming; sujeito às capacidades do modelo

size não é um recorte garantido

Diferentes contas upstream e backends de imagem podem mapear ou normalizar o size de acordo com suas capacidades. Mesmo que você solicite 1024x1024, os pixels reais da imagem podem diferir. Quando precisar de uma proporção ou tamanho de pixel fixo, leia as dimensões do arquivo de saída e recorte ou redimensione do seu lado.

6. Edição de imagem / imagem para imagem

POST /v1/images/edits

A edição de imagem GPT usa multipart/form-data:

curl https://api.lmuai.com/v1/images/edits \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "model=gpt-image-2" \
  -F "prompt=Keep the mug's shape, composition, and lighting; change the mug from red to green; no text" \
  -F "image=@./input.png" \
  -F "size=1024x1024" \
  -F "quality=low" \
  -F "output_format=png"

SDK Python:

from openai import OpenAI
import base64

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.lmuai.com/v1",
)

with open("input.png", "rb") as image_file:
    result = client.images.edit(
        model="gpt-image-2",
        image=image_file,
        prompt="Keep the subject and composition; change the background to a neon street on a rainy night",
        size="1024x1024",
        quality="low",
    )

item = result.data[0]
if item.b64_json:
    with open("gpt-edited.png", "wb") as f:
        f.write(base64.b64decode(item.b64_json))

Se o modelo e o canal suportarem edição com máscara, você pode adicionar:

-F "mask=@./mask.png"

O endpoint de edits também aceita parâmetros como input_fidelity, background, output_format e output_compression; o efeito exato depende das capacidades do modelo.

7. Formato da resposta

Uma resposta de imagem GPT típica:

{
  "created": 1760000000,
  "data": [
    {
      "b64_json": "iVBORw0KGgoAAA..."
    }
  ],
  "background": "opaque",
  "output_format": "png",
  "quality": "low",
  "size": "1024x1024",
  "model": "gpt-image-2",
  "usage": {
    "input_tokens": 48,
    "output_tokens": 186,
    "total_tokens": 234
  }
}

Os clientes devem realizar três níveis de validação:

  1. Se o código de status HTTP é 2xx;
  2. Se data é um array não vazio;
  3. Se existe um b64_json ou url não vazio em data[].

Quando você recebe HTTP 200 mas nenhum campo de imagem válido, trate como uma falha em nível de negócio.

8. Erros comuns

HTTPCausa comumAção recomendada
400Corpo da requisição, formato de imagem, parâmetro ou modelo inválidosVerifique o JSON / multipart, os nomes dos campos e o ID do modelo
401Chave de API inválidaVerifique o header Bearer e não adicione espaços ao redor da chave
403O grupo ao qual sua chave de API pertence não tem geração de imagem habilitadaContate o administrador para verificar as permissões de imagem do grupo
404Caminho errado, ou a API de imagem não é suportada para o grupo atualConfirme que você está usando /v1/images/generations ou /v1/images/edits
429Limites de concorrência, RPM ou cota upstreamUse backoff exponencial e reduza a concorrência e o RPM
5xxO upstream ou o relay da API está temporariamente indisponívelRegistre o ID da requisição e tente novamente um número limitado de vezes

Ao solucionar problemas, salve o ID da requisição dos headers da resposta e forneça-o ao administrador; não envie sua chave de API completa.

9. Diferenças em relação a outras APIs de imagem

NecessidadeDocumento recomendado
Texto para imagem nativo do Gemini, imagem para imagem, 1K / 2K / 4KGemini Image API
Texto para imagem e edição GPTEsta página
Texto para imagem e edição GrokGrok Image API
Enviar múltiplos prompts do Gemini de uma vezGemini Batch Image API

Última atualização:

Nesta página