Comment utiliser l’API GPT Image 2.5
Tutoriel pas à pas sur l’API GPT Image 2.5 avec Node.js, Python et cURL : envoyer une tâche texte en image, l’interroger ou recevoir un webhook, puis télécharger le image. L’exemple ci-dessous coûte $0,013.
- Points de terminaison
- 2
- Texte en image · Retouche d’image
- Exemple de requête
- $0,013
- Texte en image
- Langages
- 3
- Node.js · Python · cURL
- Générations échouées
- $0
- remboursées automatiquement
Obtenir une clé API
Créez un compte, ajoutez des crédits, puis créez une clé dans Tableau de bord → Clés API. Enregistrez-la sous CHEAPERGEN_API_KEY sur votre serveur. Chaque requête la transmet comme jeton Bearer.
Choisissez un point de terminaison GPT Image 2.5
Chaque tâche a son propre point de terminaison. Tous acceptent un corps JSON et renvoient une génération que vous pouvez interroger.
| Tâche | Point de terminaison | Obligatoire | À partir de |
|---|---|---|---|
| Texte en image | openai/gpt-image-2.5/text-to-image | prompt | $0,0061 par image |
| Retouche d’image | openai/gpt-image-2.5/edit | prompt, image_urls | $0,0061 par image |
Envoyer une tâche texte en image
Ce programme envoie la tâche, interroge son état toutes les 3 secondes jusqu’à sa fin et affiche l’URL image. Remplacez le prompt et les paramètres par les vôtres.
const API = "https://cheapergen.com/api/v1";
const headers = {
Authorization: `Bearer ${process.env.CHEAPERGEN_API_KEY}`,
"Content-Type": "application/json",
};
// 1. Submit the job
let job = await fetch(`${API}/run/openai/gpt-image-2.5/text-to-image`, {
method: "POST",
headers,
body: JSON.stringify({
"prompt": "Affiche pour une soirée jazz intitulée « BLUE HOUR », silhouette de saxophone, tons bleu profond et laiton, typographie épurée",
"aspect_ratio": "1:1",
"resolution": "1K",
"quality": "medium"
}),
}).then((r) => r.json());
// 2. Poll until it finishes (or pass webhook_url and skip polling)
while (job.status === "queued" || job.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
job = await fetch(`${API}/generations/${job.id}`, { headers }).then((r) => r.json());
}
console.log(job.status === "succeeded" ? job.output.images[0].url : job.error);Définissez les paramètres importants
Les paramètres de openai/gpt-image-2.5/text-to-image, avec l’incidence de chacun sur le prix.
| Paramètre | Type · valeur par défaut | Description | Effet sur le prix |
|---|---|---|---|
| aspect_ratio | string (enum) · 1:1 | Format de l’image de sortie. 1:1 · 3:2 · 2:3 · 4:3 · 3:4 · 5:4 · 4:5 · 16:9 · 9:16 · 21:9 · 9:21 | Oui |
| resolution | string (enum) · 1K | Palier de taille de sortie : 1K (≈1 MP), 2K (≈4 MP) ou 4K (≈8 MP, expérimental). 1K · 2K · 4K | 1K: $0,0061 par image 2K: $0,0114 par image |
| quality | string (enum) · medium | Niveau d’effort de rendu. Une qualité supérieure utilise davantage de jetons de sortie et coûte plus cher ; xhigh et max conviennent aux ressources finales. low · medium · high · xhigh · max | Low: $0,0061 par image Medium: $0,0126 par image Élevée: $0,0492 par image |
Les autres points de terminaison GPT Image 2.5 suivent la même structure, avec leurs propres entrées :
POST /api/v1/run/openai/gpt-image-2.5/edit
{
"prompt": "Conservez exactement le produit et son étiquette ; remplacez l’arrière-plan par un fond de studio blanc cassé et ajoutez une ombre naturelle.",
"image_urls": [
"https://cdn.cheapergen.com/samples/portrait.jpg"
],
"aspect_ratio": "1:1",
"resolution": "1K",
"quality": "medium"
}Récupérer le résultat
Une tâche passe de queued à running, puis à succeeded, failed ou canceled. Interrogez GET /api/v1/generations/{id}, ou indiquez webhook_url pour que nous vous envoyions le résultat par POST. Téléchargez le résultat et stockez-le vous-même.
{
"id": "gen_8c2QmX1nq0k4",
"object": "generation",
"model": "openai/gpt-image-2.5",
"endpoint": "openai/gpt-image-2.5/text-to-image",
"mode": "text-to-image",
"status": "succeeded",
"input": {
"prompt": "Affiche pour une soirée jazz intitulée « BLUE HOUR », silhouette de saxophone, tons bleu profond et laiton, typographie épurée",
"aspect_ratio": "1:1",
"resolution": "1K",
"quality": "medium"
},
"output": {
"images": [
{
"url": "https://cdn.cheapergen.com/outputs/gen_8c2Q-0.png",
"content_type": "image/png",
"width": 2048,
"height": 2048
}
]
},
"error": null,
"cost": {
"amount_usd": 0.2255,
"currency": "usd",
"estimated": false,
"official_usd": 0.264,
"list_price_source": "official",
"list_price_label": "Official",
"saved_usd": 0.0385
},
"source": "api",
"created_at": "2026-10-15T09:21:04Z",
"started_at": "2026-10-15T09:21:06Z",
"completed_at": "2026-10-15T09:22:31Z"
}Calculer le prix avant le lancement
Le point de terminaison de devis est gratuit et ne nécessite pas de clé. Il renvoie le prix, le prix officiel et votre remise pour exactement les paramètres que vous envoyez.
curl -X POST https://cheapergen.com/api/v1/quote/openai/gpt-image-2.5/text-to-image \
-H "Content-Type: application/json" \
-d '{"prompt":"Affiche pour une soirée jazz intitulée « BLUE HOUR », silhouette de saxophone, tons bleu profond et laiton, typographie épurée","aspect_ratio":"1:1","resolution":"1K","quality":"medium"}'| État | Code | Signification |
|---|---|---|
| 400 | invalid_request | Un paramètre manque ou dépasse les limites autorisées ; le message indique lequel. |
| 401 | unauthorized | Clé API manquante, mal formée ou révoquée. |
| 402 | insufficient_balance | Crédits insuffisants pour le prix indiqué ; rechargez votre solde ou activez la recharge automatique. |
| 429 | rate_limited | Trop de requêtes ou de générations en cours ; attendez un peu avant de réessayer. |
| 502 | upstream_error | Une erreur s’est produite pendant la génération ; le montant réservé est remboursé et vous pouvez réessayer. |
| 503 | model_unavailable | Aucune capacité n’est disponible pour le moment ; réessayez plus tard ou choisissez un autre modèle. |
FAQ
