API ouverte

API GPT Image

Appelez gpt-image-2 via l'API compatible OpenAI Images de LMU AI pour le texte-vers-image, l'édition d'images, les paramètres, la sauvegarde en Base64, la recherche de modèles et la résolution des erreurs.

LMU AI fournit une API compatible OpenAI Images pour le texte-vers-image et l'édition d'images / image-vers-image à l'aide de gpt-image-2.

URL de base

SDK OpenAI :

https://api.lmuai.com/v1

Lorsque vous écrivez des requêtes HTTP à la main, utilisez les endpoints complets :

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

1. Aperçu de l'API

MéthodeCheminContent-TypeDescription
GET/v1/modelsInterroger les modèles disponibles pour votre clé API actuelle
POST/v1/images/generationsapplication/jsonTexte-vers-image GPT, réponse synchrone
POST/v1/images/editsmultipart/form-dataÉdition d'images / image-vers-image GPT, réponse synchrone

Pas encore d'API par lots multi-éléments pour GPT

/v1/images/batches ne prend actuellement en charge que Gemini et ne peut pas accepter gpt-image-2. Pour générer plusieurs images GPT, faites en sorte que le client envoie les requêtes une à la fois et gérez vous-même la concurrence et le RPM.

L'environnement de production n'a actuellement aucun endpoint de tâche d'image asynchrone activé non plus, alors reposez-vous sur les deux API synchrones de cette page.

2. Authentification

Authorization: Bearer YOUR_API_KEY

Ne mettez pas votre clé API dans le code front-end du navigateur, les dépôts publics, les chaînes de requête d'URL ou les journaux. Nous recommandons d'appeler depuis votre propre serveur.

3. Interroger les modèles

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

Recherchez le modèle d'image dans le data[].id de la réponse, par exemple :

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

La liste des modèles est déterminée par le groupe auquel appartient votre clé API. Différentes clés API sur le même site peuvent renvoyer des modèles différents.

4. Texte-vers-image

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. Paramètres du texte-vers-image

ChampTypeRequisDescription
modelstringRecommandéActuellement gpt-image-2
promptstringOuiDescription de l'image
nintegerNonNombre d'images ; la plage disponible est déterminée par le modèle et le canal en amont
sizestringNonTaille demandée, par ex. 1024x1024 ; les dimensions réelles en pixels suivent l'image renvoyée
qualitystringNonNiveau de qualité, par ex. low, medium, high ; sous réserve des capacités du modèle
backgroundstringNonRéglage de l'arrière-plan, par ex. arrière-plan transparent ; sous réserve des capacités du modèle
output_formatstringNonpng, jpeg, webp, etc. ; sous réserve des capacités du modèle
output_compressionintegerNonQualité de compression pour les formats tels que JPEG / WebP
response_formatstringNonParamètre de compatibilité du format de réponse ; les clients doivent toujours vérifier à la fois b64_json et url
moderationstringNonParamètre de modération de contenu ; sous réserve des capacités du modèle
streambooleanNonBascule pour les réponses d'image en streaming ; pour les appels côté serveur normaux, nous recommandons le non-streaming
partial_imagesintegerNonNombre d'images partielles dans les scénarios de streaming ; sous réserve des capacités du modèle

size n'est pas un recadrage garanti

Différents comptes en amont et backends d'images peuvent mapper ou normaliser size à leurs capacités. Même si vous demandez 1024x1024, les pixels réels de l'image peuvent différer. Lorsque vous avez besoin d'un ratio fixe ou d'une taille en pixels, lisez les dimensions du fichier de sortie et recadrez ou redimensionnez de votre côté.

6. Édition d'images / image-vers-image

POST /v1/images/edits

L'édition d'images GPT utilise 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))

Si le modèle et le canal prennent en charge l'édition avec masque, vous pouvez ajouter :

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

L'endpoint d'édition accepte également des paramètres tels que input_fidelity, background, output_format et output_compression ; l'effet exact dépend des capacités du modèle.

7. Format de réponse

Une réponse d'image GPT typique :

{
  "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
  }
}

Les clients doivent effectuer trois niveaux de validation :

  1. Vérifier si le code de statut HTTP est 2xx ;
  2. Vérifier si data est un tableau non vide ;
  3. Vérifier s'il existe un b64_json ou url non vide dans data[].

Lorsque vous obtenez un HTTP 200 mais aucun champ d'image valide, traitez-le comme un échec au niveau métier.

8. Erreurs courantes

HTTPCause couranteAction recommandée
400Corps de requête, format d'image, paramètre ou modèle incorrectVérifiez le JSON / multipart, les noms de champs et l'ID de modèle
401Clé API invalideVérifiez l'en-tête Bearer et n'ajoutez pas d'espaces autour de la clé
403Le groupe auquel appartient votre clé API n'a pas la génération d'images activéeContactez l'administrateur pour vérifier les permissions d'image du groupe
404Chemin erroné, ou l'API d'image n'est pas prise en charge pour le groupe actuelConfirmez que vous utilisez /v1/images/generations ou /v1/images/edits
429Limites de concurrence, de RPM ou de quota en amontUtilisez un backoff exponentiel et réduisez la concurrence et le RPM
5xxLe relais en amont ou de l'API est temporairement indisponibleEnregistrez l'ID de requête et réessayez un nombre limité de fois

Lors du dépannage, enregistrez l'ID de requête des en-têtes de réponse et fournissez-le à l'administrateur ; n'envoyez pas votre clé API complète.

9. Différences avec les autres API d'image

BesoinDoc recommandée
Texte-vers-image natif Gemini, image-vers-image, 1K / 2K / 4KAPI Gemini Image
Texte-vers-image et édition GPTCette page
Texte-vers-image et édition GrokAPI Grok Image
Soumettre plusieurs prompts Gemini à la foisAPI Gemini Batch Image

Dernière mise à jour :

Sur cette page