Dokumentasi API

Satu API key untuk 23 model AI. Kompatibel penuh dengan format OpenAI — kalau aplikasimu sudah pakai SDK OpenAI, cukup ganti base_url dan api_key.

Pengenalan

ARZASTORE AI Router menyediakan endpoint tunggal ke banyak model AI (Claude, DeepSeek, GLM, Grok, Qwen, dan lainnya). Routing antar penyedia dilakukan otomatis di belakang layar, jadi kamu tidak perlu mengurus banyak akun atau langganan.

Base URLhttps://router.arzastore.com/v1
FormatOpenAI-compatible (/chat/completions, /embeddings, /models)
AutentikasiHeader Authorization: Bearer <API_KEY>
Model tersedia23 model — lihat daftar model
TokenLifetime — tidak hangus, tidak ada reset bulanan
💡 Belum punya API key? Daftar gratis dengan email (tanpa Telegram), lalu topup mulai Rp10.000.

Autentikasi

Setiap request wajib menyertakan API key di header Authorization. Jangan taruh key di URL atau kode frontend — simpan di environment variable.

# Benar
Authorization: Bearer sk-arzastore-xxxxxxxxxxxxxxxxxxxxxxxxxxxx

# Salah (jangan taruh key di browser / URL)
https://router.arzastore.com/v1/chat/completions?api_key=sk-...
🔒 API key hanya ditampilkan di dashboard saat dibuat. Kalau bocor, langsung tekan “Ganti API key” di dashboard — key lama langsung mati.

Mulai cepat

Request pertama, pilih bahasamu:

curl https://router.arzastore.com/v1/chat/completions \
  -H "Authorization: Bearer $ARZASTORE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-5",
    "messages": [
      {"role": "user", "content": "Jelaskan HTTP/3 dalam 3 kalimat."}
    ]
  }'
# pip install openai
from openai import OpenAI

client = OpenAI(
    base_url="https://router.arzastore.com/v1",
    api_key="sk-arzastore-...",   # pakai os.environ
)

resp = client.chat.completions.create(
    model="claude-opus-5",
    messages=[{"role": "user", "content": "Jelaskan HTTP/3 dalam 3 kalimat."}],
)
print(resp.choices[0].message.content)
// npm install openai
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://router.arzastore.com/v1",
  apiKey: process.env.ARZASTORE_API_KEY,
});

const resp = await client.chat.completions.create({
  model: "claude-opus-5",
  messages: [{ role: "user", content: "Jelaskan HTTP/3 dalam 3 kalimat." }],
});
console.log(resp.choices[0].message.content);
🎮 Mau coba tanpa ngoding dulu? Buka Playground.

Chat Completions

POST /v1/chat/completions

Endpoint utama untuk mengobrol dengan model. Menerima format pesan OpenAI standar.

Contoh request

{
  "model": "claude-opus-5",
  "messages": [
    {"role": "system", "content": "Kamu asisten yang ringkas."},
    {"role": "user", "content": "Apa itu edge computing?"}
  ],
  "max_tokens": 800,
  "temperature": 0.7
}

Contoh respons

{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "model": "claude-opus-5",
  "choices": [{
    "index": 0,
    "message": {"role": "assistant", "content": "Edge computing adalah..."},
    "finish_reason": "stop"
  }],
  "usage": {"prompt_tokens": 42, "completion_tokens": 180, "total_tokens": 222}
}

Streaming

Tambahkan "stream": true untuk menerima jawaban bertahap (Server-Sent Events). Cocok untuk chatbot agar terasa responsif.

curl -N https://router.arzastore.com/v1/chat/completions \
  -H "Authorization: Bearer $ARZASTORE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"claude-opus-5","stream":true,
       "messages":[{"role":"user","content":"Hitung 1-10"}]}'

# respons (potongan):
data: {"choices":[{"delta":{"content":"1,"}}]}
data: {"choices":[{"delta":{"content":" 2,"}}]}
data: [DONE]
⏱️ Model penalaran (reasoning) bisa butuh waktu lebih lama sebelum token pertama muncul. Setel timeout klienmu minimal 120 detik untuk prompt berat.

Daftar Model

GET /v1/models

Mengembalikan semua model yang bisa kamu pakai dengan API key ini.

Daftar model tersedia

Memuat daftar model…
🔄 Pakai auto kalau ingin router memilih dan mengalihkan model terbaik secara otomatis — paling aman untuk produksi.

Embeddings

POST /v1/embeddings

Untuk pencarian semantik, klasifikasi, atau clustering.

curl https://router.arzastore.com/v1/embeddings \
  -H "Authorization: Bearer $ARZASTORE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"auto","input":"teks yang mau di-embed"}'
Pemakaian embeddings juga mengurangi kuota kamu (dihitung dari token yang dipakai).

Parameter

ParameterTipeKeterangan
modelstringWajib. Nama model, mis. claude-opus-5 atau auto.
messagesarrayWajib. Daftar pesan {role, content}. Role: system, user, assistant.
streambooleanDefault false. Set true untuk respons bertahap (SSE).
max_tokensintegerBatas panjang jawaban. Router menaikkan otomatis bila terlalu kecil untuk tugas berat.
temperaturenumber0–2. Semakin tinggi semakin kreatif. Default mengikuti model.
top_pnumberAlternatif temperature (nucleus sampling).
toolsarrayDefinisi function/tool calling (format OpenAI).
stopstring/arraySekuens yang menghentikan generasi.

Penanganan Error

Semua error dikembalikan dalam format JSON yang konsisten:

{
  "error": "Kuota API key kamu sudah habis. Silakan topup atau beli paket baru.",
  "code": "QUOTA_EXCEEDED",
  "hint": "Kelola langganan Anda melalui @Umarstorebot"
}

Contoh penanganan (Python)

import time
from openai import OpenAI, APIStatusError, APIConnectionError

client = OpenAI(base_url="https://router.arzastore.com/v1", api_key=KEY)

def chat(prompt, retries=3):
    for i in range(retries):
        try:
            return client.chat.completions.create(
                model="auto",
                messages=[{"role": "user", "content": prompt}],
                timeout=120,
            ).choices[0].message.content
        except APIStatusError as e:
            if e.status_code == 429:      # kuota habis / terlalu cepat
                raise RuntimeError("Kuota habis — topup dulu.")
            if e.status_code >= 500 and i < retries - 1:
                time.sleep(2 ** i)          # backoff 1s, 2s, 4s
                continue
            raise
        except APIConnectionError:
            if i < retries - 1:
                time.sleep(2 ** i)
                continue
            raise
✅ Saran praktis: selalu pakai auto untuk produksi, set timeout ≥120s, dan terapkan exponential backoff untuk error 5xx. Router sudah punya fallback internal, jadi retry di sisi klien cukup 2–3 kali.

Kode Status

KodeArtiYang harus dilakukan
200Sukses—
400Request tidak validPeriksa model & format messages
401API key salah/nonaktifCek key, atau ganti key di dashboard
402Saldo tidak cukup (pembelian)Topup dulu
429Kuota habis / terlalu banyak requestTopup paket baru atau tunggu sesaat
500Gangguan internalCoba lagi dengan backoff
502 / 503 / 504Penyedia sedang bermasalahCoba lagi; router otomatis pindah jalur cadangan

Harga & Paket

Semua paket token bersifat lifetime — tidak ada tagihan bulanan. Harga di bawah diambil langsung dari sistem kami.

Memuat paket…

Daftar & beli sekarang →

Pertanyaan Umum

Apakah kompatibel dengan Cursor / Cline / Continue / Windsurf?

Ya. Semuanya mendukung format OpenAI — cukup ganti base URL ke https://router.arzastore.com/v1 dan masukkan API key.

Apa bedanya auto dengan nama model spesifik?

auto membiarkan router memilih dan mengalihkan model secara otomatis bila ada gangguan. Nama spesifik mengunci ke satu model.

Berapa lama timeout yang disarankan?

Minimal 120 detik untuk chat, dan lebih longgar lagi untuk model penalaran atau konteks sangat panjang.

Apakah kuota hangus kalau tidak dipakai?

Tidak. Kuota bersifat lifetime dan dapat dipakai kapan saja.

Bagaimana kalau API key saya bocor?

Masuk ke dashboard lalu tekan “Ganti API key”. Key lama langsung tidak berlaku.

Butuh bantuan? Hubungi @opszaguza.