Qwen2API
Gateway yang membuat Qwen bisa dipanggil dengan format OpenAI dan Anthropic. Alamat server ini: http://host:port
Mulai cepat
- Ambil kunci API dari
auth.keysdiconfig.yml. - Arahkan klien OpenAI ke
http://host:port/v1. - Kirim permintaan pertama.
curl http://host:port/v1/chat/completions \
-H "Authorization: Bearer KUNCI_KAMU" \
-H "Content-Type: application/json" \
-d '{"model":"qwen3-max","messages":[{"role":"user","content":"Halo"}]}'Dengan SDK Python:
from openai import OpenAI
client = OpenAI(base_url="http://host:port/v1", api_key="KUNCI_KAMU")
r = client.chat.completions.create(
model="qwen3-max",
messages=[{"role": "user", "content": "Halo"}],
)
print(r.choices[0].message.content)Autentikasi
Kirim kunci lewat header Authorization: Bearer KUNCI atau x-api-key: KUNCI. Setiap kunci punya role.
| Role | Boleh |
|---|---|
user | Semua endpoint /v1/* |
admin | Semua endpoint /v1/*, /admin/*, dan dashboard |
Endpoint
| Method | Path | Fungsi |
|---|---|---|
| GET | /health | Status server, tanpa kunci |
| GET | /v1/models | Daftar model dari Qwen |
| POST | /v1/chat/completions | Chat format OpenAI, stream, tools |
| POST | /v1/messages | Chat format Anthropic |
| POST | /v1/images/generations | Buat gambar |
| POST | /v1/videos/generations | Buat video |
| GET, POST | /admin/accounts | Lihat dan tambah akun Qwen (admin) |
| GET | /admin/health | Status pool akun (admin) |
Model
GET /v1/models mengambil daftar langsung dari Qwen dan menyimpannya 30 menit. Kalau Qwen tidak bisa dijangkau, daftar cadangan dari models.base yang dipakai.
Setiap model punya dua varian lewat akhiran nama:
| Nama | Artinya |
|---|---|
qwen3-max | Jawaban langsung |
qwen3-max-thinking | Mode berpikir menyala, proses berpikir ada di reasoning_content |
qwen3-max-search | Pencarian web menyala |
Agent dan tool
Kirim tools seperti biasa di /v1/chat/completions. Server menjelaskan tool ke Qwen, mengubah jawabannya menjadi tool_calls, dan membalas dengan finish_reason: "tool_calls". Agent menjalankan tool lalu memanggil lagi dengan hasilnya.
Balasan yang cuma mengumumkan langkah berikutnya, misalnya "saya perlu membaca file itu dulu", tidak pernah dikirim sebagai jawaban akhir. Server menyuruh model langsung melakukan langkahnya, sampai dua kali. Format Anthropic (/v1/messages) belum memakai mekanisme ini.
Streaming
Kirim "stream": true untuk menerima SSE. Pada permintaan dengan tools, server menahan keluaran sampai giliran selesai dan mengirim sinyal : keep-alive tiap beberapa detik, jadi koneksi tidak putus saat model berpikir lama.
Mode browser
Qwen kadang menolak permintaan dari server dengan halaman verifikasi (captcha geser). Dengan browser.enabled: true, server memakai Chromium sungguhan, dan kamu bisa menyelesaikan verifikasi itu sendiri:
- Masuk ke dashboard dengan kunci admin.
- Di tab Layar, tekan Nyalakan browser, lalu Ambil kendali.
- Geser slider atau login ke akun Qwen langsung di layar itu.
- Tekan Lepas kendali. Sesi tersimpan, permintaan berikutnya memakainya.
Saat kamu memegang kendali, permintaan dari bot menunggu sampai kamu berhenti, jadi layar tidak berpindah sendiri. Tombol Jeda bot menahan semua permintaan sampai kamu melepasnya.
Kode error
Semua error memakai bentuk {"error":{"message","type","code"}}.
| Status | Penyebab | Yang dilakukan |
|---|---|---|
| 401 | Kunci salah atau tidak ada | Periksa header Authorization |
| 403 | Kunci bukan role admin | Pakai kunci admin untuk /admin |
| 429 | Kena batas laju | Tunggu sesuai header retry-after |
| 502 | Qwen menolak atau memblokir (anti-bot) | Buka dashboard, selesaikan verifikasi di layar browser |
| 503 | Tidak ada akun, atau bot sedang dijeda | Tambah akun, atau lepas jeda di dashboard |
| 504 | Qwen tidak menjawab tepat waktu | Coba lagi, atau cek layar browser |