[{"data":1,"prerenderedAt":252},["ShallowReactive",2],{"docs-nav-titles":3,"page-docs_id-\u002Fguides\u002Frate-limits":52},{"en":4,"id":39},{"\u002Fauthentication":5,"\u002Fchangelog":6,"\u002Fguides\u002Fbilling":7,"\u002Fguides\u002Ferrors":8,"\u002Fguides\u002Fjson-output":9,"\u002Fguides\u002Frate-limits":10,"\u002Fguides\u002Freasoning":11,"\u002Fguides\u002Fstreaming":12,"\u002Fguides\u002Ftool-calling":13,"\u002Fguides\u002Ftop-up":14,"\u002F":15,"\u002Fintegrations\u002Faider":16,"\u002Fintegrations\u002Fclaude-code":17,"\u002Fintegrations\u002Fcline":18,"\u002Fintegrations\u002Fcontinue":19,"\u002Fintegrations\u002Fgoose":20,"\u002Fintegrations\u002Fhermes":21,"\u002Fintegrations":22,"\u002Fintegrations\u002Fkilo-code":23,"\u002Fintegrations\u002Flangchain":24,"\u002Fintegrations\u002Foh-my-pi":25,"\u002Fintegrations\u002Fopenai-sdk":26,"\u002Fintegrations\u002Fopenclaw":27,"\u002Fintegrations\u002Fopencode":28,"\u002Fintegrations\u002Fpi":29,"\u002Fintegrations\u002Fvercel-ai-sdk":30,"\u002Fintegrations\u002Fzed":31,"\u002Fmodels":32,"\u002Fquickstart":33,"\u002Freference\u002Fchat-completions":34,"\u002Freference":22,"\u002Freference\u002Fmessages":35,"\u002Freference\u002Fmodels":36,"\u002Freference\u002Fmodels-retrieve":37,"\u002Fsupport":38},"Authentication","Changelog","Billing","Errors & retries","JSON output","Rate limits","Reasoning content","Streaming","Tool calling","Topping up with QRIS","Introduction","Aider","Claude Code","Cline","Continue","Goose","Hermes Agent","Overview","Kilo Code","LangChain (Python)","Oh My Pi","OpenAI SDKs","OpenClaw","OpenCode","Pi","Vercel AI SDK","Zed","Models","Quickstart","Chat completions","Messages","List models","Retrieve a model","Support",{"\u002Fauthentication":40,"\u002Fchangelog":6,"\u002Fguides\u002Fbilling":7,"\u002Fguides\u002Ferrors":41,"\u002Fguides\u002Fjson-output":42,"\u002Fguides\u002Frate-limits":43,"\u002Fguides\u002Freasoning":44,"\u002Fguides\u002Fstreaming":12,"\u002Fguides\u002Ftool-calling":13,"\u002Fguides\u002Ftop-up":45,"\u002F":46,"\u002Fintegrations\u002Faider":16,"\u002Fintegrations\u002Fclaude-code":17,"\u002Fintegrations\u002Fcline":18,"\u002Fintegrations\u002Fcontinue":19,"\u002Fintegrations\u002Fgoose":20,"\u002Fintegrations\u002Fhermes":21,"\u002Fintegrations":47,"\u002Fintegrations\u002Fkilo-code":23,"\u002Fintegrations\u002Flangchain":24,"\u002Fintegrations\u002Foh-my-pi":25,"\u002Fintegrations\u002Fopenai-sdk":48,"\u002Fintegrations\u002Fopenclaw":27,"\u002Fintegrations\u002Fopencode":28,"\u002Fintegrations\u002Fpi":29,"\u002Fintegrations\u002Fvercel-ai-sdk":30,"\u002Fintegrations\u002Fzed":31,"\u002Fmodels":49,"\u002Fquickstart":33,"\u002Freference\u002Fchat-completions":34,"\u002Freference":47,"\u002Freference\u002Fmessages":35,"\u002Freference\u002Fmodels":50,"\u002Freference\u002Fmodels-retrieve":51,"\u002Fsupport":38},"Autentikasi","Error & retry","Output JSON","Rate limit","Konten reasoning","Isi saldo dengan QRIS","Pengantar","Ringkasan","OpenAI SDK","Model","Daftar model","Ambil satu model",{"id":53,"title":43,"body":54,"description":243,"extension":244,"eyebrow":245,"meta":246,"navTitle":245,"navigation":247,"path":248,"seo":249,"stem":250,"__hash__":251},"docs_id\u002Fguides\u002Frate-limits.md",{"type":55,"value":56,"toc":235},"minimark",[57,61,66,116,123,134,138,166,177,181,192,196,227],[58,59,60],"p",{},"Batas berlaku per API key. Dua kunci dalam satu organisasi punya batas masing-masing, jadi batch job yang sibuk di satu kunci tidak memperlambat kunci produksi Anda.",[62,63,65],"h2",{"id":64},"batas-default","Batas default",[67,68,69,85],"table",{},[70,71,72],"thead",{},[73,74,75,79,82],"tr",{},[76,77,78],"th",{},"Batas",[76,80,81],{},"Default per kunci",[76,83,84],{},"Error jika terlampaui",[86,87,88,103],"tbody",{},[73,89,90,94,97],{},[91,92,93],"td",{},"Request per menit",[91,95,96],{},"300",[91,98,99],{},[100,101,102],"code",{},"429 rate_limit_exceeded",[73,104,105,108,111],{},[91,106,107],{},"Request bersamaan (berjalan di waktu yang sama)",[91,109,110],{},"16",[91,112,113],{},[100,114,115],{},"429 concurrency_limit_exceeded",[58,117,118,119,122],{},"Kedua respons membawa header ",[100,120,121],{},"Retry-After"," berisi jumlah detik yang perlu ditunggu. Request yang ditolak tidak ditagih.",[124,125,132],"pre",{"className":126,"code":128,"filename":129,"language":130,"meta":131},[127],"language-text","HTTP\u002F1.1 429 Too Many Requests\nRetry-After: 3\nContent-Type: application\u002Fjson\n\n{\"error\":{\"message\":\"…\",\"type\":\"rate_limit_exceeded\",\"code\":\"concurrency_limit_exceeded\",\"param\":null}}\n","Respons 429","text","",[100,133,128],{"__ignoreMap":131},[62,135,137],{"id":136},"hal-lain-yang-bisa-mengembalikan-429","Hal lain yang bisa mengembalikan 429",[139,140,141,153],"ul",{},[142,143,144,148,149,152],"li",{},[145,146,147],"strong",{},"Perlindungan tingkat IP."," Laju request yang sangat tinggi dari satu alamat IP ditolak dengan ",[100,150,151],{},"429 ip_rate_limited",", terlepas dari kuncinya.",[142,154,155,158,159,162,163,165],{},[145,156,157],{},"Penyedia model."," Jika penyedia membatasi sebuah request, respons ",[100,160,161],{},"429"," dan ",[100,164,121],{}," darinya diteruskan kepada Anda apa adanya.",[58,167,168,169,171,172,176],{},"Untuk semua kasus: tunggu sesuai ",[100,170,121],{},", lalu coba lagi. Lihat ",[173,174,41],"a",{"href":175},"\u002Fid\u002Fguides\u002Ferrors#when-to-retry",".",[62,178,180],{"id":179},"saldo-anda-juga-membatasi","Saldo Anda juga membatasi",[58,182,183,184,187,188,191],{},"Setiap request yang sedang berjalan menahan sebagian saldo wallet Anda sampai selesai (lihat ",[173,185,7],{"href":186},"\u002Fid\u002Fguides\u002Fbilling#holds","). Dengan saldo kecil, hold untuk request yang berjalan bisa menghabiskannya sebelum Anda mencapai 16 request bersamaan; request baru lalu gagal dengan ",[100,189,190],{},"402 insufficient_credit"," sampai request sebelumnya selesai atau Anda mengisi saldo.",[62,193,195],{"id":194},"agar-tetap-di-bawah-batas","Agar tetap di bawah batas",[139,197,198,204,210,221],{},[142,199,200,203],{},[145,201,202],{},"Batasi konkurensi."," Gunakan worker pool atau semaphore paling banyak 16 per kunci.",[142,205,206,209],{},[145,207,208],{},"Sebar pekerjaan batch"," dari waktu ke waktu, jangan dikirim sekaligus.",[142,211,212,215,216,220],{},[145,213,214],{},"Gunakan satu kunci per environment atau beban kerja",", supaya batas dan ",[173,217,219],{"href":218},"\u002Fid\u002Fguides\u002Fbilling#key-budgets","anggaran"," terpisah.",[142,222,223,226],{},[145,224,225],{},"Stream jawaban yang panjang."," Streaming tidak mengubah batas, tetapi memungkinkan Anda menampilkan progres selama request memakai slot konkurensinya.",[58,228,229,230,234],{},"Jika batas default tidak cocok dengan beban kerja Anda, kirim email ke ",[173,231,233],{"href":232},"mailto:support@larasrouter.com","support@larasrouter.com"," beserta perkiraan trafik Anda.",{"title":131,"searchDepth":236,"depth":236,"links":237},3,[238,240,241,242],{"id":64,"depth":239,"text":65},2,{"id":136,"depth":239,"text":137},{"id":179,"depth":239,"text":180},{"id":194,"depth":239,"text":195},"Setiap API key mengizinkan 300 request per menit dan 16 request bersamaan secara default. Jika terlampaui, Anda menerima 429 dengan Retry-After.","md",null,{},true,"\u002Fguides\u002Frate-limits",{"title":43,"description":243},"guides\u002Frate-limits","A09x6FhyUJ1SHa8YCLcPDqo7zziFtGtSAWDb6PlbKlA",1793333617470]