> ## Documentation Index
> Fetch the complete documentation index at: https://docs.leviacloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Rate limit

> Batas jumlah request per API key per menit, dan cara menanganinya.

Batas dihitung **per API key**, dalam jendela tetap satu menit:

| Batas | Nilai |
| - | - |
| Semua request | 120 per menit |
| Request tulis (`POST`, `PUT`, `PATCH`, `DELETE`) | 30 per menit, termasuk dalam 120 di atas |

## Header

Setiap jawaban yang sudah lolos autentikasi membawa header berikut, untuk batas yang paling ketat saat itu (untuk request tulis, biasanya batas tulis):

| Header | Arti |
| - | - |
| `X-RateLimit-Limit` | Batas jendela itu |
| `X-RateLimit-Remaining` | Sisa request di jendela itu |
| `X-RateLimit-Reset` | Waktu jendela di-reset (Unix detik) |

## Bila batas terlampaui

Request ditolak dengan `429 rate_limited` dan header `Retry-After` (detik):

```http theme={null}
HTTP/1.1 429 Too Many Requests
Retry-After: 17
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1762586160

{"error": {"code": "rate_limited", "message": "Terlalu banyak request. Coba lagi dalam 17 detik."}}
```

Tunggu selama `Retry-After`, lalu ulangi. Request yang ditolak `429` tidak dijalankan sama sekali, jadi aman diulang.

## Tips

* Saat menunggu resource siap, polling setiap 5–10 detik sudah cukup. Lihat [Operasi asinkron](https://docs.leviacloud.com/konsep/operasi-asinkron.md).
* Pakai filter dan `per_page` (maks. 100) untuk mengurangi jumlah request daftar. Lihat [Pagination & filter](https://docs.leviacloud.com/konsep/pagination-filter.md).
* Kirim `Idempotency-Key` pada `POST` supaya retry setelah timeout tidak membuat resource ganda. Lihat [Idempotency](https://docs.leviacloud.com/konsep/idempotency.md).
* Batas terpisah berlaku untuk autentikasi gagal: lebih dari 30 per menit dari satu alamat IP → `429 too_many_auth_failures` dengan `Retry-After: 60`.

```python Contoh retry (Python) theme={null}
import time, requests

def call(method, url, **kw):
    while True:
        r = requests.request(method, url, **kw)
        if r.status_code != 429:
            return r
        time.sleep(int(r.headers.get("Retry-After", "5")))
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.