API Images GPT Image 2 et Gemini
Générez des images avec GPT Image 2 via l’API Images compatible OpenAI ou avec Nano Banana Pro et Nano Banana 2 via l’API Gemini native.
Cette page réunit deux contrats d’API indépendants pour la génération d’images. Ils partagent la clé API et les Credits Modelflare, mais leurs formats de requête et de réponse ne sont pas interchangeables.
- gpt-image-2 utilise les contrats compatibles OpenAI /v1/images/generations et /v1/images/edits.
- gemini-3-pro-image et gemini-3.1-flash-image utilisent le contrat Gemini natif generateContent.
Choisissez la famille de modèles avant de copier un exemple et ne mélangez pas les champs Gemini et GPT Images.
1. GPT Image 2 — API Images compatible OpenAI
Générez des PNG ou modifiez des images de référence fournies par URL publique ou import local avec gpt-image-2 via l’API Images compatible OpenAI. Chaque requête renvoie une image et accepte la qualité moyenne ou haute, une URL signée temporaire ou base64, et SSE en option.
Choisir le point d’accès et le mode
- Utilisez https://origin.modelflare.dev/v1 pour le JSON synchrone pouvant durer plusieurs minutes.
- Utilisez https://modelflare.dev/v1 avec stream=true pour les longues requêtes via Cloudflare ; des heartbeats SSE maintiennent la connexion jusqu’à l’image finale.
- Ne redirigez pas un POST en cours entre les hôtes.
Requête synchrone
curl https://origin.modelflare.dev/v1/images/generations \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","prompt":"Une cabane paisible au bord d’un lac à l’aube","n":1,"quality":"medium","size":"1024x1024","response_format":"url","output_format":"png"}'
La réponse URL contient un lien privé signé Modelflare valable une heure. Utilisez response_format=b64_json pour recevoir directement le PNG validé sans conserver d’objet de sortie API.
La page Modèles et tarifs en direct affiche les tarifs medium et high pour les tailles courantes. La facturation utilise la qualité et les dimensions exactes demandées, sans multiplicateur de groupe de routage standard, et inscrit le montant final dans les journaux d’utilisation.
Modifier une image de référence
Envoyez une ou plusieurs URL d’image HTTP(S) accessibles publiquement à POST /v1/images/edits. Chaque élément de images contient exactement un image_url :
curl https://origin.modelflare.dev/v1/images/edits \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","prompt":"Remplace l’arrière-plan par un studio photo blanc et propre","images":[{"image_url":"https://example.com/input.png"}],"size":"2048x2048","response_format":"url"}'
Vous pouvez aussi importer un fichier PNG, JPEG ou WebP local avec multipart/form-data :
curl https://origin.modelflare.dev/v1/images/edits \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-F "model=gpt-image-2" \
-F "prompt=Remplace l’arrière-plan par un studio photo blanc et propre" \
-F "image=@/path/to/input.png" \
-F "size=2048x2048" \
-F "response_format=url"
La requête multipart doit contenir exactement un fichier image et ne pas dépasser 20 Mio au total. L’URL de référence ou le fichier importé est envoyé au fournisseur upstream sélectionné ; l’URL doit rester accessible pendant sa récupération. Modelflare ne conserve aucune de ces références comme ressource de sortie API.
Requête SSE
curl -N https://modelflare.dev/v1/images/generations \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","prompt":"Un chat blanc court dans une rue au néon sous la pluie","n":1,"quality":"high","size":"1024x1024","response_format":"url","stream":true}'
Les commentaires SSE sont uniquement des heartbeats. Arrêtez après image_generation.completed et data: [DONE].
Sont pris en charge : model, prompt, n=1, quality=medium|high, un WIDTHxHEIGHT valide, response_format=url|b64_json, output_format=png et stream facultatif. /v1/images/edits accepte soit un tableau images non vide avec un image_url HTTP(S) public par élément, soit exactement un fichier PNG, JPEG ou WebP valide dans le champ multipart image. La génération refuse les références ; plusieurs fichiers, les entrées data/base64, masques, input_fidelity, variations, images partielles et champs inconnus sont refusés. Les Credits réservés pour une requête échouée sont restitués par le remboursement idempotent lié au Request ID.
Utilisez une clé API normale. Les clés épinglées à un canal sont refusées et une clé limitée par modèle doit inclure gpt-image-2.
2. Gemini Image — API Gemini native
Utilisez Nano Banana Pro ou Nano Banana 2 avec le format Gemini natif. Ces modèles n’utilisent pas /v1/images/generations.
Endpoint et requêtes longues
- Synchrone : POST https://modelflare.dev/v1beta/models/{model}:generateContent.
- Recommandé pour les images : POST https://modelflare.dev/v1beta/models/{model}:streamGenerateContent?alt=sse.
- origin.modelflare.dev n’expose pas /v1beta. Utilisez le domaine principal et privilégiez le streaming pour les tâches longues.
Requête en streaming
Cet exemple utilise Nano Banana 2. Remplacez le modèle dans l’URL par gemini-3-pro-image pour utiliser Nano Banana Pro.
curl -N "https://modelflare.dev/v1beta/models/gemini-3.1-flash-image:streamGenerateContent?alt=sse" \
-H "x-goog-api-key: YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"role": "user",
"parts": [{"text": "Create a clean blue circle centered on a white background. No text."}]
}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {"aspectRatio": "1:1", "imageSize": "1K"}
}
}'
Contrat de réponse
Chaque événement SSE data: contient du JSON Gemini natif. L’image finale en base64 se trouve dans candidates[].content.parts[].inlineData.data et son MIME dans inlineData.mimeType. Du texte peut aussi être présent. Terminez à finishReason=STOP ou à la fermeture du flux ; image_generation.completed n’est pas utilisé ici.
Modèles, résolutions et prix estimés
| Modèle | Résolution | Prix estimé par image |
|---|---|---|
| Nano Banana Pro | 1K / 2K | US$0.06720 |
| Nano Banana Pro | 4K | US$0.12000 |
| Nano Banana 2 | 0.5K | US$0.02241 |
| Nano Banana 2 | 1K | US$0.03360 |
| Nano Banana 2 | 2K | US$0.05040 |
| Nano Banana 2 | 4K | US$0.07560 |
Utilisez un K majuscule dans imageSize. Ces prix sont estimés par image ; le montant final peut varier légèrement selon la requête et est enregistré dans les journaux d’utilisation.
Utilisez une clé API Modelflare normale via x-goog-api-key. Elle doit accéder au groupe gemini-image et inclure le modèle choisi si elle limite les modèles.