System One
kenari menyediakan endpoint System One untuk model keputusan. Endpoint ini hanya melayani model yang ditandai sebagai model System One di katalog. Memanggilnya dengan model chat biasa akan mengembalikan status 400. System One tidak memakai wire chat OpenAI, jadi ini adalah kontrak kenari sendiri.
Model yang tersedia
Section titled “Model yang tersedia”Daftar model System One bersifat dinamis. Jangan meng-hardcode id dari tulisan ini: panggil GET /v1/models?modality=systemone (publik, tanpa key) untuk membaca id yang sedang aktif. GET /v1/models tanpa parameter hanya mendaftar model chat, sehingga model System One tidak muncul di sana.
Per 24 September 2026 katalog publik menampilkan jev-1-13-free sebagai model System One gratis. Contoh di bawah memakai id itu. Kalau suatu saat id itu tidak lagi tersedia, ganti dengan id yang dikembalikan ?modality=systemone.
Endpoint
Section titled “Endpoint”POST /v1/systemone
Kirim state dan questions. Gateway mengembalikan satu jawaban bertipe per pertanyaan, plus pemakaian token.
Parameter request
Section titled “Parameter request”| Field | Tipe | Wajib | Keterangan |
|---|---|---|---|
model | string | ya | Id model System One dari katalog. |
state | string, object, atau array | ya | Teks atau data yang dinilai. |
questions | object | ya | Satu atau lebih pertanyaan. Setiap kunci adalah id pertanyaan. Maksimum 128 pertanyaan. |
Setiap pertanyaan adalah object dengan field berikut:
| Field | Tipe | Wajib | Keterangan |
|---|---|---|---|
type | string | ya | noul, choice, atau score. |
instructions | string, object, atau array | ya | Isi pertanyaan. |
criteria | object atau array | tidak | Rubrik noul, peta pilihan, atau urutan skor. |
Body request dibatasi 512 KiB.
Penagihan
Section titled “Penagihan”Penagihan dihitung per token input. Gateway menahan biaya dari perkiraan lokal (kira-kira empat karakter per token pada state dan questions, atau pada seluruh body, diambil yang lebih besar), lalu menagih usage.input_tokens dari upstream jika angkanya positif dan tidak melebihi tahan itu. Token output dilaporkan dan tidak ditagih. Model gratis, termasuk jev-1-13-free, memotong Rp 0 dari saldo. Lihat Penagihan untuk detail saldo dan pemotongan.
Bentuk response
Section titled “Bentuk response”Response hanya berisi model, answers, dan usage. model adalah id versi yang menjawab, bila id itu adalah id Jev yang sah. answers berisi satu entri per pertanyaan. Field lain dari upstream dibuang.
{ "model": "jev-1.13.0", "answers": { "q": { "type": "noul", "noul": 0.91 } }, "usage": { "input_tokens": 12, "output_tokens": 20 }}Contoh
Section titled “Contoh”curl https://kenari.id/v1/systemone \ -H "Authorization: Bearer kn-..." \ -H "Content-Type: application/json" \ -d '{ "model": "jev-1-13-free", "state": "kucing duduk di atas karpet", "questions": { "q": { "type": "noul", "instructions": "Apakah ini kalimat tentang hewan?" } } }'Python
Section titled “Python”import requests
resp = requests.post( "https://kenari.id/v1/systemone", headers={"Authorization": "Bearer kn-..."}, json={ "model": "jev-1-13-free", "state": "kucing duduk di atas karpet", "questions": { "q": { "type": "noul", "instructions": "Apakah ini kalimat tentang hewan?", } }, },)print(resp.json()["answers"])JavaScript
Section titled “JavaScript”const resp = await fetch("https://kenari.id/v1/systemone", { method: "POST", headers: { Authorization: "Bearer kn-...", "Content-Type": "application/json", }, body: JSON.stringify({ model: "jev-1-13-free", state: "kucing duduk di atas karpet", questions: { q: { type: "noul", instructions: "Apakah ini kalimat tentang hewan?", }, }, }),});const { answers } = await resp.json();