API Documentation

Quick Start

Smart API Gateway menggunakan format OpenAI-compatible. Anda hanya perlu mengganti base_url dan api_key.

# Base URL
https://ai.ipeenk.com/v1

# Endpoint
POST /v1/chat/completions

OpenCode Setup

Gunakan API key ai.ipeenk.com di OpenCode melalui provider OpenAI-compatible. API key tetap berada di environment variable dan tidak perlu ditulis langsung di konfigurasi project.

1. Set API key

Linux/macOS:

export IPEENK_API_KEY="Ipeenk-xxx"

Windows PowerShell:

$env:IPEENK_API_KEY = "Ipeenk-xxx"

Ganti Ipeenk-xxx dengan API key Anda. Jangan commit API key ke Git atau membagikannya di chat/log.

2. Buat opencode.json

Simpan file berikut di root project Anda. Model ID harus sama persis dengan ID yang dikembalikan endpoint /v1/models untuk API key Anda.

{
  "$schema": "https://opencode.ai/config.json",
  "model": "ipeenk/<model-id>",
  "provider": {
    "ipeenk": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "ai.ipeenk.com",
      "options": {
        "baseURL": "https://ai.ipeenk.com/v1",
        "apiKey": "{env:IPEENK_API_KEY}"
      },
      "models": {
        "<model-id>": {
          "name": "ai.ipeenk model"
        }
      }
    }
  }
}

3. Cari model ID

curl https://ai.ipeenk.com/v1/models   -H "Authorization: Bearer $IPEENK_API_KEY"

Ambil nilai data[].id, lalu ganti <model-id> di dua tempat pada opencode.json. Smart API key dapat membatasi model yang terlihat, jadi gunakan ID yang muncul untuk key tersebut.

4. Jalankan OpenCode

opencode

# Di dalam TUI, pilih model:
/models

# Atau jalankan langsung:
opencode run --model ipeenk/<model-id> "Review this repository"

Endpoint: https://ai.ipeenk.com/v1. OpenCode menggunakan endpoint /chat/completions secara otomatis melalui provider OpenAI-compatible.

Cursor Setup

Referensi resmi: Cursor Docs. Cursor versi tertentu menyediakan pengaturan OpenAI API Key dan Override OpenAI Base URL di Settings → Models.

  1. Masuk ke Cursor Settings → Models.
  2. Isi OpenAI API Key dengan API key ai.ipeenk.com.
  3. Jika tersedia, aktifkan Override OpenAI Base URL dan isi https://ai.ipeenk.com/v1.
  4. Pilih model yang sama dengan ID dari GET /v1/models, lalu lakukan test chat.

Catatan: Jika versi Cursor Anda tidak memiliki field Override Base URL, Cursor native tidak dapat diarahkan ke endpoint custom. Gunakan extension OpenAI-compatible di VS Code/Cursor atau OpenCode.

Claude Code Setup

Referensi resmi: Claude Code Docs. ai.ipeenk.com menyediakan endpoint Anthropic-compatible /v1/messages.

Linux/macOS:

export ANTHROPIC_BASE_URL="https://ai.ipeenk.com"
export ANTHROPIC_API_KEY="Ipeenk-xxx"
claude

Windows PowerShell:

$env:ANTHROPIC_BASE_URL = "https://ai.ipeenk.com"
$env:ANTHROPIC_API_KEY = "Ipeenk-xxx"
claude

Gunakan base URL tanpa akhiran /v1 karena Claude Code menambahkan path Messages API-nya sendiri. Jika build Claude Code Anda menggunakan nama env token, gunakan ANTHROPIC_AUTH_TOKEN sebagai pengganti ANTHROPIC_API_KEY.

VS Code Extensions Setup

VS Code tidak memiliki satu format provider untuk semua extension. Gunakan extension yang mendukung OpenAI-compatible, misalnya Continue atau Cline, lalu isi base URL dan API key berikut pada pengaturan extension.

Provider type: OpenAI-compatible
Base URL: https://ai.ipeenk.com/v1
API key: Ipeenk-xxx
Model: <model-id-from-/v1/models>

Pada extension yang memakai konfigurasi JSON/YAML, nama field biasanya apiBase/baseURL dan apiKey. Ikuti label extension yang terpasang; jangan menambahkan /chat/completions ke Base URL.

Codex CLI Setup

Referensi resmi: Codex CLI Docs. Simpan API key sebagai environment variable dan tambahkan provider custom pada ~/.codex/config.toml.

# Linux/macOS
export IPEENK_API_KEY="Ipeenk-xxx"

# ~/.codex/config.toml
model_provider = "ipeenk"
model = "<model-id>"

[model_providers.ipeenk]
name = "ai.ipeenk.com"
base_url = "https://ai.ipeenk.com/v1"
env_key = "IPEENK_API_KEY"

Untuk Windows, set $env:IPEENK_API_KEY di PowerShell. Jika versi Codex Anda memakai nama field provider yang berbeda, jalankan codex --help dan pertahankan nilai base URL yang sama.

OpenClaw Setup

Referensi resmi: OpenClaw CLI Docs. Tambahkan provider OpenAI-compatible pada konfigurasi OpenClaw Anda.

export IPEENK_API_KEY="Ipeenk-xxx"

# Contoh provider OpenAI-compatible (JSON5)
{
  "models": {
    "providers": {
      "ipeenk": {
        "baseUrl": "https://ai.ipeenk.com/v1",
        "apiKey": "${IPEENK_API_KEY}",
        "models": [
          { "id": "<model-id>", "name": "ai.ipeenk model" }
        ]
      }
    }
  }
}

Letak konfigurasi dapat berbeda menurut versi OpenClaw. Jika versi Anda memakai models.providers atau SecretRef environment, pertahankan provider ID, base URL https://ai.ipeenk.com/v1, dan model ID dari endpoint /v1/models.

Authentication

Semua request harus menyertakan API key di header Authorization dengan format Bearer token.

Authorization: Bearer Ipeenk-xxxx

Dapatkan API key Anda di Dashboard → API Keys.

Chat Completions

Buat chat completion dengan mengirimkan daftar messages.

curl -X POST https://ai.ipeenk.com/v1/chat/completions \
-H "Authorization: Bearer Ipeenk-xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "glm-4-flash",
"messages": [
{"role": "system", "content": "You are helpful."},
{"role": "user", "content": "Hello!"}
],
"temperature": 0.7,
"max_tokens": 2048
}

Anthropic Compatible

API ini mendukung format Anthropic Messages API melalui endpoint /v1/messages. Gunakan format ini untuk integrasi dengan SDK Anthropic atau client yang kompatibel.

Authentication

Anthropic API menggunakan header x-api-key. Anda juga bisa menggunakan format Bearer token standar.

x-api-key: Ipeenk-xxx
atau Authorization: Bearer Ipeenk-xxx

Example Request

curl -X POST https://ai.ipeenk.com/v1/messages \
-H "x-api-key: Ipeenk-xxx" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"system": "You are a helpful assistant.",
"messages": [
{"role": "user", "content": "Hello!"}
]
}

Streaming (SSE)

Set "stream": true untuk mendapatkan Server-Sent Events. Events yang dikirim:

message_start — awal pesan
content_block_start — awal content block
content_block_delta — token streaming
content_block_stop — akhir content block
message_delta — stop reason & usage
message_stop — akhir pesan

Note: Field system ditempatkan di top-level (di luar array messages), sesuai format Anthropic. API akan otomatis mengkonversi ke format OpenAI internally.

Available Models

Model NameProviderContextInput/1KOutput/1K
glm-4-plusZhipu128K$0.50$0.50
glm-4-flashZhipu128K$0.10$0.10
kimi-k2Moonshot128K$0.60$0.60
gpt-4oOpenAI128K$2.50$10.00
gpt-4o-miniOpenAI128K$0.15$0.60
deepseek-chatDeepSeek64K$0.14$0.28
qwen-plusAlibaba128K$0.40$0.40

Error Codes

CodeDescription
400Bad Request - Invalid parameters
401Unauthorized - Invalid or missing API key
402Payment Required - Insufficient balance
403Forbidden - Model not allowed / Key restriction (Model Tidak Masuk Paket / Pembatasan Key)
404Not Found - Model not available
429Rate Limited - Too many requests / Quota exhausted
500Server Error - Internal server error
503Service Unavailable - Upstream provider error / Kapasitas penuh (Service at capacity)

Code Examples

Python (OpenAI SDK)

from openai import OpenAI

client = OpenAI(
    base_url="https://ai.ipeenk.com/v1",
    api_key="Ipeenk-xxx"
)

response = client.chat.completions.create(
    model="glm-4-flash",
    messages=[{"role": "user", "content": "Hello!"}],
)

print(response.choices[0].message.content)

JavaScript (fetch)

const response = await fetch(
  "https://ai.ipeenk.com/v1/chat/completions",
  {
    method: "POST",
    headers: {
      "Authorization": `Bearer ${API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      model: "kimi-k2",
      messages: [{"role": "user", "content": "Hello!"}],
    }),
  }
);

const data = await response.json();
console.log(data.choices[0].message.content);

cURL

curl https://ai.ipeenk.com/v1/chat/completions \
  -H "Authorization: Bearer Ipeenk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-4-flash",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'