Claude Opus 5.5 est disponible sur SeedRouter
SeedRouter Docs

GPT Image 2

Générez des images, retouchez des références et appliquez des masques via un point de terminaison d'images asynchrone unique.

View Markdown

GPT Image 2 accepte un prompt textuel et, en option, des images de référence. Soumettez une fois, conservez l'identifiant de tâche renvoyé et interrogez cette tâche pour obtenir les images terminées. Il est proposé sur deux canaux, chacun avec son propre ID de modèle ; les deux lisent les mêmes paramètres.

ID de modèle

ID de modèleCanalFacturation
gpt-image-2StandardUn prix fixe par image livrée, quelles que soient la taille et la qualité
gpt-image-2-officialOfficialLes tokens déclarés à chaque rendu (entrée texte et sortie image)

Les deux ID acceptent les mêmes paramètres et prennent en charge tous les modes ; seule la facturation diffère. Consultez la page du modèle pour les prix actuels. Les exemples ci-dessous utilisent gpt-image-2 ; remplacez-le par gpt-image-2-official pour une facturation au token.

Exemple rapide

curl https://api.seedrouter.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "An amber glass bottle on a cream background, studio lighting",
    "size": "1024x1024",
    "quality": "low"
  }'

Point de terminaison

POST https://api.seedrouter.ai/v1/images/generations
En-têteValeur
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

Le même point de terminaison gère la génération, les retouches par référence et les retouches masquées. La réponse contient un identifiant de tâche, pas l'image terminée. Conservez les clés API dans du code côté serveur.

Paramètres

NomTypeRequisPar défautRemarques
modelstringOui—gpt-image-2 ou gpt-image-2-official
promptstringOui—Non vide ; jusqu'à 32 000 caractères.
imagesobject[]Non—1 à 16 objets de la forme {"image_url":"https://..."} ; fournir images sélectionne la retouche.
maskobjectNon—{"image_url":"https://..."} ; nécessite images.
sizestringNonautoauto ou WIDTHxHEIGHT, sous réserve des règles ci-dessous.
qualityenumNonautoauto, low, medium, high.
backgroundenumNonautoauto, opaque, transparent.
output_formatenumNonpngpng, jpeg.
output_compressionintegerNon100 pour JPEG0 à 100 ; à envoyer uniquement avec jpeg. Zéro est valide.
nintegerNon11 à 10 images.
moderationenumNonautoauto, low.
userstringNon—Identifiant facultatif de l'utilisateur final de votre application. Évitez les données personnelles.

Règles de taille

Les valeurs courantes sont 1024x1024, 1536x1024 et 1024x1536. Les dimensions personnalisées doivent respecter toutes les règles :

  • La largeur et la hauteur sont des multiples de 16.
  • Aucun côté ne dépasse 3840 pixels.
  • Le rapport d'aspect est compris entre 1:3 et 3:1.
  • La surface totale est comprise entre 655 360 et 8 294 400 pixels, bornes incluses.

auto laisse les dimensions de sortie au modèle. N'envoyez pas de rapports d'aspect tels que 16:9 comme size.

Le Playground propose les commandes Auto, Ratio et Personnalisé. Le mode Ratio combine un rapport d'aspect avec un budget de pixels prédéfini en 1K, 2K ou 4K, puis n'envoie que la size obtenue. Ce sont des préréglages d'interface, pas des paramètres d'API distincts : n'envoyez ni resolution ni aspect_ratio. Par exemple, 16:9 + 4K envoie size: "3840x2160" ; 9:16 + 4K envoie "2160x3840" ; 1:1 + 2K envoie "2048x2048". L'arrondi et la limite de côté peuvent réduire le nombre de pixels d'un palier sélectionné. Les dimensions exactes sont affichées avant la soumission.

OpenAI qualifie d'expérimentales les résolutions supérieures à 2560×1440. Elles sont acceptées dans les limites ci-dessus ; une résolution plus élevée ne garantit pas de meilleurs détails.

Paliers de qualité

Utilisez low pour les brouillons et comparez les résultats avant de choisir un palier supérieur. auto laisse le modèle choisir ; cela ne garantit ni un palier ni un coût particulier.

Arrière-plans transparents

La transparence est en préversion pour GPT Image 2. Pour un arrière-plan transparent, définissez background: "transparent" et utilisez PNG. JPEG ne prend pas en charge la transparence. La compression ne s'applique qu'à JPEG.

user est disponible pour les intégrations d'API mais n'est ni affiché ni renseigné automatiquement dans le Playground.

Les réglages scalaires facultatifs (n, size, quality, background, output_format, output_compression, moderation) acceptent null comme omission. Les champs inconnus sont rejetés. input_fidelity n'est pas configurable pour GPT Image 2 ; les entrées de référence utilisent toujours une haute fidélité. style et response_format appartiennent à d'autres modèles d'images et ne sont pas acceptés ici.

Modes

Il n'existe ni paramètre de mode distinct ni point de terminaison de retouche à choisir.

OpérationParamètres
Texte vers imageprompt
Retouche par référenceprompt + images
Retouche masquéeprompt + images + mask

Retoucher des images de référence

curl https://api.seedrouter.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "Make the bottle blue. Preserve the composition and lighting.",
    "images": [{"image_url": "https://example.com/reference.png"}],
    "mask": {"image_url": "https://example.com/mask.png"},
    "output_format": "jpeg",
    "output_compression": 90
  }'

Remplacez les deux URL d'exemple par vos propres images accessibles. Omettez mask pour une retouche par référence sans zone sélectionnée.

Entrées média

Cette API n'accepte que des références par URL. Les identifiants OpenAI Files, les data URL base64 et les envois multipart ne sont pas acceptés. Le Playground téléverse les fichiers sélectionnés vers le stockage avant d'en soumettre les URL.

Les images de référence doivent être des URL HTTP(S) publiques pointant vers des fichiers PNG, JPEG ou WebP de moins de 50 Mo chacun. Un masque doit être un PNG de moins de 4 Mo, aux mêmes dimensions que la première image de référence ; sa zone transparente indique ce qui doit être retouché. Un masque guide le modèle et ne garantit pas des contours au pixel près. Avec plusieurs références, le masque s'applique à la première image. Les médias référencés par URL sont validés pendant le traitement ; un média invalide ou inaccessible peut faire échouer la tâche.

Le Playground téléverse les fichiers sélectionnés et en soumet les URL. Les requêtes API utilisent des objets URL JSON : n'envoyez pas d'octets de fichier, de base64, d'URL data:, d'URL blob: ni de données de formulaire multipart.

Facteurs de coût

Consultez la section tarifs du modèle pour les tarifs actuels. gpt-image-2 (Standard) facture un prix fixe par image livrée, quels que soient la qualité, la taille ou le prompt. Sur gpt-image-2-official (Official), le coût final dépend de la consommation en entrée et en sortie : qualité, dimensions de sortie, images de référence, longueur du prompt et nombre d'images peuvent tous l'influencer.

L'estimation du Playground s'appuie sur un échantillon mesuré et les tarifs actuels ; ce n'est pas un devis ferme. Consultez les frais définitifs dans l'historique d'utilisation de votre compte. Les tâches échouées ne sont pas facturées.

Schéma de sortie

La soumission renvoie une référence de tâche :

{
  "id": "task_...",
  "model": "gpt-image-2",
  "status": "processing",
  "created_at": 1789970508
}

Interroger la tâche

curl https://api.seedrouter.ai/v1/tasks/YOUR_TASK_ID \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY"

Interrogez à un rythme modéré, par exemple toutes les trois secondes, jusqu'à ce que status vaille completed ou failed. Un dépassement de délai réseau pendant l'interrogation ne signifie pas que la génération a échoué : conservez l'identifiant de tâche et reprenez la vérification. Ne créez pas une autre tâche pour vérifier l'avancement.

Exemple d'interrogation complet

Exécutez ceci après l'exemple de soumission Python ci-dessus. Il utilise le task_id renvoyé et attend jusqu'à dix minutes. Atteindre cette échéance locale ne fait qu'arrêter l'interrogation ; conservez l'identifiant et reprenez la consultation de la même tâche.

import time

print(f"Task ID: {task_id}")
deadline = time.monotonic() + 600
while time.monotonic() < deadline:
    result = requests.get(
        f"https://api.seedrouter.ai/v1/tasks/{task_id}",
        headers={"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"},
        timeout=30,
    )
    result.raise_for_status()
    task = result.json()
    if task["status"] == "completed":
        for image in task["output"]["data"]:
            print(image["url"])
        break
    if task["status"] == "failed":
        raise RuntimeError(task["error"]["message"])
    time.sleep(3)
else:
    raise TimeoutError(f"Still waiting. Resume polling task {task_id}.")

Tâche terminée

Une tâche terminée renvoie les URL des images hébergées ainsi que l'utilisation :

{
  "id": "task_...",
  "model": "gpt-image-2",
  "status": "completed",
  "created_at": 1789970508,
  "finished_at": 1789970538,
  "output": {
    "created": 1789970532,
    "data": [{"url": "https://static.seedrouter.ai/media/tasks/task_example/0.png"}],
    "usage": {
      "input_tokens": 29,
      "output_tokens": 196,
      "total_tokens": 225
    }
  }
}
ChampSignification
idConservez cet identifiant pour les requêtes ultérieures.
statusprocessing, completed ou failed.
created_at, finished_atHorodatages Unix en secondes ; l'heure de fin est absente ou nulle pendant le traitement.
output.data[].urlURL des images générées, disponibles une fois la tâche terminée.
output.sizeDimensions de sortie réelles, lorsque rapportées.
output.qualityPalier de qualité réel, lorsque rapporté.
output.backgroundArrière-plan réel, lorsque rapporté.
output.output_formatFormat d'image réel, lorsque rapporté.
output.usageUtilisation de tokens rapportée, lorsqu'elle est disponible. Les objets de détail peuvent contenir le nombre de tokens de texte et d'image.
errorErreur structurée pour une tâche échouée.

Cette API livre ses résultats de façon asynchrone via des tâches. Ce n'est pas un remplacement d'un SDK Images synchrone ; stream et partial_images ne sont pas pris en charge.

Erreurs

Les requêtes rejetées avant la création d'une tâche renvoient une erreur HTTP accompagnée d'un objet error. Une tâche qui échoue après acceptation renvoie HTTP 200 à l'interrogation, avec status: "failed" et un objet error.

Voir le catalogue d'erreurs commun pour les codes, les statuts HTTP et les conseils de reprise. Toutes les API de modèles utilisent la même enveloppe d'erreur.

{
  "id": "task_...",
  "status": "failed",
  "error": {
    "code": 60002,
    "message": "Generation could not be completed. Please try again."
  }
}

Si la soumission elle-même dépasse le délai, vérifiez votre historique de tâches avant de soumettre à nouveau : la première requête a peut-être déjà été acceptée.

Conseils

  • Décrivez les matières, la composition et la lumière dans le prompt.
  • Pour une retouche, précisez à la fois le changement souhaité et ce qui doit rester inchangé.
  • Utilisez un masque lorsque seule une zone sélectionnée doit changer.
  • Enregistrez les images renvoyées dans votre propre stockage si vous avez besoin d'une copie durable.

Ressources liées