Router-webDaftarMasuk

Dokumentasi API

Router-web kompatibel dengan API OpenAI. Contoh di bawah sudah terisi otomatis dengan domain situs ini (domain terdeteksi begitu halaman dibuka) — tinggal salin dan jalankan, tanpa ganti BASE_URL manual lagi.

Isi dulu (disimpan di browser kamu saja)

Key lengkap hanya tampil sekali saat dibuat di dashboard, jadi halaman ini tidak bisa mengambilnya otomatis dari server. Tempel key kamu di sini — key ini tidak dikirim ke server oleh halaman docs, hanya dipakai untuk mengisi contoh di bawah dan disimpan lokal di browser kamu.

Model diambil dari /api/v1/models situs ini. Kalau belum ada model, atur dulu provider + harganya di /admin.

Belum ada key? Buat dulu di Dashboard (atau minta dibuatkan admin), lalu tempel di atas.

Daftar model

curl https://domain-kamu/api/v1/models

Chat completions (non-streaming)

curl https://domain-kamu/api/v1/chat/completions \
  -H "Authorization: Bearer SK_ROUTER_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "model-kamu",
    "messages": [{"role": "user", "content": "Halo!"}]
  }'

Chat completions (streaming)

Tambahkan "stream": true — responsnya berupa SSE seperti OpenAI, dan tagihan dihitung dari usage di chunk terakhir.

curl -N https://domain-kamu/api/v1/chat/completions \
  -H "Authorization: Bearer SK_ROUTER_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "model-kamu",
    "messages": [{"role": "user", "content": "Halo!"}],
    "stream": true
  }'

Pakai di kode (OpenAI SDK)

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://domain-kamu/api/v1",
  apiKey: "SK_ROUTER_KEY",
  dangerouslyAllowBrowser: true,
});

const res = await client.chat.completions.create({
  model: "model-kamu",
  messages: [{ role: "user", content: "Halo!" }],
});

Dukungan OpenAI

Router-web memakai bentuk request, respons, dan error yang sama dengan API OpenAI, jadi bisa dipakai langsung dengan SDK OpenAI (cukup arahkan baseURL ke situs ini) — termasuk dari browser dengan dangerouslyAllowBrowser, karena endpoint /api/v1 mengizinkan CORS.

Semua parameter chat standar diteruskan apa adanya ke upstream (temperature, top_p, max_tokens, max_completion_tokens, presence_penalty, frequency_penalty, stream_options, response_format, seed, user, logit_bias, logprobs, n, parallel_tool_calls, reasoning_effort, dan lainnya). Respons non-streaming selalu berbentuk chat.completion dengan id, choices, finish_reason, dan usage yang lengkap; error selalu berbentuk {error: {message, type, code}}.

Kode error

KodeArti
401API key salah / tidak ada
402 insufficient_balanceSaldo habis — top-up dulu
402 model_not_pricedModel belum ada harganya di admin
502Semua upstream provider gagal

Catatan Netlify: generasi non-streaming yang sangat panjang bisa kena batas waktu serverless — pakai streaming untuk respons panjang dan jaga max_tokens tetap wajar.