Dokumentasi Teknis TokenFajri AI API Gateway
TokenFajri menyediakan antarmuka REST & Server-Sent Events (SSE) yang 100% kompatibel dengan spesifikasi OpenAI API v1. Anda dapat memanggil model Anthropic Claude, OpenAI GPT, DeepSeek, Google Gemini, Meta Llama, dan Qwen cukup dengan mengganti parameter baseURL dan apiKey pada kode atau IDE yang sudah ada.
Panduan Integrasi Spesifik per Platform
Pilih panduan langkah demi langkah sesuai lingkungan pengembangan atau bahasa pemrograman yang Anda gunakan:
Panduan Integrasi Cursor IDE
Cara mengatur Override OpenAI Base URL di Cursor Settings, menambahkan model kustom Claude & DeepSeek, serta mengatasi error verifikasi key.
Panduan VS Code Cline & Roo Code
Konfigurasi provider OpenAI Compatible pada ekstensi Cline dan Roo Code untuk eksekusi autonomous coding agent di Visual Studio Code.
Panduan Integrasi Python SDK
Implementasi pustaka resmi openai di Python untuk request sinkron, AsyncOpenAI, SSE streaming, dan tool calling.
Panduan Integrasi Next.js & TypeScript
Integrasi App Router Route Handlers dengan Node SDK maupun Vercel AI SDK (@ai-sdk/openai) untuk aplikasi web produksi.
1. Konfigurasi Dasar Endpoint & Autentikasi
Seluruh permintaan API dikirim melalui HTTPS menggunakan header standar Authorization: Bearer sk-tok-.... Kunci API dapat dibuat dan dibatasi batas pengeluarannya (*spending limit*) melalui halaman Developer Console.
| Parameter | Nilai Standar | Keterangan |
|---|---|---|
| Base URL | https://token.fajriag.ai.id/v1 | Gunakan sebagai pengganti https://api.openai.com/v1 |
| Chat Completions | POST https://token.fajriag.ai.id/v1/chat/completions | Mendukung JSON penuh & streaming SSE (stream: true) |
| Daftar Model | GET https://token.fajriag.ai.id/v1/models | Mengembalikan daftar model publik yang aktif & terverifikasi |
| Header Auth | Authorization: Bearer sk-tok-xxxx | Kunci disimpan dengan hash SHA-256 di database |
2. Contoh Permintaan Langsung (cURL)
Anda dapat menguji koneksi gateway langsung dari terminal menggunakan perintah curl berikut:
curl -X POST "https://token.fajriag.ai.id/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-tok-API_KEY_ANDA" \
-d '{
"model": "deepseek-v4.1-flash-1017",
"messages": [
{ "role": "system", "content": "Anda adalah asisten software engineer senior." },
{ "role": "user", "content": "Jelaskan perbedaan proses dan thread secara singkat." }
],
"temperature": 0.2,
"stream": false
}'3. Mekanisme Pemotongan Kuota, Saldo IDR & Kode Status HTTP
Setiap panggilan ke POST /v1/chat/completions melewati lapisan verifikasi atomik PostgreSQL (SELECT ... FOR UPDATE) dengan urutan prioritas penagihan berikut:
Jika model berstatus Free Tier, panggilan tidak memotong kuota paket maupun saldo Rupiah.
Jika akun memiliki kuota request aktif, sistem memotong 1 request per panggilan tanpa menyentuh saldo IDR.
Jika tidak ada paket kuota aktif, biaya dihitung berdasarkan jumlah token input dan output dikalikan tarif model dalam Rupiah.
| Kode HTTP | Kode Error | Penyebab & Solusi |
|---|---|---|
| 200 OK | - | Permintaan berhasil diproses (JSON atau stream SSE). |
| 401 Unauthorized | invalid_api_key | Header Authorization kosong atau API Key tidak terdaftar. |
| 402 Payment Required | insufficient_quota | Kuota request habis dan saldo IDR di bawah batas minimum reservasi (Rp 500). |
| 404 Not Found | model_not_found | String ID model tidak terdaftar di katalog. Cek daftar model aktif di /v1/models. |
| 429 Too Many Requests | concurrency_limit_exceeded | Batas permintaan paralel (in-flight) tercapai (maksimal 8 slot bersamaan untuk akun berpaket/saldo sehat). |