list_models, get_model, get_job_status, get_credit_balance) und die beiden
Modell-Verwaltungs-Tools (create_model, update_model). Die anderen neun kosten
Credits aus dem Pool deiner Organisation, zu denselben Raten wie
App und REST API.
Ein Tool-Aufruf, der wegen eines fehlenden Scopes abgelehnt wird, gibt einen
strukturierten Tool-Fehler zurück (keinen Crash) und nennt den benötigten Scope.
Keys werden standardmäßig mit allen Scopes erstellt; ein Admin kann einen Key in
Settings → API Keys einschränken oder erweitern.
Parameter
list_models(category?)
list_models(category?)
category(optional) — filtert auf eines vonstyle,object,person,setting.
id, name,
category und einer presigned thumbnail_url zurück. Verwende die ids oder
Namen als style_id / object_ids / person_ids / setting_ids in
generate_image und generate_video — ein Name wird zu einem für dich
sichtbaren Modell aufgelöst.get_model(model_id)
get_model(model_id)
model_id(erforderlich) — die id des Modells.
create_model(name, category, images, …)
create_model(name, category, images, …)
name(erforderlich) — der Modellname.category(erforderlich) — eines vonstyle,object,person,setting.images(erforderlich) — 1–10 Referenzbilder. Jedes ist entweder eine öffentlichehttps-URL oder ein inline base64-Data-URI (data:image/png;base64,…) —image/jpeg,image/pngoderimage/webp, je ≤ 10 MB.instruction(optional) — die stets angewandte Guidance des Modells (≤ 8000 Zeichen), die als verbindliche (“MUST FOLLOW”) Vorgabe in jede Generierung eingespeist wird, die das Modell komponiert. Siehe Modelltraining.webhook_url(optional) — einehttps-URL, die einmal benachrichtigt wird, sobald das Training einen finalen Status erreicht.
{ id, status: "pending", estimated_credits } zurück;
frage get_job_status(kind="model", id=…) ab (das zusätzlich den
models.read Scope erfordert), bis completed oder failed, und verwende die
Modell-id dann in generate_image / generate_video.
Kostenlos — die Modellerstellung zieht keine Credits ab. Presigned Uploads
großer Dateien sind REST-only (nicht über MCP verfügbar) — nutze dafür
POST /models/prepare.update_model(model_id, …)
update_model(model_id, …)
model_id(erforderlich) — das zu aktualisierende Modell.name(optional) — ein neuer Modellname.default_prompt(optional) — ein neuer Default-Prompt.instruction(optional) — die stets angewandte Guidance des Modells (≤ 8000 Zeichen). Sende einen leeren String, um sie zu löschen.
name, default_prompt oder instruction an;
ausgelassene Felder bleiben unverändert. Synchron — gibt sofort das
vollständige aktualisierte Modell zurück (gleiche Form wie get_model).
Kostenlos.generate_image(prompt, …)
generate_image(prompt, …)
prompt(erforderlich) — der Text-Prompt.style_id,object_ids,person_ids,setting_ids(optional) — ids oder Namen trainierter Modelle auslist_modelszum Komponieren (ein Name wird zu einem für dich sichtbaren Modell aufgelöst).color_palette(optional) — eine anzuwendende Farbpalette, angegeben als Name oder id (wie bei den Referenzen auf trainierte Modelle).num_outputs(1–4, Default1),aspect_ratio(Default"1:1"),resolution(Default"1K";1K/2K/4K).
aspect_ratio akzeptiert 1:1 (Default), 2:3, 3:2, 3:4, 4:3,
4:5, 5:4, 9:16, 16:9, 21:9, 1:4, 4:1, 1:8 und 8:1.Async — gibt sofort { id, status: "pending", estimated_credits }
zurück. Kosten: 5 × num_outputs × Auflösung (1K ×1, 2K ×2, 4K ×4),
abgezogen beim Einreichen.edit_image(prompt, …)
edit_image(prompt, …)
prompt(erforderlich) — wie das Bild bearbeitet werden soll.- Genau eines von
image_id(ein Bild in deinem Samsa-Kontext) oderimage_url(eine öffentliche https-URL). style_id,object_ids,person_ids,setting_ids(optional) — ids oder Namen trainierter Modelle auslist_models, um sie für markenkonforme Edits wiederzuverwenden (ein Name wird zu einem für dich sichtbaren Modell aufgelöst), gleichauf mitgenerate_image.color_palette(optional) — eine anzuwendende Farbpalette, angegeben als Name oder id.engine(optional) —nano_banana_pro(Default),geminioderkontext. Die Angabe einer trainierten-Modell-Referenz oder einer Farbpalette erzwingtnano_banana_pro.
{ id, status: "pending", estimated_credits } zurück.
Kosten: 5 Credits pro output (nano_banana_pro skaliert mit der Auflösung:
1K ×1, 2K ×2, 4K ×4), abgezogen beim Einreichen.img2img(prompt, images, …)
img2img(prompt, images, …)
prompt(erforderlich) — wie die Quellen transformiert werden sollen.images(erforderlich) — 1–14 Quellen; jedes Element ist entweder{ image_id }oder{ image_url }(eine https-URL). Die Quellreihenfolge bleibt erhalten. Kein base64 über MCP — siehe Bild-Eingaben.engine(optional) —nano_banana_pro(Default) odernano_banana_2.aspect_ratio(optional) — gegen die Liste der Engine validiert (nano_banana_2erlaubt zusätzlich4:1,1:4,8:1,1:8); ausgelassen bleibt die Quellform erhalten.resolution(1KDefault,2K,4K),num_outputs(Default1).
get_job_status(kind="img2img", id=…) ab. Kosten:
5 × num_outputs × Auflösung (1K ×1, 2K ×2, 4K ×4). Scope
images.edit.create_variations(image_id | image_url, …)
create_variations(image_id | image_url, …)
- Eines von
image_idoderimage_url(erforderlich). target(optional) — was sich ändern darf:everything(Default),person,object,scene.creativity(optional) —subtleodercreative(Default).variation_instructions/preservation_instructions(optional) — Freitext, je ≤ 2000 Zeichen.num_outputs(1–4, Default1).
resolution-Argument). Async — frage
get_job_status(kind="image_variation", id=…) ab. Kosten:
5 × num_outputs × Quellauflösung (1K ×1, 2K ×2, 4K ×4; eine Quelle ohne
ermittelbare Abmessungen wird mit 1K berechnet). Scope images.transform.resize_image(aspect_ratio, image_id | image_url, …)
resize_image(aspect_ratio, image_id | image_url, …)
aspect_ratio(erforderlich) — eines von21:9,16:9,3:2,4:3,5:4,1:1,4:5,3:4,2:3,9:16.- Eines von
image_idoderimage_url(erforderlich). resolution(1KDefault,2K,4K),num_outputs(1–4, Default1).prompt(optional) — Vorgabe für den neu freigelegten Bereich.placement(optional) —{ gravity, scale }, das die Quelle auf der Leinwand positioniert (gravityeines voncenter[Default],top,bottom,left,right,top_left,top_right,bottom_left,bottom_right;scalein(0, 1]).
prompt angegeben wird, gibt er das zusammengeführte Bild zurück und erstattet
die ungenutzten outputs. Async — frage
get_job_status(kind="image_resize", id=…) ab. Kosten:
5 × num_outputs × Auflösung. Scope images.transform.upscale_image(target_resolution, image_id | image_url, …)
upscale_image(target_resolution, image_id | image_url, …)
target_resolution(erforderlich) —2K,4K,6K,8K,10K,12K,14K,16K,20K,24K,28K,32K,38K(Klassen über16Ksind nur mitcrystal).- Eines von
image_idoderimage_url(erforderlich). model(optional) —seedvr,crystal(Default),magnific-creative,magnific-precision.options(optional) — pro Modell, streng validiert:options.magnific_creative(prompt,optimized_for,creativity/hdr/resemblance/fractalityin −10..10,engine) oderoptions.magnific_precision(sharpen/smart_grain/ultra_detailin 0..100,flavor).seedvr/crystalnehmen keine Optionen.
get_job_status(kind="image_upscale", id=…) ab.
Kosten: die Auflösungsstufe × den Modell-Multiplikator (Magnific ×3); crystal
über 12K wird nach Ausgabe-Megapixeln berechnet — siehe
Preise. Scope images.transform.remove_background(image_id | image_url)
remove_background(image_id | image_url)
- Eines von
image_idoderimage_url(erforderlich).
get_job_status(kind="image_background_removal", id=…) ab. Kosten: 1
Credit bei einem Miss; 0 bei einem Cache-Treffer — eine dir gehörende
image_id, die bereits ein Ergebnis der Hintergrundentfernung hat, gibt sofort
{ status: "completed", estimated_credits: 0 } zurück. Scope
images.transform.vectorize_image(svg_acceptance, image_id | image_url)
vectorize_image(svg_acceptance, image_id | image_url)
svg_acceptance(erforderlich) — muss der literale Booleantruesein.- Eines von
image_idoderimage_url(erforderlich).
422 svg_acceptance_required abgelehnt und nichts berechnet. Die
Auslieferung erfordert außerdem, dass deine Organisation die aktuellen ToS/AUP
akzeptiert hat (serverseitig verifiziert); andernfalls wird der Aufruf mit
403 svg_phase1_scope_out_required ohne Belastung abgelehnt. Async — frage
get_job_status(kind="image_vectorize", id=…) ab. Kosten: 5 bei einem
Miss; 0 bei einem Cache-Treffer. Scope images.transform.generate_video(mode, …)
generate_video(mode, …)
mode(erforderlich) — eines von:image_to_video— animiert einen Startframe. Erfordert genau eines vonimage_id/image_url; optionalend_image_urlbei endframe-fähigen Engines;promptoptional.text_to_video— erfordertprompt.text_to_video_styled— erfordertpromptundstyle_id;object_ids/person_ids/setting_idsoptional, plus eine optionalecolor_palette(Name oder id).
engine(Defaultveo_3_1_lite),duration(Default: die kürzeste von der Engine unterstützte Dauer, in Sekunden),aspect_ratio(Default"16:9"; auch9:16,1:1).
{ id, status: "pending", estimated_credits } zurück.
Kosten: 5 / Sekunde × Engine × Auflösung × Audio-Multiplikatoren; der
styled-Modus addiert pauschal 10 für das Zwischenbild. Siehe
Preise.get_job_status(kind, id)
get_job_status(kind, id)
kind(erforderlich) — eines vonimage_generation,image_edit,img2img,image_variation,image_resize,image_upscale,image_background_removal,image_vectorize,videoodermodel. Verwende den kind, den dir das einreichende Tool zum Abfragen genannt hat.id(erforderlich) — die Job- oder Modell-id, die ein Submit-Tool zurückgegeben hat.
pending → processing → completed / failed) zurück
und, sobald completed, presigned Ergebnis-URLs, die 24 Stunden gültig sind.
Erfordert den Scope des einreichenden Tools (models.read für
kind: "model").Bei einem abgeschlossenen Raster-Bild-Job — jeder Bild-kind außer
image_vectorize — enthält die Antwort außerdem eine herunterskalierte
Inline-Vorschau, sodass MCP clients sie direkt rendern können, neben dem Link
zum Asset in voller Auflösung. image_vectorize gibt ein SVG zurück (keine
Raster-Vorschau): nutze die presigned URL. Die Vorschau ist eine Kopie mit
reduzierter Auflösung für die schnelle Anzeige; rufe den Link für das Original
ab.get_credit_balance()
get_credit_balance()
Keine Parameter. Gibt zurück, was diese Verbindung ausgeben kann (
available und
spendable_plan_credits), zusammen mit den organisationsweiten plan_credits und
topup_credits, dem aktuellen Abrechnungszeitraum und scope — dem Budget-Regime, aus
dem die Verbindung ausgibt. available kann niedriger sein als plan_credits, wenn die
Organisation Plan-Credits für Teams reserviert; deshalb kann ein Job wegen fehlender
Credits abgelehnt werden, während die Organisation noch ein Guthaben ausweist. Die
vollständige Feldsemantik steht unter
GET /credits.
