Dokumentasi

Kirim request pertama dalam dua menit.

LajuAPI menerima request dalam format Anthropic maupun OpenAI di host yang sama. Kalau kode kamu sudah jalan di salah satu SDK itu, yang perlu diubah cuma base URL dan API key.

Mulai cepat

Tiga langkah, dan tidak ada SDK khusus yang perlu dipasang.

  • Buat API key di dashboard. Bentuknya sk-laju-... dan hanya ditampilkan sekali.
  • Isi saldo. Selama beta, top up datang sebagai kode redeem yang kamu tukarkan di dashboard.
  • Arahkan client kamu ke https://api.lajuapi.com, lalu kirim request seperti biasa.
Request pertamashell
$ curl https://api.lajuapi.com/v1/messages \
    -H "x-api-key: $LAJU_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "content-type: application/json" \
    -d '{
      "model": "claude-opus-5",
      "max_tokens": 256,
      "messages": [{"role":"user","content":"halo"}]
    }'

Autentikasi

Satu key jalan di dua gaya header. Pakai yang sesuai SDK kamu, keduanya menagih saldo akun yang sama.

  • Gaya Anthropic: x-api-key: sk-laju-...
  • Gaya OpenAI: Authorization: Bearer sk-laju-...

Simpan key di environment variable, jangan di dalam kode yang ikut ter-commit. Key yang bocor bisa kamu cabut sendiri dari dashboard tanpa kehilangan saldo.

Base URL

ClientBase URLCatatan
Anthropic SDK, Claude Codehttps://api.lajuapi.comSDK menambahkan /v1/messages sendiri
OpenAI SDK, LangChainhttps://api.lajuapi.com/v1Sertakan /v1, karena SDK menambahkan /chat/completions

Host ini khusus API. Semua path di luar /v1/* dan /healthz menjawab 404 dalam bentuk error kami sendiri. Kalau kamu dapat halaman HTML, berarti salah host.

Daftar endpoint

MethodPathStatusCatatan
POST/v1/messagesjalanFormat Anthropic, JSON dan SSE
POST/v1/chat/completionsjalanFormat OpenAI, JSON dan SSE
POST/v1/responsesjalanResponses API OpenAI
POST/v1/images/generationsjalanDitagih per gambar
GET/v1/modelsjalanButuh key. Dipakai client yang mendeteksi model sendiri
POST/v1/messages/count_tokensbelumBelum kami layani. Hitung token di sisi client dulu

Streaming dan tool use

Kirim stream: true dan frame SSE diteruskan begitu datang, di kedua format. Definisi tool juga lewat tanpa kami sentuh, jadi tool agentik yang mengandalkan banyak putaran tool call jalan normal.

Kalau upstream putus di tengah stream, kami tidak diam-diam memutus koneksi. Kamu dapat frame error bertipe lengkap dengan request ID, sehingga client bisa membedakan stream yang selesai dan stream yang gagal.

Frame error di tengah streamsse
event: error
data: {"type":"error","error":{"type":"overloaded_error",
      "message":"The service is temporarily unavailable. Please retry.",
      "retryable":true},"request_id":"req_01HQ8Z3f9a"}

Model dan ID

Panggil model dengan ID persis seperti di tabel harga, misalnya claude-opus-5 atau gpt-5.6-terra. Kami tidak memetakan alias ke model lain, dan tidak ada penggantian waktu supplier sibuk. ID yang tidak dikenal menjawab 404 model_not_found, bukan model pengganti.

Daftar yang aktif selalu bisa kamu tarik sendiri dari GET /v1/models dengan key kamu.

Harga dan penagihan

  • Saldo prabayar dalam USD, kepotong setiap request selesai. Tidak ada langganan, tidak ada kartu tersimpan.
  • Model teks ditagih per token, input dan output terpisah, sesuai tarif di halaman harga.
  • Model gambar ditagih per gambar. Tier yang kamu panggil menentukan anggaran piksel, dan parameter size maupun quality diabaikan.
  • Saldo tidak hangus. Kalau habis, request berikutnya ditolak dengan 403 insufficient_quota, bukan diteruskan lalu ditagih belakangan.

Selama beta: top up diterbitkan manual sebagai kode redeem. Bayar lewat USDT, QRIS, e-wallet, atau transfer bank, lalu kodenya masuk ke akun kamu. Top up otomatis menyusul bersama pendaftaran umum.

Error dan retry

Semua kegagalan dinormalkan ke kontrak kami sendiri. Teks dari upstream tidak pernah diteruskan mentah, dengan satu pengecualian: pesan validasi 400, satu-satunya error yang memang memberi tahu cara memperbaiki request kamu.

HTTPcodeArtinyaAman diulang
400invalid_request_errorRequest ditolak; pesannya menyebut bagian yang perlu dibetulkanTidak, perbaiki dulu
401invalid_api_keyKey salah, dicabut, atau salah headerTidak
403insufficient_quotaSaldo tidak cukupTidak, top up dulu
404model_not_foundID model tidak dikenalTidak
429rate_limit_exceededKamu memukul terlalu cepatYa, mundur dulu
429server_busySemua jalur untuk model itu sedang penuhYa
503upstream_unavailableSupplier mati dan failover belum menemukan jalur sehatYa
504api_errorUpstream timeoutYa
500api_errorRequest tidak bisa diprosesYa

Bentuk body mengikuti format yang kamu pakai. Gaya OpenAI membawa code, gaya Anthropic membawa error.type. Keduanya membawa retryable dan request_id.

Bentuk errorjson
// gaya OpenAI
{"error":{"message":"The service is temporarily unavailable. Please retry.",
          "type":"api_error","code":"upstream_unavailable",
          "param":null,"retryable":true},
 "request_id":"req_01HQ8Z3f9a"}

// gaya Anthropic
{"type":"error",
 "error":{"type":"overloaded_error",
          "message":"The service is temporarily unavailable. Please retry.",
          "retryable":true},
 "request_id":"req_01HQ8Z3f9a"}

Setiap respons membawa header X-Request-Id. Kalau kamu mengirim sendiri, kami pakai punya kamu supaya log kamu dan log kami nyambung. Sertakan ID itu waktu melapor.

Batasan yang perlu diketahui

Best effort, tanpa SLA. Ada beberapa supplier di belakang tiap model dengan failover otomatis, tapi kami tidak menjanjikan angka uptime yang mengikat. Untuk trafik produksi yang tidak boleh berhenti, siapkan fallback ke penyedia resmi.

  • count_tokens belum tersedia. Client yang memanggilnya lebih dulu bisa gagal di langkah itu, jadi hitung token di sisi kamu untuk sekarang.
  • Tarif beta sifatnya indikatif dan mengikuti pasar agregator. Saldo yang sudah dibeli tetap dihitung di tarif waktu kamu bayar.
  • Pendaftaran masih lewat undangan sampai top up otomatis siap.

Klien yang sudah dites

Semua client yang bisa diatur custom base URL-nya akan jalan. Yang berikut kami pakai sendiri.

Claude CodeopencodeClineRoo Code ContinueKilo CodeCopilot BYOKAnthropic SDK OpenAI SDKLangChaincurl

Bantuan

Ada request yang gagal dan kamu tidak yakin kenapa? Kirim request_id, ID model, dan perkiraan jam kejadian lewat halaman kontak. Dengan ID itu kami bisa menelusuri satu request tanpa perlu isi prompt kamu.

Kesehatan jalur bisa kamu pantau di halaman status, dan angkanya sama dengan yang tampil di beranda.

Tersedia juga dalam English.