استدعاء واحد، ووسائط جاهزة
يرسل run طلب التوليد، ويستعلم عن حالته بفترات التراجع التي توصي بها الواجهة، ثم يعيد الطلب المكتمل مع result.url.
لمحة سريعة
Mage TypeScript SDK هي العميل الرسمي مفتوح المصدر لـ Mage API، وتُنشر باسم @mage-space/sdk. ثبّتها بالأمر "npm install @mage-space/sdk"، واضبط MAGE_API_KEY، ثم استدعِ mage.run مع معرّف النموذج والإعدادات لتحصل على صور أو فيديو أو صوت جاهز من أي نموذج من 28 نموذجًا. تعمل على Node.js 20.19 أو أحدث، أو على أي بيئة خادم تدعم fetch، ويُدفع مقابل كل عملية توليد بعملة Gems.
20.19+
Node.js
0
تبعيات وقت التشغيل
28
نماذج مضبوطة الأنواع
MIT
مفتوح المصدر
الإعداد
أضف @mage-space/sdk إلى مشروعك.
npm install @mage-space/sdkأنشئ مفتاحًا من API ← API Keys على mage.space ثم صدّره. يقرأ العميل المتغير MAGE_API_KEY.
export MAGE_API_KEY="mage_sk_..."استدعِ 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 طلب التوليد، ويستعلم عن حالته بفترات التراجع التي توصي بها الواجهة، ثم يعيد الطلب المكتمل مع result.url.
يحمل كل طلب مفتاح تكرار آمنًا (idempotency key). تُعاد المحاولة عند أخطاء الشبكة والخادم مع فترات تراجع، ولا يُحتسب الطلب المعاد مرة أخرى.
الملفات الأكبر من أن تُرسل كـ data URL تُرفع عبر رابط رفع موقّع، ونتولى عنك التذكرة وطلب PUT والتحقق من الحجم.
تتضمن حالات رفض الواجهة رمز حالة HTTP ورمز الخطأ ومعرّف الطلب، وللتوليد الفاشل أو الملغى وانتهاء المهلة أنواع أخطاء خاصة بها.
يتم توليد MangoConfig وCherryConfig وبقية الأنواع من مرجع API، فيُكمل محررك الحقول تلقائيًا وينبهك إلى الخيارات غير الصالحة.
ESM دون أي تبعيات وقت تشغيل. يستخدم fetch المدمجة في Node.js، ويقبل كل استدعاء AbortSignal.
المرجع
الدوال نفسها تغطي كل النماذج؛ والنموذج هو المعامل الأول.
| الدالة | وظيفتها |
|---|---|
| mage.run(model, config) | يرسل عملية توليد وينتظرها ثم يعيد الطلب المكتمل. |
| mage.generate(model, config) | يرسل عملية توليد ويعيد الطلب فورًا. |
| mage.requests.get / cancel / wait | يقرأ طلبًا أو يوقفه أو ينتظره باستخدام المعرّف. |
| mage.uploads.upload(data) | يرفع ملفًا بحجم يصل إلى 100 MB ويعيد رابطه. |
| 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 يستهلك رصيد Gems لديك، لذا أبقِه على خوادمك. لا ترسل API ترويسات CORS، ولذلك لا تستطيع المتصفحات استدعاءها مباشرة؛ استدعِ الواجهة الخلفية الخاصة بك ودعها تستخدم SDK.
الحزمة تدعم ESM فقط. ويمكن في Node.js 20.19 والإصدارات الأحدث استدعاؤها من CommonJS عبر require() أيضًا.
نعم، في شيفرة الخادم مثل معالجات المسارات (route handlers) وإجراءات الخادم (server actions). بُني SDK على fetch وواجهات الويب القياسية مثل AbortSignal، لذا يُفترض أن تعمل بيئات الخادم الأخرى التي تدعم fetch أيضًا، مع أن اختبارات CI تجري على Node.js.
نعم. حزم SDK وعُقد ComfyUI مرخّصة بترخيص MIT على GitHub، وتثبيتها مجاني. تدفع فقط مقابل عمليات التوليد التي تشغّلها، بعملة Gems وبالسعر المعروض لكل نموذج.
نعم. مرّر معرّف النموذج الجديد كنص وسيعمل؛ إذ يتحقق SDK من إعداداته بناءً على الحقول التي تشترك فيها كل النماذج. يقوم بوت بتحديث الأنواع كلما تغيّر مرجع API، لذا تصل النماذج الجديدة مع أنواعها الخاصة في الإصدار التالي.
يحمل كل طلب إرسال مفتاح Idempotency-Key. ينشئ SDK مفتاحًا جديدًا لكل استدعاء ويعيد استخدامه عندما يعيد محاولة ذلك الاستدعاء بنفسه، فيُرجع الإرسال المُعاد الطلب الأصلي دون أي رسوم.
هي حاليًا في مرحلة تجريبية (beta) بالإصدار 0.x، لذا قد يغيّرها إصدار فرعي. أما API نفسها فيتم إصدارها بشكل منفصل وتبقى مستقرة ضمن v1.
لا يوجد اشتراك ولا رسوم شهرية. تُدفع كل عملية إنشاء بـ Gems وفق السعر المعلن لنموذجها، وكل 1,000 Gems تكلّف 1$ في الباقة القياسية. تعرض صفحة كل نموذج سعره بالإعدادات الافتراضية، ويذكر كل رد المبلغ المحتسب بدقة. إذا فشلت عملية الإنشاء يُسترد المبلغ، أما إذا حظرتها سياسة المحتوى في Mage فلا يُسترد. أما الطلب الذي لا يغطيه رصيدك فيُرفض قبل خصم أي مبلغ.
لا. تعمل API بـ Gems فقط. لا تنطبق خطط العضوية وميزة الإنشاء غير المحدود داخل التطبيق على طلبات API، لذا يمكن لأي حساب Mage يحتوي على Gems استخدامها.
نعم. يمكنك استخدام المحتوى الذي تنشئه باستخدام Mage، بما في ذلك عبر واجهة API وخادم MCP، لأغراض تجارية. نقدّر ذكر المصدر لكنه ليس إلزاميًا.
حساب واحد، ورصيد Gems واحد، وكل النماذج. ادفع فقط مقابل ما تنشئه.