Générer des images
Magic Edit
Créer de la vidéo
Suivre les jobs & les credits
/mcp, sans slash final)
sert les deux modes d’authentification. Le transport est stateless : chaque appel
d’outil renvoie une unique réponse JSON, et les outils de génération renvoient un id
de job immédiatement pour que rien ne maintienne un flux longue durée ouvert.
Se connecter en trois étapes
Récupère tes identifiants
Ajoute le server
https://api.samsa.ai/mcp. Il n’y a rien à installer ni
de processus local — voir ton client ci-dessous pour la
configuration exacte à faire une seule fois.Commence à créer
Authentification
Le endpoint MCP accepte deux types d’identifiants sur la même URL. Choisis celui qui correspond à ton client :401, s’enregistre dynamiquement
(PKCE, sans client secret), et te fait passer par un écran de consentement avant
d’échanger un access token de courte durée. Le flux de consentement navigateur
interactif est en early access — si une connexion ne se termine pas,
dis-le-nous à support@samsa.ai.Outils
Le server expose neuf outils. Les quatre lectures (list_models, get_model,
get_job_status, get_credit_balance) et les deux outils de gestion de modèles
(create_model, update_model) sont gratuits ; les trois outils de génération
coûtent des credits du pool de ton organisation, aux mêmes
tarifs que l’app et l’API REST.
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.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) —image_generation,image_edit,videooumodel.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 terminé (image_generation ou image_edit), la réponse
inclut aussi l’image elle-même sous forme d’aperçu inline réduit — pour que
les clients MCP puissent l’afficher directement — en plus du lien vers l’image en
pleine résolution. L’aperçu est une copie en résolution réduite pour un affichage
rapide ; récupère le lien pour l’asset original en pleine résolution.get_credit_balance()
get_credit_balance()
Le modèle asynchrone
Les trois outils de génération sont asynchrones — ils mettent un job en file et renvoient immédiatement, pour que ton client ne bloque jamais en attendant un rendu.Soumettre
generate_image, edit_image ou generate_video. Il renvoie
{ id, status: "pending", estimated_credits, next_step } en quelques
millisecondes, et les credits estimés sont déduits du pool de ton organisation à
la soumission.Interroger
get_job_status(kind=…, id=…) avec l’id que tu as reçu. Le statut passe
de pending → processing → completed (ou failed). Les jobs d’image
finissent généralement en 30 secondes à deux minutes ; la vidéo en une à cinq.Récupérer
completed, la réponse porte les URLs de résultat presignées valables
24 heures. Si un job se termine en failed du côté de Samsa, les credits sont
automatiquement remboursés sur le même pool.Configure ton client
Ajoutehttps://api.samsa.ai/mcp à ton client ci-dessous. Claude et ChatGPT
se connectent avec OAuth ; tous les autres clients s’authentifient avec une
API key (Authorization: Bearer samsa_sk_…).
- Claude
- ChatGPT
- Claude Code
- Cursor
- VS Code
- Plus de clients
Ajoute le connecteur
https://api.samsa.ai/mcp.Connecte-toi
/mcp
depuis le navigateur avec Origin: https://claude.ai, ce que Samsa autorise,
donc la découverte et la connexion fonctionnent sans configuration
supplémentaire. Sur desktop, suis les instructions de connecteur actuelles
d’Anthropic et utilise la même URL de server.Sécurité, credits & accès
- Credits.
generate_image,edit_imageetgenerate_videopuisent dans le pool de credits partagé de ton organisation aux tarifs de l’app. Les lectures sont gratuites. Vérifie le solde à tout moment avecget_credit_balance. - Scopes. Chaque outil requiert un scope. Une API key ou un token OAuth n’expose que les outils autorisés par ses scopes — restreins une clé exactement à ce dont une intégration a besoin.
- Révoquer l’accès. Un admin révoque une API key dans Settings → API Keys ; la révocation est définitive et prend effet dès l’appel suivant. Pour une connexion OAuth, déconnecte le connecteur dans ton client (paramètres de connecteur de Claude ou ChatGPT) ; les access tokens peuvent aussi être révoqués au endpoint de révocation OAuth de Samsa. Un identifiant révoqué cesse de fonctionner immédiatement.
Dépannage
Invites de connexion répétées ou 401
Invites de connexion répétées ou 401
401 est le server qui demande au client de (re)s’authentifier.- Clients OAuth : déconnecte le connecteur Samsa et reconnecte-toi pour relancer la connexion. Si le consentement ne se termine jamais, c’est peut-être le flux navigateur early-access — dis-le-nous.
- Clients API key : confirme que le header est exactement
Authorization: Bearer samsa_sk_...et que la clé est valide — une clé manquante, expirée ou révoquée renvoie401 invalid_api_key. Crée une clé fraîche dans Settings → API Keys en cas de doute.
Pour quelle organisation j'agis ?
Pour quelle organisation j'agis ?
Appel d'outil rejeté — credits insuffisants
Appel d'outil rejeté — credits insuffisants
insufficient_credits structurée
avant qu’aucun job ne tourne — rien n’est facturé. Vérifie
get_credit_balance, puis recharge ou fais évoluer ton plan dans l’
app Samsa. Les lectures sont toujours gratuites.Rate limited ou trop de jobs
Rate limited ou trop de jobs
- Rate de requêtes par clé — 60 requêtes/minute ; l’excès renvoie
rate_limited. - Concurrence par organisation — au plus 5 jobs en cours à la fois ; un
sixième renvoie
too_many_active_jobs. Laisse les jobs finir (interrogeget_job_status) avant d’en soumettre d’autres. - Concurrence du transport MCP — un burst de requêtes
/mcpsimultanées sur un même worker peut renvoyer un429 concurrency_limit_exceededtransitoire avecRetry-After: 1. Attends une seconde et réessaie.
Un outil est absent ou dit qu'il lui manque un scope
Un outil est absent ou dit qu'il lui manque un scope
generate_image a besoin de images.generate. Modifie les scopes
de la clé (ou émets une nouvelle clé) dans Settings → API Keys, puis
reconnecte-toi.
