Batas free tier OpenRouter dan cara memperbaiki error 429
Updated 2026-07-15
Varian model gratis OpenRouter dibatasi sekitar 20 request per menit, plus 50 request per hari kalau akun Anda membeli kredit lifetime kurang dari $10, atau 1.000 per hari begitu melewati ambang itu. Error 429 berarti Anda kena salah satu batas itu atau pool gratis bersama sedang jenuh saat itu.
Jawaban singkat: batas free tier yang persis
OpenRouter membatasi pemakaian gratis di dua sumbu: plafon per menit dan anggaran request harian. Batas per menit untuk varian model gratis (ID model yang berakhiran :free) adalah 20 request per menit. Anggaran harian bergantung pada apakah akun Anda pernah membeli minimal $10 kredit: di bawah ambang lifetime itu Anda dapat 50 request model gratis per hari, di atas atau sama dengan itu Anda dapat 1.000 per hari. Angka-angka ini adalah yang didokumentasikan OpenRouter per awal 2026. Angka ini pernah berubah sebelumnya (batas harian dulu lebih tinggi), jadi anggap tabel ini sebagai baseline saat ini, bukan jaminan permanen, dan verifikasi ke key Anda sendiri dengan pengecekan di bagian berikutnya. Respons 429 berarti Anda melampaui salah satu batas ini, atau provider upstream yang melayani model gratis itu kehabisan kapasitas walaupun kuota pribadi Anda masih aman. Sisa panduan ini membahas cara membedakan mana yang Anda kena dan apa yang harus dilakukan.
| Batas | Nilai | Berlaku saat |
|---|---|---|
| Request per menit | 20 rpm | Semua varian model :free, per akun |
| Request per hari | 50 | Kurang dari $10 pembelian kredit lifetime |
| Request per hari | 1.000 | $10 atau lebih pembelian kredit lifetime |
| Model berbayar | Batas terpisah, jauh lebih tinggi | Model non-gratis mana pun, ditagih per token |
Cara kerja free tier sesungguhnya
Model gratis di OpenRouter adalah entri katalog terpisah dengan suffix :free. Model ini dilayani oleh provider yang mendonasikan atau mensubsidi kapasitas, itulah kenapa ketersediaannya jauh lebih fluktuatif dibanding varian berbayar dari weight yang sama. Tiga detail yang sering membuat orang salah paham. Pertama, batas harian berlaku di level akun: 50 request tersebar di kombinasi model gratis apa pun, bukan 50 per model. Kedua, ambang $10 menghitung pembelian kredit lifetime, bukan saldo saat ini. Membeli $10 sekali menjaga Anda tetap di bracket 1.000 request per hari bahkan setelah Anda menghabiskannya. Ketiga, batasnya diterapkan per akun, jadi membuat API key tambahan di akun yang sama tidak menambah apa pun. Anda bisa mengecek persis posisi key Anda. Respons-nya menyertakan is_free_tier, pemakaian Anda sejauh ini, dan objek rate limit yang sedang berlaku untuk key Anda:
curl https://openrouter.ai/api/v1/auth/key \
-H "Authorization: Bearer $OPENROUTER_API_KEY"
# Field respons yang perlu dibaca:
# "is_free_tier": true -> masih di bawah ambang lifetime $10
# "usage": 1.42 -> kredit yang terpakai
# "rate_limit": {...} -> batas per interval pada key iniKenapa 429 melonjak di jam sibuk
Batas pribadi Anda hanya setengah dari cerita. Kapasitas gratis adalah pool bersama, dan OpenRouter hanya bisa merutekan request gratis ke provider yang punya kapasitas subsidi tersisa saat itu. Ketika model gratis populer jenuh, Anda kena 429 atau error upstream bahkan kalau Anda baru melakukan segelintir request hari itu. Laporan komunitas secara konsisten menyebut malam hari di zona waktu AS dan akhir pekan sebagai jendela terburuk, dengan request yang sama berhasil langsung di jam sepi. Itu observasi perkiraan, bukan angka yang dipublikasikan, tapi cukup sering berulang untuk direncanakan. Frontend chat memperbesar masalahnya. Interface gaya SillyTavern dan JanitorAI mengirim request completion baru untuk setiap swipe, regenerate, dan giliran group chat, dan beberapa setup proxy melakukan retry otomatis saat gagal. User yang merasa baru mengirim 15 pesan mungkin sebenarnya menghasilkan 40 sampai 50 request, yaitu seluruh anggaran harian akun di bawah ambang $10. Retry otomatis yang agresif juga memperdalam kemacetan di jam sibuk untuk semua orang, itulah kenapa backoff yang disiplin penting. Diagnostik praktisnya: kalau 429 berhenti setelah Anda menunggu sampai reset harian, Anda kena kuota. Kalau ia datang dan pergi dalam jam yang sama sementara jumlah request Anda rendah, Anda sedang melihat kemacetan pool.
Perbaikan, diurutkan dari yang paling ringan
Kalau Anda tetap memakai traffic di free tier, client minimum yang layak menangani 429 secara eksplisit, bukan gagal atau retry membabi buta:
- Baca body error-nya dulu. 429 OpenRouter membedakan antara batas per menit Anda, kuota harian Anda yang habis, dan kemacetan upstream. Perbaiki yang benar-benar Anda kena.
- Hormati Retry-After dan lakukan backoff eksponensial dengan jitter. Menghantam endpoint terus-menerus justru memperpanjang rate limit Anda dan memperparah kemacetan.
- Lewati ambang kredit lifetime $10 sekali saja. Ini mengangkat batas harian dari 50 jadi 1.000 request dan merupakan perbaikan paling berdampak untuk 429 akibat kuota harian.
- Pindahkan traffic yang penting ke varian berbayar dari model yang sama. Model kelas DeepSeek biayanya jauh di bawah satu dolar per juta token, jadi satu malam chat yang berat biasanya biayanya beberapa sen.
- Kurangi volume request di sisi client: matikan auto-regenerasi, hindari swipe yang tidak perlu, dan pangkas context supaya tiap retry lebih murah saat memang terjadi.
import random
import time
import requests
def chat(payload: dict, key: str, retries: int = 5) -> dict:
for attempt in range(retries):
r = requests.post(
"https://openrouter.ai/api/v1/chat/completions",
headers={"Authorization": f"Bearer {key}"},
json=payload,
timeout=120,
)
if r.status_code != 429:
r.raise_for_status()
return r.json()
wait = float(r.headers.get("Retry-After", 2 ** attempt + random.random()))
time.sleep(wait)
raise RuntimeError("Still rate limited after all retries")Alternatif kalau 50 request per hari tidak cukup
Kalau pola pemakaian Anda konsisten di atas anggaran gratis, ada empat jalur realistis. Yang tepat bergantung pada apakah bottleneck Anda kuota harian, kemacetan jam sibuk, atau keduanya. Perlu diketahui bahwa opsi berbayar ini berbeda terutama di overhead-nya, bukan di bentuk request-nya: semuanya berbicara dalam format chat completions OpenAI-compatible yang sama, jadi berpindah cukup perubahan base URL dan key, bukan penulisan ulang.
| Opsi | Model biaya | Perilaku rate limit | Trade-off |
|---|---|---|---|
| Varian :free OpenRouter | $0 | 20 rpm; 50 atau 1.000 request/hari | Pool bersama, kemacetan jam sibuk |
| Model berbayar OpenRouter | Per token, kredit di muka | Jauh lebih tinggi, berskala dengan akun | Biaya platform pada pembelian kredit |
| API provider langsung | Per token dengan harga resmi | Tier spesifik per provider | Key dan billing terpisah per provider |
| Gateway bayar-sesuai-pemakaian langsung | Per token, tanpa langganan | Kapasitas berbayar, tanpa persaingan pool gratis | Anda bayar sejak request pertama |
| Open weight self-hosted | Hardware dan listrik | Dibatasi hanya oleh GPU Anda | Effort setup, plafon ukuran model |
Menjalankan frontend chat di gateway langsung
Gateway langsung mempertahankan bentuk request OpenAI-compatible tapi menghilangkan antrean pool gratis, karena setiap request adalah kapasitas berbayar. APIsRouter adalah salah satu contohnya: bayar sesuai pemakaian tanpa langganan, dan checkout tanpa signup di /topup di mana Anda bayar dulu dan API key dikirim lewat email. Model global berjalan 20% di bawah harga resmi, model China berada di bawah tarif resminya, dan top-up pertama menggandakan saldo awal Anda. Setup frontend mencerminkan yang sudah Anda lakukan dengan OpenRouter. Di SillyTavern, tempel base URL yang berakhir di /v1 (https://api.apisrouter.com/v1) dan daftar model otomatis terisi dari /v1/models dengan key Anda. Konfigurasi proxy JanitorAI butuh endpoint lengkap sebagai gantinya: https://api.apisrouter.com/v1/chat/completions, ditambah nama model dan API key. Untuk traffic chat karakter dan roleplay, keluarga DeepSeek V4 adalah favorit komunitas untuk value, dengan MiMo, GLM-5, dan Kimi K2.6 sebagai pilihan value tambahan. Claude Sonnet 4.6 menulis prosa terkuat untuk creative writing yang aman untuk kerja (SFW) di bawah kebijakan konten Anthropic.
| Model | ID Model | Input / output per 1M token |
|---|---|---|
| DeepSeek V4 Flash | deepseek-v4-flash | $0.126 / $0.252 |
| DeepSeek V4 Pro | deepseek-v4-pro | $0.3915 / $0.783 |
| GLM-5 | glm-5 | $0.514 / $2.314 |
| Gemini 3.5 Flash | gemini-3.5-flash | $1.20 / $7.20 |
| Claude Sonnet 4.6 | claude-sonnet-4-6 | $2.40 / $12.00 |
curl https://api.apisrouter.com/v1/chat/completions \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-flash",
"messages": [{"role": "user", "content": "Hello"}]
}'Pertanyaan umum
Apakah OpenRouter gratis digunakan?
Sebagian. OpenRouter mencantumkan varian gratis dari beberapa model (ID yang berakhiran :free) yang tidak berbayar tapi dibatasi sekitar 20 request per menit dan 50 atau 1.000 request per hari, tergantung apakah Anda pernah membeli $10 kredit. Semua listing model lainnya berbayar per token.
Kenapa saya terus kena error 429 di OpenRouter?
Error 429 berarti Anda melampaui batas per menit, menghabiskan anggaran request gratis harian Anda, atau kapasitas upstream bersama untuk model gratis itu sedang jenuh. Body error-nya menyebutkan yang mana. 429 akibat kuota bertahan sampai reset harian; 429 akibat kemacetan biasanya hilang di jam sepi.
Bagaimana cara menaikkan rate limit OpenRouter saya?
Beli $10 kredit sekali saja. Ambang lifetime itu mengangkat batas harian model gratis dari 50 jadi 1.000 request. Di luar itu, opsinya adalah memindahkan traffic ke varian model berbayar, menyebar request dengan backoff, atau merutekan overflow lewat provider atau gateway lain.
Apakah model gratis OpenRouter punya batas harian?
Ya. Anggaran harian dibagi rata di semua model gratis pada akun Anda: 50 request per hari di bawah $10 pembelian kredit lifetime, 1.000 per hari di atas atau sama dengan itu. Ini diterapkan di level akun, jadi API key tambahan di akun yang sama tidak menambah kuota.
Apakah free tier cukup untuk JanitorAI atau SillyTavern?
Untuk testing ringan, ya. Dalam praktiknya setiap swipe, regenerate, dan giliran group adalah request terpisah, jadi satu sesi aktif bisa menghabiskan 50 request dengan cepat, dan kemacetan jam sibuk menambah kegagalan di atasnya. User berat biasanya pindah ke model berbayar yang murah. Apa pun yang Anda pakai, ikuti ToS platform frontend-nya, termasuk syarat usianya, dan kebijakan konten provider model.