API Reference
ZaganRouter adalah gateway AI yang 100% OpenAI-compatible. Ganti base_url, pakai API key Anda, dan semua kode OpenAI SDK Anda berjalan tanpa perubahan lain — chat completions, streaming SSE, dan catalog model.
Semua request API ditujukan ke satu endpoint ini. Tidak ada subdomain per region — gateway merutekan otomatis ke provider tercepat yang sehat.
https://zaganrouter.cloud/v1Quickstart
Kirim request pertama Anda dalam 30 detik. Ganti $ZG_API_KEY dengan key dari dashboard Anda.
curl https://zaganrouter.cloud/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ZG_API_KEY" \
-d '{
"model": "ZAI/GLM-4.6",
"messages": [{"role": "user", "content": "Halo, kenalan dong!"}]
}'Authentication
ZaganRouter memakai Bearer token pada header Authorization. API key berformat sk-zg-... dan dibuat per-project di dashboard.
Authorization: Bearer $ZG_API_KEY
Content-Type: application/jsonTanpa key valid, Anda akan dapat:
{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "Invalid API key."
}
}Chat Completions POST
Buat percakapan dengan model. Endpoint ini kompatibel 100% dengan /v1/chat/completions OpenAI — semua field standar didukung.
POST https://zaganrouter.cloud/v1/chat/completionsRequest Body
| Parameter | Type | Required | Deskripsi |
|---|---|---|---|
model | string | ✓ | ID model dari /v1/models (mis. ZAI/GLM-4.6) |
messages | array | ✓ | Daftar pesan {role, content}. role: system/user/assistant |
temperature | number | — | 0–2. Default 1. Kreativitas sampling. |
max_tokens | integer | — | Batas token output. Affects credit cost. |
stream | boolean | — | true → SSE stream. Lihat Streaming. |
top_p | number | — | 0–1. Nucleus sampling. |
stop | string/array | — | Hingga 4 sequence stop. |
Contoh Response
{
"id": "chatcmpl-zg-9f3a...",
"object": "chat.completion",
"created": 1783267780,
"model": "ZAI/GLM-4.6",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Halo! Saya ZaganRouter AI. Salam kenal!"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 14,
"total_tokens": 26
}
}Streaming (SSE) STREAM
Set "stream": true untuk menerima token secara incremental via Server-Sent Events. Format identik dengan OpenAI — tiap chunk dipisah data: dan stream diakhiri data: [DONE].
curl https://zaganrouter.cloud/v1/chat/completions \
-H "Authorization: Bearer $ZG_API_KEY" \
-H "Content-Type: application/json" \
-N \
-d '{
"model": "ZAI/GLM-4.6",
"stream": true,
"messages": [{"role": "user", "content": "Ceritakan tentang dirimu"}]
}'Format SSE chunk
data: {"id":"chatcmpl-zg-9f3a","object":"chat.completion.chunk","choices":[{"delta":{"content":"Halo"},"index":0}]}
data: {"id":"chatcmpl-zg-9f3a","object":"chat.completion.chunk","choices":[{"delta":{"content":"!"},"index":0}]}
data: [DONE]List Models GET
Ambil semua model yang tersedia untuk API key Anda. Berguna untuk membangun UI pemilih model dinamis.
curl https://zaganrouter.cloud/v1/models \
-H "Authorization: Bearer $ZG_API_KEY"Response
{
"object": "list",
"data": [
{
"id": "ZAI/GLM-4.6",
"object": "model",
"created": 1783267780,
"owned_by": "ZAI"
},
{
"id": "MINIMAX/MiniMax-M2",
"object": "model",
"created": 1783267780,
"owned_by": "MINIMAX"
}
]
}Errors
Semua error mengikuti format OpenAI agar SDK menanganinya otomatis. Struktur: { error: { type, code, message } }.
| Status | type | code | Penyebab |
|---|---|---|---|
400 | invalid_request_error | invalid_body | Body JSON tidak valid / field salah. |
401 | authentication_error | invalid_api_key | Key tidak ada / salah format / disabled. |
402 | billing_error | subscription_inactive | Langganan habis — perpanjang plan. |
403 | permission_error | model_not_allowed | Model tidak tersedia di plan Anda. |
404 | invalid_request_error | model_not_found | ID model tidak terdaftar. |
429 | rate_limit_error | rate_limit_exceeded | Terlalu cepat. Lihat header retry_after. |
429 | quota_exceeded | five_hour_quota_exceeded | Quota 5-jam habis. Tunggu sliding window reset. |
429 | quota_exceeded | weekly_quota_exceeded | Quota mingguan habis. Reset di reset_at. |
502 | provider_error | provider_unavailable | Semua provider gagal. Auto-fallback ke upstream gagal total. |
503 | service_error | quota_backend_unavailable | Quota service (Redis) tidak terjangkau — fail-closed. |
Rate Limits & Quota
ZaganRouter menerapkan quota fail-closed: jika quota backend (Redis) tidak terjangkau, request ditolak (503) — tidak pernah lolos tanpa cek.
Mencegah burst abuse. Header retry_after pada error 429 memberitahu kapan coba lagi.
Token usage dihitung dalam window 5 jam bergulir. Quota baru tersedia bertahap saat usage lama keluar dari window.
Total credit per plan. Saat habis, hard stop. Reset otomatis tiap minggu pada reset_at.
Reserve → commit → refund dalam satu Redis Lua call. Tidak ada race condition: request paralel tidak bisa melebihi limit.
SDKs & Libraries
Karena 100% OpenAI-compatible, SDK resmi OpenAI langsung jalan. Cukup ganti base_url:
openaiopenaigo-openaiOpenAISiap mulai?
Buat project, dapatkan API key, kirim request pertama dalam < 1 menit.