image_id. Usa l’image_id
come immagine sorgente di un Magic Edit,
img2img,
variazioni,
resize,
upscale,
rimozione dello sfondo,
vettorizzazione o di una
generazione image-to-video. Il MCP server offre lo
stesso flusso come due strumenti, prepare_image_upload e complete_image_upload —
vedi Strumenti MCP.
Gli upload sono gratuiti — non costano credits.
I tre passaggi
1
Prepara
Chiama
POST /images/uploads/prepare con il
filename, il content_type e la dimensione esatta del file in
size_bytes. La risposta ti dà l’image_id e un upload_url presigned.2
Fai il PUT del file
Fai il
PUT dei byte grezzi del file su upload_url con lo stesso
Content-Type. Non inviare un header Authorization a questo URL.3
Completa
Chiama
POST /images/uploads/{image_id}/complete
entro un’ora. Samsa verifica il file e restituisce l’immagine con width e
height misurate. Da quel momento l’image_id è utilizzabile.curl --data-binary @file invia la lunghezza reale del file, quindi corrisponde
sempre a size_bytes se hai misurato lo stesso file.
Limiti
Il file deve essere nel formato dichiarato in
content_type. width e height
sono indicazioni facoltative al prepare: Samsa le usa solo per rifiutare in anticipo
un’immagine oltre i 32 MP. Le dimensioni salvate vengono sempre misurate dai byte
caricati. Un upload mai completato viene scartato dopo la scadenza del suo URL.
Ciclo di vita ed errori
- Non utilizzabile prima di complete. Finché complete non riesce, l’
image_idrestituisce404 not_foundovunque. - Complete è idempotente. Richiamarlo restituisce lo stesso risultato e non
cambia nulla. Un
PUTsuccessivo sullo stessoupload_urlnon sostituisce un’immagine completata. 422 validation_error— non c’è ancora un file, oppure il file è vuoto, ha una dimensione diversa dasize_bytes, è troppo grande, non è leggibile, è in un altro formato o supera i 32 MP. Samsa scarta un file rifiutato: fai ilPUTdi un file valido sullo stessoupload_urlfinché è ancora valido, poi richiama complete.404 not_found— l’image_idè sconosciuto, scaduto, appartiene a un altro utente o non è stato creato da prepare.409 upload_in_progress— un’altra chiamata complete per lo stesso upload è in corso. Riprova tra qualche secondo; se continua per minuti, prepara un nuovo upload.429 too_many_pending_uploads— hai 20 upload in attesa di completamento. Completali, oppure aspetta che quelli non completati scadano (vediRetry-After).
Scope e proprietà
Entrambi gli endpoint accettano una chiave con uno qualsiasi degli scopeimages.edit, images.transform o videos.generate — gli scope delle operazioni
che prendono un image_id sorgente. Non esiste uno scope di upload separato, quindi
le chiavi esistenti funzionano. Una chiave senza nessuno dei tre riceve
403 missing_scope.
L’immagine caricata appartiene all’utente chiamante — il creatore della chiave
API, o l’utente di un token OAuth. Gli altri membri della tua organizzazione non
possono usare il suo image_id.