Ein Aufruf, fertiges Medium
run sendet die Generierung ab, fragt mit dem von der API empfohlenen Backoff den Status ab und liefert die abgeschlossene Anfrage mit result.url zurück.
Auf einen Blick
Das Mage Python-SDK ist der offizielle Open-Source-Client für die Mage API und wird als mage-space veröffentlicht. Installiere es mit "pip install mage-space", setze MAGE_API_KEY und rufe mage.run mit einer Modell-ID und einer Config auf, um fertige Bilder, Videos oder Audio von einem der 28 Modelle zu erhalten. Es läuft mit Python 3.10 oder neuer, und jede Generierung wird mit Gems bezahlt.
3.10+
Python
httpx
HTTP-Client
28
Typisierte Modelle
MIT
Open Source
Einrichtung
Füge mage-space zu deinem Projekt hinzu.
pip install mage-spaceErstelle auf mage.space unter API → API Keys einen Key und exportiere ihn. Der Client liest MAGE_API_KEY.
export MAGE_API_KEY="mage_sk_..."Rufe run mit einer Modell-ID und der zugehörigen Konfiguration auf. Es wartet auf das Ergebnis und gibt es zurück; die Ausgabe findest du unter 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"])Beispiele
Jedes Beispiel beginnt mit einem Client, der MAGE_API_KEY liest.
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)Warum das SDK
run sendet die Generierung ab, fragt mit dem von der API empfohlenen Backoff den Status ab und liefert die abgeschlossene Anfrage mit result.url zurück.
Jede Anfrage enthält einen Idempotenzschlüssel. Netzwerk- und Serverfehler werden mit Backoff wiederholt, und eine wiederholte Anfrage wird nie erneut berechnet.
Dateien, die für eine Data-URL zu groß sind, laufen über einen signierten Upload. Ticket, PUT und Größenprüfung übernehmen wir für dich.
Ablehnungen der API enthalten HTTP-Status, Fehlercode und Request-ID; fehlgeschlagene oder abgebrochene Generierungen und Timeouts haben eigene Fehlertypen.
Mage und AsyncMage haben dieselben Methoden. Der Async-Client passt zu Webservern, Notebooks und Pipelines, die viele Generierungen gleichzeitig ausführen.
Jedes Modell hat ein TypedDict, etwa MangoConfig, das aus der API-Referenz generiert wird. Annotiere eine Config damit, und dein Type-Checker prüft die Felder.
Referenz
Dieselben Methoden decken jedes Modell ab; das Modell ist das erste Argument.
| Methode | Was es macht |
|---|---|
| mage.run(model, config) | Sendet eine Generierung, wartet darauf und gibt die abgeschlossene Anfrage zurück. |
| mage.generate(model, config) | Sendet eine Generierung und gibt die Anfrage sofort zurück. |
| mage.requests.get / cancel / wait | Eine Anfrage per ID abrufen, stoppen oder auf sie warten. |
| mage.uploads.upload(data) | Lädt einen Pfad, Bytes oder eine Datei bis 100 MB hoch und gibt die URL zurück. |
| mage.characters / mage.references | Gespeicherte Characters und References auflisten, erstellen und löschen. |
| mage.account.get() | Dein Gems-Guthaben. |
| mage.architectures.list() | Der aktuelle Modellkatalog mit Optionen und Preisen. |
Modelle
Bild · ab 37 Gems
Fotorealismus, der als Foto durchgeht
Bild · ab 135 Gems
Unsere Flaggschiff-Bildfamilie
Bild · ab 68 Gems
Gestochen scharfer, lesbarer Text, bis zu 4K
Video · ab 618 Gems
Unsere Flaggschiff-Videofamilie
Video · ab 245 Gems
Alle Video-Funktionen zu einem fairen Preis
Audio · ab 19 Gems
Stimmen, Musik und Soundeffekte aus einem Prompt
FAQ
Ja. AsyncMage hat dieselben Methoden wie Mage, mit await, und funktioniert als asynchroner Kontextmanager.
Python 3.10 und neuer. Die einzigen Abhängigkeiten sind httpx und typing-extensions.
Ja. Nutze Mage in Skripten und Notebooks oder AsyncMage mit asyncio, um viele Generierungen gleichzeitig auszuführen. Pro Konto laufen bis zu 20 Generierungen parallel.
Ja. Die SDKs und die ComfyUI-Nodes stehen auf GitHub unter der MIT-Lizenz, und die Installation ist kostenlos. Du zahlst nur für die Generierungen, die du ausführst – in Gems, zum jeweils angegebenen Preis des Modells.
Ja. Übergib die ID des neuen Modells als String, dann läuft es. Das SDK prüft die Konfiguration anhand der Felder, die alle Modelle gemeinsam haben. Ein Bot aktualisiert die Typen, sobald sich die API-Referenz ändert, sodass neue Modelle mit eigenen Typen im nächsten Release erscheinen.
Jede Übermittlung enthält einen Idempotency-Key. Das SDK erzeugt pro Aufruf einen neuen Key und verwendet ihn erneut, wenn es diesen Aufruf selbst wiederholt. So gibt eine wiederholte Übermittlung die ursprüngliche Anfrage zurück und es fallen keine Kosten an.
Sie befinden sich als 0.x in der Beta, daher kann sich mit einer Minor-Version noch etwas ändern. Die API selbst wird separat versioniert und bleibt innerhalb von v1 stabil.
Es gibt kein Abo und keine monatliche Gebühr. Jede Generierung wird in Gems zum angegebenen Preis des Modells bezahlt, und 1.000 Gems kosten im Standardpaket 1 $. Jede Modellseite nennt den Preis bei Standardeinstellungen, und jede Antwort enthält die genaue Abrechnung. Eine fehlgeschlagene Generierung wird erstattet; eine, die von der Inhaltsrichtlinie von Mage blockiert wird, nicht. Eine Anfrage, die dein Guthaben nicht deckt, wird abgelehnt, bevor etwas berechnet wird.
Nein. Die API läuft ausschließlich über Gems. Mitgliedschaften und ihre unbegrenzten Generierungen in der App gelten nicht für API-Anfragen, daher kann jedes Mage-Konto mit Gems sie nutzen.
Ja. Inhalte, die du mit Mage erstellst, auch über die API und den MCP-Server, kannst du kommerziell nutzen. Eine Namensnennung freut uns, ist aber nicht erforderlich.
Ein Konto, ein Gems-Guthaben, alle Modelle. Du zahlst nur für das, was du generierst.