list_models, get_model, get_job_status, get_credit_balance) et les deux
outils de gestion de modèles (create_model, update_model). Les neuf autres
coûtent des credits du pool de ton organisation, aux mêmes
tarifs que l’app et l’API REST.
Un appel d’outil rejeté pour un scope manquant renvoie une erreur d’outil
structurée (pas un crash) nommant le scope dont il a besoin. Les clés sont créées
avec tous les scopes par défaut ; un admin peut restreindre ou élargir une clé
dans Settings → API Keys.
Paramètres
list_models(category?)
list_models(category?)
category(optionnel) — filtre sur l’un destyle,object,person,setting.
id, name,
category et une thumbnail_url presignée. Utilise les ids ou les noms comme
style_id / object_ids / person_ids / setting_ids dans generate_image
et generate_video — un nom est résolu vers un modèle visible pour toi.get_model(model_id)
get_model(model_id)
model_id(requis) — l’id du modèle.
create_model(name, category, images, …)
create_model(name, category, images, …)
name(requis) — le nom du modèle.category(requis) — l’un destyle,object,person,setting.images(requis) — 1–10 images de référence. Chacune est soit une URLhttpspublique soit un data URI base64 inline (data:image/png;base64,…) —image/jpeg,image/pngouimage/webp, ≤ 10 Mo chacune.instruction(optionnel) — la guidance toujours appliquée du modèle (≤ 8000 caractères), injectée comme directive obligatoire (“MUST FOLLOW”) dans chaque génération qui compose le modèle. Voir Entraînement de modèles.webhook_url(optionnel) — une URLhttpsnotifiée une fois lorsque l’entraînement atteint un statut terminal.
{ id, status: "pending", estimated_credits }
immédiatement ; interroge get_job_status(kind="model", id=…) (qui nécessite
aussi le scope models.read) jusqu’à completed ou failed, puis utilise l’id
du modèle dans generate_image / generate_video. Gratuit — la création de modèle ne déduit aucun credit.
Les uploads presignés de gros fichiers sont réservés au REST (non exposés via
MCP) — utilise POST /models/prepare
pour cela.update_model(model_id, …)
update_model(model_id, …)
model_id(requis) — le modèle à mettre à jour.name(optionnel) — un nouveau nom de modèle.default_prompt(optionnel) — un nouveau prompt par défaut.instruction(optionnel) — la guidance toujours appliquée du modèle (≤ 8000 caractères). Envoie une chaîne vide pour l’effacer.
name, default_prompt ou instruction ; les
champs omis restent inchangés. Synchrone — renvoie immédiatement le modèle
mis à jour complet (même forme que get_model). Gratuit.generate_image(prompt, …)
generate_image(prompt, …)
prompt(requis) — le prompt texte.style_id,object_ids,person_ids,setting_ids(optionnels) — ids ou noms de modèles entraînés issus delist_modelsà composer (un nom est résolu vers un modèle visible pour toi).color_palette(optionnel) — une palette de couleurs à appliquer, donnée par son nom ou son id (comme les références de modèles entraînés).num_outputs(1–4, par défaut1),aspect_ratio(par défaut"1:1"),resolution(par défaut"1K";1K/2K/4K).
aspect_ratio accepte 1:1 (par défaut), 2:3, 3:2, 3:4, 4:3, 4:5,
5:4, 9:16, 16:9, 21:9, 1:4, 4:1, 1:8 et 8:1.Async — renvoie { id, status: "pending", estimated_credits }
immédiatement. Coût : 5 × num_outputs × resolution (1K ×1, 2K ×2, 4K
×4), déduit à la soumission.edit_image(prompt, …)
edit_image(prompt, …)
prompt(requis) — comment éditer l’image.- Exactement un de
image_id(une image de ton contexte Samsa) ouimage_url(une URL https publique). style_id,object_ids,person_ids,setting_ids(optionnels) — ids ou noms de modèles entraînés issus delist_modelsà réutiliser pour des éditions fidèles à ta marque (un nom est résolu vers un modèle visible pour toi), à parité avecgenerate_image.color_palette(optionnel) — une palette de couleurs à appliquer, donnée par son nom ou son id.engine(optionnel) —nano_banana_pro(par défaut),geminioukontext. Fournir une référence de modèle entraîné ou une palette de couleurs forcenano_banana_pro.
{ id, status: "pending", estimated_credits }. Coût : 5
credits par output (nano_banana_pro est mis à l’échelle selon la résolution :
1K ×1, 2K ×2, 4K ×4), déduit à la soumission.img2img(prompt, images, …)
img2img(prompt, images, …)
prompt(requis) — comment transformer les sources.images(requis) — 1–14 sources ; chaque élément est soit{ image_id }soit{ image_url }(une URL https). L’ordre des sources est préservé. Pas de base64 en MCP — voir Entrées d’image.engine(optionnel) —nano_banana_pro(par défaut) ounano_banana_2.aspect_ratio(optionnel) — validé contre la liste du moteur (nano_banana_2autorise en plus4:1,1:4,8:1,1:8) ; omis, la forme de la source est préservée.resolution(1Kpar défaut,2K,4K),num_outputs(par défaut1).
get_job_status(kind="img2img", id=…). Coût :
5 × num_outputs × résolution (1K ×1, 2K ×2, 4K ×4). Scope
images.edit.create_variations(image_id | image_url, …)
create_variations(image_id | image_url, …)
- Un de
image_idouimage_url(requis). target(optionnel) — ce qui peut changer :everything(par défaut),person,object,scene.creativity(optionnel) —subtleoucreative(par défaut).variation_instructions/preservation_instructions(optionnels) — texte libre, ≤ 2000 caractères chacun.num_outputs(1–4, par défaut1).
resolution). Async — interroge
get_job_status(kind="image_variation", id=…). Coût :
5 × num_outputs × résolution source (1K ×1, 2K ×2, 4K ×4 ; une source
sans dimensions récupérables est facturée à 1K). Scope images.transform.resize_image(aspect_ratio, image_id | image_url, …)
resize_image(aspect_ratio, image_id | image_url, …)
aspect_ratio(requis) — un de21:9,16:9,3:2,4:3,5:4,1:1,4:5,3:4,2:3,9:16.- Un de
image_idouimage_url(requis). resolution(1Kpar défaut,2K,4K),num_outputs(1–4, par défaut1).prompt(optionnel) — guidage pour la zone nouvellement exposée.placement(optionnel) —{ gravity, scale }positionnant la source sur le canevas (gravityun decenter[par défaut],top,bottom,left,right,top_left,top_right,bottom_left,bottom_right;scaledans(0, 1]).
prompt n’est fourni, il renvoie l’image aplatie et rembourse les outputs
inutilisés. Async — interroge get_job_status(kind="image_resize", id=…).
Coût : 5 × num_outputs × résolution. Scope images.transform.upscale_image(target_resolution, image_id | image_url, …)
upscale_image(target_resolution, image_id | image_url, …)
target_resolution(requis) —2K,4K,6K,8K,10K,12K,14K,16K,20K,24K,28K,32K,38K(les classes au-dessus de16Ksont réservées àcrystal).- Un de
image_idouimage_url(requis). model(optionnel) —seedvr,crystal(par défaut),magnific-creative,magnific-precision.options(optionnel) — par modèle, strictement validées :options.magnific_creative(prompt,optimized_for,creativity/hdr/resemblance/fractalitydans −10..10,engine) ouoptions.magnific_precision(sharpen/smart_grain/ultra_detaildans 0..100,flavor).seedvr/crystalne prennent pas d’options.
get_job_status(kind="image_upscale", id=…).
Coût : le palier de résolution × le multiplicateur du modèle (Magnific ×3) ;
crystal au-dessus de 12K est facturé selon les mégapixels de sortie — voir
tarification. Scope images.transform.remove_background(image_id | image_url)
remove_background(image_id | image_url)
- Un de
image_idouimage_url(requis).
get_job_status(kind="image_background_removal", id=…). Coût : 1
credit sur un miss ; 0 sur un cache hit — un image_id que tu possèdes qui a
déjà un résultat de suppression d’arrière-plan renvoie immédiatement
{ status: "completed", estimated_credits: 0 }. Scope images.transform.vectorize_image(svg_acceptance, image_id | image_url)
vectorize_image(svg_acceptance, image_id | image_url)
svg_acceptance(requis) — doit être le booléen littéraltrue.- Un de
image_idouimage_url(requis).
422 svg_acceptance_required et rien n’est facturé. La
livraison exige aussi que ton organisation ait accepté les ToS/AUP actuels
(vérifié côté serveur) ; sinon l’appel est rejeté 403 svg_phase1_scope_out_required
sans facturation. Async — interroge
get_job_status(kind="image_vectorize", id=…). Coût : 5 sur un miss ; 0
sur un cache hit. Scope images.transform.generate_video(mode, …)
generate_video(mode, …)
mode(requis) — l’un de :image_to_video— anime une image de départ. Requiert exactement un deimage_id/image_url;end_image_urloptionnel sur les moteurs prenant en charge une image de fin ;promptoptionnel.text_to_video— requiertprompt.text_to_video_styled— requiertpromptetstyle_id;object_ids/person_ids/setting_idsoptionnels, plus unecolor_paletteoptionnelle (nom ou id).
engine(par défautveo_3_1_lite),duration(par défaut : la durée la plus courte prise en charge par le moteur, en secondes),aspect_ratio(par défaut"16:9"; aussi9:16,1:1).
{ id, status: "pending", estimated_credits }. Coût :
multiplicateurs 5 / seconde × moteur × résolution × audio ; le mode stylisé
ajoute un forfait de 10 pour l’image intermédiaire. Voir
tarification.get_job_status(kind, id)
get_job_status(kind, id)
kind(requis) — un deimage_generation,image_edit,img2img,image_variation,image_resize,image_upscale,image_background_removal,image_vectorize,videooumodel. Utilise le kind que l’outil de soumission t’a indiqué d’interroger.id(requis) — l’id de job ou de modèle qu’un outil de soumission a renvoyé.
pending → processing → completed / failed) et, une
fois completed, les URLs de résultat presignées valables 24 heures. Requiert
le scope de l’outil de soumission (models.read pour kind: "model").Pour un job d’image raster terminé — tout kind d’image sauf
image_vectorize — la réponse inclut aussi un aperçu inline réduit, pour que
les clients MCP puissent l’afficher directement, en plus du lien vers l’asset en
pleine résolution. image_vectorize renvoie un SVG (pas d’aperçu raster) : utilise
l’URL presignée. L’aperçu est une copie en résolution réduite pour un affichage
rapide ; récupère le lien pour l’original.get_credit_balance()
get_credit_balance()
Aucun paramètre. Renvoie ce que cette connexion peut dépenser (
available et
spendable_plan_credits), ainsi que les plan_credits et topup_credits de
l’organisation, la période de facturation actuelle et scope — le régime de budget
depuis lequel la connexion puise. available peut être inférieur à plan_credits quand
l’organisation réserve des credits de plan à des équipes, ce qui explique qu’un job
puisse être refusé pour credits insuffisants alors que l’organisation affiche encore un
solde. Voir GET /credits pour la sémantique
complète des champs.
