Untuk agen AI: panduan pengaturan langkah demi langkah — /docs/agents.md, indeks dokumentasi — /llms.txt.

Error dan batasan

Batas permintaan, timeout, dan kode error gateway. Untuk setiap respons dijelaskan kapan terjadi dan apa yang harus dilakukan: ulangi permintaan atau perbaiki.

Batasan#

Angka-angka diambil dari field limits pada respons GET /v1/capabilities: nilainya selalu terbaru di sana.

BatasNilaiJika terlampaui
Permintaan per menit per kunci120, jendela 60 dtk sejak permintaan pertama429 rate_limit_exceeded dan header Retry-After; penolakan 5xx dari gateway tidak memakai kuota
Permintaan simultan akundibatasikelebihan menunggu dalam antrean; jika tidak terpenuhi — 429 queue_timeout
Ukuran body permintaan16 MiB413
Panjang responsper model — tabel di bawahmelebihi plafon model — dipotong ke plafon, tanpa error
Kunci anakhingga 50 per kunci pengelola, masing-masing hingga 120 permintaan per menituntuk menaikkan plafon — melalui dukungan

Panjang respons per model#

Tanpa max_tokens, gateway mengisi default: tanpa streaming — lebih pendek agar respons muat dalam timeout; dalam streaming — plafon model. max_completion_tokens — field yang sama.

modelPlafonTanpa streamingDalam streaming
MiniMaxAI/MiniMax-M2.7819215008192
deepseek-ai/DeepSeek-V4-Flash-073132768150032768
zai-org/GLM-5.3-Flash819230008192

Timeout#

TahapNilaiYang terjadi
Menunggu tempat dalam antrean45 dtk429 queue_timeout dengan header Retry-After: 1
Awal respons jaringan, streaming150 dtk504 upstream_timeout; estimasi token input akan didebit
Awal respons jaringan, tanpa streaming150 dtk504 upstream_timeout; estimasi token input akan didebit
Generasi respons≈ 300 dtkjaringan memutus generasi: respons datang dengan finish_reason: length — lanjutkan dengan permintaan berikutnya
Jeda antar chunk streaming30 dtkstream ditutup: finish_reason: stop di chunk joingonka-stream-stalled
Sinyal aktivitas dalam streaming15 dtkkomentar : keep-alive — klien SSE akan melewatinya
Pembukaan stream30 dtksebelum waktu ini penolakan datang dengan kode respons, setelahnya — lewat chunk joingonka-error
Respons awal tanpa streaming90 dtkgateway mengirim 200 dan setiap 15 dtk mengirim spasi — JSON tetap valid; error setelah itu datang di body dengan field error, status tetap 200

Apa yang didebit saat timeout

Permintaan yang sudah diterima jaringan tidak bisa dibatalkan. Pada 504 upstream_timeout, estimasi token input tetap ditagih, token output tidak; percobaan ulang berarti penagihan baru. Stream yang terputus sebelum usage final juga ditagih sama. Untuk jawaban panjang, gunakan stream: true.

Kode error#

Body error berupa objek error dengan field message, type, code, param; tidak semua error memiliki semua field. Berpatokan pada status dan type, periksa lewat code: teks message bisa berubah. Format Anthropic ada di bagian Format error Anthropic.

JSON
{
  "error": {
    "message": "Model is currently overloaded in the Gonka network",
    "type": "rate_limit_exceeded",
    "code": "upstream_rate_limited"
  }
}
ResponsKapanYang harus dilakukan
400 invalid_request_errorBody tidak valid: messages tidak ada, message bukan objek, body bukan JSON; model tidak dikenal — dengan param: model dan daftar model yang tersedia di teksPerbaiki permintaan sesuai teks error
400 invalid_request_error empty_content_after_normalizationMessage kosong setelah normalisasi — misalnya hanya berisi gambarTambahkan teks pada message
400 invalid_request_error web_search_privacy_sanitization_not_supportedPlugin web dan privacy-sanitization dalam satu permintaanPilih salah satu saja
400 invalid_request_error previous_response_id_not_supported conversation_not_supported item_reference_not_supported background_not_supported hosted_tool_choice_not_supportedOpenAI Responses: referensi ke respons, dialog, atau elemen tersimpan; mode background; syarat tool bawaanKirim seluruh riwayat di input
400 api_errorJaringan menolak parameter — misalnya nilai reasoning_effort di luar daftarnyaPerbaiki nilainya sesuai teks error
401 authentication_errorKunci tidak ditemukan, dicabut, atau formatnya tidak dikenalPeriksa kunci di halaman gate.joingonka.ai/keys
402 insufficient_fundsSaldo tidak cukup untuk estimasi permintaan; sisanya ada di balance_ngonkaIsi ulang saldo: gate.joingonka.ai/billing
402 insufficient_fundsPermintaan tanpa kunci bukan dari situs (is_demo: true)Sertakan kunci API
402 child_key_limit_exceededBatas pengeluaran kunci terlampaui — harian, bulanan, atau total; sisanya ada di daily_remaining, monthly_remaining, total_remainingNaikkan batas kunci di halaman gate.joingonka.ai/keys atau tunggu reset
403 forbiddenKunci pengelola gm- pada permintaan ke model; kunci API pada rute khusus dashboardUntuk permintaan — kunci jg- atau gc-; pengelolaan akun dilakukan di dashboard
404 invalid_request_error model_not_foundGET /v1/models/{model}: model tidak ada di katalog atau sedang disembunyikan sementaraAmbil id dari GET /v1/models
404 invalid_request_error not_found compact_not_supportedOpenAI Responses: /v1/responses/{id} dan alamat state lainnya, /v1/responses/compactSimpan riwayat di sisi Anda; untuk Codex CLI, atur id provider sendiri
404 invalid_request_errorPath tidak dikenalPeriksa method, path, dan alamat dasar
413 invalid_request_errorBody permintaan melebihi batasPangkas permintaan
415 invalid_request_errorBody bukan JSON menurut header: perlu Content-Type: application/jsonKirim Content-Type: application/json
429 rate_limit_exceededJumlah permintaan per menit per kunci terlampaui; di body ada rate_limit dengan limit, remaining, resetTunggu sebanyak detik yang tertera di Retry-After
429 rate_limit_exceeded upstream_rate_limitedModel kelebihan beban di jaringan GonkaCoba lagi setelah Retry-After atau pakai model lain — Model
429 rate_limit_exceeded queue_timeout queue_fullSemua slot ke jaringan penuh: antrean penuh atau waktu tunggu habisCoba lagi setelah Retry-After
500 server_errorError internal gatewayCoba lagi nanti; jika berulang, hubungi dukungan dan sertakan x-request-id
501 not_implementedPOST /v1/embeddings: tidak ada model embedding di jaringanGunakan layanan embedding lain
502 api_error upstream_unauthorizedProvider jaringan menolak kredensial gateway — kunci Anda baik-baik sajaCoba lagi dalam satu menit
502 api_errorError jaringan Gonka; code berasal dari jaringan, jika dikirimCoba lagi dengan jeda atau pakai model lain
503 model_unavailable model_outage model_initializing model_unstable model_not_servedModel sedang tidak tersedia menurut probe jaringan: gangguan, sedang start, tidak stabil, atau tidak ada yang melayaninya; langsung ditolak, tanpa menungguPakai model lain — teks error akan memberi petunjuk; daftarnya di Model
503 service_unavailableTidak ada node yang tersediaCoba lagi nanti
504 timeout upstream_timeoutJaringan menerima permintaan tetapi tidak menjawab tepat waktu; estimasi token input sudah ditagihUntuk jawaban panjang — stream: true; percobaan ulang berarti penagihan baru

Error pada stream yang terbuka#

Selama stream belum dibuka, penolakan datang dengan kode respons biasa — seperti tanpa streaming. Setelah dibuka, statusnya sudah 200, dan error datang seperti ini:

  • Chat Completions — chunk joingonka-error dengan field error, lalu terputus tanpa [DONE].
  • Tanpa streaming setelah respons awal — status 200 dan body dengan field error.
  • Anthropic Messages — event event: error, lalu stream ditutup.
  • OpenAI Responses — event response.failed, penyebabnya di response.error.code.
  • Legacy Completions — data: {"error": …}, lalu [DONE].
SSE
data: {"id":"joingonka-error","object":"chat.completion.chunk","model":"MiniMaxAI/MiniMax-M2.7","choices":[],"error":{"message":"Gonka network error","type":"api_error"}}

Format error Anthropic#

  • POST /v1/messages merespons dengan envelope Anthropic: {"type": "error", "error": {"type", "message"}}.
  • Penolakan gateway mempertahankan type dari tabel di atas (insufficient_funds, model_unavailable, dan lainnya); field code tidak ada di envelope ini — penyebabnya ada di teks.
  • Error bentuk permintaan — invalid_request_error: tidak ada messages atau max_tokens, pemanggilan tool tanpa nama, model tidak dikenal.
  • Path tidak dikenal — not_found_error, body terlalu besar — request_too_large.
SSE
event: error
data: {"type":"error","error":{"type":"timeout","message":"Upstream timeout"}}

Apa yang perlu diulang#

  • Setelah jeda dari Retry-After: 429
  • Dengan jeda bertambah — 1, 2, 4 detik dan seterusnya: 500, 502, 503 service_unavailable, 504
  • Dengan model lain: 503 model_unavailable
  • Jangan ulangi tanpa perubahan — perbaiki permintaan, kunci, atau saldo: 400, 401, 402, 403, 404, 413, 415, 501

Setiap pengulangan setelah 504 berarti penagihan baru atas estimasi input; untuk jawaban panjang aktifkan stream: true.

Jika error berulang, hubungi dukungan dan sertakan x-request-id dari header respons.