Lewati ke konten utama
GunaRouter Masuk

Dokumentasi

Endpoint GunaRouter mengikuti format OpenAI, jadi SDK dan tool yang sudah kamu pakai bisa langsung diarahkan ke sini. Base URL produksi: https://router.gunastudio.biz.id/v1

Penting. API key hanya ditampilkan sekali saat dibuat. Simpan di variabel lingkungan atau secret manager, jangan di dalam kode yang di-commit.

Mulai cepat

Buat API key di dasbor, isi saldo, lalu kirim request pertama. Tiga contoh di bawah memakai model yang sama; pilih salah satu.

curl

curl
curl https://router.gunastudio.biz.id/v1/chat/completions \
  -H "Authorization: Bearer $GUNA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-5.3-flash",
    "messages": [
      {"role": "system", "content": "Jawab singkat dalam bahasa Indonesia."},
      {"role": "user", "content": "Apa itu API gateway?"}
    ]
  }'

Python

python
from openai import OpenAI

client = OpenAI(
    base_url="https://router.gunastudio.biz.id/v1",
    api_key="GUNA_API_KEY",  # simpan di variabel lingkungan, jangan di kode
)

res = client.chat.completions.create(
    model="glm-5.3-flash",
    messages=[{"role": "user", "content": "Apa itu API gateway?"}],
)

print(res.choices[0].message.content)
print("biaya (USD):", res.usage.cost)

Node.js

node
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://router.gunastudio.biz.id/v1",
  apiKey: process.env.GUNA_API_KEY,
});

const res = await client.chat.completions.create({
  model: "glm-5.3-flash",
  messages: [{ role: "user", content: "Apa itu API gateway?" }],
});

console.log(res.choices[0].message.content);

Respons berisi usage.cost dalam USD untuk request tersebut, plus rincian token input, output, dan cache.

Base URL & autentikasi

Semua request memakai header Authorization: Bearer <API_KEY>. Tidak ada header tambahan yang wajib.

ringkasan
Base URL : https://router.gunastudio.biz.id/v1
Header   : Authorization: Bearer GUNA_API_KEY
Format   : JSON (application/json)

Key bisa dibatasi: limit kredit, periode reset, tanggal kedaluwarsa, dan daftar model yang diizinkan. Kalau key bocor, cabut lewat dasbor — key lain tetap jalan.

Endpoint

Semua endpoint memakai prefix /v1.
EndpointKegunaan
POST /chat/completionsFormat OpenAI, dipakai hampir semua tool
POST /responsesFormat OpenAI Responses API
POST /messagesFormat Anthropic, untuk Claude Code dan SDK Anthropic
GET /modelsKatalog model publik, tanpa API key
POST /embeddingsUbah teks jadi vektor

Contoh embeddings

curl
curl https://router.gunastudio.biz.id/v1/embeddings \
  -H "Authorization: Bearer $GUNA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "text-embedding-3-large", "input": "teks yang mau diubah jadi vektor"}'

Streaming

Tambahkan "stream": true untuk menerima potongan jawaban (server-sent events). SDK OpenAI menanganinya otomatis lewat stream=True.

curl
curl -N https://router.gunastudio.biz.id/v1/chat/completions \
  -H "Authorization: Bearer $GUNA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-5.3-flash",
    "stream": true,
    "messages": [{"role": "user", "content": "Tulis 3 kalimat tentang kopi."}]
  }'

Setiap potongan berformat data: {...} dan diakhiri data: [DONE]. Biaya akhir muncul di potongan terakhir yang membawa usage.

Function calling & structured output

Model bisa meminta pemanggilan fungsi yang kamu definisikan, atau dipaksa mengembalikan JSON sesuai skema.

function calling
curl https://router.gunastudio.biz.id/v1/chat/completions \
  -H "Authorization: Bearer $GUNA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-5.3-flash",
    "messages": [{"role": "user", "content": "Cuaca di Bandung sekarang?"}],
    "tools": [{
      "type": "function",
      "function": {
        "name": "ambil_cuaca",
        "description": "Ambil cuaca terkini untuk satu kota",
        "parameters": {
          "type": "object",
          "properties": {"kota": {"type": "string"}},
          "required": ["kota"]
        }
      }
    }],
    "tool_choice": "auto"
  }'

Output JSON sesuai skema

structured output
curl https://router.gunastudio.biz.id/v1/chat/completions \
  -H "Authorization: Bearer $GUNA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-5.3-flash",
    "messages": [{"role": "user", "content": "Ringkas: pesanan 2 kopi, total 40 ribu."}],
    "response_format": {
      "type": "json_schema",
      "json_schema": {
        "name": "ringkasan_pesanan",
        "strict": true,
        "schema": {
          "type": "object",
          "properties": {
            "item": {"type": "string"},
            "total": {"type": "number"}
          },
          "required": ["item", "total"],
          "additionalProperties": false
        }
      }
    }
  }'

Tidak semua model mendukung json_schema ketat. Kalau model menolak, pakai {"type": "json_object"} dan jelaskan bentuk JSON-nya di prompt.

Vision (baca gambar)

Model dengan tanda bisa gambar di katalog bisa menerima gambar lewat URL maupun data URL base64. Saat ini ada 12 model yang mendukung.

curl
curl https://router.gunastudio.biz.id/v1/chat/completions \
  -H "Authorization: Bearer $GUNA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-5.3-flash",
    "messages": [{
      "role": "user",
      "content": [
        {"type": "text", "text": "Apa isi gambar ini?"},
        {"type": "image_url", "image_url": {"url": "https://contoh.com/struk.jpg"}}
      ]
    }]
  }'

Token gambar dihitung sebagai token input. Untuk gambar besar, perkecil dulu supaya biaya tetap rendah.

Error & rate limit

KodeArtiYang harus dilakukan
400Request tidak validCek field model dan messages
401Key hilang, salah, atau dicabutBuat key baru di dasbor
402Saldo habis atau limit key tercapaiIsi saldo atau naikkan limit key
403Key tidak diizinkan memakai model ituUbah daftar model yang diizinkan pada key
404Model tidak ditemukanCek katalog; model mungkin dinonaktifkan
429Rate limit per key terlampauiTunggu, atau kurangi laju request
502Provider upstream bermasalahCoba lagi; cek status layanan

Kalau saldo tidak cukup, request dijawab 402 dan output panjang dipotong sesuai sisa kredit. Tidak ada tagihan yang melewati saldo.

Contoh per tool

Semua contoh memakai base URL produksi https://router.gunastudio.biz.id/v1. Ganti GUNA_API_KEY dengan key milikmu.

Cursor

cursor
Nama model : glm-5.3-flash
Base URL   : https://router.gunastudio.biz.id/v1
API key    : GUNA_API_KEY

Langkah: Settings → Models → OpenAI API Key, lalu aktifkan
"Override OpenAI Base URL" dan isi https://router.gunastudio.biz.id/v1

VS Code (Continue)

continue
# Continue (VS Code) — ~/.continue/config.yaml
models:
  - name: GunaRouter glm-5.3-flash
    provider: openai
    model: glm-5.3-flash
    apiBase: https://router.gunastudio.biz.id/v1
    apiKey: GUNA_API_KEY

OpenCode

opencode.json
// opencode.json
{
  "provider": {
    "gunarouter": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "GunaRouter",
      "options": {
        "baseURL": "https://router.gunastudio.biz.id/v1",
        "apiKey": "{env:GUNA_API_KEY}"
      },
      "models": {
        "glm-5.3-flash": { "name": "glm-5.3-flash" }
      }
    }
  }
}

Claude Code

claude code
export ANTHROPIC_BASE_URL="https://router.gunastudio.biz.id"
export ANTHROPIC_AUTH_TOKEN="GUNA_API_KEY"
export ANTHROPIC_MODEL="claude-haiku-5-5"

claude

n8n

n8n
Node: OpenAI (Message a Model)
Credential : OpenAI API
Base URL   : https://router.gunastudio.biz.id/v1
API Key    : GUNA_API_KEY
Model      : glm-5.3-flash

Kalau node memakai field "Base URL" di credential, isi tanpa /v1
karena node menambahkan sendiri. Kalau memakai HTTP Request node,
pakai URL lengkap: https://router.gunastudio.biz.id/v1/chat/completions

Hermes

hermes
# ~/.hermes/config.yaml
providers:
  gunarouter:
    type: openai
    base_url: https://router.gunastudio.biz.id/v1
    api_key_env: GUNA_API_KEY

model:
  provider: gunarouter
  name: glm-5.3-flash

Pertanyaan teknis

Apakah prompt saya disimpan?

Tidak. Log hanya mencatat metadata: waktu, model, jumlah token, biaya, status, dan latensi.

Bagaimana kalau provider utama sedang gangguan?

Gateway memindahkan request ke endpoint cadangan secara otomatis untuk error koneksi, timeout, 429, dan 5xx. Error 400 diteruskan apa adanya karena itu kesalahan request.

Apakah ada batas laju request?

Ada, dihitung per key. Kalau kena batas, responsnya 429 dengan header retry-after.

Bisa dipakai untuk aplikasi produksi?

Bisa, dengan catatan ini layanan prabayar tanpa SLA korporat. Untuk kebutuhan SLA, hubungi admin lewat dasbor.

Model apa yang paling murah?

Saat ini glm-5.3-flash dengan Rp 1.420 per 1 juta token input. Harga selalu ikut halaman harga.