OpenAI: GPT Image 2.5 Flare
GPT Image 2.5 Flare génère et retouche des images à partir de texte et de références, en privilégiant la création visuelle quotidienne rapide. Il prend en charge les tailles personnalisées, les fonds transparents, les masques et des niveaux de qualité jusqu’à max pour les ébauches, illustrations et visuels de campagne.
- Ailoot · Génération d’images
POST /v1/images/generationsgpt-image-2.5-flare - Ailoot Ultra · Génération d’images
POST /v1/images/generationsgpt-image-2.5-flare - Ailoot Ultra · Génération d’images
POST /v1/images/generationsopenai/gpt-image-2.5-flare
À propos du modèle
Cette description présente les capacités du modèle. Les entrées, sorties et options disponibles dans Ailoot pour la méthode sélectionnée figurent ci-dessous.
GPT Image 2.5 Flare est l’édition d’OpenAI pour la génération et la retouche d’images destinée au travail quotidien rapide et de qualité. Il accepte du texte et des images et renvoie des images. Utilisez-le pour les ébauches visuelles, illustrations, concepts de produits et tâches créatives récurrentes où une consigne doit devenir rapidement une image exploitable. Flare est distinct de Sunburst, dont le positionnement privilégie la précision des retouches. Choisissez Flare pour la création d’images courante et Sunburst lorsque la priorité est une retouche précise.
Commencez par le sujet principal, l’action, l’environnement, la composition et le traitement visuel. Pour une illustration de campagne, demandez un cycliste traversant un petit pont dans la lumière chaude du soir, avec une silhouette marquée et un ciel dégagé pour ajouter du texte ensuite. Une consigne d’exploration concise peut laisser les choix esthétiques ouverts ; une consigne de production doit nommer les détails et placements importants. Les parcours directs de génération et de retouche autorisent des prompts jusqu’à 32 000 caractères et un à dix résultats, ce qui permet de comparer quelques variantes répondant au même objectif.
Pour une retouche, vous pouvez fournir jusqu’à seize images de référence. Attribuez à chaque référence un rôle clair au lieu d’attendre du modèle qu’il décide si elle représente l’identité du sujet, le décor ou le style. Un masque peut guider une modification dans une zone ; avec plusieurs images, il s’applique à la première. L’image et le masque doivent avoir le même format et les mêmes dimensions, et le masque doit contenir un canal alpha. Le guide exige que la source et le masque soient inférieurs à 50 MB. Un masque est une indication, sans promesse de préserver exactement une frontière : précisez donc la modification souhaitée et ce qui doit rester reconnaissable.
Flare prend en charge les niveaux de qualité low, medium, high, xhigh, max et automatique, avec auto par défaut. Une qualité plus basse peut servir à réaliser rapidement une ébauche ; les réglages supérieurs peuvent être comparés pour les détails d’un livrable final. La qualité est indépendante de la taille et de la compression de sortie. Les tailles standard comprennent 1024 × 1024, 1536 × 1024 et 1024 × 1536, avec des dimensions automatiques ou personnalisées également disponibles. Choisissez l’orientation selon l’emplacement final et l’espace utile de la scène.
La largeur et la hauteur personnalisées doivent être des multiples de seize, aucun côté ne dépassant 3840 pixels. Le rapport autorisé va de 1:3 à 3:1, et la surface totale doit être d’au moins 655 360 et d’au plus 8 294 400 pixels. Les quatre conditions s’appliquent ensemble. Le guide identifie les résolutions supérieures à 2560 × 1440 comme expérimentales. Utilisez un cadre valide adapté à la composition et incluez les détails sensibles au recadrage dans la consigne plutôt que de considérer une résolution plus élevée comme une amélioration automatique de la mise en page.
Le format du résultat est PNG par défaut, avec JPEG et WebP comme alternatives. JPEG et WebP autorisent une compression de 0 à 100. Pour un fond transparent, sélectionnez PNG ou WebP ; les fonds opaques et automatiques sont également pris en charge. Un élément transparent peut être placé dans une mise en page ultérieure, tandis qu’une image opaque inclut son propre fond. Sélectionnez le format, le fond et la compression selon le besoin réel de livraison et conservez le fichier terminé avec la consigne et les réglages choisis.
Le fournisseur documente la génération et la retouche directes, ainsi qu’un outil conversationnel d’image capable de conserver les résultats sélectionnés pour des modifications ultérieures. Dans ce parcours, l’action peut être automatique, une génération imposée ou une retouche imposée lorsqu’une image figure dans le contexte. Le streaming peut afficher jusqu’à trois images partielles avant le résultat final. Ces aperçus montrent la progression et ne sont pas des livrables terminés supplémentaires. Pour un travail itératif, partez de l’image choisie et décrivez un changement visible, par exemple déplacer un objet ou ajuster le traitement des couleurs. L’interface du fabricant prend également en charge le traitement par lots.
Inspectez les inscriptions de l’image, la disposition des objets, les détails du sujet et la composition à la taille prévue. GPT Image peut encore rencontrer des difficultés avec le placement exact du texte, les mises en page structurées et la répétition d’une même identité visuelle entre générations. Gardez une variante acceptée comme référence suivante et limitez la retouche ultérieure au problème qui compte. Le rôle de génération quotidienne de Flare convient à une séquence claire de consigne, variantes visuelles, sélection et affinement, le livrable final étant jugé selon l’objectif créatif réel.
Ailoot · Génération d’images POST /v1/images/generations gpt-image-2.5-flare
gpt-image-2.5-flarePremiers pas
GPT Image 2.5 Flare génère et retouche des images à partir de texte et de références, en privilégiant la création visuelle quotidienne rapide. Il prend en charge les tailles personnalisées, les fonds transparents, les masques et des niveaux de qualité jusqu’à max pour les ébauches, illustrations et visuels de campagne.
- Entrées acceptées
- Texte
- Résultats
- Images
Disponible dans Ailoot · entrées et méthodes
Ailoot · Génération d’images POST /v1/images/generations
- Types d’entrée
text- Types de sortie
image- Format de sortie
- Fichier image
| Champ | Type | Exigence | Valeurs et limites | Par défaut |
|---|---|---|---|---|
Champmodel | Typestring | ExigenceObligatoire | Valeurs et limites gpt-image-2.5-flare | Par défaut— |
Champprompt | Typestring | ExigenceObligatoire | Valeurs et limites Longueur minimale: 1 | Par défaut— |
Champn | Typeinteger | ExigenceFacultatif | Valeurs et limites Minimum: 1 | Par défaut1 |
Champresponse_format | Typestring | ExigenceFacultatif | Valeurs et limites url, b64_json | Par défaut— |
Champstream | Typeboolean | ExigenceFacultatif | Valeurs et limites | Par défautfalse |
Champsize | Typestring | ExigenceFacultatif | Valeurs et limites Selon le modèle | Par défaut— |
Champquality | Typestring | ExigenceFacultatif | Valeurs et limites Selon le modèle | Par défaut— |
Champbackground | Typestring | ExigenceFacultatif | Valeurs et limites Selon le modèle | Par défaut— |
Champoutput_format | Typestring | ExigenceFacultatif | Valeurs et limites Selon le modèle | Par défaut— |
Champoutput_compression | Typeinteger | ExigenceFacultatif | Valeurs et limites Selon le modèle | Par défaut— |
Champmoderation | Typestring | ExigenceFacultatif | Valeurs et limites Selon le modèle | Par défaut— |
Champinput_fidelity | Typestring | ExigenceFacultatif | Valeurs et limites Selon le modèle | Par défaut— |
Champstyle | Typestring | ExigenceFacultatif | Valeurs et limites Selon le modèle | Par défaut— |
Champpartial_images | Typeinteger | ExigenceFacultatif | Valeurs et limites Selon le modèle | Par défaut— |
Combinaisons d’éléments d’entrée
Texte vers image · Obligatoire : prompt
Paramètres et cycle de vie de la méthode
| Paramètre | Contrat |
|---|---|
Paramètrematerial_types | Contrattext |
Paramètrerequired | Contratmodel, prompt |
Paramètreoptional_controls | Contratnull |
Paramètrecontent_type | Contratapplication/json |
Cycle de vie : synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · task_id effectivement renvoyé ou enregistrement de la bibliothèque multimédia
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Les structures des méthodes et les identifiants sont exacts ; la capacité du fournisseur est distincte de l’admission.
Tarifs
Tarifs des méthodes Ailoot
POST /v1/images/generations- Texte en entrée
- 0,005 USD / 1K
- Entrée, image
- 0,008 USD / 1K tokens
- Sortie, image
- 0,03 USD / 1K tokens
Ailoot réserve un montant estimé avant une requête. Après le résultat, le montant final est débité selon l’utilisation mesurée. Pour le streaming, le montant final à débiter est calculé à partir du relevé final d’utilisation. Fonctionnement de la réservation et du débit →
Exemples de requêtes
Ailoot · Génération d’images
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
export AILOOT_API_KEY
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 image brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-image-2.5-flare", "prompt": ""}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin
def save_images(items):
if not items: raise SystemExit("No completed images; retain the full response")
for index, item in enumerate(items):
encoded=item.get("b64_json")
uri=item.get("url", "")
if not encoded and uri.startswith("data:image/"):
header, separator, encoded=uri.partition(",")
if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
if encoded:
raw=base64.b64decode(encoded,validate=True)
elif uri:
uri=urljoin("https://api.ailoot.ai",uri)
parsed=urlsplit(uri)
if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
raise SystemExit("Invalid returned image URL")
owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
args=["curl","--fail-with-body","--silent","--show-error",uri]
if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
temporary=Path(f"image-{index}.bin")
subprocess.run(args+["-o",str(temporary)],check=True)
raw=temporary.read_bytes()
temporary.unlink()
else: raise SystemExit("Image has neither bytes nor URL")
if not raw: raise SystemExit("Empty image result")
ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
Path(f"image-{index}.{ext}").write_bytes(raw)
print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
from openai import OpenAI
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin
def save_images(items):
if not items: raise SystemExit("No completed images; retain the full response")
for index, item in enumerate(items):
encoded=item.get("b64_json")
uri=item.get("url", "")
if not encoded and uri.startswith("data:image/"):
header, separator, encoded=uri.partition(",")
if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
if encoded:
raw=base64.b64decode(encoded,validate=True)
elif uri:
uri=urljoin("https://api.ailoot.ai",uri)
parsed=urlsplit(uri)
if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
raise SystemExit("Invalid returned image URL")
owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
args=["curl","--fail-with-body","--silent","--show-error",uri]
if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
temporary=Path(f"image-{index}.bin")
subprocess.run(args+["-o",str(temporary)],check=True)
raw=temporary.read_bytes()
temporary.unlink()
else: raise SystemExit("Image has neither bytes nor URL")
if not raw: raise SystemExit("Empty image result")
ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
Path(f"image-{index}.{ext}").write_bytes(raw)
print("Every returned image saved; complete response metadata retained")
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Set your actual UTF-8 image brief file")
request={'model': 'gpt-image-2.5-flare', 'prompt': ''}
request["prompt"]=f.read_text(encoding="utf-8")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "gpt-image-2.5-flare", "prompt": ""};
if(!process.env.AILOOT_PROMPT_FILE)throw new Error("Set your actual UTF-8 image brief file");
request.prompt=readFileSync(process.env.AILOOT_PROMPT_FILE,"utf8");
const result=await client.images.generate(request);
writeFileSync("sdk-result.json",JSON.stringify(result,null,2));
if(!result.data?.length) throw new Error("No completed images");
for(let index=0;index<result.data.length;index++) {
const item=result.data[index];let encoded=item.b64_json,uri=item.url||"",raw;
if(!encoded && uri.startsWith("data:image/")) {
const comma=uri.indexOf(",");if(comma<0 || !uri.slice(0,comma).includes(";base64")) throw new Error("Unsupported image data URI");
encoded=uri.slice(comma+1);
}
if(encoded) {
if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error("Invalid Base64");
raw=Buffer.from(encoded,"base64");
} else if(uri) {
const u=new URL(uri,"https://api.ailoot.ai");
if(u.protocol!=="https:" || u.username || u.password) throw new Error("Invalid returned URL");
const owned=u.origin==="https://api.ailoot.ai" && u.pathname.startsWith("/v1/media/assets/") && u.pathname.endsWith("/content");
const response=await fetch(u,{headers:owned?{Authorization:"Bearer "+key}:{},redirect:"manual"});
if(!response.ok) throw new Error("Image content download failed: "+response.status);
raw=Buffer.from(await response.arrayBuffer());
} else throw new Error("Image has neither bytes nor URL");
if(!raw.length) throw new Error("Empty image result");
const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?"png":raw[0]===255&&raw[1]===216?"jpg":raw.toString("ascii",0,4)==="RIFF"&&raw.toString("ascii",8,12)==="WEBP"?"webp":raw.toString("utf8").trimStart().startsWith("<svg")||raw.toString("utf8").trimStart().startsWith("<?xml")?"svg":"bin";
writeFileSync(`image-${index}.${ext}`,raw);
}
console.log("Every returned image saved; sdk-result.json retains complete metadata");
Recevoir et enregistrer les résultats
Ailoot · Génération d’images
Téléchargez chaque image renvoyée ou enregistrez son contenu Base64
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Conserver tous les résultats terminés
Enregistrez chaque image terminée ; récupérez chaque URL renvoyée ou décodez son contenu Base64.
Enregistrez chaque élément de données. Décodez chaque b64_json ou récupérez chaque URL signée renvoyée. Choisissez l’extension du fichier à partir du type MIME et des octets réels.
Si la réponse d’origine doit être vérifiée
Si le résultat d’une génération ou d’une retouche d’image nécessite une vérification, conservez l’operation_id/X-Client-Request-ID d’origine et les informations renvoyées sur le résultat. Récupérez les résultats existants qui vous appartiennent via la bibliothèque multimédia, à l’aide des valeurs task_id ou asset_id réelles. Ne soumettez pas à nouveau la requête de génération/retouche et ne construisez pas d’URL d’interrogation du statut à partir d’operation_id.
Champs de la réponse
| Champ | Type |
|---|---|
Champcreated | Typeinteger |
Champdata[].url | Typestring |
Champdata[].b64_json | Typebase64 string |
Champusage | Typeobject |
Erreurs et étapes suivantes
| Réponse | Condition | Étape suivante |
|---|---|---|
Réponse400 · invalid_request_error | ConditionChamps obligatoires, représentation des contenus ou valeur de paramètre non valides | Étape suivanteCorrigez les champs indiqués avant une nouvelle requête de création. |
Réponseserver_error | ConditionLa réponse renvoyée indique que l’opération ou le résultat nécessite une vérification | Étape suivanteConservez l’identifiant d’opération/de tâche initialement renvoyé, les en-têtes de la requête et la réponse ; poursuivez les lectures prises en charge de cette opération d’origine. Ne soumettez pas à nouveau la requête de création. |
Alias
Alias du modèle
Ailoot gpt-image-2.5-flare
Ailoot Ultra gpt-image-2.5-flare, openai/gpt-image-2.5-flare
Alias des chemins de méthode
/v1/images
ID d’appel associés
openai/gpt-image-2.5-flare, gpt-image-2.5-flare, gpt-image-2.5-flare
Ailoot Ultra · Génération d’images POST /v1/images/generations gpt-image-2.5-flare
gpt-image-2.5-flaregpt-image-2.5-flareopenai/gpt-image-2.5-flare
Premiers pas
GPT Image 2.5 Flare génère et retouche des images à partir de texte et de références, en privilégiant la création visuelle quotidienne rapide. Il prend en charge les tailles personnalisées, les fonds transparents, les masques et des niveaux de qualité jusqu’à max pour les ébauches, illustrations et visuels de campagne.
- Entrées acceptées
- Texte
- Résultats
- Images
Disponible dans Ailoot · entrées et méthodes
Ailoot Ultra · Génération d’images POST /v1/images/generations
- Types d’entrée
text- Types de sortie
image
| Champ | Type | Exigence | Valeurs et limites | Par défaut |
|---|---|---|---|---|
Champmodel | Typestring | ExigenceObligatoire | Valeurs et limites gpt-image-2.5-flare | Par défaut— |
Champprompt | Typestring | ExigenceObligatoire | Valeurs et limites Longueur maximale: 32 000 | Par défaut— |
Champsize | Typestring | ExigenceFacultatif | Valeurs et limites Conditions: Utilisez auto ou WIDTHxHEIGHT avec les deux dimensions divisibles par 16. Le côté le plus long mesure au plus 3,840 pixels et la taille totale au plus 8,300,000 pixels. | Par défautauto |
Champbackground | Typestring | ExigenceFacultatif | Valeurs et limites transparent, opaque, auto | Par défautauto |
Champmoderation | Typestring | ExigenceFacultatif | Valeurs et limites low, auto Conditions: Utilisez auto pour la modération standard du contenu. | Par défaut— |
Champn | Typeinteger | ExigenceFacultatif | Valeurs et limites Minimum: 1 Maximum: 10 | Par défaut1 |
Champquality | Typestring | ExigenceFacultatif | Valeurs et limites auto, high, medium, low | Par défautauto |
Champoutput_compression | Typeinteger | ExigenceFacultatif | Valeurs et limites Minimum: 0 Maximum: 100 Conditions: S’applique aux sorties JPEG et WebP ; envoyez la valeur entière documentée. | Par défaut100 |
Champoutput_format | Typestring | ExigenceFacultatif | Valeurs et limites webp, png, jpeg | Par défautpng |
Champstream | Typeboolean | ExigenceFacultatif | Valeurs et limites false Conditions: Cette route renvoie une seule réponse JSON complète. | Par défautfalse |
Paramètres et cycle de vie de la méthode
| Paramètre | Contrat |
|---|---|
Paramètrecontent_type | Contratapplication/json |
Paramètrerequired | Contratprompt, model |
Paramètrematerial_types | Contrattext |
Paramètreoptional | Contratsize, background, moderation, n, quality, output_compression, output_format, stream |
Paramètreconditions | ContratUn arrière-plan transparent nécessite PNG ou WebP., La compression de sortie s’applique à JPEG ou WebP., La méthode sélectionnée génère à partir de texte. Les commandes d’édition et de diffusion en continu décrites pour le fabricant sont des fonctionnalités distinctes. |
Cycle de vie : synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · task_id effectivement renvoyé ou enregistrement de la bibliothèque multimédia
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Tarifs
Calcul du coût final
Les tarifs affichés servent à estimer le coût avant la génération. Le montant final est calculé à partir du coût enregistré pour la génération d’origine. La durée mesurée du résultat et les quantités prévisionnelles ne constituent pas la quantité finale facturable.
Les tarifs n’ajoutent pas d’options de requête. Les paramètres pris en charge figurent dans la méthode sélectionnée.
- Mode rapide
- Non précisé Lorsque le mode rapide est sélectionné
- Mode Flex
- Non précisé Lorsque le mode flex est sélectionné
- Effort de raisonnement maximal
- Non précisé Lorsque l’effort de raisonnement maximal utilise l’ajustement par défaut (default)
Tarifs estimés à des fins de comparaison
Prix par configuration
Associez chaque coût aux conditions indiquées. Utilisez un seul tarif pour chaque ensemble de configurations alternatives.
| Configuration | Barème tarifaire | Quantité prévisionnelle | Coût |
|---|---|---|---|
| ConfigurationTarifs de base par jeton | Barème tarifaireTarif de base | Quantité prévisionnelle— | Coût Entrée · Tokens en entrée · Estimation à des fins de comparaison uniquement — / 1K tokens Sortie · Tokens en sortie · Estimation à des fins de comparaison uniquement — / 1K tokens Entrée · Lecture du cache · Estimation à des fins de comparaison uniquement — / 1K tokens Entrée · Écriture dans le cache · Estimation à des fins de comparaison uniquement — / 1K tokens Entrée · Écriture dans le cache, 1 h · Estimation à des fins de comparaison uniquement — / 1K tokens |
| ConfigurationCoût de génération estimé | Barème tarifaire— | Quantité prévisionnelleEstimation pour une génération | Coût Sortie · Coût estimé de génération · Estimation à des fins de comparaison uniquement $0.24576 estimation avant génération Cette estimation ne constitue ni des frais supplémentaires ni un tarif fixe pour la génération terminée. |
Ailoot réserve un montant estimé avant une requête. Après le résultat, le montant final est débité selon l’utilisation mesurée. Pour le streaming, le montant final à débiter est calculé à partir du relevé final d’utilisation. Fonctionnement de la réservation et du débit →
Exemples de requêtes
Ailoot Ultra · Génération d’images
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'prompt': 'A cute baby sea otter', 'model': 'gpt-image-2.5-flare', 'size': '1024x1024', 'n': 1, 'background': 'auto', 'moderation': 'auto', 'output_format': 'png'}
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin
def save_images(items):
if not items: raise SystemExit("No completed images; retain the full response")
for index, item in enumerate(items):
encoded=item.get("b64_json")
uri=item.get("url", "")
if not encoded and uri.startswith("data:image/"):
header, separator, encoded=uri.partition(",")
if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
if encoded:
raw=base64.b64decode(encoded,validate=True)
elif uri:
uri=urljoin("https://api.ailoot.ai",uri)
parsed=urlsplit(uri)
if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
raise SystemExit("Invalid returned image URL")
owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
args=["curl","--fail-with-body","--silent","--show-error",uri]
if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
temporary=Path(f"image-{index}.bin")
subprocess.run(args+["-o",str(temporary)],check=True)
raw=temporary.read_bytes()
temporary.unlink()
else: raise SystemExit("Image has neither bytes nor URL")
if not raw: raise SystemExit("Empty image result")
ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
Path(f"image-{index}.{ext}").write_bytes(raw)
print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
Recevoir et enregistrer les résultats
Ailoot Ultra · Génération d’images
Téléchargez chaque image renvoyée ou enregistrez son contenu Base64
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Autres lectures de contenu
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
-H "Authorization: Bearer $AILOOT_API_KEY" -o owned-assets.json
# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.
Conserver tous les résultats terminés
Enregistrez chaque image terminée ; récupérez chaque URL renvoyée ou décodez son contenu Base64.
Conservez la réponse complète et les en-têtes, chaque sortie effective, les identifiants initialement renvoyés et tous les champs d’utilisation. Récupérez l’opération d’origine sans soumettre à nouveau sa création.
Si la réponse d’origine doit être vérifiée
Conservez le X-Client-Request-ID renvoyé pour le rapprochement. Consultez uniquement les valeurs task_id/asset_id effectivement renvoyées ou votre bibliothèque multimédia ; ne construisez jamais une URL de tâche à partir de l’identifiant de l’opération et ne soumettez jamais à nouveau la création.
Champs de la réponse
| Champ | Type |
|---|---|
Champcreated | Type |
Champdata[].url | Type |
Champdata[].b64_json | Type |
Champusage | Type |
Alias
Alias du modèle
Ailoot gpt-image-2.5-flare
Ailoot Ultra gpt-image-2.5-flare, openai/gpt-image-2.5-flare
Alias des chemins de méthode
/v1/images
ID d’appel associés
openai/gpt-image-2.5-flare, gpt-image-2.5-flare, gpt-image-2.5-flare
Ailoot Ultra · Génération d’images POST /v1/images/generations openai/gpt-image-2.5-flare
openai/gpt-image-2.5-flaregpt-image-2.5-flareopenai/gpt-image-2.5-flare
Premiers pas
GPT Image 2.5 Flare génère et retouche des images à partir de texte et de références, en privilégiant la création visuelle quotidienne rapide. Il prend en charge les tailles personnalisées, les fonds transparents, les masques et des niveaux de qualité jusqu’à max pour les ébauches, illustrations et visuels de campagne.
- Entrées acceptées
- Texte · Images
- Résultats
- Images
Disponible dans Ailoot · entrées et méthodes
Ailoot Ultra · Génération d’images POST /v1/images/generations
- Types d’entrée
text,image- Types de sortie
image
| Champ | Type | Exigence | Valeurs et limites | Par défaut |
|---|---|---|---|---|
Champmodel | Typestring | ExigenceObligatoire | Valeurs et limites openai/gpt-image-2.5-flare | Par défaut— |
Champprompt | Typestring | ExigenceObligatoire | Valeurs et limites Longueur minimale: 1 | Par défaut— |
Champaspect_ratio | Typestring | ExigenceFacultatif | Valeurs et limites 1:1, 3:2, 2:3, 4:3, 3:4, 16:9, 9:16, 21:9, auto | Par défaut— |
Champquality | Typestring | ExigenceFacultatif | Valeurs et limites auto, low, medium, high, xhigh, max | Par défaut— |
Champbackground | Typestring | ExigenceFacultatif | Valeurs et limites auto, transparent, opaque | Par défaut— |
Champn | Typeinteger | ExigenceFacultatif | Valeurs et limites Minimum: 1 Maximum: 10 | Par défaut— |
Champinput_references | Typearray | ExigenceFacultatif | Valeurs et limites Nombre minimal d’éléments: 0 Nombre maximal d’éléments: 16 | Par défaut— |
Champoutput_compression | Typeinteger | ExigenceFacultatif | Valeurs et limites Minimum: 0 Maximum: 100 | Par défaut— |
Champprovider | Typeobject | ExigenceFacultatif | Valeurs et limites | Par défaut— |
Paramètres et cycle de vie de la méthode
| Paramètre | Contrat |
|---|---|
Paramètrecontent_type | Contratapplication/json |
Paramètrerequired | Contratmodel, prompt |
Paramètrematerial_types | Contrattext, image |
Cycle de vie : synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · task_id effectivement renvoyé ou enregistrement de la bibliothèque multimédia
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Tarifs
Calcul du coût final
Les tarifs affichés servent à estimer le coût avant la génération. Le montant final est calculé à partir du coût enregistré pour la génération d’origine. La durée mesurée du résultat et les quantités prévisionnelles ne constituent pas la quantité finale facturable.
Les tarifs n’ajoutent pas d’options de requête. Les paramètres pris en charge figurent dans la méthode sélectionnée.
- Mode rapide
- Non précisé Lorsque le mode rapide est sélectionné
- Mode Flex
- Non précisé Lorsque le mode flex est sélectionné
- Effort de raisonnement maximal
- Non précisé Lorsque l’effort de raisonnement maximal utilise l’ajustement par défaut (default)
Tarifs estimés à des fins de comparaison
Prix par configuration
Associez chaque coût aux conditions indiquées. Utilisez un seul tarif pour chaque ensemble de configurations alternatives.
| Configuration | Barème tarifaire | Quantité prévisionnelle | Coût |
|---|---|---|---|
| ConfigurationTarifs de base par jeton | Barème tarifaireTarif de base | Quantité prévisionnelle— | Coût Entrée · Tokens en entrée · Estimation à des fins de comparaison uniquement — / 1K tokens Sortie · Tokens en sortie · Estimation à des fins de comparaison uniquement — / 1K tokens Entrée · Lecture du cache · Estimation à des fins de comparaison uniquement — / 1K tokens Entrée · Écriture dans le cache · Estimation à des fins de comparaison uniquement — / 1K tokens Entrée · Écriture dans le cache, 1 h · Estimation à des fins de comparaison uniquement — / 1K tokens |
| ConfigurationCoût de génération estimé | Barème tarifaire— | Quantité prévisionnelleEstimation pour une génération | Coût Sortie · Coût estimé de génération · Estimation à des fins de comparaison uniquement $0.24576 estimation avant génération Cette estimation ne constitue ni des frais supplémentaires ni un tarif fixe pour la génération terminée. |
Ailoot réserve un montant estimé avant une requête. Après le résultat, le montant final est débité selon l’utilisation mesurée. Pour le streaming, le montant final à débiter est calculé à partir du relevé final d’utilisation. Fonctionnement de la réservation et du débit →
Exemples de requêtes
Ailoot Ultra · Génération d’images
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'model': 'openai/gpt-image-2.5-flare', 'prompt': 'a red panda astronaut floating in space, studio lighting'}
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin
def save_images(items):
if not items: raise SystemExit("No completed images; retain the full response")
for index, item in enumerate(items):
encoded=item.get("b64_json")
uri=item.get("url", "")
if not encoded and uri.startswith("data:image/"):
header, separator, encoded=uri.partition(",")
if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
if encoded:
raw=base64.b64decode(encoded,validate=True)
elif uri:
uri=urljoin("https://api.ailoot.ai",uri)
parsed=urlsplit(uri)
if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
raise SystemExit("Invalid returned image URL")
owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
args=["curl","--fail-with-body","--silent","--show-error",uri]
if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
temporary=Path(f"image-{index}.bin")
subprocess.run(args+["-o",str(temporary)],check=True)
raw=temporary.read_bytes()
temporary.unlink()
else: raise SystemExit("Image has neither bytes nor URL")
if not raw: raise SystemExit("Empty image result")
ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
Path(f"image-{index}.{ext}").write_bytes(raw)
print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
Recevoir et enregistrer les résultats
Ailoot Ultra · Génération d’images
Téléchargez chaque image renvoyée ou enregistrez son contenu Base64
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Autres lectures de contenu
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
-H "Authorization: Bearer $AILOOT_API_KEY" -o owned-assets.json
# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.
Conserver tous les résultats terminés
Enregistrez chaque image terminée ; récupérez chaque URL renvoyée ou décodez son contenu Base64.
Conservez la réponse complète et les en-têtes, chaque sortie effective, les identifiants initialement renvoyés et tous les champs d’utilisation. Récupérez l’opération d’origine sans soumettre à nouveau sa création.
Si la réponse d’origine doit être vérifiée
Conservez le X-Client-Request-ID renvoyé pour le rapprochement. Consultez uniquement les valeurs task_id/asset_id effectivement renvoyées ou votre bibliothèque multimédia ; ne construisez jamais une URL de tâche à partir de l’identifiant de l’opération et ne soumettez jamais à nouveau la création.
Champs de la réponse
| Champ | Type |
|---|---|
Champcreated | Type |
Champdata[].url | Type |
Champdata[].b64_json | Type |
Champusage | Type |
Alias
Alias du modèle
Ailoot gpt-image-2.5-flare
Ailoot Ultra gpt-image-2.5-flare, openai/gpt-image-2.5-flare
Alias des chemins de méthode
/v1/images
ID d’appel associés
openai/gpt-image-2.5-flare, gpt-image-2.5-flare, gpt-image-2.5-flare
FAQ · OpenAI: GPT Image 2.5 Flare
- Quelles entrées et quels résultats sont disponibles ?
POST /v1/images/generations·gpt-image-2.5-flare:text→imagePOST /v1/images/generations·gpt-image-2.5-flare:text→imagePOST /v1/images/generations·openai/gpt-image-2.5-flare:text,image→image- Quels champs la requête utilise-t-elle ?
POST /v1/images/generations·gpt-image-2.5-flare:model,prompt,n,response_format,streamPOST /v1/images/generations·gpt-image-2.5-flare:model,prompt,size,background,moderation,n,quality,output_compression,output_format,streamPOST /v1/images/generations·openai/gpt-image-2.5-flare:model,prompt,aspect_ratio,quality,background,n,input_references,output_compression,provider- Quelles limites s’appliquent ?
POST /v1/images/generations·gpt-image-2.5-flare:n.minimum:1POST /v1/images/generations·gpt-image-2.5-flare:prompt.maximum_length:32000;n.minimum:1;n.maximum:10;output_compression.minimum:0;output_compression.maximum:100POST /v1/images/generations·openai/gpt-image-2.5-flare:n.minimum:1;n.maximum:10;output_compression.minimum:0;output_compression.maximum:100