एक कॉल, तैयार मीडिया
run जनरेशन सबमिट करता है, API के सुझाए बैकऑफ़ के साथ पोल करता है और पूरा हुआ रिक्वेस्ट result.url के साथ लौटाता है।
एक नज़र में
Mage TypeScript SDK, Mage API का आधिकारिक ओपन-सोर्स क्लाइंट है, जो @mage-space/sdk नाम से प्रकाशित है। "npm install @mage-space/sdk" से इंस्टॉल करें, MAGE_API_KEY सेट करें और मॉडल id व कॉन्फ़िग के साथ mage.run कॉल करें, तो 28 में से किसी भी मॉडल से तैयार इमेज, वीडियो या ऑडियो मिल जाता है। यह Node.js 20.19 या उसके बाद के वर्शन पर, या fetch वाले किसी भी सर्वर रनटाइम पर चलता है, और हर जनरेशन का भुगतान Gems में होता है।
20.19+
Node.js
0
रनटाइम डिपेंडेंसी
28
टाइप्ड मॉडल
MIT
ओपन सोर्स
सेटअप
अपने प्रोजेक्ट में @mage-space/sdk जोड़ें।
npm install @mage-space/sdkmage.space पर API → API Keys में key बनाएँ और उसे export करें। क्लाइंट MAGE_API_KEY पढ़ता है।
export MAGE_API_KEY="mage_sk_..."मॉडल id और उसके कॉन्फ़िग के साथ run कॉल करें। यह नतीजे का इंतज़ार करके उसे लौटाता है; आउटपुट 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);उदाहरण
हर उदाहरण ऐसे क्लाइंट से शुरू होता है जो MAGE_API_KEY पढ़ता है।
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;
}
}SDK क्यों
run जनरेशन सबमिट करता है, API के सुझाए बैकऑफ़ के साथ पोल करता है और पूरा हुआ रिक्वेस्ट result.url के साथ लौटाता है।
हर सबमिशन के साथ एक आइडेम्पोटेंसी की जाती है। नेटवर्क और सर्वर एरर पर बैकऑफ़ के साथ रीट्राई होता है, और दोबारा भेजे गए सबमिशन का शुल्क कभी दोबारा नहीं लगता।
डेटा URL के लिए बहुत बड़ी फ़ाइलें साइन्ड अपलोड से जाती हैं, जिसमें टिकट, PUT और साइज़ की जाँच आपके लिए संभाली जाती है।
API के इनकार के साथ HTTP स्टेटस, एरर कोड और रिक्वेस्ट id मिलता है; फ़ेल या रद्द हुए जनरेशन और टाइमआउट के अपने अलग एरर टाइप हैं।
MangoConfig, CherryConfig और बाकी सब API रेफ़रेंस से जनरेट होते हैं, इसलिए आपका एडिटर फ़ील्ड ऑटोकम्प्लीट करता है और गलत विकल्प पकड़ लेता है।
ESM, बिना किसी रनटाइम डिपेंडेंसी के। यह Node.js के बिल्ट-इन fetch का इस्तेमाल करता है, और हर कॉल AbortSignal लेती है।
रेफ़रेंस
वही मेथड हर मॉडल पर काम करते हैं; मॉडल पहला आर्ग्युमेंट होता है।
| मेथड | यह क्या करता है |
|---|---|
| mage.run(model, config) | जनरेशन सबमिट करें, उसका इंतज़ार करें और पूरा हुआ रिक्वेस्ट पाएँ। |
| mage.generate(model, config) | जनरेशन सबमिट करें और रिक्वेस्ट तुरंत पाएँ। |
| mage.requests.get / cancel / wait | id से किसी रिक्वेस्ट को पढ़ें, रोकें या उसका इंतज़ार करें। |
| mage.uploads.upload(data) | 100 MB तक की फ़ाइल अपलोड करें और उसका URL पाएँ। |
| mage.characters / mage.references | सेव किए गए कैरेक्टर और रेफ़रेंस की सूची देखें, बनाएँ और हटाएँ। |
| mage.account.get() | आपका Gems बैलेंस। |
| mage.architectures.list() | विकल्पों और कीमतों के साथ लाइव मॉडल कैटलॉग। |
मॉडल
इमेज · 37 Gems से शुरू
ऐसी फ़ोटोरियलिज़्म जो असली तस्वीर जैसी लगे
इमेज · 135 Gems से शुरू
हमारी फ़्लैगशिप इमेज फ़ैमिली
इमेज · 68 Gems से शुरू
साफ़, पढ़ने योग्य टेक्स्ट, 4K तक
वीडियो · 618 Gems से शुरू
हमारी फ़्लैगशिप वीडियो फ़ैमिली
वीडियो · 245 Gems से शुरू
वीडियो के सारे फ़ीचर, किफ़ायती दाम पर
ऑडियो · 19 Gems से शुरू
एक ही प्रॉम्प्ट से आवाज़ें, संगीत और साउंड इफ़ेक्ट
अक्सर पूछे जाने वाले सवाल
नहीं। API key आपके Gems खर्च करती है, इसलिए उसे अपने सर्वर पर ही रखें। API कोई CORS हेडर नहीं भेजता, इसलिए ब्राउज़र उसे सीधे कॉल नहीं कर सकते; इसके बजाय अपने बैकएंड को कॉल करें और उसी से SDK इस्तेमाल करवाएँ।
पैकेज सिर्फ़ ESM है। Node.js 20.19 और उसके बाद के वर्शन CommonJS से भी इसे require() कर सकते हैं।
हाँ, सर्वर कोड में, जैसे राउट हैंडलर और सर्वर एक्शन। SDK fetch और AbortSignal जैसे स्टैंडर्ड Web API पर बना है, इसलिए fetch वाले दूसरे सर्वर रनटाइम भी काम करने चाहिए, हालाँकि CI में इसे Node.js पर टेस्ट किया जाता है।
हाँ। SDK और ComfyUI नोड्स GitHub पर MIT लाइसेंस के तहत उपलब्ध हैं, और इन्हें इंस्टॉल करना मुफ़्त है। आप सिर्फ़ अपने जनरेशन के लिए भुगतान करते हैं, Gems में, हर मॉडल की बताई गई कीमत पर।
हाँ। नए मॉडल की id को स्ट्रिंग के रूप में दें और वह चल जाएगा; SDK उसके कॉन्फ़िग को उन फ़ील्ड से मिलाकर जाँचता है जो सभी मॉडल में समान होते हैं। API रेफ़रेंस बदलने पर एक बॉट टाइप अपडेट कर देता है, इसलिए नए मॉडल अगली रिलीज़ में अपने टाइप के साथ आ जाते हैं।
हर सबमिशन के साथ एक Idempotency-Key जाती है। SDK हर कॉल के लिए नई key बनाता है और उसी कॉल को खुद दोबारा भेजते समय वही key इस्तेमाल करता है, इसलिए दोबारा भेजा गया सबमिशन मूल रिक्वेस्ट ही लौटाता है और कोई शुल्क नहीं लगता।
वे 0.x पर बीटा में हैं, इसलिए किसी माइनर वर्शन में उनमें बदलाव हो सकता है। API का वर्शन अलग से तय होता है और v1 के भीतर स्टेबल रहता है।
इसमें कोई सब्सक्रिप्शन या मासिक शुल्क नहीं है। हर जेनरेशन का भुगतान Gems में उस मॉडल की सूचीबद्ध कीमत पर होता है, और स्टैंडर्ड पैक में 1,000 Gems की कीमत $1 है। हर मॉडल पेज पर उसकी डिफ़ॉल्ट सेटिंग की कीमत दी गई है, और हर रिस्पॉन्स में सटीक चार्ज बताया जाता है। फ़ेल हुई जेनरेशन का रिफ़ंड मिलता है, लेकिन जिसे Mage की कंटेंट पॉलिसी ब्लॉक करे उसका नहीं। जो रिक्वेस्ट आपका बैलेंस कवर न कर सके, उसे कोई चार्ज लगने से पहले ही अस्वीकार कर दिया जाता है।
नहीं। API सिर्फ़ Gems से चलता है। मेंबरशिप प्लान और उनकी ऐप में अनलिमिटेड जेनरेशन API रिक्वेस्ट पर लागू नहीं होतीं, इसलिए Gems वाला कोई भी Mage अकाउंट इसे इस्तेमाल कर सकता है।
हाँ। Mage से बनाया गया कंटेंट, API और MCP server के ज़रिए बनाया गया कंटेंट भी, व्यावसायिक रूप से इस्तेमाल किया जा सकता है। क्रेडिट देना अच्छा लगेगा, लेकिन ज़रूरी नहीं है।
एक अकाउंट, एक Gems बैलेंस, हर मॉडल। भुगतान सिर्फ़ उतना, जितना आप जनरेट करें।