Una chiamata, contenuto pronto
run invia la generazione, fa polling con il backoff consigliato dall'API e restituisce la richiesta completata con result.url.
In breve
L'SDK Python di Mage è il client ufficiale e open source per l'API di Mage, pubblicato come mage-space. Installalo con "pip install mage-space", imposta MAGE_API_KEY e chiama mage.run con un ID modello e una configurazione per ottenere immagini, video o audio già pronti da uno qualsiasi dei 28 modelli. Funziona con Python 3.10 o successivo e ogni generazione si paga in Gems.
3.10+
Python
httpx
Client HTTP
28
Modelli tipizzati
MIT
Open source
Configurazione
Aggiungi mage-space al tuo progetto.
pip install mage-spaceCrea una chiave in API → API Keys su mage.space ed esportala. Il client legge MAGE_API_KEY.
export MAGE_API_KEY="mage_sk_..."Chiama run con l'id di un modello e la sua configurazione. Attende il risultato e lo restituisce; l'output si trova in result.url.
from mage_space import Mage
mage = Mage() # reads MAGE_API_KEY
request = mage.run("mango", {
"prompt": "Editorial portrait in soft daylight, 35mm film look",
"aspect_ratio": "4:5",
"model_id": "mango-v3",
})
print(request["result"]["url"])Esempi
Ogni esempio parte da un client che legge MAGE_API_KEY.
from mage_space import Mage
mage = Mage() # reads MAGE_API_KEY
submitted = mage.generate("cherry", {
"prompt": "Waves rolling onto a black sand beach at sunset",
"resolution": "720p",
"duration": "5",
})
final = mage.requests.wait(
submitted["request_id"],
timeout=900,
on_update=lambda request: print(request["status"]),
)from mage_space import Mage
mage = Mage() # reads MAGE_API_KEY
clip = mage.uploads.upload("clip.mp4") # a path, bytes, or a binary file
mage.run("cherry", {
"prompt": "Restyle this clip as a watercolor painting",
"videos": [clip["url"]],
})from mage_space import Mage
mage = Mage() # reads MAGE_API_KEY
mage.characters.create(
name="Ana",
handle="ana",
image="https://example.com/ana.png",
)
mage.run("mango", {"prompt": "@ana walking through a night market"})from mage_space import Mage, MageAPIError, MageGenerationError
mage = Mage() # reads MAGE_API_KEY
try:
mage.run("mango", {"prompt": "A lighthouse at night"})
except MageAPIError as error:
if error.code == "insufficient_gems":
print("Gems needed:", error.body["error"]["gems_required"])
else:
raise
except MageGenerationError as error:
print("No output:", error.code)Perché l'SDK
run invia la generazione, fa polling con il backoff consigliato dall'API e restituisce la richiesta completata con result.url.
Ogni invio include una chiave di idempotenza. Gli errori di rete e del server vengono ritentati con backoff, e un invio ritentato non viene mai addebitato di nuovo.
I file troppo grandi per un data URL passano da un upload firmato, con ticket, PUT e controllo delle dimensioni gestiti al posto tuo.
I rifiuti dell'API includono stato HTTP, codice di errore e ID della richiesta; generazioni fallite o annullate e timeout hanno tipi di errore dedicati.
Mage e AsyncMage condividono tutti i metodi. Il client async è ideale per server web, notebook e pipeline che eseguono molte generazioni contemporaneamente.
Ogni modello ha un TypedDict, come MangoConfig, generato dalla documentazione di riferimento dell'API. Annota una configurazione con quel tipo e il type checker controllerà i campi.
Riferimento
Gli stessi metodi valgono per ogni modello; il modello è il primo argomento.
| Metodo | Cosa fa |
|---|---|
| mage.run(model, config) | Invia una generazione, attende il completamento e restituisce la richiesta completata. |
| mage.generate(model, config) | Invia una generazione e restituisce subito la richiesta. |
| mage.requests.get / cancel / wait | Leggi, interrompi o attendi una richiesta tramite id. |
| mage.uploads.upload(data) | Carica un percorso, dei byte o un file fino a 100 MB e ottieni il relativo URL. |
| mage.characters / mage.references | Elenca, crea ed elimina personaggi e riferimenti salvati. |
| mage.account.get() | Il tuo saldo di Gems. |
| mage.architectures.list() | Il catalogo dei modelli in tempo reale con opzioni e prezzi. |
Modelli
Immagine · da 37 Gems
Un fotorealismo che sembra una vera fotografia
Immagine · da 135 Gems
La nostra famiglia di modelli immagine di punta
Immagine · da 68 Gems
Testo nitido e leggibile, fino a 4K
Video · da 618 Gems
La nostra famiglia di modelli video di punta
Video · da 245 Gems
Tutte le funzioni video, a un prezzo più accessibile
Audio · da 19 Gems
Voci, musica ed effetti sonori da un unico prompt
FAQ
Sì. AsyncMage ha gli stessi metodi di Mage, da usare con await, e funziona come context manager asincrono.
Python 3.10 e successive. Le uniche dipendenze sono httpx e typing-extensions.
Sì. Usa Mage in script e notebook, oppure AsyncMage con asyncio per eseguire molte generazioni contemporaneamente. L'account può avere fino a 20 generazioni in corso.
Sì. Gli SDK e i nodi ComfyUI hanno licenza MIT su GitHub e installarli è gratis. Paghi solo le generazioni che esegui, in Gems, al prezzo indicato per ogni modello.
Sì. Passa l'id del nuovo modello come stringa e il modello viene eseguito: l'SDK controlla la configurazione in base ai campi che tutti i modelli hanno in comune. Un bot aggiorna i tipi ogni volta che cambia il riferimento API, quindi i nuovi modelli arrivano con i propri tipi nella release successiva.
Ogni invio include una Idempotency-Key. L'SDK crea una nuova chiave per ogni chiamata e la riutilizza quando ripete quella stessa chiamata, così un invio ripetuto restituisce la richiesta originale e non addebita nulla.
Sono in beta alla versione 0.x, quindi una versione minor può ancora modificarli. L'API ha un versionamento separato e resta stabile all'interno della v1.
Non ci sono abbonamenti né canoni mensili. Ogni generazione si paga in Gems al prezzo indicato per il suo modello, e 1.000 Gems costano 1 $ con il pacchetto standard. La pagina di ogni modello riporta il prezzo con le impostazioni predefinite e ogni risposta indica l'addebito esatto. Se una generazione fallisce, viene rimborsata; se la blocca la content policy di Mage, no. Una richiesta che il tuo saldo non copre viene rifiutata prima di qualsiasi addebito.
No. L'API funziona solo con i Gems. I piani di abbonamento e la generazione illimitata nell'app non valgono per le richieste API, quindi qualsiasi account Mage con dei Gems può usarla.
Sì. I contenuti che crei con Mage, anche tramite l'API e il server MCP, possono essere usati a fini commerciali. L'attribuzione è gradita ma non obbligatoria.
Un solo account, un solo saldo di Gems, tutti i modelli. Paghi solo ciò che generi.