Eén aanroep, kant-en-klare media
run verstuurt de generatie, pollt met de backoff die de API aanbeveelt en levert de voltooide aanvraag op met result.url.
In één oogopslag
De Mage Python SDK is de officiële open-sourceclient voor de Mage API, gepubliceerd als mage-space. Installeer hem met "pip install mage-space", stel MAGE_API_KEY in en roep mage.run aan met een model-id en een config om kant-en-klare afbeeldingen, video of audio te krijgen van een van de 28 modellen. Hij draait op Python 3.10 of nieuwer en elke generatie betaal je met Gems.
3.10+
Python
httpx
HTTP-client
28
Getypeerde modellen
MIT
Open source
Instellen
Voeg mage-space toe aan je project.
pip install mage-spaceMaak een sleutel aan via API → API Keys op mage.space en exporteer die. De client leest MAGE_API_KEY.
export MAGE_API_KEY="mage_sk_..."Roep run aan met een model-id en de bijbehorende config. De functie wacht op het resultaat en geeft het terug; de output staat 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"])Voorbeelden
Elk voorbeeld begint met een client die MAGE_API_KEY leest.
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)Waarom de SDK
run verstuurt de generatie, pollt met de backoff die de API aanbeveelt en levert de voltooide aanvraag op met result.url.
Elke aanvraag heeft een idempotentiesleutel. Netwerkfouten en serverfouten worden met backoff opnieuw geprobeerd en een opnieuw verstuurde aanvraag wordt nooit nogmaals in rekening gebracht.
Bestanden die te groot zijn voor een data-URL gaan via een ondertekende upload. Het ticket, de PUT en de groottecontrole worden voor je afgehandeld.
Weigeringen van de API bevatten hun HTTP-status, foutcode en aanvraag-ID. Mislukte of geannuleerde generaties en time-outs hebben elk hun eigen fouttype.
Mage en AsyncMage hebben dezelfde methoden. De async-client past goed bij webservers, notebooks en pipelines die veel generaties tegelijk draaien.
Elk model heeft een TypedDict, zoals MangoConfig, gegenereerd uit de API-referentie. Annoteer een config ermee en je typechecker controleert de velden.
Referentie
Dezelfde methoden gelden voor elk model; het model is het eerste argument.
| Methode | Wat het doet |
|---|---|
| mage.run(model, config) | Verstuur een generatie, wacht erop en geef het voltooide verzoek terug. |
| mage.generate(model, config) | Verstuur een generatie en geef het verzoek direct terug. |
| mage.requests.get / cancel / wait | Een verzoek opvragen, stoppen of erop wachten via id. |
| mage.uploads.upload(data) | Upload een pad, bytes of bestand van maximaal 100 MB en krijg de URL terug. |
| mage.characters / mage.references | Opgeslagen personages en referenties weergeven, aanmaken en verwijderen. |
| mage.account.get() | Je Gems-saldo. |
| mage.architectures.list() | De actuele modelcatalogus met opties en prijzen. |
Modellen
Afbeelding · vanaf 37 Gems
Fotorealisme dat voor een echte foto doorgaat
Afbeelding · vanaf 135 Gems
Onze vlaggenschip-afbeeldingsfamilie
Afbeelding · vanaf 68 Gems
Scherpe, leesbare tekst, tot 4K
Video · vanaf 618 Gems
Onze vlaggenschip-videofamilie
Video · vanaf 245 Gems
Alle videofuncties, tegen een vriendelijkere prijs
Audio · vanaf 19 Gems
Stemmen, muziek en geluidseffecten vanuit één prompt
FAQ
Ja. AsyncMage heeft dezelfde methoden als Mage, met await, en werkt als async contextmanager.
Python 3.10 en nieuwer. De enige afhankelijkheden zijn httpx en typing-extensions.
Ja. Gebruik Mage in scripts en notebooks, of AsyncMage met asyncio om veel generaties tegelijk te draaien. Het account kan tot 20 generaties tegelijk laten lopen.
Ja. De SDK's en de ComfyUI-nodes hebben een MIT-licentie op GitHub en installeren kost niks. Je betaalt alleen voor de generaties die je uitvoert, in Gems, tegen de vermelde prijs van elk model.
Ja. Geef de id van het nieuwe model door als string en het draait; de SDK controleert de config aan de hand van de velden die alle modellen delen. Een bot werkt de types bij zodra de API-referentie verandert, dus nieuwe modellen komen met hun eigen types mee in de volgende release.
Elke aanvraag bevat een Idempotency-Key. De SDK maakt per aanroep een nieuwe sleutel en gebruikt die opnieuw als hij die aanroep zelf opnieuw probeert. Zo geeft een herhaalde aanvraag het oorspronkelijke verzoek terug en worden er geen kosten in rekening gebracht.
Ze zijn in bèta op 0.x, dus een minor-versie kan ze nog wijzigen. De API zelf heeft een aparte versienummering en blijft stabiel binnen v1.
Er is geen abonnement of maandelijks bedrag. Elke generatie betaal je in Gems tegen de vermelde prijs van het model, en 1.000 Gems kosten $1 met het standaardpakket. Op elke modelpagina staat de prijs met standaardinstellingen en elke respons toont de exacte kosten. Een mislukte generatie wordt terugbetaald; een generatie die door het contentbeleid van Mage wordt geblokkeerd niet. Een aanvraag die je saldo niet dekt, wordt geweigerd voordat er iets in rekening wordt gebracht.
Nee. De API werkt alleen met Gems. Lidmaatschappen en hun onbeperkte generatie in de app gelden niet voor API-aanvragen, dus elk Mage-account met Gems kan de API aanroepen.
Ja. Content die je met Mage maakt, ook via de API en de MCP-server, mag je commercieel gebruiken. Naamsvermelding wordt gewaardeerd, maar is niet verplicht.
Eén account, één Gems-saldo, alle modellen. Je betaalt alleen voor wat je genereert.