🎯 فهم الفكرة الأساسية
يقوم MidJourney API بمحاكاة تفاعلات أزرار Discord. وعلى عكس واجهات REST API التقليدية، فإنه يعمل كـ آلة حالات حيث تُرجع كل عملية أزرارًا جديدة للخطوة التالية.واجهات API الأساسية الأربع
| API | الغرض | متى تُستخدم |
|---|---|---|
POST /mj/submit/imagine | توليد الصور من النص | نقطة البداية لجميع مسارات العمل |
GET /mj/task/\{id\}/fetch | الاستعلام عن حالة المهمة والحصول على الأزرار | بعد كل عملية submit (استعلم بشكل متكرر حتى تكتمل) |
POST /mj/submit/action | النقر على زر (upscale، vary، zoom، إلخ) | عندما تريد تنفيذ عملية على صورة |
POST /mj/submit/modal | إرسال إدخال إضافي | فقط عندما تكون الحالة MODAL |
📊 مخطط سير العمل الكامل
🔑 المفهوم الأساسي: الأزرار وcustomId
تعيد كل مهمة ناجحة مصفوفة buttons. يحتوي كل زر على customId تستخدمه لتشغيل الإجراء التالي.
مثال على استجابة من /mj/task/\{id\}/fetch:
customId ليست قيمة ثابتة. إنها تتغير مع كل مهمة. احصل عليها دائمًا من مصفوفة buttons.
📋 مرجع الأزرار حسب المرحلة
بعد IMAGINE (صورة شبكة 4)
تُعاد هذه الأزرار عند اكتمال إنشاء صورتك الأولية:| Button | customId Pattern | Action | Result |
|---|---|---|---|
| U1-U4 | MJ::JOB::upsample::1::xxx | تكبير صورة واحدة | صورة واحدة عالية الدقة |
| V1-V4 | MJ::JOB::variation::1::xxx | إنشاء تنويعات | شبكة 4 جديدة |
| 🔄 | MJ::JOB::reroll::0::xxx::SOLO | إعادة الإنشاء بالكامل | شبكة 4 جديدة |
بعد UPSCALE (صورة واحدة)
بعد التكبير، ستحصل على إمكانية الوصول إلى أدوات التحرير:| Label | Needs Modal? |
|---|---|
| Upscale (Subtle) / Upscale (2x) | ❌ لا |
| Upscale (Creative) / Upscale (4x) | ❌ لا |
| Vary (Subtle) 🪄 | ❌ لا |
| Vary (Strong) 🪄 | ❌ لا |
| Vary (Region) 🖌️ | ✅ نعم (mask) |
| Zoom Out 2x / 1.5x 🔍 | ❌ لا |
| Custom Zoom 🔍 | ✅ نعم (prompt) |
| ⬅️➡️⬆️⬇️ Pan | ❌ لا |
| Animate 🎞️ | ❌ لا |
| 🔄 Reroll | ❌ لا |
ملاحظة: قد تختلف تسميات الأزرار وصيغ⚠️ زر Inpaint (Vary Region) يظهر فقط بعد Upscale!customIdحسب إصدار MJ المحدد في الـ prompt الخاص بك (مثلًا،--v 6.1مقابل--v 5.2). اقرأ الأزرار دائمًا من استجابة API.
⚡ مثال كامل: إنشاء وتكبير
الخطوة 1: إرسال طلب Imagine
الخطوة 2: الاستعلام عن حالة المهمة
الخطوة 3: انقر على U1 لإجراء Upscale
الخطوة 4: استعلم عن المهمة الجديدة واحصل على النتيجة
⚠️ متى يكون Modal مطلوبًا؟
عند استدعاء/mj/submit/action وتصبح حالة المهمة MODAL بدلًا من SUCCESS، يجب عليك استدعاء /mj/submit/modal لتوفير إدخال إضافي.
عمليات Modal المؤكدة
| Operation | Button | What to Submit |
|---|---|---|
| Inpaint | Vary (Region) | maskBase64 (قناع PNG) + prompt |
| Custom Zoom | 🔍 Custom Zoom | prompt (مثل: “your prompt —zoom 2”) |
🚀 اختيار وضع السرعة
أضف بادئة السرعة إلى المسار:| الوضع | بادئة المسار | المثال |
|---|---|---|
| Fast | /mj-fast | /mj-fast/mj/submit/imagine |
| Turbo | /mj-turbo | /mj-turbo/mj/submit/imagine |
| Relax | (افتراضي) | /mj/submit/imagine |
🔗 نقاط دخول أخرى
واجهات API هذه هي نقاط دخول مستقلة لا تتبع تدفق imagine → action:| API | الغرض |
|---|---|
POST /mj/submit/blend | دمج 2-5 صور في صورة واحدة |
POST /mj/submit/describe | إنشاء prompt من صورة |
POST /mj/submit/video | تحويل صورة إلى فيديو |
POST /mj/submit/edits | تعديل الصورة باستخدام mask |
❓ نصائح استكشاف الأخطاء وإصلاحها
استنادًا إلى تصميم الـ API وسير العمل، إليك المشكلات الشائعة التي قد تواجهها:| المشكلة | السبب المحتمل | الحل |
|---|---|---|
| لا يمكنك العثور على زر Vary (Region) | تنظر إلى صورة شبكة 4 صور | قم بعمل Upscale أولًا (انقر U1-U4)، ثم تحقّق من الأزرار |
حالة المهمة عالقة عند MODAL | العملية تتطلب إدخالًا إضافيًا | استدعِ /mj/submit/modal مع البيانات المطلوبة |
customId لا يعمل | استخدام قيمة قديمة أو مكتوبة بشكل ثابت | احصل دائمًا على customId جديد من استجابة /mj/task/\{id\}/fetch |
مصفوفة buttons فارغة | المهمة لا تزال قيد التنفيذ | انتظر حتى status: "SUCCESS" قبل الوصول إلى الأزرار |