Genera immagini
Magic Edit
Crea video
Traccia job e credits
/mcp, senza barra finale) serve
entrambe le modalità di autenticazione. Il transport è stateless: ogni chiamata a uno
strumento restituisce una singola risposta JSON e gli strumenti di generazione
restituiscono un id del job immediatamente, così niente mantiene aperto uno stream di
lunga durata.
Connettiti in tre passaggi
Ottieni le tue credenziali
Aggiungi il server
https://api.samsa.ai/mcp. Non c’è nulla da installare né
alcun processo locale — consulta il tuo client qui sotto
per l’esatta configurazione una tantum.Inizia a creare
Autenticazione
L’endpoint MCP accetta due tipi di credenziali sullo stesso URL. Scegli quella che corrisponde al tuo client:401, si registra dinamicamente (PKCE, nessun
client secret) e ti fa passare attraverso una schermata di consenso prima di
scambiare un access token di breve durata. Il flusso interattivo di consenso via
browser è in early access — se un accesso non si completa, faccelo sapere a
support@samsa.ai.Strumenti
Il server espone nove strumenti. Le quattro letture (list_models, get_model,
get_job_status, get_credit_balance) e i due strumenti di gestione dei modelli
(create_model, update_model) sono gratuiti; i tre strumenti di generazione
costano credits dal pool della tua organizzazione, alle stesse
tariffe dell’app e della REST API.
Parametri
list_models(category?)
list_models(category?)
category(facoltativo) — filtra a uno trastyle,object,person,setting.
id, name,
category e un thumbnail_url presigned. Usa gli id o i nomi come style_id /
object_ids / person_ids / setting_ids in generate_image e
generate_video — un nome viene risolto a un modello visibile a te.get_model(model_id)
get_model(model_id)
model_id(obbligatorio) — l’id del modello.
create_model(name, category, images, …)
create_model(name, category, images, …)
name(obbligatorio) — il nome del modello.category(obbligatorio) — uno trastyle,object,person,setting.images(obbligatorio) — 1–10 immagini di riferimento. Ciascuna è o un URLhttpspubblico oppure un data URI base64 inline (data:image/png;base64,…) —image/jpeg,image/pngoimage/webp, ≤ 10 MB ciascuna.instruction(facoltativo) — la guida sempre applicata del modello (≤ 8000 caratteri), iniettata come direttiva obbligatoria (“MUST FOLLOW”) in ogni generazione che compone il modello. Vedi Addestramento di modelli.webhook_url(facoltativo) — un URLhttpsnotificato una volta quando l’addestramento raggiunge uno stato terminale.
{ id, status: "pending", estimated_credits };
interroga get_job_status(kind="model", id=…) (che richiede anche lo scope
models.read) finché non è completed o failed, poi usa l’id del modello in
generate_image / generate_video.
Gratis — la creazione del modello non deduce credits. Gli upload presigned di
file di grandi dimensioni sono solo REST (non esposti via MCP) — usa
POST /models/prepare per quelli.update_model(model_id, …)
update_model(model_id, …)
model_id(obbligatorio) — il modello da aggiornare.name(facoltativo) — un nuovo nome del modello.default_prompt(facoltativo) — un nuovo prompt predefinito.instruction(facoltativo) — la guida sempre applicata del modello (≤ 8000 caratteri). Invia una stringa vuota per cancellarla.
name, default_prompt o instruction; i campi
omessi restano invariati. Sincrono — restituisce subito il modello aggiornato
completo (stessa forma di get_model). Gratis.generate_image(prompt, …)
generate_image(prompt, …)
prompt(obbligatorio) — il prompt testuale.style_id,object_ids,person_ids,setting_ids(facoltativi) — id o nomi dei modelli addestrati dalist_modelsda comporre (un nome viene risolto a un modello visibile a te).color_palette(facoltativo) — una palette di colori da applicare, indicata con il suo nome o id (come i riferimenti ai modelli addestrati).num_outputs(1–4, predefinito1),aspect_ratio(predefinito"1:1"),resolution(predefinito"1K";1K/2K/4K).
aspect_ratio accetta 1:1 (predefinito), 2:3, 3:2, 3:4, 4:3, 4:5,
5:4, 9:16, 16:9, 21:9, 1:4, 4:1, 1:8 e 8:1.Asincrono — restituisce { id, status: "pending", estimated_credits }
immediatamente. Costo: 5 × num_outputs × risoluzione (1K ×1, 2K ×2, 4K
×4), dedotto all’invio.edit_image(prompt, …)
edit_image(prompt, …)
prompt(obbligatorio) — come modificare l’immagine.- Esattamente uno tra
image_id(un’immagine nel tuo contesto Samsa) oimage_url(un URL https pubblico). style_id,object_ids,person_ids,setting_ids(facoltativi) — id o nomi dei modelli addestrati dalist_modelsda riusare per modifiche fedeli al tuo brand (un nome viene risolto a un modello visibile a te), alla pari congenerate_image.color_palette(facoltativo) — una palette di colori da applicare, indicata con il suo nome o id.engine(facoltativo) —nano_banana_pro(predefinito),geminiokontext. Fornire un qualsiasi riferimento a un modello addestrato o una palette di colori forzanano_banana_pro.
{ id, status: "pending", estimated_credits }. Costo:
5 credits per output (nano_banana_pro scala con la risoluzione: 1K ×1, 2K
×2, 4K ×4), dedotto all’invio.generate_video(mode, …)
generate_video(mode, …)
mode(obbligatorio) — uno tra:image_to_video— anima un frame iniziale. Richiede esattamente uno traimage_id/image_url;end_image_urlfacoltativo su engine capaci di gestire il frame finale;promptfacoltativo.text_to_video— richiedeprompt.text_to_video_styled— richiedepromptestyle_id;object_ids/person_ids/setting_idsfacoltativi, più unacolor_palettefacoltativa (nome o id).
engine(predefinitoveo_3_1_lite),duration(predefinito: la durata più breve supportata dall’engine, in secondi),aspect_ratio(predefinito"16:9"; anche9:16,1:1).
{ id, status: "pending", estimated_credits }. Costo:
moltiplicatori 5 / secondo × engine × risoluzione × audio; la modalità stilizzata
aggiunge un forfait di 10 per l’immagine intermedia. Consulta
prezzi.get_job_status(kind, id)
get_job_status(kind, id)
kind(obbligatorio) —image_generation,image_edit,videoomodel.id(obbligatorio) — l’id del job o del modello restituito da uno strumento di invio.
pending → processing → completed / failed) e, una
volta completed, gli URL presigned del risultato validi per 24 ore. Richiede lo
scope dello strumento che ha inviato (models.read per kind: "model").Per un job di immagine completato (image_generation o image_edit), la
risposta include anche l’immagine stessa come anteprima inline ridimensionata
— così i client MCP possono visualizzarla direttamente — insieme al link
all’immagine a piena risoluzione. L’anteprima è una copia a risoluzione ridotta
per una visualizzazione rapida; recupera il link per l’asset originale a piena
risoluzione.get_credit_balance()
get_credit_balance()
Il pattern asincrono
I tre strumenti di generazione sono asincroni — accodano un job e restituiscono subito, così il tuo client non si blocca mai in attesa di un rendering.Invio
generate_image, edit_image o generate_video. Restituisce
{ id, status: "pending", estimated_credits, next_step } in millisecondi e i
credits stimati vengono dedotti dal pool della tua organizzazione all’invio.Interrogazione
get_job_status(kind=…, id=…) con l’id che hai ricevuto. Lo stato passa
da pending → processing → completed (o failed). I job di immagine
tipicamente finiscono da 30 secondi a due minuti; i video da uno a cinque.Raccolta
completed, la risposta contiene gli URL presigned del risultato validi
per 24 ore. Se un job termina failed per un problema di Samsa, i credits vengono
automaticamente rimborsati allo stesso pool.Configura il tuo client
Aggiungihttps://api.samsa.ai/mcp al tuo client qui sotto. Claude e ChatGPT
accedono con OAuth; ogni altro client si autentica con una
API key (Authorization: Bearer samsa_sk_…).
- Claude
- ChatGPT
- Claude Code
- Cursor
- VS Code
- Altri client
Aggiungi il connector
https://api.samsa.ai/mcp.Accedi
/mcp dal
browser con Origin: https://claude.ai, che Samsa consente, così discovery e
accesso funzionano senza configurazione aggiuntiva. Su desktop, segui le istruzioni
correnti di Anthropic per i connector e usa lo stesso server URL.Sicurezza, credits e accesso
- Credits.
generate_image,edit_imageegenerate_videoprelevano dal pool di credits condiviso della tua organizzazione alle tariffe dell’app. Le letture sono gratuite. Controlla il saldo in qualsiasi momento conget_credit_balance. - Scope. Ogni strumento richiede uno scope. Una API key o un token OAuth espone solo gli strumenti consentiti dai suoi scope — restringi una chiave esattamente a ciò di cui un’integrazione ha bisogno.
- Revoca dell’accesso. Un admin revoca una API key in Settings → API Keys; la revoca è definitiva e ha effetto alla chiamata immediatamente successiva. Per una connessione OAuth, disconnetti il connector nel tuo client (impostazioni dei connector di Claude o ChatGPT); gli access token possono anche essere revocati all’endpoint di revoca OAuth di Samsa. Una credenziale revocata smette di funzionare immediatamente.
Risoluzione dei problemi
Richieste di accesso ripetute o 401
Richieste di accesso ripetute o 401
401 è il server che chiede al client di (ri)autenticarsi.- Client OAuth: disconnetti il connector Samsa e riconnettiti per riavviare l’accesso. Se il consenso non si completa mai, potrebbe essere il flusso via browser in early access — faccelo sapere.
- Client con API key: verifica che l’header sia esattamente
Authorization: Bearer samsa_sk_...e che la chiave sia valida — una chiave mancante, scaduta o revocata restituisce401 invalid_api_key. In caso di dubbio, crea una nuova chiave in Settings → API Keys.
Per quale organizzazione sto agendo?
Per quale organizzazione sto agendo?
Chiamata a uno strumento rifiutata — credits insufficienti
Chiamata a uno strumento rifiutata — credits insufficienti
insufficient_credits prima che
qualsiasi job venga eseguito — nulla viene addebitato. Controlla
get_credit_balance, poi ricarica o esegui l’upgrade nell’
app Samsa. Le letture sono sempre gratuite.Rate limit o troppi job
Rate limit o troppi job
- Rate di richieste per chiave — 60 richieste/minuto; l’eccesso restituisce
rate_limited. - Concorrenza per organizzazione — al massimo 5 job in corso alla volta; un
sesto restituisce
too_many_active_jobs. Lascia finire i job (interrogaget_job_status) prima di inviarne altri. - Concorrenza del transport MCP — una raffica di richieste
/mcpsimultanee su un singolo worker può restituire un transitorio429 concurrency_limit_exceededconRetry-After: 1. Aspetta un secondo e riprova.
Uno strumento manca o dice che gli manca uno scope
Uno strumento manca o dice che gli manca uno scope
generate_image necessita di images.generate. Modifica gli scope della chiave (o
emetti una nuova chiave) in Settings → API Keys, poi riconnettiti.
