Source: https://ailoot.ai/models/fr-be/gpt-image-1-5/
Canonical: https://ailoot.ai/models/fr-be/gpt-image-1-5/
Language: fr-be

# GPT Image 1.5

[Markdown](https://ailoot.ai/models/fr-be/gpt-image-1-5/index.md) · [JSON](https://ailoot.ai/models/fr-be/gpt-image-1-5/facts.json)

## [GPT Image 1.5](https://ailoot.ai/models/fr-be/gpt-image-1-5/)

GPT Image 1.5 crée des images à partir d’une consigne textuelle en privilégiant le respect d’instructions détaillées. Trois formes d’image, plusieurs niveaux de qualité et formats de résultat sont prévus.

- [**Ailoot · Génération d’images** `POST /v1/images/generations` `gpt-image-1.5`](https://ailoot.ai/models/fr-be/gpt-image-1-5/#method-0)
- [**Ailoot Ultra · Génération d’images** `POST /v1/images/generations` `gpt-image-1.5`](https://ailoot.ai/models/fr-be/gpt-image-1-5/#method-1)

À 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.

#### Une image à partir d’une consigne détaillée

GPT Image 1.5 est un modèle d’OpenAI pour créer des images à partir d’une description textuelle. Le fabricant met en avant le respect des instructions et le traitement d’une consigne détaillée : celle-ci peut définir le contenu de la scène, la composition, l’apparence des objets et le style souhaité. Le résultat de la méthode d’images est une image finalisée.

Dans Ailoot, cette fiche concerne la génération avec une entrée textuelle. OpenAI décrit également le travail du modèle avec des images sources, la retouche et la modification de zones précises. Ces fonctions nécessitent une prise en charge distincte des entrées visuelles et ne font pas partie de la génération textuelle indiquée ici.

Dans l’opération de retouche prévue séparément par OpenAI, le masque sert de guide : une correspondance exacte du résultat avec ses contours n’est pas garantie. Cette opération nécessite la prise en charge de la transmission de l’image source ; la fiche Ailoot actuelle concerne toujours la génération avec une entrée textuelle.

#### Trois formes d’image et le réglage de la qualité

Les dimensions prévues sont carrées, `1024x1024`, horizontales, `1536x1024`, et verticales, `1024x1536`, avec également un choix automatique. Les dimensions libres d’autres modèles ne doivent pas être transposées à cette version.

Les niveaux de qualité sont `low`, `medium`, `high` et `auto`. Le choix de qualité influence le volume du traitement et le degré de détail du résultat. La qualité et les dimensions sont deux réglages différents : l’orientation de l’image définit l’espace de composition, et le niveau de qualité le mode de production. Les niveaux `xhigh` et `max` ne sont pas annoncés pour GPT Image 1.5.

#### Le format de fichier et l’arrière-plan

Le résultat est créé en PNG par défaut ; JPEG et WebP sont également prévus. Pour JPEG et WebP, le degré de compression peut être défini. Il s’agit d’un réglage du fichier de résultat, distinct de la qualité de génération.

Le fabricant prévoit un arrière-plan transparent ou opaque, ainsi qu’un choix automatique. La transparence nécessite PNG ou WebP : JPEG ne conserve pas le canal alpha. Un arrière-plan transparent convient lorsque l’image doit être utilisée comme un objet distinct dans une composition ultérieure. La prise en charge des paramètres précis doit être mise en relation avec la méthode choisie.

#### Le texte et la composition doivent être vérifiés

Le modèle peut intégrer du texte dans une image et composer une scène à partir de plusieurs éléments, mais la position exacte du texte et des objets n’est pas garantie. La constance de l’apparence d’un personnage ou de la présentation entre des générations distinctes nécessite également un contrôle.

Une image complexe peut demander plus de temps qu’une image simple ; selon OpenAI, certaines tâches complexes peuvent prendre jusqu’à deux minutes. Le résultat dépend à la fois de la complétude de la description source et de la vérification de l’image finalisée : la lisibilité des textes, la position des détails et la conformité à la scène demandée s’évaluent sur le fichier lui-même.

**Ailoot · Génération d’images** `POST /v1/images/generations` `gpt-image-1.5`

[`gpt-image-1.5`](https://ailoot.ai/models/fr-be/#m=gpt-image-1.5&route=Core&caller=gpt-image-1.5&fmt=images)

OpenAI /`gpt-image-1.5`

### Premiers pas

GPT Image 1.5 crée des images à partir d’une consigne textuelle en privilégiant le respect d’instructions détaillées. Trois formes d’image, plusieurs niveaux de qualité et formats de résultat sont prévus.

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`

Entrée

`text`

Sortie

`image`

Format de sortie

Fichier image

| Champ | Type | Exigence | Valeurs et limites | Par défaut |
| --- | --- | --- | --- | --- |
| Champ`model` | Type`string` | ExigenceObligatoire | Valeurs et limites gpt-image-1.5 | Par défaut— |
| Champ`prompt` | Type`string` | ExigenceObligatoire | Valeurs et limites Longueur minimale: 1 | Par défaut— |
| Champ`n` | Type`integer` | ExigenceFacultatif | Valeurs et limites Minimum: 1 | Par défaut1 |
| Champ`response_format` | Type`string` | ExigenceFacultatif | Valeurs et limites url, b64\_json | Par défaut— |
| Champ`stream` | Type`boolean` | ExigenceFacultatif | Valeurs et limites | Par défautfalse |
| Champ`size` | Type`string` | ExigenceFacultatif | Valeurs et limites Selon le modèle | Par défaut— |
| Champ`quality` | Type`string` | ExigenceFacultatif | Valeurs et limites Selon le modèle | Par défaut— |
| Champ`background` | Type`string` | ExigenceFacultatif | Valeurs et limites Selon le modèle | Par défaut— |
| Champ`output_format` | Type`string` | ExigenceFacultatif | Valeurs et limites Selon le modèle | Par défaut— |
| Champ`output_compression` | Type`integer` | ExigenceFacultatif | Valeurs et limites Selon le modèle | Par défaut— |
| Champ`moderation` | Type`string` | ExigenceFacultatif | Valeurs et limites Selon le modèle | Par défaut— |
| Champ`input_fidelity` | Type`string` | ExigenceFacultatif | Valeurs et limites Selon le modèle | Par défaut— |
| Champ`style` | Type`string` | ExigenceFacultatif | Valeurs et limites Selon le modèle | Par défaut— |
| Champ`partial_images` | Type`integer` | 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ètre`material_types` | Contrattext |
| Paramètre`required` | Contratmodel, prompt |
| Paramètre`optional_controls` | Contratnull |
| Paramètre`content_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

Texte en entrée

0,005 USD */ 1K*

Texte en sortie

0,01 USD */ 1K*

Entrée, image

0,008 USD */ 1K tokens*

Sortie, image

0,032 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 →](https://ailoot.ai/docs/fr-be/billing/reserve/)

### Exemples de requêtes

#### Ailoot · Génération d’images

curlPython SDKNode.js SDK

```bash
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-1.5", "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
```

```python
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-1.5', '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])
```

```js
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-1.5", "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}/content`
- `GET /v1/media/assets`
- `GET /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 |
| --- | --- |
| Champ`created` | Typeinteger |
| Champ`data[].url` | Typestring |
| Champ`data[].b64_json` | Typebase64 string |
| Champ`usage` | 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éponse`server_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

<strong>Ailoot</strong> [`gpt-image-1.5`](https://ailoot.ai/models/fr-be/#m=gpt-image-1.5&route=Core&caller=gpt-image-1.5&fmt=images)
**Ailoot Ultra** [`gpt-image-1.5`](https://ailoot.ai/models/fr-be/#m=gpt-image-1.5&route=Ultra&caller=gpt-image-1.5&fmt=images)

#### Alias des chemins de méthode

Utilisez les chemins de méthode indiqués ci-dessus.

#### ID d’appel associés

[`gpt-image-1.5`](https://ailoot.ai/models/fr-be/#m=gpt-image-1.5&route=Core&caller=gpt-image-1.5&fmt=images), [`gpt-image-1.5`](https://ailoot.ai/models/fr-be/#m=gpt-image-1.5&route=Ultra&caller=gpt-image-1.5&fmt=images)

**Ailoot Ultra · Génération d’images** `POST /v1/images/generations` `gpt-image-1.5`

[`gpt-image-1.5`](https://ailoot.ai/models/fr-be/#m=gpt-image-1.5&route=Ultra&caller=gpt-image-1.5&fmt=images)

OpenAI /`gpt-image-1.5`

### Premiers pas

GPT Image 1.5 crée des images à partir d’une consigne textuelle en privilégiant le respect d’instructions détaillées. Trois formes d’image, plusieurs niveaux de qualité et formats de résultat sont prévus.

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`

Entrée

`text`

Sortie

`image`

| Champ | Type | Exigence | Valeurs et limites | Par défaut |
| --- | --- | --- | --- | --- |
| Champ`model` | Type`string` | ExigenceObligatoire | Valeurs et limites gpt-image-1.5 | Par défaut— |
| Champ`prompt` | Type`string` | ExigenceObligatoire | Valeurs et limites Longueur maximale: 32 000 | Par défaut— |
| Champ`size` | Type`string` | ExigenceFacultatif | Valeurs et limites 1024x1024, 1536x1024, 1024x1536, auto | Par défautauto |
| Champ`background` | Type`string` | ExigenceFacultatif | Valeurs et limites transparent, opaque, auto | Par défautauto |
| Champ`moderation` | Type`string` | ExigenceFacultatif | Valeurs et limites low, auto Conditions: Utilisez auto pour la modération standard du contenu. | Par défaut— |
| Champ`n` | Type`integer` | ExigenceFacultatif | Valeurs et limites Minimum: 1 Maximum: 10 | Par défaut1 |
| Champ`quality` | Type`string` | ExigenceFacultatif | Valeurs et limites auto, high, medium, low | Par défautauto |
| Champ`output_compression` | Type`integer` | 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 |
| Champ`output_format` | Type`string` | ExigenceFacultatif | Valeurs et limites webp, png, jpeg | Par défautpng |
| Champ`stream` | Type`boolean` | ExigenceFacultatif | Valeurs et limites false Conditions: Cette route renvoie une réponse JSON complète. | Par défautfalse |

Paramètres et cycle de vie de la méthode

| Paramètre | Contrat |
| --- | --- |
| Paramètre`content_type` | Contratapplication/json |
| Paramètre`required` | Contratprompt, model |
| Paramètre`material_types` | Contrattext |
| Paramètre`optional` | Contratsize, background, moderation, n, quality, output\_compression, output\_format, stream |
| Paramètre`conditions` | ContratUn arrière-plan transparent nécessite le format PNG ou WebP., La compression de sortie s’applique au format JPEG ou WebP., La méthode sélectionnée génère à partir de texte. Les paramètres de modification et de diffusion en continu décrits pour le fabricant sont des capacité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 des jetons | 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 estimé de la génération | 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.32768** 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 →](https://ailoot.ai/docs/fr-be/billing/reserve/)

### Exemples de requêtes

#### Ailoot Ultra · Génération d’images

curl

```bash
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-1.5', '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}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

Autres lectures de contenu

Lire les ressources existantes dont vous êtes propriétaire

```bash
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 |
| --- | --- |
| Champ`created` | Type |
| Champ`data[].url` | Type |
| Champ`data[].b64_json` | Type |
| Champ`usage` | Type |

### Alias

#### Alias du modèle

<strong>Ailoot</strong> [`gpt-image-1.5`](https://ailoot.ai/models/fr-be/#m=gpt-image-1.5&route=Core&caller=gpt-image-1.5&fmt=images)
**Ailoot Ultra** [`gpt-image-1.5`](https://ailoot.ai/models/fr-be/#m=gpt-image-1.5&route=Ultra&caller=gpt-image-1.5&fmt=images)

#### Alias des chemins de méthode

Utilisez les chemins de méthode indiqués ci-dessus.

#### ID d’appel associés

[`gpt-image-1.5`](https://ailoot.ai/models/fr-be/#m=gpt-image-1.5&route=Core&caller=gpt-image-1.5&fmt=images), [`gpt-image-1.5`](https://ailoot.ai/models/fr-be/#m=gpt-image-1.5&route=Ultra&caller=gpt-image-1.5&fmt=images)

FAQ · GPT Image 1.5

Quelles entrées et quels résultats sont disponibles ?

`POST /v1/images/generations` · `gpt-image-1.5`: `text` → `image` `POST /v1/images/generations` · `gpt-image-1.5`: `text` → `image`

Quels champs la requête utilise-t-elle ?

`POST /v1/images/generations` · `gpt-image-1.5`: `model`, `prompt`, `n`, `response_format`, `stream` `POST /v1/images/generations` · `gpt-image-1.5`: `model`, `prompt`, `size`, `background`, `moderation`, `n`, `quality`, `output_compression`, `output_format`, `stream`

Quelles limites s’appliquent ?

`POST /v1/images/generations` · `gpt-image-1.5`: `n.minimum`: `1` `POST /v1/images/generations` · `gpt-image-1.5`: `prompt.maximum_length`: `32000`; `n.minimum`: `1`; `n.maximum`: `10`; `output_compression.minimum`: `0`; `output_compression.maximum`: `100`

Connectez Ailoot à Claude Code, OpenCode, Hermes ou à votre application.

## L’entreprise et son portefeuille de projets

L’entreprise et son portefeuille de projets : des millions de clients ; des ventes qui se chiffrent en milliards chaque mois.

## Achetez des tokens à prix réduit.

Une remise d’abonnement pour le travail régulier. Des codes promo jusqu’à 50% sur l’achat de tokens.

Abonnement

Choisissez une offre à tarif réduit pour vos requêtes régulières.

Code promo jusqu’à 50%

Saisissez le code à l’achat. Le prix est recalculé selon la promotion en cours.

Dépenses dans l’historique

Modèle, tokens et montant sont enregistrés pour chaque requête.

[Choisir un abonnement](https://ailoot.ai/docs/fr-be/billing/subscriptions/) · [Voir les prix des modèles](https://ailoot.ai/models/fr-be/)

## Connectez l’API au produit que vous vendez.

SaaS, applications et bots selon l’offre officielle et le contrat de licence Ailoot. Pour la revente, demandez une licence revendeur.

Application commerciale

Intégrez la génération de texte, d’images, de vidéo et de son aux fonctions payantes de votre service.

Licence revendeur

Envoyez la description du projet et le mode d’accès. Demandez des conditions écrites d’utilisation et de revente.

Documents sur le site

L’offre officielle, le contrat de licence et la politique de traitement des données sont accessibles avant connexion.

[Demander une licence revendeur](mailto:support@ailoot.ai) · [Offre officielle et contrat de licence](https://ailoot.ai/legal/offer?lang=fr-be)

## Ailoot · L’entreprise et son portefeuille de projets





Ailoot s’appuie sur une expérience opérationnelle éprouvée, une large clientèle, un service stable et un suivi continu des KPI.





L’entreprise et son portefeuille de projets : des millions de clients ; des ventes qui se chiffrent en milliards chaque mois.





Ailoot met cette expérience opérationnelle au service de l’accès API aux fonctions d’IA dans les produits des clients, leurs agents, applications et automatisations.
