DokumentasiPanduan produk

Batas laju

Batas per menit dan tingkat akses, serta arti 429.

Ringkasan

Ada dua jenis batas, dan keduanya menjawab 429 dengan code yang berbeda.

  • Batas per menit: jumlah request dalam satu menit, dihitung per pengguna dan per key. Kodenya rate_limit_exceeded.
  • Batas konkurensi: berapa request yang boleh berjalan bersamaan, ditentukan oleh tingkat akses akun. Kodenya concurrency_exceeded.

Keduanya berlaku, dan yang mana pun lebih dulu tersentuh akan menolak request-nya.

Tingkat akses

Tingkat akses ditentukan dari riwayat pengisian saldomu, bukan dari saldo yang sedang tersisa.

Akun yang belum pernah melakukan pengisian saldo di atas ambang yang ditetapkan NusaRouter masuk ke tingkat free. Tingkat itu mendapat batas konkurensi serta batas per menit yang lebih ketat. Akun yang sudah pernah mengisi saldo di atas ambang itu masuk ke tingkat paid.

Dua sifat yang perlu kamu tahu, karena keduanya menguntungkan kamu:

  • Yang dihitung riwayat, bukan sisa saldo. Kalau kamu pernah mengisi saldo di atas ambang lalu saldonya habis terpakai, tingkatmu tidak turun. Menghukum pemakaian justru kebalikan dari yang diinginkan.
  • Kenaikannya langsung. Begitu pengisian saldomu terkonfirmasi, request berikutnya sudah memakai batas yang lebih longgar. Tidak ada masa tunggu.

Menangani 429

Setiap 429 membawa header retry-after berisi jumlah detik sebelum kamu boleh mencoba lagi.

429
HTTP/1.1 429 Too Many Requests
retry-after: 1

{
  "error": {
    "message": "Rate limit exceeded for scope 'user'. Retry in 1s.",
    "type": "rate_limit_error",
    "code": "rate_limit_exceeded"
  }
}

Pola yang benar: tunggu selama retry-after lalu ulangi, dengan mundur eksponensial kalau masih gagal. Mengulang seketika hanya menambah beban dan biasanya memperpanjang penolakannya.

Perhatikan juga bahwa kode concurrency_exceeded berarti ada requestmu yang masih berjalan. Menunggu bukan selalu jawabannya. Kalau klienmu mengirim banyak request paralel, membatasi jumlah yang berjalan bersamaan lebih efektif daripada mengulang yang ditolak.

Streaming dan konkurensi

Request yang memakai stream: true menahan slot konkurensi selama alirannya terbuka, bukan hanya sampai token pertama datang. Aliran yang panjang karena itu memakai slot lebih lama daripada request biasa. Pada klien yang paralel, hal ini biasanya yang membuat batas konkurensi terasa lebih ketat daripada perhitungan jumlah request.

Troubleshooting

GejalaPenyebabSolusi
429 rate_limit_exceededRequest per menit melewati batas untuk pengguna atau key.tunggu retry-after detik; sebar request-nya, atau pisahkan beban ke key lain
429 concurrency_exceededTerlalu banyak request berjalan bersamaan.batasi paralelisme di klienmu; batas ini tidak bisa dinaikkan dengan membayar
429 hanya di sebagian requestKey berbeda punya kuota per menit sendiri, dan satu key yang sibuk menghabiskan kuotanya.periksa pemakaian per key di halaman Pemakaian sebelum menambah key
429 terus-menerus setelah menungguKlien mengulang terlalu cepat, atau ada beberapa proses memakai key yang sama.tambahkan jeda antar-percobaan dan pastikan tidak ada proses lain yang memakai key itu