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 TypeScript SDK is de officiële open-sourceclient voor de Mage API, gepubliceerd als @mage-space/sdk. Installeer hem met "npm install @mage-space/sdk", 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 Node.js 20.19 of nieuwer, of op elke serverruntime met fetch, en elke generatie wordt betaald in Gems.
20.19+
Node.js
0
Runtime-afhankelijkheden
28
Getypeerde modellen
MIT
Open source
Instellen
Voeg @mage-space/sdk toe aan je project.
npm install @mage-space/sdkMaak 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.
import Mage from '@mage-space/sdk';
const mage = new Mage(); // reads MAGE_API_KEY
const request = await mage.run('mango', {
prompt: 'Editorial portrait in soft daylight, 35mm film look',
aspect_ratio: '4:5',
model_id: 'mango-v3',
});
console.log(request.result.url);Voorbeelden
Elk voorbeeld begint met een client die MAGE_API_KEY leest.
import Mage from '@mage-space/sdk';
const mage = new Mage(); // reads MAGE_API_KEY
const submitted = await mage.generate('cherry', {
prompt: 'Waves rolling onto a black sand beach at sunset',
resolution: '720p',
duration: '5',
});
const final = await mage.requests.wait(submitted.request_id, {
timeout: 15 * 60_000,
onUpdate: (request) => console.log(request.status),
});import { readFile } from 'node:fs/promises';
import Mage from '@mage-space/sdk';
const mage = new Mage(); // reads MAGE_API_KEY
const clip = await mage.uploads.upload(await readFile('clip.mp4'), {
contentType: 'video/mp4',
});
await mage.run('cherry', {
prompt: 'Restyle this clip as a watercolor painting',
videos: [clip.url],
});import Mage from '@mage-space/sdk';
const mage = new Mage(); // reads MAGE_API_KEY
await mage.characters.create({
name: 'Ana',
handle: 'ana',
image: 'https://example.com/ana.png',
});
await mage.run('mango', { prompt: '@ana walking through a night market' });import Mage, { MageAPIError, MageGenerationError } from '@mage-space/sdk';
const mage = new Mage(); // reads MAGE_API_KEY
try {
await mage.run('mango', { prompt: 'A lighthouse at night' });
} catch (error) {
if (error instanceof MageAPIError && error.code === 'insufficient_gems') {
// Top up Gems, then try again.
} else if (error instanceof MageGenerationError) {
console.log('No output:', error.code);
} else {
throw error;
}
}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.
MangoConfig, CherryConfig en de rest worden gegenereerd uit de API-referentie, zodat je editor velden aanvult en ongeldige opties herkent.
ESM zonder runtime-afhankelijkheden. Hij gebruikt de fetch die in Node.js zit ingebouwd, en elke aanroep accepteert een AbortSignal.
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 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
Nee. Met een API-sleutel besteed je je Gems, dus bewaar hem op je eigen servers. De API stuurt geen CORS-headers mee, dus browsers kunnen hem niet rechtstreeks aanroepen; roep in plaats daarvan je eigen backend aan en laat die de SDK gebruiken.
Het pakket is alleen ESM. Vanaf Node.js 20.19 kun je het ook met require() laden vanuit CommonJS.
Ja, in servercode zoals route handlers en server actions. De SDK is gebouwd op fetch en standaard web-API's zoals AbortSignal, dus andere serverruntimes met fetch zouden ook moeten werken, al test CI hem op Node.js.
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.