Memulai
Quickstart
Hubungkan aplikasi Anda ke Laras Router dalam beberapa menit. API ini kompatibel dengan SDK resmi OpenAI dan klien apa pun yang memungkinkan Anda mengatur base URL.
Buat akun dan isi saldo
Daftar di konsol developer. Buka Billing & Wallet, pilih nominal antara $3.00 dan $100.00, lalu pindai kode QRIS dinamis dengan aplikasi bank atau e-wallet Indonesia mana pun. Invoice menampilkan kurs, biaya QRIS 0,70%, dan total dalam Rupiah sebelum Anda membayar. Tidak ada kredit gratis, jadi request pertama Anda memerlukan top-up.
Buat API key
Buka API Keys lalu klik Create Key. Salin kunci rahasia Anda (
lr_live_...). Demi keamanan, kunci lengkap hanya ditampilkan sekali.Kirim request pertama Anda
Arahkan klien OpenAI Anda ke
https://api.larasrouter.com/v1dan gunakan kunci Laras Router Anda:curl https://api.larasrouter.com/v1/chat/completions \ -H "Authorization: Bearer $LARAS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "deepseek-flash", "messages": [ {"role": "user", "content": "Explain recursion in one short paragraph."} ] }'
Keamanan
Autentikasi
Semua request API diautentikasi dengan HTTP Bearer token di header Authorization. Kunci selalu diawali lr_live_.
Authorization: Bearer lr_live_••••••••••••••••Variabel lingkungan
SDK resmi OpenAI membaca variabel lingkungan berikut:
export OPENAI_BASE_URL="https://api.larasrouter.com/v1"export OPENAI_API_KEY="lr_live_your_key_here"Endpoint
Chat Completions
POST /v1/chat/completions membuat completion untuk daftar pesan chat, dengan format request dan respons OpenAI.
Parameter request
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| model | string | Ya | ID model. Satu-satunya nilai yang diterima adalah deepseek-flash. |
| messages | array | Ya | Objek pesan dengan role dan content, sama seperti di API OpenAI. |
| max_tokens | integer | Tidak | Jumlah maksimum token output, 1 sampai 384.000. Jika tidak diisi, gateway mengirim batas 8.192 ke penyedia. Nilai di atas 384.000 ditolak dengan 400 max_tokens_exceeded, tidak pernah diturunkan diam-diam. max_completion_tokens juga diterima; jika Anda mengirim keduanya, nilai yang lebih kecil yang dipakai. |
| stream | boolean | Tidak | Jika true, potongan pesan dikirim bertahap sebagai Server-Sent Events (SSE). Atur stream_options.include_usage ke true untuk menerima pemakaian token di chunk terakhir. |
| parameter lain | — | Tidak | Parameter lain yang kompatibel dengan OpenAI, seperti temperature, tools, response_format, dan stop, diteruskan ke DeepSeek tanpa diubah. Lihat dokumentasi API DeepSeek untuk perilaku masing-masing. |
max_tokens — batas default 8.192 token berlaku jika Anda tidak mengisinya.Request ID
Respons untuk request yang sudah sampai ke tahap billing membawa header X-Laras-Request-ID. Header ini mengidentifikasi biaya dan hold untuk request tersebut — sertakan saat Anda menghubungi support soal tagihan. Request yang ditolak sebelum hold dibuat (misalnya 401 atau 404) mungkin tidak membawanya.
Endpoint
Endpoint Models
GET /v1/models menampilkan daftar model yang bisa dipakai kunci Anda.
curl https://api.larasrouter.com/v1/models \ -H "Authorization: Bearer $LARAS_API_KEY"ID model yang didukung
deepseek-flash— DeepSeek-V4.1-Flash. Model serbaguna yang cepat dengan jendela konteks 1M token, output hingga 384K token, streaming, tool call, dan output JSON.
ID lama seperti deepseek-v4-flash dan deepseek-v4-flash-vision-exp tidak diterima dan akan mengembalikan 404 model_not_found. Input gambar tidak tersedia.
Endpoint ini mengembalikan payload daftar standar ala OpenAI: setiap entri berisi id, object, dan owned_by.
Batas
Rate Limit
Secara default, setiap API key punya dua batas:
- Request per menit
- 60
- Request bersamaan
- 4
Request yang melewati salah satu batas akan mengembalikan 429 dengan kode error rate_limit_exceeded atau concurrency_limit_exceeded, serta header Retry-After dalam detik. Jika DeepSeek sendiri membatasi sebuah request, respons 429 dan Retry-After darinya diteruskan kepada Anda. Coba lagi setelah jeda yang ditunjukkan, dengan backoff.
Setiap request yang sedang berjalan juga menahan sebagian saldo Anda (lihat di bawah), jadi saldo yang kecil bisa membatasi jumlah request bersamaan lebih dulu sebelum batas-batas ini tercapai.
Biaya
Billing & Hold
Saldo Anda adalah wallet prabayar dalam USD. Untuk setiap request, kami mencatat metadata operasional — ID model, jumlah token, status HTTP, biaya, dan stempel waktu. Teks prompt dan completion Anda hanya melewati gateway kami di memori dan tidak kami simpan; teks tersebut dikirim ke DeepSeek untuk menghasilkan respons.
Perhitungan biaya
Setiap request ditagih berdasarkan pemakaian yang dilaporkan DeepSeek (prompt_cache_hit_tokens, prompt_cache_miss_tokens, dan completion_tokens). Harga bersifat tetap dan tidak berubah menurut jam:
cost = cache_hit_input_tokens × $0.010 / 1M + cache_miss_input_tokens × $0.400 / 1M + output_tokens × $1.600 / 1MContoh: 8.000 token input cache hit, 4.400 token input cache miss, dan 1.800 token output berbiaya $0.000080 + $0.001760 + $0.002880 = $0.004720. Biaya dihitung hingga sepermiliar dolar, dibulatkan ke atas, dan ditampilkan hingga enam angka desimal ($0.000001) di konsol Anda. Coba komposisi lain di kalkulator biaya.
Hold dan error 402
Sebelum request dikirim ke penyedia, sebagian saldo Anda ditahan sebagai hold. Hold ini mencakup prompt terbesar yang diterima model ditambah batas output Anda (max_tokens, atau 8.192 token jika tidak diisi). Dengan harga saat ini, nilainya sekitar $0.41 untuk request dengan batas default. Setelah request selesai, hold diselesaikan sesuai biaya sebenarnya dan sisanya dilepas kembali.
Request tetap dijalankan selama saldo tersedia Anda — saldo dikurangi hold untuk request yang masih berjalan — di atas $0.00, meskipun lebih kecil dari hold yang baru. Request yang selesai bisa membuat saldo Anda minus paling banyak $1.00; jumlah itu menjadi kekurangan yang dipotong dari top-up Anda berikutnya. Selama saldo tersedia Anda $0.00 atau kurang, request akan gagal dengan 402 insufficient_credit sampai Anda mengisi saldo.
Request yang gagal
- Request yang ditolak DeepSeek dengan error 4xx tidak ditagih; hold-nya dilepas.
- Request yang gagal dengan error 5xx, timeout, atau terputus tetap ditahan hold-nya selama kami melakukan rekonsiliasi. Anda mungkin ditagih untuk pemakaian yang dilaporkan DeepSeek; jika tidak ada, hold dilepas tanpa biaya.
Anggaran kunci
Setiap API key bisa punya anggaran bulanan opsional dalam USD, yang diatur di konsol. Pengeluaran bulan berjalan sebuah kunci adalah tagihan yang sudah diselesaikan ditambah hold request yang masih berjalan, dihitung per bulan kalender menurut waktu Jakarta (WIB). Request yang hold-nya akan membuat kunci melampaui anggarannya gagal dengan 402 key_budget_exceeded sebelum sampai ke provider. Anggaran membatasi satu kunci; anggaran tidak pernah membuat kunci bisa memakai lebih dari saldo Anda.
Saat saldo tersedia Anda turun di bawah $1.00, pemilik dan admin organisasi Anda menerima satu email berisi tautan untuk isi saldo. Peringatan berikutnya baru dikirim setelah saldo diisi hingga $1.00 atau lebih lalu turun lagi.
Pemecahan masalah
Referensi Error
Error memakai format error OpenAI, jadi SDK bisa membacanya seperti biasa. Buat percabangan logika berdasarkan code (dan type), jangan berdasarkan teks message.
Teks message berbahasa Inggris secara default. Kirim header Accept-Language: id (misalnya id-ID,id;q=0.9) untuk menerimanya dalam Bahasa Indonesia. code dan type selalu sama di semua bahasa.
{ "error": { "message": "Insufficient wallet balance", "type": "insufficient_quota", "code": "insufficient_credit", "param": null }}| Status | Kode | Tipe | Penyebab & solusi |
|---|---|---|---|
| 400 | invalid_request | invalid_request_error | Body bukan JSON yang valid atau tidak menyebutkan model. Perbaiki body request. |
| 400 | max_tokens_exceeded | invalid_request_error | max_tokens (atau max_completion_tokens) melebihi batas model, yaitu 384.000. Turunkan nilainya. |
| 401 | invalid_api_key | invalid_request_error | Header Authorization tidak ada, atau API key tidak valid atau sudah dicabut. |
| 402 | insufficient_credit | insufficient_quota | Saldo tersedia Anda, setelah dikurangi hold untuk request yang masih berjalan, sudah $0.00 atau kurang (lihat Billing & Hold). Saldo minus, paling banyak $1.00, dipotong dari top-up Anda berikutnya. Isi saldo untuk melanjutkan. |
| 402 | key_budget_exceeded | insufficient_quota | Hold request ini akan membuat API key melampaui anggaran bulanannya. Pengeluaran bulan berjalan menghitung tagihan yang sudah diselesaikan ditambah hold request yang masih berjalan, pada bulan kalender berjalan menurut waktu Jakarta (WIB). Naikkan atau hapus anggaran di konsol, atau tunggu bulan berikutnya. |
| 403 | insufficient_scope | insufficient_permissions | API key tidak memiliki scope chat:write. |
| 404 | model_not_found | invalid_request_error | ID model tidak tersedia. Gunakan deepseek-flash. |
| 429 | rate_limit_exceeded / concurrency_limit_exceeded | rate_limit_exceeded | Batas per API key tercapai (lihat Rate Limit). Tunggu sesuai detik di Retry-After, lalu coba lagi. Respons 429 dari DeepSeek diteruskan dengan body dan Retry-After miliknya sendiri. |
| 502 | provider_unavailable | api_error | Penyedia model tidak bisa dihubungi atau mengalami kegagalan. Coba lagi dengan backoff. |
| 503 | billing_unavailable | api_error | Billing sedang tidak tersedia, jadi request tidak dijalankan. Coba lagi nanti. |
Status error lain yang dikembalikan DeepSeek — misalnya 400 untuk kombinasi parameter yang tidak didukungnya — diteruskan dengan body error asli dari DeepSeek.
Masih ada kendala? Kirim email ke [email protected] dengan menyertakan X-Laras-Request-ID dari request tersebut.