Guide
Interface de génération d'images
Paramètres de requête de génération d'images, limites de taille et conventions de réponse
Interface de génération d'images
Pour les conventions communes (adresse de base, authentification, structure de réponse, limitation de débit), voir Authentification et conventions de base.
Créer une image
/v1/images/generationsMéthode d'authentification
Authorization: Bearer <API_KEY>, avec la clé API de plateforme créée dans la page « Clés API » de la console.
Corps de requête · application/json
Prop
Type
Les modèles d'image ont des restrictions différentes en matière de taille, de quantité et de format de retour ; vérifiez d'abord avec /v1/models et fiez-vous aux erreurs de validation de paramètres renvoyées par l'interface.
Exemple de requête
Vérifiez d'abord avec /v1/models l'ID du modèle d'image disponible pour la clé actuelle, puis remplacez model par celui-ci.
size doit correspondre à un palier pris en charge par ce modèle — le nombre minimal de pixels varie fortement d'un modèle à l'autre ;
une valeur incorrecte renvoie directement une erreur de paramètre, sans dégradation silencieuse.
La réponse peut être sous forme d'URL ou sous forme Base64, selon le modèle et le canal.
Requête
curl -X POST "https://locopalai.com/v1/images/generations" \
-H "Authorization: Bearer $LOCOPAL_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{
"model": "从 /v1/models 选择的图片模型 ID",
"prompt": "白色桌面上的一个红苹果,柔和自然光,产品摄影",
"size": "当前模型支持的尺寸",
"n": 1
}
JSONParamètres de réponse
| Paramètre | Type | Description |
|---|---|---|
created | integer | Heure de génération (secondes Unix) |
model | string | Certains modèles renvoient l'ID du modèle réellement exécuté |
data | array | Liste des résultats générés |
data[].url | string | Adresse de l'image ; présente lorsque le retour est au format URL, il peut s'agir d'une adresse signée temporaire |
data[].b64_json | string | Données d'image Base64 ; présentes lorsque le retour est au format Base64 |
data[].size | string | Certains modèles renvoient la taille réellement générée |
size | string | Taille réellement générée renvoyée au niveau racine, par exemple 1024x1024, 1376x768 |
quality | string | Niveau de qualité réel renvoyé au niveau racine, par exemple auto, low |
output_format | string | Format de sortie réel renvoyé au niveau racine, par exemple png |
background | string | Mode de traitement de l'arrière-plan renvoyé au niveau racine, par exemple auto, opaque |
moderation | string | Niveau de modération du contenu renvoyé au niveau racine, pour certains modèles |
usage | object | Usage de l'image ; l'édition d'image compte en plus les tokens de l'image d'entrée |
Une requête peut ne renvoyer que url ou que b64_json, selon le modèle et le canal ; fiez-vous aux champs réellement renvoyés, et si les deux sont présents, privilégiez url.
Corps de réponse
Retour d'une adresse (format url) :
{
"created": 1789567052,
"data": [
{
"size": "2048x2048",
"url": "https://media.example.com/image-public-id.jpeg"
}
],
"model": "Doubao-Seedream-4.5"
}Retour en Base64 (format b64_json, extrait) :
{
"background": "auto",
"created": 1789071752,
"data": [
{ "b64_json": "iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAIAAADwf7zU..." }
]
}Une adresse renvoyée au format url peut être une adresse signée temporaire ; copiez-la ou enregistrez-la rapidement. Pour le format b64_json, décodez et stockez les données vous-même. Ne supposez pas que tous les modèles d'image acceptent response_format ou les mêmes tailles. Testé : gpt-image-1-mini refuse response_format, et Doubao-Seedream-4.5 exige actuellement au moins 3686400 pixels, 2048x2048 étant accepté tandis que 1024x1024 renvoie une erreur de paramètre.
Réponse d'erreur
{
"error": {
"message": "当前图片模型不支持请求的尺寸",
"type": "invalid_request_error",
"code": "invalid_parameter",
"param": "size"
}
}| HTTP | Réponse / Cause | Traitement |
|---|---|---|
400 | Model name not specified, model name cannot be empty | Le corps de requête ne contient pas model |
400 | invalid_parameter (param=size) | Utilisez une taille prise en charge par le modèle actuel |
400 | unknown_parameter (param=response_format) | Supprimez ce champ et utilisez le format de retour par défaut du modèle |
400 | InvalidParameter / upstream_error | Le modèle amont refuse la taille, le nombre de pixels ou un autre paramètre ; ajustez selon message |
400 | invalid_parameter (param=n) | Passez à n=1 |
400 | image is required (code=convert_request_failed) | La requête d'édition d'image ne contient pas d'image de référence ; ajoutez image comme dans l'exemple ci-dessous |
400 | n must be an integer between 1 and 128 (code=invalid_request) | n est hors plage ; utilisez 1–128 |
429 | credit_balance_exhausted / insufficient_quota | Le solde du canal actuel est insuffisant ; utilisez un autre canal disponible ou contactez le support de la plateforme |
401 | Invalid token | Clé API absente, incorrecte ou expirée |
500 | {"error":{"code":"convert_request_failed","message":"not supported model for image generation, only imagen models are supported"}} | Le modèle actuel ne prend pas en charge l'interface de génération d'images ; utilisez un modèle d'image prenant en charge cette interface |
503 | model_not_found / No available channel | Le groupe actuel n'a aucun canal disponible pour ce modèle ; choisissez un modèle similaire |
Pour une description complète, voir Codes d'erreur et diagnostic.
Édition d'image (image vers image)
/v1/images/editsGénérer une nouvelle image à partir d'une image existante : téléversez une ou plusieurs images de référence, et le modèle modifie la scène, change le style ou effectue un repaint local selon prompt.
Corps de requête · multipart/form-data
Prop
Type
La requête doit inclure une image de référence ; en son absence, l'interface renvoie directement une erreur de paramètre sans atteindre le modèle.
Exemple de requête
L'édition d'image passe par multipart/form-data : soumettez chaque champ avec -F, et non avec -d.
L'image de référence est téléversée via image=@chemin/du/fichier.
Pour plusieurs images de référence, écrivez le champ sous forme de tableau image[] et répétez-le.
Il n'y a pas de corps JSON ici ; Content-Type est défini automatiquement par curl -F, ne l'écrivez pas à la main.
Édition d'image
curl -X POST "https://locopalai.com/v1/images/edits" \
-H "Authorization: Bearer $LOCOPAL_API_KEY" \
-F "model=从 /v1/models 选择的图片模型 ID" \
-F "prompt=把这张照片改成柔和的水彩画风格" \
-F "size=1024x1024" \
-F "image=@./reference.png"Pour plusieurs images de référence, répétez ce champ :
-F "image[]=@./reference-a.png" \
-F "image[]=@./reference-b.png"Corps de réponse
Même structure que Créer une image ; l'image est renvoyée en b64_json ou en url :
{
"background": "opaque",
"created": 1789651524,
"data": [
{ "b64_json": "iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAIAAADwf7zU..." }
],
"output_format": "png",
"quality": "low",
"size": "1024x1024",
"usage": {
"input_tokens": 1041,
"input_tokens_details": { "image_tokens": 1032, "text_tokens": 9 },
"output_tokens": 439,
"total_tokens": 1480
}
}usage.input_tokens_details.image_tokens reflète la consommation des images de référence : plus il y a d'images ou plus leur taille est grande, plus le nombre de tokens d'entrée est élevé.
Transmettre une image de référence via une adresse publique
Les modèles prenant en charge les images de référence peuvent aussi recevoir leur image via images dans le corps JSON de POST /v1/images/generations, chaque élément étant une adresse d'image https:// publique :
curl -X POST "https://locopalai.com/v1/images/generations" \
-H "Authorization: Bearer $LOCOPAL_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{
"model": "从 /v1/models 选择的图片模型 ID",
"prompt": "把这张照片改成柔和的水彩画风格",
"images": ["https://example.com/reference.png"]
}
JSONL'image de référence doit être directement téléchargeable par le serveur ; si l'adresse est invalide ou nécessite une connexion, la requête se termine par une erreur de téléchargement amont. La structure de réponse est identique à Créer une image.
Relation avec la bibliothèque de ressources
La génération d'images n'alimente pas automatiquement la bibliothèque de ressources. Si une tâche vidéo ultérieure doit utiliser l'image comme image de référence, importez-la d'abord via les interfaces de la bibliothèque de ressources, interrogez jusqu'à l'état Active, puis référencez-la avec asset://<asset_id>.
