Pengiriman tugas dan polling
Semua endpoint pengiriman bersifat asinkron: setelah dikirim akan mengembalikantask_id, lalu query status secara berkala via GET /v1/midjourney/{task_id} hingga SUCCESS / FAILURE.
- Ritme polling: disarankan setiap 3–5 detik, frekuensi lebih tinggi tidak berguna dan memboroskan kuota.
- Jangan memblokir secara sinkron di dalam request web menunggu tugas selesai — setelah dikirim langsung kembalikan
task_id, biarkan frontend melakukan polling secara asinkron.
Desain prompt
Prompt yang baik:- Subjek di depan: subjek dulu, lalu deskripsi scene, terakhir kata pemodifikasi.
- Parameter terstruktur eksplisit: gunakan
--ar/--v/--s(atau field body yang sesuai) lebih terkendali daripada mengandalkan nilai default. - Hindari kata ambigu:
photorealisticlebih jelas daripadarealistic.
niji: true + version: "7", platform menormalisasinya menjadi --niji 7, penagihan melalui midjourney@imagine-niji7.
Praktik terbaik gambar referensi
| Sumber | Praktik yang direkomendasikan | Catatan |
|---|---|---|
| Upload pengguna | Simpan dulu ke OSS / CDN Anda sendiri, kirim URL tersebut saat submit | Jangan kirim base64 langsung (memboroskan bandwidth) |
| URL publik | Kirim langsung | Perhatikan SSRF (harus dapat diakses publik) dan batas 12 MiB |
| Pihak ketiga / produk lain | Simpan dulu ke OSS Anda sendiri | URL pihak ketiga bisa kedaluwarsa |
- Kompres hingga < 5 MiB: batas platform 12 MiB, tetapi gambar kecil lebih cepat ditransfer / diproses.
- Format PNG / JPG / WebP semuanya bisa, direkomendasikan JPG berkualitas tinggi.
- Resolusi 1024–2048 px sudah cukup, lebih tinggi hanya pemborosan.
- Bobot gambar referensi
iw(0–3, default 1): >1 lebih dekat ke gambar asli, <1 lebih bebas.
Penanganan error dan strategi retry
| code | Arti | Strategi retry |
|---|---|---|
1 / 200 | Sukses | ✅ |
4 VALIDATION_ERROR | Parameter salah | ❌ Jangan retry, perbaiki parameter |
3 NOT_FOUND | Tidak ada instance tersedia / task_id tidak ada | Jika instance tidak tersedia bisa retry nanti; jika task_id tidak ada jangan retry |
9 FAILURE | Ditolak layanan / error internal | ⏳ Bisa retry, exponential backoff (1s, 4s, 16s) |
21 MODAL | Bukan status final | ✅ Lanjutkan memanggil /modal |
24 BANNED_PROMPT | Kata sensitif | ❌ Jangan retry, ubah prompt; sudah otomatis di-refund |
429 | Rate limit | ⏳ Exponential backoff + jitter |
5xx / error jaringan | Server / jaringan | ⏳ Exponential backoff, error jaringan bisa retry langsung 1 kali |
Alur operasi sekunder
⚠️ Setelah inpaint masuk MODAL, /modal harus dipanggil dalam 30 menit, jika tidak backend otomatis CANCEL + refund.
Kontrol penagihan video
- Segmen tunggal:
batch_size: 1→ menagih 1 ×midjourney@video - Batch 4 segmen:
batch_size: 4→ menagih 4 ×midjourney@video - HD segmen tunggal:
video_type: "vid_1.1_i2v_720"+batch_size: 1→ menagih 1 ×midjourney@video-720p
batch_size=1, gunakan 4 hanya untuk perbandingan batch, jangan default membuka 4 (biaya berlipat N kali).
Konkurensi dan throughput
- Platform memiliki batas jumlah submit per menit, jika terlampaui mengembalikan
429, perlu backoff retry. - Konkurensi generasi aktual ditentukan oleh kapasitas sistem, jika terlampaui akan antre; tugas yang lama berhenti di
SUBMITTEDbiasanya sedang antre. - Polling harus disertai
sleep, jangan loop tanpa henti tanpa sleep.
Saran monitoring
| Metrik | Ambang referensi | Arti |
|---|---|---|
| Rasio SUCCESS tugas (1 jam terakhir) | > 95% | Terlalu rendah menandakan anomali layanan / jaringan |
| Rata-rata waktu penyelesaian | < 90s | Terlalu tinggi menandakan antrean |
| Jumlah tugas tertahan di MODAL | mendekati 0 | Terlalu banyak menandakan klien tidak memanggil /modal |
Rasio code=24 | < 5% | Terlalu tinggi menandakan prompt sering memicu kata sensitif |
Daftar troubleshooting
| Gejala | Arah pemeriksaan |
|---|---|
Tugas lama SUBMITTED | Sistem sedang antre, cek lagi nanti |
Tugas lama NOT_START | Platform akan otomatis timeout + refund nanti, tidak perlu penanganan manual |
Tugas MODAL lebih dari 30 menit | Klien tidak memanggil /modal, sudah otomatis CANCEL + refund |
Field prompt kosong | Hasil teks tugas describe ada di field description |
image_urls kurang satu gambar | Sebagian gambar diblokir review konten, lihat fail_reason |
| Penagihan melebihi ekspektasi | Lihat field quota; video ingat × batch_size |