Langsung ke konten utama

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.

Memahami konsep inti

MidJourney API mensimulasikan interaksi tombol Discord. Tidak seperti REST API pada umumnya, API ini bekerja sebagai state machine di mana setiap operasi mengembalikan tombol baru untuk langkah berikutnya.

4 API inti

APITujuanKapan digunakan
POST /mj/submit/imaginePembuatan gambar dari teksTitik awal untuk semua workflow
GET /mj/task/\{id\}/fetchMemeriksa status task & mendapatkan tombolSetelah setiap submit (polling sampai selesai)
POST /mj/submit/actionKlik tombol (upscale, vary, zoom, dll.)Saat Anda ingin mengoperasikan gambar
POST /mj/submit/modalKirim input tambahanHanya ketika status adalah MODAL

Diagram workflow lengkap

┌─────────────────────────────────────────────────────────────────────────────┐
│                         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       │
           └──────────────────┘

Konsep utama: Buttons dan customId

Setiap task yang berhasil mengembalikan array buttons. Setiap tombol memiliki customId yang Anda gunakan untuk memicu aksi berikutnya. Contoh respons dari /mj/task/\{id\}/fetch:
{
  "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 bukan nilai tetap. Nilainya berubah untuk setiap task. Selalu ambil nilainya dari array buttons.

Referensi tombol berdasarkan tahap

Setelah IMAGINE (gambar 4-grid)

Tombol-tombol ini dikembalikan saat pembuatan gambar awal Anda selesai:
ButtoncustomId PatternActionResult
U1-U4MJ::JOB::upsample::1::xxxUpscale gambar tunggalGambar tunggal resolusi tinggi
V1-V4MJ::JOB::variation::1::xxxBuat variasi4-grid baru
🔄MJ::JOB::reroll::0::xxx::SOLOHasilkan ulang semua4-grid baru

Setelah UPSCALE (gambar tunggal)

Setelah upscale, Anda mendapatkan akses ke alat pengeditan:
LabelNeeds Modal?
Upscale (Subtle) / Upscale (2x)❌ Tidak
Upscale (Creative) / Upscale (4x)❌ Tidak
Vary (Subtle) 🪄❌ Tidak
Vary (Strong) 🪄❌ Tidak
Vary (Region) 🖌️✅ Ya (mask)
Zoom Out 2x / 1.5x 🔍❌ Tidak
Custom Zoom 🔍✅ Ya (prompt)
⬅️➡️⬆️⬇️ Pan❌ Tidak
Animate 🎞️❌ Tidak
🔄 Reroll❌ Tidak
Catatan: Label tombol dan format customId dapat berbeda tergantung pada versi MJ yang ditentukan dalam prompt Anda (misalnya, --v 6.1 vs --v 5.2). Selalu baca tombol dari respons API.
Tombol Inpaint (Vary Region) hanya muncul setelah Upscale.

Contoh lengkap: Generate dan upscale

Langkah 1: Kirim permintaan imagine

curl -X POST 'https://api.cometapi.com/mj/submit/imagine' \
  -H 'Authorization: Bearer <YOUR_COMETAPI_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
    "botType": "MID_JOURNEY",
    "prompt": "a cute cat --v 6.1",
    "accountFilter": { "modes": ["FAST"] }
  }'
Respons:
{ "code": 1, "result": "1768464763141701" }

Langkah 2: Poll status task

curl -X GET 'https://api.cometapi.com/mj/task/1768464763141701/fetch' \
  -H 'Authorization: Bearer <YOUR_COMETAPI_KEY>'
Respons (saat selesai):
{
  "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" },
    ...
  ]
}

Langkah 3: Klik U1 untuk upscale

curl -X POST 'https://api.cometapi.com/mj/submit/action' \
  -H 'Authorization: Bearer <YOUR_COMETAPI_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
    "taskId": "1768464763141701",
    "customId": "MJ::JOB::upsample::1::5f20922e-xxx"
  }'
Respons:
{ "code": 1, "result": "1768464800000000" }

Langkah 4: Poll task baru dan dapatkan hasil

curl -X GET 'https://api.cometapi.com/mj/task/1768464800000000/fetch' \
  -H 'Authorization: Bearer <YOUR_COMETAPI_KEY>'

Kapan Modal diperlukan?

Saat Anda memanggil /mj/submit/action dan status task menjadi MODAL alih-alih SUCCESS, Anda harus memanggil /mj/submit/modal untuk memberikan input tambahan.

Operasi Modal yang terkonfirmasi

OperationButtonWhat to Submit
InpaintVary (Region)maskBase64 (mask PNG) + prompt
Custom Zoom🔍 Custom Zoomprompt (misalnya, “your prompt —zoom 2”)
Contoh: Alur Inpaint
# 1. Click Vary (Region) button via Action API
curl -X POST 'https://api.cometapi.com/mj/submit/action' \
  -H 'Authorization: Bearer <YOUR_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 <YOUR_COMETAPI_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
    "taskId": "new_task_id",
    "prompt": "replace with golden crown",
    "maskBase64": "data:image/png;base64,..."
  }'

Pemilihan mode kecepatan

Tambahkan prefiks kecepatan ke path:
ModePrefiks PathContoh
Cepat/mj-fast/mj-fast/mj/submit/imagine
Turbo/mj-turbo/mj-turbo/mj/submit/imagine
Relax(default)/mj/submit/imagine

Titik masuk lainnya

API ini adalah titik masuk independen yang tidak mengikuti alur imagine → action:
APITujuan
POST /mj/submit/blendMenggabungkan 2-5 gambar menjadi satu
POST /mj/submit/describeMenghasilkan prompt dari gambar
POST /mj/submit/videoMengonversi gambar menjadi video
POST /mj/submit/editsMengedit gambar dengan mask

Tips pemecahan masalah

Berdasarkan desain dan alur kerja API, berikut beberapa masalah umum yang mungkin Anda temui:
MasalahKemungkinan penyebabSolusi
Tidak dapat menemukan tombol Vary (Region)Melihat gambar 4-gridLakukan upscale terlebih dahulu (klik U1-U4), lalu periksa tombol
Status task macet di MODALOperasi memerlukan input tambahanPanggil /mj/submit/modal dengan data yang diperlukan
customId tidak berfungsiMenggunakan nilai yang sudah usang atau di-hardcodeSelalu ambil customId terbaru dari respons /mj/task/\{id\}/fetch
Array buttons kosongTask masih sedang berjalanTunggu status: "SUCCESS" sebelum mengakses tombol