> ## 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.

# Midjourney API ile başlayın

> CometAPI üzerinde Midjourney API için hızlı başlangıç: `/mj/submit/imagine` gönderin, `/mj/task/{id}/fetch` sorgulayın, ardından `/mj/submit/action` ve modal düğmelerini kullanın.

## 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`](/api/image/midjourney/imagine)                               | Metinden görsel üretimi                       | Tüm iş akışları için başlangıç noktası                     |
| [`GET /mj/task/\{id\}/fetch`](/api/image/midjourney/task-fetching-api/fetch-single-task) | Görev durumunu sorgulama ve düğmeleri alma    | Her submit işleminden sonra (tamamlanana kadar sorgulayın) |
| [`POST /mj/submit/action`](/api/image/midjourney/action)                                 | Bir düğmeye tıklama (upscale, vary, zoom vb.) | Bir görsel üzerinde işlem yapmak istediğinizde             |
| [`POST /mj/submit/modal`](/api/image/midjourney/modal)                                   | Ek girdi gönderme                             | 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ı olan 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` yanıt örneği:**

```json theme={null}
{
  "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": "🔄" }
  ]
}
```

<Warning>
  `customId` sabit bir değer değildir. Her görev için değişir. Bunu her zaman `buttons` dizisinden alın.
</Warning>

***

## Aşamaya göre düğme referansı

### IMAGINE sonrası (4'lü ızgara görsel)

İlk görsel oluşturmanız tamamlandığında şu düğmeler döner:

| Button | customId Pattern                | Action                     | Result                         |
| ------ | ------------------------------- | -------------------------- | ------------------------------ |
| U1-U4  | `MJ::JOB::upsample::1::xxx`     | Tek bir 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ı (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 belirttiğiniz MJ sürümüne göre değişebilir (ör. `--v 6.1` ve `--v 5.2`). Düğmeleri her zaman API yanıtından okuyun.

<Warning>
  Inpaint (Vary Region) düğmesi yalnızca Upscale işleminden sonra görünür.
</Warning>

***

## Tam örnek: Oluştur ve upscale et

### Adım 1: imagine isteğini gönder

```bash theme={null}
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:**

```json theme={null}
{ "code": 1, "result": "1768464763141701" }
```

### Adım 2: Görev durumunu sorgula

```bash theme={null}
curl -X GET 'https://api.cometapi.com/mj/task/1768464763141701/fetch' \
  -H "Authorization: Bearer $COMETAPI_KEY"
```

**Yanıt (tamamlandığında):**

```json theme={null}
{
  "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ıkla

```bash theme={null}
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:**

```json theme={null}
{ "code": 1, "result": "1768464800000000" }
```

### Adım 4: Yeni görevi sorgula ve sonucu al

```bash theme={null}
curl -X GET 'https://api.cometapi.com/mj/task/1768464800000000/fetch' \
  -H "Authorization: Bearer $COMETAPI_KEY"
```

***

## Modal ne zaman gereklidir?

[`/mj/submit/action`](/api/image/midjourney/action) çağrısını yaptığınızda görev durumu `SUCCESS` yerine `MODAL` olursa, ek girdi sağlamak için [`/mj/submit/modal`](/api/image/midjourney/modal) çağrısını yapmanız gerekir.

### Doğrulanmış 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ışı**

```bash theme={null}
# 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ı takip etmeyen **bağımsız giriş noktalarıdır**:

| API                                                            | Amaç                                     |
| -------------------------------------------------------------- | ---------------------------------------- |
| [`POST /mj/submit/blend`](/api/image/midjourney/blend)         | 2-5 görseli tek bir görselde birleştirir |
| [`POST /mj/submit/describe`](/api/image/midjourney/describe)   | Görselden prompt oluşturur               |
| [`POST /mj/submit/video`](/api/image/midjourney/submit-video)  | Görseli videoya dönüştürür               |
| [`POST /mj/submit/edits`](/api/image/midjourney/submit-editor) | Görseli maskeyle düzenler                |

***

## 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ü ızgara 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` olarak takılı kalıyor | İşlem ek girdi gerektiriyor                                   | Gerekli verilerle [`/mj/submit/modal`](/api/image/midjourney/modal) çağrısı yapın                                              |
| `customId` çalışmıyor                      | Güncelliğini yitirmiş veya sabit kodlanmış değer kullanılıyor | Her zaman [`/mj/task/\{id\}/fetch`](/api/image/midjourney/task-fetching-api/fetch-single-task) yanıtından yeni `customId` alın |
| `buttons` dizisi boş                       | Görev hâlâ sürüyor                                            | Düğmelere erişmeden önce `status: "SUCCESS"` olmasını bekleyin                                                                 |
