ID ▾
Dapatkan kunci API

API Midjourney: Kesalahan Umum & Cara Memperbaikinya

Integrasi API Midjourney sering gagal karena pengembang menganggapnya sebagai endpoint REST standar daripada antrian pekerjaan berstatus. Memahami perbedaan antara prompt sinkron, generasi gambar asinkron, dan struktur payload spesifik yang diperlukan untuk setiap mode sangat penting untuk alur kerja yang andal.

Diperbarui

Poin kunci

  • API Midjourney terutama berbasis pekerjaan, mengharuskan Anda melakukan polling untuk penyelesaian atau mengonfigurasi webhook daripada menerima respons gambar segera.
  • Sintaks prompt bervariasi secara signifikan antara mode 'simple' dan 'raw', dan penempatan parameter yang salah adalah penyebab utama kegagalan pembuatan.
  • Batas laju diterapkan per kunci API, sehingga klien yang kuat harus menerapkan penundaan eksponensial untuk menangani kesalahan 429 dengan lancar tanpa menghabiskan kredit.
  • Menggunakan API teks khusus untuk pasca-pemrosesan—seperti menyempurnakan prompt atau mengekstrak metadata dari gambar yang dihasilkan—memisahkan tanggung jawab dan meningkatkan keandalan.

Memahami Payload Permintaan

Saat mengintegrasikan dengan API Midjourney, struktur payload permintaan sangat bergantung pada apakah Anda menggunakan endpoint REST lama atau pembungkus API Discord yang lebih baru dan lebih kuat. Tidak seperti API teks standar yang mengharapkan objek JSON sederhana dengan bidang 'prompt', API pembuatan gambar sering memerlukan bidang 'type' untuk membedakan antara membuat gambar baru, memperbesar, atau memvariasikan gambar yang ada.

Sebagai contoh, permintaan khas mungkin terlihat seperti ini:

  • Tipe: Tindakan (misalnya, 'imagine', 'upscale', 'vary').
  • Prompt: String teks yang menggambarkan output yang diinginkan.
  • Parameter: Bendera tambahan seperti --ar untuk rasio aspek atau --v untuk versi model.

Pastikan karakter khusus dalam prompt Anda di-escape dengan benar, karena tanda kutip yang tidak di-escape dapat merusak struktur JSON sebelum bahkan mencapai mesin pembuatan. Selalu validasi skema payload Anda terhadap dokumentasi API saat ini, karena nama parameter dan bidang yang diperlukan dapat berubah antara pembaruan besar.

Menangani Batas Laju

Sebagian besar API generasi gambar memberlakukan batas laju ketat untuk mencegah penyalahgunaan dan mengelola beban GPU. Ketika Anda melebihi batas ini, API mengembalikan kode status 429 Too Many Requests. Mengabaikan batas ini dapat menyebabkan pemblokiran IP sementara atau pengurangan kecepatan akun, yang mengganggu pipeline Anda.

Terapkan backoff eksponensial dalam logika klien Anda. Alih-alih mencoba lagi segera, tunggu sebentar (misalnya, 1 detik) dan gandakan waktu tunggu dengan setiap kegagalan berikutnya. Pendekatan ini menghormati kapasitas server dan memastikan Anda tidak membanjiri antrian selama jam sibuk.

Selain itu, pantau dasbor penggunaan Anda untuk memahami konsumsi kuota Anda. Beberapa API menawarkan batas yang lebih tinggi untuk tingkat berbayar, tetapi bahkan demikian, batas burst mungkin berlaku. Menangani kesalahan 429 secara proaktif dengan antrian coba ulang lebih efisien daripada gagal menjalankan seluruh pekerjaan batch saat satu permintaan di-throttle.

Kode Kesalahan Umum

Memahami kode status HTTP sangat penting untuk debugging integrasi Anda. Berikut adalah kesalahan paling umum yang akan Anda temui:

KodeArtiTindakan
400Permintaan BurukPeriksa sintaks JSON dan bidang yang diperlukan Anda.
401Tidak SahVerifikasi kunci API Anda benar dan aktif.
403DilarangPeriksa apakah akun Anda dibatasi atau jika endpoint sudah tidak digunakan lagi.
429Terlalu Banyak PermintaanTerapkan logika backoff dan tunggu sebelum mencoba lagi.
500Kesalahan ServerCoba lagi setelah jeda singkat; masalahnya ada di sisi penyedia.

Selalu log body respons kesalahan lengkap, karena sering berisi pesan yang dapat dibaca manusia yang menjelaskan mengapa permintaan gagal, seperti 'Format prompt tidak valid' atau 'Batas laju terlampaui.'

Masalah Format Gambar

Saat gambar dihasilkan, gambar tersebut biasanya dikembalikan sebagai URL yang mengarah ke penyimpanan sementara atau sebagai string yang di-encode base64 dalam respons JSON. Kesalahan umum adalah mengasumsikan data gambar segera tersedia. Dalam alur kerja asinkron, URL mungkin mengarah ke placeholder yang diperbarui seiring waktu.

Masalah umum lainnya adalah menangani file gambar berukuran besar. Jika Anda mengunduh gambar langsung ke server Anda, pastikan klien Anda dapat menangani payload biner besar tanpa kehabisan waktu. Pertimbangkan untuk menggunakan unduhan streaming untuk efisiensi memori yang lebih baik.

Selain itu, perlu diketahui bahwa beberapa API mengembalikan gambar dalam format tertentu seperti PNG atau JPEG. Jika alur kerja penerusan Anda memerlukan format yang berbeda, seperti WebP, Anda perlu mengonversi gambar secara lokal setelah pengambilan. Selalu validasi jenis MIME respons untuk memastikan Anda memproses jenis file yang benar.

Kesalahan Sintaks Prompt

Sintaks prompt adalah sumber kesalahan pembuatan paling umum. API Midjourney sering mendukung mode berbeda, seperti 'simple' dan 'raw'. Dalam mode 'simple', parameter seperti --style atau --q (kualitas) harus ditambahkan di akhir string prompt. Dalam mode 'raw', Anda mungkin perlu meneruskannya sebagai bidang JSON terpisah.

Menggunakan mode yang salah untuk parameter Anda dapat menghasilkan API mengabaikan instruksi Anda atau melemparkan kesalahan sintaks. Sebagai contoh, meneruskan --ar 16:9 dalam mode 'raw' tanpa struktur bidang yang benar akan gagal.

Selalu uji prompt Anda di antarmuka web penyedia sebelum mengotomatisasinya melalui API. Jika prompt berhasil di UI tetapi gagal melalui API, masalahnya kemungkinan adalah perbedaan format. Simpan pustaka prompt yang telah diuji dan berfungsi untuk mengurangi coba-coba selama integrasi.

Permintaan Asinkron vs Sinkron

Pembuatan gambar membutuhkan komputasi yang mahal dan jarang mengembalikan gambar secara sinkron. Sebagian besar API menggunakan alur kerja asinkron: Anda mengirimkan permintaan, menerima ID pekerjaan, lalu melakukan polling untuk hasil atau menunggu notifikasi webhook.

Permintaan sinkron cocok untuk penyelesaian teks sederhana, di mana responsnya langsung. Namun, untuk generasi gambar, permintaan tersebut sering mengalami timeout karena waktu pemrosesan yang lama. Alur kerja asinkron adalah standar untuk API gambar. Anda mengirimkan pekerjaan, lalu secara berkala memeriksa status ID pekerjaan hingga selesai.

Webhook adalah cara paling efisien untuk menangani pekerjaan asinkron. Alih-alih melakukan polling setiap beberapa detik, API mengirimkan permintaan POST ke endpoint Anda saat gambar siap. Hal ini mengurangi latensi dan beban server. Pastikan endpoint webhook Anda aman dan dapat menangani pengulangan permintaan jika notifikasi awal gagal.

Konfigurasi Webhook

Webhook memungkinkan aplikasi Anda bereaksi terhadap peristiwa secara real-time, seperti saat pekerjaan pembuatan gambar selesai. Untuk mengonfigurasi webhook, Anda perlu menyediakan URL publik tempat API dapat mengirim permintaan POST.

  • URL endpoint: Harus dapat diakses secara publik dan menggunakan HTTPS.
  • Kunci Rahasia: Gunakan kunci rahasia bersama untuk memverifikasi bahwa permintaan webhook benar-benar berasal dari penyedia API dan belum diubah.
  • Peristiwa: Berlangganan hanya pada peristiwa yang Anda butuhkan, seperti 'job.completed' atau 'job.failed', untuk mengurangi gangguan.

Pastikan server Anda dapat menangani permintaan webhook secara paralel jika Anda memproses beberapa pekerjaan secara bersamaan. Catat semua payload webhook untuk tujuan debugging, karena masalah jaringan terkadang dapat menyebabkan notifikasi terlewat.

Penagihan dan Penggunaan Token

Penagihan untuk API gambar biasanya didasarkan pada jumlah pekerjaan yang dihasilkan atau kredit yang dikonsumsi per resolusi dan kompleksitas gambar. Tidak seperti API teks yang menagih per token, API gambar menagih per 'panggilan' atau 'generasi'. Memahami perbedaan ini sangat penting untuk estimasi biaya.

Pantau dasbor penggunaan Anda untuk melacak konsumsi kredit. Beberapa API menawarkan diskon massal atau harga bertingkat berdasarkan volume. Jika Anda menghasilkan gambar resolusi tinggi atau menggunakan fitur lanjutan seperti penskalaan ulang, pastikan Anda memperhitungkan biaya tambahan.

Atur peringatan untuk ambang batas anggaran agar menghindari biaya tak terduga. Jika Anda mengintegrasikan dengan API teks untuk pasca-pemrosesan, seperti menghasilkan keterangan untuk gambar Anda, perhatikan bahwa model penagihannya berbeda. Sebagai contoh, API Whisper membebankan $0,25 per 1M token input dan $1,00 per 1M token output, yang merupakan biaya linear yang dapat diprediksi berdasarkan panjang teks, bukan jumlah pekerjaan.

Tanya jawab

Apakah API Midjourney mengembalikan gambar langsung dalam respons?

Tidak, API biasanya mengembalikan ID pekerjaan atau URL ke gambar yang dihasilkan. Anda harus melakukan polling status pekerjaan atau menunggu notifikasi webhook untuk mengambil data gambar sebenarnya. Pendekatan asinkron ini mencegah timeout selama proses generasi yang panjang.

Bagaimana cara menangani batas laju saat menggunakan API Midjourney?

Terapkan backoff eksponensial dalam logika klien Anda. Saat Anda menerima kode status 429, tunggu sebentar dan coba lagi, gandakan waktu tunggu dengan setiap kegagalan. Ini mencegah membanjiri API dan memastikan pipeline Anda tetap tangguh selama penggunaan puncak.

Apa perbedaan antara mode prompt 'simple' dan 'raw'?

Mode 'simple' menambahkan parameter seperti --ar atau --style langsung ke string prompt. Mode 'raw' memerlukan parameter ini diteruskan sebagai bidang terpisah dalam payload JSON. Menggunakan mode yang salah dapat menghasilkan parameter yang diabaikan atau kesalahan sintaks.

Apakah API Whisper cocok untuk pasca-pemrosesan output Midjourney?

Ya. API Whisper adalah model teks tanpa sensor yang dapat menyempurnakan, mengekstrak, atau memberi keterangan output Midjourney. API ini menggunakan endpoint kompatibel OpenAI standar seperti /v1/chat/completions, sehingga mudah diintegrasikan ke dalam pipeline Anda untuk tugas berbasis teks tanpa kompleksitas generasi gambar.

Kunci Anda hanya selangkah lagi dari satu formulir

Buat akun, salin kunci, ubah URL dasar. Itu saja seluruh proses penyiapannya.

Dapatkan kunci API