Images
Créer une image
Crée une image à partir d'une consigne (prompt)
Aperçu
Utilisez GET /v1/models?recommended_for=image pour obtenir les modèles d'image actuels, puis envoyez explicitement le model sélectionné.
gpt-image-2 est un modèle GPT Image facturé au jeton (token). TokenLab suit la répartition officielle d'OpenAI pour les jetons d'entrée de texte, d'entrée d'image, d'entrée mise en cache et de sortie d'image ; il n'est pas facturé comme un modèle à prix fixe par image.
Pour la génération d'images avec gpt-image-2, les paramètres publics pris en charge sont prompt, n, size, quality, response_format, async, background, output_format, output_compression ou compression, moderation et user. background accepte auto ou opaque ; transparent n'est pas pris en charge. Omettez size ou quality pour laisser TokenLab utiliser auto ; les valeurs de size personnalisées doivent utiliser le contrat flexible WIDTHxHEIGHT documenté ci-dessous.
input_fidelity ne fait pas partie des champs actuellement pris en charge par TokenLab pour gpt-image-2 ; omettez-le, sinon la requête renverra 400 unsupported_parameter.
Remarques sur le comportement des modèles
Les modèles de la famille d'images Google Gemini ne partagent pas le même contrat de sélection :
gemini-3.1-flash-image,gemini-nano-banana-2.1,gemini-3-pro-image,nano-banana-2.1etnano-banana-proprennent en chargeaspect_ratioainsi queresolution(1k,2k,4k) pour leurs opérations publiques de texte vers image, image vers image et modification d'image.nano-banana-2prend en chargeaspect_ratioetresolution(1k,2k,4k) pour la génération de texte vers image et d'image vers image.gemini-3.1-flash-lite-imageetnano-banana-2-liteprennent en charge le texte vers image, l'image vers image et la modification d'image uniquement à une résolution1k.nano-bananaprend en chargeaspect_ratiomais n'expose pas de sélection deresolutionpublique.- Pour l'image vers image avec
gemini-3.1-flash-image,gemini-nano-banana-2.1,gemini-3.1-flash-lite-imageougemini-3-pro-image, utilisez ce point de terminaison avecoperation: "image-to-image"et des images de référence. Envoyez les requêtes de modification d'image pour ces modèles vers/v1/images/edits. - Pour les requêtes d'image de référence Nano Banana, utilisez
nano-banana-2,nano-banana-2.1,nano-banana-2-liteounano-banana-prosur ce point de terminaison (/v1/images/generations) avecoperation: "image-to-image"etimage_urls. Les requêtes de modification d'image pournano-banana-2,nano-banana-2.1,nano-banana-2-liteetnano-banana-proutilisent également ce point de terminaison, avecoperation: "image-edit". N'envoyez pas de requêtes d'image de référence Nano Banana vers/v1/images/edits. - Les images de référence sur ce point de terminaison peuvent être fournies sous forme de
image_url/image_urlsJSON, ou sous forme de fichier multipartimage.images[]etfile_idne sont pas acceptés sur/v1/images/generations; créez des références/v1/filesuniquement pour les modèles/v1/images/editsqui documententimages[].file_id.
Pour les familles d'images Google, privilégiez aspect_ratio et n'envoyez resolution que lorsque le modèle le prend explicitement en charge.
Les modèles d'image xAI Grok Imagine (grok-imagine-image, grok-imagine-image-quality et l'ancien grok-imagine-image-pro) prennent en charge aspect_ratio ainsi que resolution (1k, 2k). grok-imagine-image-pro est conservé comme identifiant de compatibilité pour grok-imagine-image-quality.
Corps de la requête
Délai d'expiration de la requête synchrone : Certaines requêtes d'image renvoient l'image finale en ligne et attendent la fin de la génération. Les requêtes haute résolution ou haute qualité peuvent prendre près d'une minute ou plus, réglez donc le délai d'expiration de votre client HTTP sur au moins 120s. Si la réponse de création inclut status: "pending", task_id ou poll_url, suivez plutôt le poll_url renvoyé.
Modèle à utiliser (par exemple, gpt-image-2, flux-pro-1.1 ou nano-banana-pro). Interrogez GET /v1/models?recommended_for=image pour obtenir la liste recommandée actuelle.
Description textuelle de l'image souhaitée.
URL publique HTTPS de l'image de référence pour la génération d'image vers image. Pour les requêtes d'image de référence Nano Banana, définissez operation sur image-to-image ; nano-banana-pro peut inclure resolution.
URLs publiques HTTPS des images de référence. Utilisez ceci pour une ou plusieurs images de référence dans les requêtes JSON. file_id et images[] ne sont pas pris en charge sur ce point de terminaison.
URLs d'images de référence supplémentaires pour les modèles qui distinguent les entrées principales des références.
Fichier d'image de référence multipart pour la génération d'image vers image. Utilisez ceci lorsque l'image source est privée ou protégée par des en-têtes. Ceci est différent d'un file_id de /v1/files, qui n'est pas accepté sur ce point de terminaison.
1Nombre d'images à générer (1-10, selon le modèle).
Taille de l'image. Utilisez ceci pour les familles d'images de style OpenAI et les autres modèles qui acceptent des tailles de pixels exactes.
Pour gpt-image-2, size accepte auto ou WIDTHxHEIGHT. Les dimensions personnalisées doivent toutes deux être des multiples de 16, le bord le plus long doit être au maximum de 3840px, le rapport long/court doit être au maximum de 3:1 et le nombre total de pixels doit être compris entre 655 360 et 8 294 400. aspect_ratio et resolution ne font pas partie des détails du modèle TokenLab actuel pour gpt-image-2.
Pour les modèles d'image Google avec des niveaux de résolution (gemini-3.1-flash-image, gemini-nano-banana-2.1, gemini-3-pro-image, gemini-3.1-flash-lite-image, nano-banana-2, nano-banana-2.1 et nano-banana-pro), size accepte une taille de sortie issue du tableau de tailles du modèle, telle que 1376x768 (16:9 à 1K), ou un niveau de résolution : 1K, 2K ou 4K. TokenLab envoie un niveau sous forme de resolution, donc la requête et son prix sont les mêmes qu'avec resolution. Un niveau que le modèle ne prend pas en charge (par exemple 2K sur gemini-3.1-flash-lite-image), ou un niveau différent de resolution, renvoie 400 avec le code invalid_image_size_contract et les allowed_resolutions du modèle. Pour ces modèles, la forme recommandée est aspect_ratio avec resolution.
Sélecteur de rapport d'aspect dépendant du modèle.
Les valeurs courantes de la famille d'images Google incluent 1:1, 16:9, 9:16, 3:2 et 2:3.
Résolution de sortie dépendante du modèle. gemini-3.1-flash-image, gemini-nano-banana-2.1, gemini-3-pro-image, nano-banana-2, nano-banana-2.1 et nano-banana-pro prennent en charge 1k, 2k et 4k ; les modèles Grok Imagine image prennent en charge 1k et 2k. Omettez ce champ à moins que le modèle et l'opération sélectionnés ne le prennent explicitement en charge.
Qualité de l'image. Les modèles GPT Image tels que gpt-image-2 utilisent auto, low, medium ou high. D'autres modèles peuvent utiliser des valeurs différentes ; vérifiez les détails du modèle avant d'envoyer une valeur non par défaut.
Comment les images sont renvoyées : url ou b64_json.
- Omis : lorsque le modèle renvoie des octets d'image, chaque image est dans
data[].b64_json, et également dansdata[].urllorsque TokenLab l'a stockée. Lorsque le modèle renvoie un lien, chaque image est dansdata[].url. url: chaque image est uniquement dansdata[].url.b64_json: chaque image est uniquement dansdata[].b64_jsonsous forme de données Base64.
Les liens sont des URLs de résultats multimédias TokenLab. Ils restent valides pendant 30 jours. Voir Conservation des données.
falseDéfinissez sur true avec gpt-image-2 ou les modèles d'image officiels FLUX/BFL pour créer d'abord une tâche. Les tâches d'image asynchrones terminées renvoient des URLs indépendamment du response_format demandé ; utilisez des requêtes synchrones lorsque vous avez besoin de b64_json.
Sélecteur de style optionnel. Envoyez ceci uniquement lorsque le modèle sélectionné le documente explicitement ; omettez-le pour gpt-image-2 à moins que les métadonnées du modèle n'indiquent le contraire.
Un identifiant unique pour l'utilisateur final.
Réponse
Réponse en ligne
Horodatage Unix de la création.
Tableau des images générées.
Chaque objet contient :
url(string) : URL de résultat multimédia TokenLab de l'image, valide pendant 30 jours. Non présent lorsqueresponse_formatestb64_json. Lorsqueresponse_formatest omis, il est absent si TokenLab n'a pas pu stocker l'image.b64_json(string) : Données d'image Base64. Présent lorsqueresponse_formatestb64_json, ou lorsqu'il est omis et que le modèle renvoie des octets d'image.revised_prompt(string) : Révision optionnelle de la consigne, lorsque le modèle sélectionné en renvoie une.
Réponse de tâche asynchrone
Définissez async: true avec gpt-image-2 ou les modèles d'image officiels FLUX/BFL pour créer une tâche au lieu d'attendre l'image finale dans la requête de création. La réponse inclut status: "pending", task_id et poll_url. Interrogez /v1/tasks/{task_id} jusqu'à ce que la tâche atteigne completed ou failed.
Les tâches d'image asynchrones renvoient uniquement les URLs des images finales. Si vous avez besoin de données d'image brutes b64_json, utilisez une requête synchrone.
La facturation peut réserver le montant estimé lors de la création de la tâche. Les tâches terminées sont facturées selon l'utilisation réelle, et les tâches ayant échoué ou ayant expiré sont libérées ou remboursées.
Horodatage Unix de la création.
Identifiant de tâche unique pour l'interrogation.
Statut initial : pending.
URL relative à interroger pour obtenir les résultats, par exemple /v1/tasks/{id}.
Vide tant que la tâche est en attente. Les tâches d'image terminées renvoient les URLs des images générées dans data[].url.
Lorsque vous recevez status: "pending", utilisez poll_url ou GET /v1/tasks/{task_id} pour récupérer le résultat.
Requête
curl -X POST "https://api.tokenlab.sh/v1/images/generations" \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3-pro-image",
"prompt": "A cinematic portrait of a white cat sitting on a rainy windowsill",
"aspect_ratio": "16:9",
"resolution": "2k"
}'from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://api.tokenlab.sh/v1"
)
response = client.images.generate(
model="gemini-3-pro-image",
prompt="A cinematic portrait of a white cat sitting on a rainy windowsill",
extra_body={"aspect_ratio": "16:9", "resolution": "2k"}
)
print(response.data[0].url)import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'sk-your-api-key',
baseURL: 'https://api.tokenlab.sh/v1'
});
const response = await client.images.generate({
model: 'gemini-3-pro-image',
prompt: 'A cinematic portrait of a white cat sitting on a rainy windowsill',
aspect_ratio: '16:9',
resolution: '2k'
});
console.log(response.data[0].url);<?php
$ch = curl_init('https://api.tokenlab.sh/v1/images/generations');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer sk-your-api-key'
],
CURLOPT_POSTFIELDS => json_encode([
'model' => 'gemini-3-pro-image',
'prompt' => 'A cinematic portrait of a white cat sitting on a rainy windowsill',
'aspect_ratio' => '16:9',
'resolution' => '2k'
])
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
echo $data['data'][0]['url'];Exemple de famille d'images avec rapport uniquement : pour nano-banana, envoyez aspect_ratio mais omettez resolution :
{
"model": "nano-banana",
"prompt": "A clean editorial product shot of a citrus soda can",
"aspect_ratio": "16:9"
}Exemple d'image de référence Nano Banana Pro : envoyez la requête vers /v1/images/generations, pas /v1/images/edits. resolution est optionnel et peut être défini sur 1k, 2k ou 4k :
{
"model": "nano-banana-pro",
"prompt": "Create a clean cinematic character image based on the reference images",
"operation": "image-to-image",
"image_urls": ["https://example.com/reference-1.png"],
"aspect_ratio": "1:1",
"resolution": "2k"
}Exemple de téléchargement multipart direct pour des images sources privées ou locales. Ne passez pas de file_id à /v1/images/generations :
curl -X POST "https://api.tokenlab.sh/v1/images/generations" \
-H "Authorization: Bearer sk-your-api-key" \
-F "model=nano-banana-pro" \
-F "prompt=Create a clean cinematic character image based on this reference" \
-F "operation=image-to-image" \
-F "image=@reference.png" \
-F "aspect_ratio=1:1" \
-F "resolution=2k"Réponse
{
"created": 1706000000,
"data": [
{
"url": "https://...",
"revised_prompt": "A fluffy white cat with bright eyes sitting peacefully on a wooden windowsill, watching raindrops stream down the glass window..."
}
]
}Choisir un modèle
Interrogez GET /v1/models?recommended_for=image ou utilisez la page Modèles pour connaître la disponibilité, les capacités et les prix actuels.
Ne codez pas en dur un modèle comme étant toujours synchrone ou toujours asynchrone. Si la réponse de création renvoie status: "pending", suivez poll_url et interrogez jusqu'à la fin.
Gestion des réponses basées sur des tâches
Pour les modèles d'image, vérifiez toujours si la réponse contient status: "pending" / status: "processing" :
import requests
import time
def generate_image(prompt, model="gpt-image-2"):
# Créer une requête d'image
response = requests.post(
"https://api.tokenlab.sh/v1/images/generations",
headers={"Authorization": "Bearer sk-your-api-key"},
json={"model": model, "prompt": prompt, "async": True},
timeout=120
)
response.raise_for_status()
data = response.json()
# Vérifier si c'est basé sur une tâche
if data.get("status") in ("pending", "processing"):
task_id = data["task_id"]
poll_url = data.get("poll_url")
print(f"Image task started: {task_id}")
# Interroger pour le résultat
while True:
status_resp = requests.get(
f"https://api.tokenlab.sh{poll_url}" if poll_url else f"https://api.tokenlab.sh/v1/tasks/{task_id}",
headers={"Authorization": "Bearer sk-your-api-key"},
timeout=30
)
status_resp.raise_for_status()
status_data = status_resp.json()
if status_data["status"] == "completed":
return status_data["data"][0]["url"]
elif status_data["status"] == "failed":
raise Exception(status_data.get("error", "Generation failed"))
time.sleep(3)
else:
# Réponse en ligne
return data["data"][0]["url"]
# Utilisation
url = generate_image("a beautiful sunset over mountains", model="gpt-image-2")
print(f"Generated image: {url}")Hy Image 3.5 Preview crée des images carrées de 1024 pixels à partir de texte et modifie des images de référence en utilisant des instructions écrites. Il est utile pour esquisser des visuels et affiner une composition.
{
"model": "hy-image-v3.5-preview",
"prompt": "A yellow lemon on a white table",
"size": "1024x1024",
"n": 1,
"response_format": "url"
}Autorisation
BearerAuth Authentification par clé API. Créez ou gérez vos clés API dans Dashboard > API > API Keys.
Emplacement: header
En-têtes
Politique de livraison par requête. Remplace les valeurs par défaut de la clé API et de l'espace de travail. Tente automatiquement TokenLab Verified en premier et peut basculer une fois vers Official uniquement avant la sortie, l'acceptation de la requête ou la création de ressource persistante.
Valeurs possibles
- "auto"
- "verified"
- "official"
Réponse
application/json
application/json
application/json
application/json
application/json
application/json
application/json