एक कॉल, तैयार मीडिया
run जनरेशन सबमिट करता है, API के सुझाए बैकऑफ़ के साथ पोल करता है और पूरा हुआ रिक्वेस्ट result.url के साथ लौटाता है।
एक नज़र में
Mage Python SDK, Mage API का आधिकारिक ओपन सोर्स क्लाइंट है, जो mage-space नाम से प्रकाशित है। "pip install mage-space" से इसे इंस्टॉल करें, MAGE_API_KEY सेट करें और मॉडल id व कॉन्फ़िग के साथ mage.run कॉल करें। इससे आपको 28 में से किसी भी मॉडल से तैयार इमेज, वीडियो या ऑडियो मिल जाता है। यह Python 3.10 या उसके बाद के वर्ज़न पर चलता है, और हर जनरेशन का भुगतान Gems से होता है।
3.10+
Python
httpx
HTTP क्लाइंट
28
टाइप्ड मॉडल
MIT
ओपन सोर्स
सेटअप
अपने प्रोजेक्ट में mage-space जोड़ें।
pip install mage-spacemage.space पर API → API Keys में key बनाएँ और उसे export करें। क्लाइंट MAGE_API_KEY पढ़ता है।
export MAGE_API_KEY="mage_sk_..."मॉडल id और उसके कॉन्फ़िग के साथ run कॉल करें। यह नतीजे का इंतज़ार करके उसे लौटाता है; आउटपुट 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"])उदाहरण
हर उदाहरण ऐसे क्लाइंट से शुरू होता है जो 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)SDK क्यों
run जनरेशन सबमिट करता है, API के सुझाए बैकऑफ़ के साथ पोल करता है और पूरा हुआ रिक्वेस्ट result.url के साथ लौटाता है।
हर सबमिशन के साथ एक आइडेम्पोटेंसी की जाती है। नेटवर्क और सर्वर एरर पर बैकऑफ़ के साथ रीट्राई होता है, और दोबारा भेजे गए सबमिशन का शुल्क कभी दोबारा नहीं लगता।
डेटा URL के लिए बहुत बड़ी फ़ाइलें साइन्ड अपलोड से जाती हैं, जिसमें टिकट, PUT और साइज़ की जाँच आपके लिए संभाली जाती है।
API के इनकार के साथ HTTP स्टेटस, एरर कोड और रिक्वेस्ट id मिलता है; फ़ेल या रद्द हुए जनरेशन और टाइमआउट के अपने अलग एरर टाइप हैं।
Mage और AsyncMage के सभी मेथड एक जैसे हैं। एसिंक क्लाइंट वेब सर्वर, नोटबुक और ऐसी पाइपलाइन के लिए सही है जो एक साथ कई जनरेशन चलाती हैं।
हर मॉडल के लिए एक TypedDict है, जैसे MangoConfig, जो API रेफ़रेंस से जनरेट होता है। कॉन्फ़िग को इससे एनोटेट करें और आपका टाइप चेकर फ़ील्ड जाँच लेगा।
रेफ़रेंस
वही मेथड हर मॉडल पर काम करते हैं; मॉडल पहला आर्ग्युमेंट होता है।
| मेथड | यह क्या करता है |
|---|---|
| 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 से शुरू
एक ही प्रॉम्प्ट से आवाज़ें, संगीत और साउंड इफ़ेक्ट
अक्सर पूछे जाने वाले सवाल
हाँ। AsyncMage में Mage जैसे ही मेथड हैं, जिन्हें await किया जाता है, और यह एसिंक कॉन्टेक्स्ट मैनेजर के रूप में भी काम करता है।
Python 3.10 और उसके बाद के वर्ज़न। इसकी निर्भरताएँ केवल httpx और typing-extensions हैं।
हाँ। स्क्रिप्ट और नोटबुक में Mage इस्तेमाल करें, या एक साथ कई जनरेशन चलाने के लिए asyncio के साथ AsyncMage। अकाउंट एक समय में अधिकतम 20 जनरेशन चला सकता है।
हाँ। 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 बैलेंस, हर मॉडल। भुगतान सिर्फ़ उतना, जितना आप जनरेट करें।