TokenLab

Images

Modifier une image

Modifie une image à partir d’un prompt et d’une image source

POST
/v1/images/edits

Vue d’ensemble

Crée une image modifiée ou prolongée à partir d’une image originale et d’un prompt.

Cet endpoint prend en charge à la fois :

  • le flux de téléversement multipart/form-data compatible OpenAI documenté ci-dessous
  • les requêtes JSON qui fournissent image_url, image_urls ou des références officielles images pour les familles image-to-image prises en charge

gpt-image-2 est pris en charge ici. Il accepte les uploads multipart image, JSON image_url / image_urls et les références officielles images[] (image_url ou file_id), jusqu’à 16 images source. Créez d’abord les file_id via /v1/files. Définissez async: true pour recevoir d’abord une tâche ; les modèles d’édition officiels FLUX/BFL utilisent le même flux de polling.

Les éditions gpt-image-2 n’acceptent pas resolution ; utilisez size pour les dimensions de sortie. background accepte auto ou opaque ; transparent n’est pas pris en charge. Pour les éditions multi-image ou à forte latence, préférez async: true et interrogez ensuite la tâche retournée.

Les requêtes Nano Banana avec image de référence (nano-banana-edit, nano-banana-2 et nano-banana-pro) sont exposées sur /v1/images/generations avec operation: "image-to-image" et image_urls, pas sur cet endpoint /v1/images/edits.

Les modèles d’édition d’image xAI Grok Imagine (grok-imagine-image, grok-imagine-image-quality et le legacy grok-imagine-image-pro) acceptent au maximum 3 images source. Les requêtes avec plus de 3 images source échouent à la validation d’entrée avec 400 too_many_images.

input_fidelity ne fait pas partie du champs pris en charge actuel de TokenLab pour gpt-image-2 ; omettez-le, sinon la requête renvoie 400 unsupported_parameter.

Corps de la requête

Timeout des requêtes synchrones : certaines requêtes image renvoient l’image finale inline 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 ; définissez donc le timeout de votre client HTTP à 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é.

URLs d’image distantes : lorsqu’une entrée multipart est nécessaire, TokenLab récupère JSON image_url, image_urls ou images[].image_url et envoie les octets comme parties multipart image. Les URLs doivent être publiques en http/https, sans identifiants intégrés ni fragments, et ne doivent pas résoudre vers localhost, des plages IP privées ou réservées ; chaque redirection est revérifiée. Le contenu récupéré doit être une vraie image PNG, JPEG ou WebP. Limites : 50 MiB par image, 200 MiB au total pour les images récupérées par URL dans une requête, timeout de récupération 30s et jusqu’à 3 redirections.

Une requête JSON doit fournir exactement un champ parmi image_url, image_urls et images. Chaque objet images[] doit contenir soit image_url, soit file_id, jamais les deux. La limite totale de 200 MiB inclut toutes les images sources et le masque.

imagefile

Images source multipart. Répétez image pour fournir plusieurs sources GPT Image. Les fichiers doivent être PNG, JPEG ou WebP, jusqu’à 16 images source et 50 MiB chacune. Les modèles d’édition xAI Grok Imagine utilisent les mêmes champs d’entrée, mais limitent les images source à 3.

promptstringrequis

Description textuelle de la modification souhaitée.

maskfile | object

Une image supplémentaire dont les zones entièrement transparentes indiquent où l’image doit être modifiée. Doit être un fichier PNG valide, inférieur à 50 MiB et avoir les mêmes dimensions que image.

Pour les requêtes JSON, mask peut aussi être un objet contenant exactement l’un des champs image_url ou file_id ; les valeurs file_id doivent provenir de /v1/files et rester liées à la même configuration d’édition d’image.

modelstringrequis

Modèle à utiliser pour l’édition d’image. Utilisez gpt-image-2 pour les éditions GPT Image, ou un autre modèle d’édition d’image actuel renvoyé par GET /v1/models?recommended_for=image.

nintegerpar défaut: 1

Nombre d’images à générer (1-10, selon le modèle).

sizestring

Taille de l’image générée. Pour gpt-image-2, utilisez auto ou WIDTHxHEIGHT ; les dimensions doivent être des multiples de 16, le bord le plus long ne doit pas dépasser 3840px, le ratio long/court doit être au plus 3:1, et le total de pixels doit être compris entre 655,360 et 8,294,400.

response_formatstringpar défaut: url

Format dans lequel les images générées sont renvoyées. Doit être url ou b64_json ; la valeur par défaut est url.

url renvoie les URL dans data[].url ; b64_json renvoie les données d’image Base64 dans data[].b64_json.

asyncbooleanpar défaut: false

Définissez sur true avec gpt-image-2 ou les modèles d’édition officiels FLUX/BFL pour renvoyer une tâche avant que l’image finale soit prête. Les éditions asynchrones terminées renvoient des URL, quel que soit le response_format demandé ; utilisez des requêtes synchrones si vous avez besoin de b64_json.

userstring

Identifiant unique représentant votre utilisateur final pour la surveillance des abus.

Réponse

createdinteger

Horodatage Unix de création des images.

dataarray

Tableau des images générées.

Chaque objet contient :

  • url (string) : URL de l’image modifiée (si response_format vaut url)
  • b64_json (string) : Image encodée en Base64 (si response_format vaut b64_json)

Réponse de tâche asynchrone

Définissez async: true avec gpt-image-2 ou les modèles d’édition officiels FLUX/BFL pour créer une tâche au lieu d’attendre l’image modifiée dans la requête. La réponse contient status: "pending", task_id et poll_url. Interrogez /v1/tasks/{task_id} jusqu’à ce que la tâche passe à completed ou failed.

Les tâches d’édition asynchrones ne renvoient que les URL finales. Si vous avez besoin des données image brutes b64_json, utilisez une requête synchrone.

La création de la tâche peut réserver le montant estimé. Les tâches terminées sont facturées selon l’usage réel ; les tâches échouées ou expirées libèrent ou remboursent la réserve.

Requête

curl -X POST "https://api.tokenlab.sh/v1/images/edits" \
  -H "Authorization: Bearer sk-your-api-key" \
  -F "model=gpt-image-2" \
  -F "image=@sunlit_lounge.png" \
  -F "mask=@mask.png" \
  -F "prompt=A sunlit indoor lounge area with a pool" \
  -F "n=1" \
  -F "size=1024x1024"

Réponse

Response
{
  "created": 1706000000,
  "data": [
    {
      "url": "https://..."
    }
  ]
}

Notes

Les échecs de récupération d’images distantes sont renvoyés comme erreurs d’entrée avant le début de la génération. URL inaccessible, timeout, réponses 403/404, hôtes privés/internes, identifiants ou fragments dans l’URL, contenu non image, formats non pris en charge et dépassements de taille renvoient 400 ou 413 et indiquent l’entrée image_url / image_urls[n]. Pour des assets privés ou protégés par headers, téléversez directement des fichiers multipart image ou créez des références /v1/files.

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 selon des instructions écrites. Il convient aux ébauches visuelles et à l’affinement d’une composition.

{
  "model": "hy-image-v3.5-preview",
  "prompt": "Change the table to pale blue",
  "image_url": "https://example.com/reference.png",
  "size": "1024x1024",
  "n": 1,
  "response_format": "url"
}

Autorisation

BearerAuth
AuthorizationBearer <token>

Authentification par clé API. Créez ou gérez vos clés API dans Dashboard > API > API Keys.

Emplacement: header

En-têtes

X-TokenLab-Delivery-Policy?string

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"

Corps de la requête

Réponse

application/json

application/json

application/json

application/json

application/json

application/json