Documentation Index
Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt
Use this file to discover all available pages before exploring further.
Temel kavramı anlayın
MidJourney API, Discord düğme etkileşimlerini simüle eder. Tipik REST API’lerinden farklı olarak, her işlemin bir sonraki adım için yeni düğmeler döndürdüğü bir durum makinesi gibi çalışır.
4 temel API
| API | Amaç | Ne zaman kullanılır |
|---|
POST /mj/submit/imagine | Metinden görsel üretimi | Tüm iş akışları için başlangıç noktası |
GET /mj/task/\{id\}/fetch | Görev durumunu sorgula ve düğmeleri al | Her submit işleminden sonra (tamamlanana kadar sorgula) |
POST /mj/submit/action | Bir düğmeye tıkla (upscale, vary, zoom vb.) | Bir görsel üzerinde işlem yapmak istediğinizde |
POST /mj/submit/modal | Ek giriş gönder | Yalnızca durum MODAL olduğunda |
Tam iş akışı diyagramı
┌─────────────────────────────────────────────────────────────────────────────┐
│ MIDJOURNEY API WORKFLOW │
└─────────────────────────────────────────────────────────────────────────────┘
┌──────────────────┐
│ POST /submit/ │ ← Step 1: Submit prompt, get task_id
│ imagine │
└────────┬─────────┘
│ Returns: { "result": "task_id_1" }
▼
┌──────────────────┐
│ GET /task/{id}/ │ ← Step 2: Poll until status = "SUCCESS"
│ fetch │
└────────┬─────────┘
│ Returns: imageUrl + buttons[] (U1,U2,U3,U4,V1,V2,V3,V4,🔄)
▼
┌──────────────────┐
│ POST /submit/ │ ← Step 3: Click a button using customId
│ action │
└────────┬─────────┘
│ Returns: { "result": "task_id_2" }
▼
┌──────────────────┐
│ GET /task/{id}/ │ ← Step 4: Poll the new task
│ fetch │
└────────┬─────────┘
│
├─── status = "SUCCESS" → Done! Get imageUrl
│
└─── status = "MODAL" → Need additional input (see Step 5)
│
▼
┌──────────────────┐
│ POST /submit/ │ ← Step 5: Submit mask/prompt for special operations
│ modal │
└────────┬─────────┘
│ Returns: { "result": "task_id_3" }
▼
┌──────────────────┐
│ GET /task/{id}/ │ ← Step 6: Poll until SUCCESS
│ fetch │
└──────────────────┘
Temel kavram: Düğmeler ve customId
Başarılı her görev bir buttons dizisi döndürür. Her düğmenin, bir sonraki işlemi tetiklemek için kullandığınız bir customId değeri vardır.
/mj/task/\{id\}/fetch için örnek yanıt:
{
"status": "SUCCESS",
"imageUrl": "https://api.cometapi.com/mj/image/xxx",
"buttons": [
{ "customId": "MJ::JOB::upsample::1::abc123", "label": "U1" },
{ "customId": "MJ::JOB::upsample::2::abc123", "label": "U2" },
{ "customId": "MJ::JOB::variation::1::abc123", "label": "V1" },
{ "customId": "MJ::JOB::reroll::0::abc123", "emoji": "🔄" }
]
}
customId sabit bir değer değildir. Her görev için değişir. Onu her zaman buttons dizisinden alın.
Aşamaya göre düğme referansı
IMAGINE sonrasında (4’lü görsel ızgarası)
İlk görsel oluşturma işleminiz tamamlandığında şu düğmeler döner:
| Button | customId Pattern | Action | Result |
|---|
| U1-U4 | MJ::JOB::upsample::1::xxx | Tek görseli upscale et | Yüksek çözünürlüklü tek görsel |
| V1-V4 | MJ::JOB::variation::1::xxx | Varyasyonlar oluştur | Yeni 4’lü ızgara |
| 🔄 | MJ::JOB::reroll::0::xxx::SOLO | Tümünü yeniden oluştur | Yeni 4’lü ızgara |
UPSCALE sonrasında (tek görsel)
Upscale işleminden sonra düzenleme araçlarına erişirsiniz:
| Label | Needs Modal? |
|---|
| Upscale (Subtle) / Upscale (2x) | ❌ Hayır |
| Upscale (Creative) / Upscale (4x) | ❌ Hayır |
| Vary (Subtle) 🪄 | ❌ Hayır |
| Vary (Strong) 🪄 | ❌ Hayır |
| Vary (Region) 🖌️ | ✅ Evet (mask) |
| Zoom Out 2x / 1.5x 🔍 | ❌ Hayır |
| Custom Zoom 🔍 | ✅ Evet (prompt) |
| ⬅️➡️⬆️⬇️ Pan | ❌ Hayır |
| Animate 🎞️ | ❌ Hayır |
| 🔄 Reroll | ❌ Hayır |
Not: Düğme etiketleri ve customId biçimleri, Prompt içinde belirtilen MJ sürümüne göre değişebilir (ör. --v 6.1 ile --v 5.2). Düğmeleri her zaman API yanıtından okuyun.
Inpaint (Vary Region) düğmesi yalnızca Upscale sonrasında görünür.
Tam örnek: Oluşturma ve upscale
Adım 1: Imagine isteğini gönderin
curl -X POST 'https://api.cometapi.com/mj/submit/imagine' \
-H "Authorization: Bearer $COMETAPI_KEY" \
-H 'Content-Type: application/json' \
-d '{
"botType": "MID_JOURNEY",
"prompt": "a cute cat --v 6.1",
"accountFilter": { "modes": ["FAST"] }
}'
Yanıt:
{ "code": 1, "result": "1768464763141701" }
Adım 2: Görev durumunu sorgulayın
curl -X GET 'https://api.cometapi.com/mj/task/1768464763141701/fetch' \
-H "Authorization: Bearer $COMETAPI_KEY"
Yanıt (tamamlandığında):
{
"status": "SUCCESS",
"imageUrl": "https://api.cometapi.com/mj/image/1768464763141701",
"buttons": [
{ "customId": "MJ::JOB::upsample::1::5f20922e-xxx", "label": "U1" },
{ "customId": "MJ::JOB::upsample::2::5f20922e-xxx", "label": "U2" },
...
]
}
Adım 3: Upscale için U1’e tıklayın
curl -X POST 'https://api.cometapi.com/mj/submit/action' \
-H "Authorization: Bearer $COMETAPI_KEY" \
-H 'Content-Type: application/json' \
-d '{
"taskId": "1768464763141701",
"customId": "MJ::JOB::upsample::1::5f20922e-xxx"
}'
Yanıt:
{ "code": 1, "result": "1768464800000000" }
Adım 4: Yeni görevi sorgulayın ve sonucu alın
curl -X GET 'https://api.cometapi.com/mj/task/1768464800000000/fetch' \
-H "Authorization: Bearer $COMETAPI_KEY"
Modal ne zaman gereklidir?
/mj/submit/action çağrısı yaptığınızda görev durumu SUCCESS yerine MODAL olursa, ek girdi sağlamak için /mj/submit/modal çağrısı yapmanız gerekir.
Onaylanmış Modal işlemleri
| Operation | Button | What to Submit |
|---|
| Inpaint | Vary (Region) | maskBase64 (PNG mask) + prompt |
| Custom Zoom | 🔍 Custom Zoom | prompt (ör. “your prompt —zoom 2”) |
Örnek: Inpaint akışı
# 1. Click Vary (Region) button via Action API
curl -X POST 'https://api.cometapi.com/mj/submit/action' \
-H "Authorization: Bearer $COMETAPI_KEY" \
-H 'Content-Type: application/json' \
-d '{"taskId": "xxx", "customId": "MJ::Inpaint::xxx", "enableRemix": true}'
# 2. Poll and see status = "MODAL"
curl -X GET 'https://api.cometapi.com/mj/task/new_task_id/fetch'
# Response: { "status": "MODAL" }
# 3. Submit mask and prompt via Modal API
curl -X POST 'https://api.cometapi.com/mj/submit/modal' \
-H "Authorization: Bearer $COMETAPI_KEY" \
-H 'Content-Type: application/json' \
-d '{
"taskId": "new_task_id",
"prompt": "replace with golden crown",
"maskBase64": "data:image/png;base64,..."
}'
Hız modu seçimi
Yola hız öneki ekleyin:
| Mod | Yol öneki | Örnek |
|---|
| Fast | /mj-fast | /mj-fast/mj/submit/imagine |
| Turbo | /mj-turbo | /mj-turbo/mj/submit/imagine |
| Relax | (varsayılan) | /mj/submit/imagine |
Diğer giriş noktaları
Bu API’ler, imagine → action akışını izlemeyen bağımsız giriş noktalarıdır:
| API | Amaç |
|---|
POST /mj/submit/blend | 2-5 görseli tek bir görselde birleştirin |
POST /mj/submit/describe | Görselden Prompt oluşturun |
POST /mj/submit/video | Görseli videoya dönüştürün |
POST /mj/submit/edits | Maskeyle görsel düzenleyin |
Sorun giderme ipuçları
API tasarımına ve iş akışına göre, karşılaşabileceğiniz yaygın sorunlar şunlardır:
| Sorun | Olası neden | Çözüm |
|---|
| Vary (Region) düğmesi bulunamıyor | 4’lü grid görsele bakılıyor | Önce Upscale yapın (U1-U4’e tıklayın), ardından düğmeleri kontrol edin |
Görev durumu MODAL durumunda takılı kalıyor | İşlem ek girdi gerektiriyor | Gerekli verilerle /mj/submit/modal çağrısını yapın |
customId çalışmıyor | Eski veya sabit kodlanmış değer kullanılıyor | Her zaman /mj/task/\{id\}/fetch yanıtından yeni customId alın |
buttons dizisi boş | Görev hâlâ işleniyor | Düğmelere erişmeden önce status: "SUCCESS" olmasını bekleyin |