KKiosapi.id

Dokumentasi

Kiosapi bisa dipakai langsung di browser (Chat & Studio) atau via API — 100% OpenAI-compatible, cukup ganti base URL & API key. Pilih cara yang paling cocok untukmu.

Daftar isi

Antarmuka Web

Tidak perlu setup apapun — langsung pakai setelah login.

Chat

Buka /chat untuk ngobrol langsung dengan model AI pilihan. Tidak perlu API key atau konfigurasi — sesi web menggunakan sesi login kamu otomatis.

FiturKeterangan
Pilih modelDropdown di header — ganti model kapan saja dalam sesi
Model gratis50 request/hari tanpa top-up; badge Gratis di picker model
StreamingRespons muncul token per token, langsung
Riwayat sesiPercakapan tersimpan selama tab browser terbuka
MultimodalUpload gambar untuk vision (model yang mendukung)

Untuk penggunaan di luar browser (Cursor, VS Code, kode sendiri) lihat bagian API Reference di bawah.

Studio Kreator

Buka /dashboard/studio untuk membuat gambar & video AI langsung dari browser — tanpa kode, tanpa setup.

Gambar (text-to-image)

  1. 1. Pilih tab Gambar.
  2. 2. Tulis prompt — deskripsikan gambar yang ingin dibuat.
  3. 3. Pilih model (mis. google/imagen-3) dan opsi kualitas.
  4. 4. Klik Buat Gambar — hasil muncul dalam beberapa detik.
  5. 5. Download atau simpan ke galeri.

Video (text-to-video / image-to-video)

  1. 1. Pilih tab Video.
  2. 2. Tulis prompt. Opsional: upload gambar sebagai frame awal (image-to-video).
  3. 3. Pilih model, resolusi, dan durasi (detik).
  4. 4. Klik Buat Video — proses berjalan di background (~1–3 menit).
  5. 5. Progress muncul di Render Queue. Setelah selesai, video bisa diputar & diunduh.
Biaya:Model berbayar ditagih per gambar atau per detik video — lihat tabel harga. Galeri tersimpan di browser (localStorage); clear browser data akan menghapus index galeri (file di server tetap ada sampai expired).

API Reference

Untuk developer — pakai SDK OpenAI apa pun, cukup ganti base URL & API key.

1. Dapatkan API key

Masuk ke dashboard → Kunci API, beri nama (mis. "Cursor"), klik Buat key, lalu salin kios_live_… (ditampilkan sekali). Simpan di tempat aman.

2. Setel base URL

Di Cursor/Windsurf: Settings → Models → OpenAI API → Override base URL.

Base URL : https://api.kiosapi.id/v1
API Key  : kios_live_xxxxxxxxxxxx

3. Contoh request

curl

curl https://api.kiosapi.id/v1/chat/completions \
  -H "Authorization: Bearer kios_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-4-6",
    "messages": [{ "role": "user", "content": "Halo!" }]
  }'

Python (SDK OpenAI)

from openai import OpenAI

client = OpenAI(
    base_url="https://api.kiosapi.id/v1",
    api_key="kios_live_xxxx",
)

resp = client.chat.completions.create(
    model="openai/gpt-4o",
    messages=[{"role": "user", "content": "Halo!"}],
)
print(resp.choices[0].message.content)

JavaScript / TypeScript

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.kiosapi.id/v1",
  apiKey: "kios_live_xxxx",
});

const resp = await client.chat.completions.create({
  model: "meta/llama-3.1-8b",
  messages: [{ role: "user", content: "Halo!" }],
});
console.log(resp.choices[0].message.content);

4. Streaming

Tambahkan "stream": true untuk respons token-by-token (SSE), seperti OpenAI.

stream = client.chat.completions.create(
    model="deepseek/deepseek-v4-flash",
    messages=[{"role": "user", "content": "Tulis puisi singkat"}],
    stream=True,
)
for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="")

5. Model & harga

Lihat harga lengkap di tabel harga. Endpoint GET /v1/models mengembalikan daftar model. Klik ID untuk menyalin — tempel persis seperti itu sebagai nama model di Cursor/Windsurf.

Gratis
Berbayar

6. Studio API — gambar & video

Selain teks, Kiosapi punya API generasi gambar (sinkron), video (asinkron), musik (klip instrumental sinkron atau lagu bervokal asinkron), dan text-to-speech (sinkron). Ditagih per gambar / per detik atau per klip / per lagu / per 1.000 karakter — lihat harga media. Filter keamanan provider selalu aktif; biaya hanya ditagih saat berhasil.

Gambar — POST /v1/images/generations

Sinkron: respons langsung berisi gambar base64. option = tier ukuran/kualitas; n = jumlah gambar (1–4); aspect_ratio opsional.

curl https://api.kiosapi.id/v1/images/generations \
  -H "Authorization: Bearer kios_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/imagen-3",
    "prompt": "kucing oranye memakai topi koki, fotorealistik",
    "option": "standard",
    "n": 1
  }'

# Respons 200:
# { "created": ..., "model": "google/imagen-3",
#   "data": [{ "b64_json": "<base64>", "mime": "image/png" }],
#   "kiosapi": { "option": "standard", "count": 1, "cost_rupiah": 2000 } }

Video — POST /v1/videos/generations

Asinkron: mengembalikan 202 + job_id. option = tier resolusi; duration_seconds panjang klip. Untuk image-to-video, sertakan image (base64) + image_mime.

curl https://api.kiosapi.id/v1/videos/generations \
  -H "Authorization: Bearer kios_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "alibaba/wan2.7-t2v",
    "prompt": "ombak pantai saat matahari terbenam, sinematik",
    "option": "standard",
    "duration_seconds": 5
  }'

# Respons 202:
# { "job_id": "uuid", "status": "running",
#   "poll_url": "https://api.kiosapi.id/v1/jobs/uuid", "estimate_rupiah": 22500 }

Pantau job — GET /v1/jobs/:id

curl https://api.kiosapi.id/v1/jobs/uuid \
  -H "Authorization: Bearer kios_live_xxxx"

# running:  { "status": "running" }
# selesai:  { "status": "succeeded", "video_url": "...", "expires_at": "...", "cost_rupiah": 22500 }
# gagal:    { "status": "failed", "error": "..." }
# (job musik mengembalikan "audio_url", bukan "video_url")

Musik — POST /v1/music/generations

Dua perilaku: google/lyria-2 (klip instrumental 30 dtk, sinkron — respons 200 berisi audio base64) dan minimax/music-2.6 (lagu utuh bervokal hingga ±5 menit, asinkron — respons 202 + job_id, render 1–3 menit). Untuk lagu bervokal, sertakan lyrics (penanda [Verse]/[Chorus]) atau is_instrumental: true. Lagu yang selesai otomatis tersimpan di galeri dan bisa diunduh dari audio_url.

curl https://api.kiosapi.id/v1/music/generations \
  -H "Authorization: Bearer kios_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "minimax/music-2.6",
    "prompt": "pop akustik Indonesia yang hangat, vokal wanita",
    "lyrics": "[Verse]\nPagi cerah di kota\n[Chorus]\nBersama kita bisa"
  }'

# Respons 202 → poll GET /v1/jobs/:id sampai:
# { "status": "succeeded", "audio_url": "...", "cost_rupiah": 6500 }

Suara (TTS) — POST /v1/audio/speech

Kompatibel OpenAI: kirim input + voice, respons berupa bytes audio mentah (mp3). Model MiniMax punya 9 suara asli bahasa Indonesia (mis. Indonesian_CalmWoman, Indonesian_CaringMan); model OpenAI memakai alloy…shimmer. Biaya per 1.000 karakter, dilaporkan di header X-Kiosapi-Cost-IDR.

curl https://api.kiosapi.id/v1/audio/speech \
  -H "Authorization: Bearer kios_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "minimax/speech-2.8-turbo",
    "input": "Selamat datang di Kiosapi!",
    "voice": "Indonesian_CalmWoman"
  }' --output suara.mp3

Contoh kode — gambar (Python)

import base64, requests

res = requests.post(
    "https://api.kiosapi.id/v1/images/generations",
    headers={"Authorization": "Bearer kios_live_xxxx"},
    json={"model": "google/imagen-3", "prompt": "kucing oranye memakai topi koki",
          "option": "standard", "n": 1},
)
img = res.json()["data"][0]["b64_json"]
with open("out.png", "wb") as f:
    f.write(base64.b64decode(img))

Contoh kode — video + polling (JavaScript)

const base = "https://api.kiosapi.id";
const headers = { Authorization: "Bearer kios_live_xxxx", "Content-Type": "application/json" };

// 1) submit job
const submit = await fetch(`${base}/v1/videos/generations`, {
  method: "POST", headers,
  body: JSON.stringify({ model: "alibaba/wan2.7-t2v", prompt: "ombak pantai saat senja",
                         option: "standard", duration_seconds: 5 }),
});
const { job_id } = await submit.json();

// 2) poll until done (~5s interval)
let job;
do {
  await new Promise((r) => setTimeout(r, 5000));
  job = await (await fetch(`${base}/v1/jobs/${job_id}`, { headers })).json();
} while (job.status === "running");

if (job.status === "succeeded") console.log(job.video_url);

Model media & opsi

Model IDTipeOpsi (option)
openai/gpt-image-1gambar1024x1024:low, 1024x1024:medium, 1024x1024:high, 1536x1024:medium, 1024x1536:medium
google/imagen-3gambarstandard
google/imagen-3-fastgambarstandard
google/nano-banana-2gambarstandard
alibaba/wan-2.7-image-progambarstandard
minimax/image-01gambarstandard
zai/glm-imagegambarstandard
xai/grok-imagine-imagegambarstandard
xai/grok-imagine-image-qualitygambarstandard
google/veo-3video720p, 1080p
alibaba/wan2.7-t2vvideostandard
alibaba/happyhorse-1.0-t2vvideostandard
alibaba/wan2.7-i2vvideo (i2v)standard
minimax/hailuo-2.3video768p-6s, 768p-10s, 1080p-6s
minimax/hailuo-2.3-fast-i2vvideo (i2v)768p-6s, 768p-10s, 1080p-6s
zai/cogvideox-3videostandard
xai/grok-imagine-videovideostandard
xai/grok-imagine-video-1.5videostandard
google/lyria-2gambarstandard
minimax/music-2.6gambarsong
openai/tts-1gambarstandard
openai/tts-1-hdgambarstandard
minimax/speech-2.8-turbogambarstandard
minimax/speech-2.8-hdgambarstandard
mistral/voxtral-ttsgambarstandard
xai/grok-ttsgambarstandard
xai/grok-sttgambarstandard
openai/whisper-1gambarstandard
mistral/voxtral-transcribegambarstandard
zai/glm-asrgambarstandard
alibaba/qwen3-asr-flashgambarstandard

Kode error media

HTTPcodeArti
401authentication_errorAPI key / sesi tidak valid
400model_not_foundModel tak dikenal atau disembunyikan
400invalid_request_errorOpsi (`option`) tidak valid
402insufficient_balanceSaldo kurang — top up
402spend_cap_reachedBatas pengeluaran bulanan tercapai
422prompt_blockedPrompt ditolak moderasi
422output_blockedHasil ditolak moderasi
422generation_refusedProvider menolak (filter keamanan)
429rate_limit_exceededTerlalu banyak permintaan
429abuse_throttledAkun dibatasi sementara (pelanggaran berulang)
504generation_timeoutPembuatan terlalu lama
502upstream_unavailableLayanan provider tak dapat dihubungi

Spesifikasi OpenAPI 3.1 (model & opsi media digenerate dari katalog live) ada di api.kiosapi.id/openapi.json. Panduan untuk agen AI: /llms.txt.

7. Reranking

Urutkan ulang daftar dokumen berdasar relevansi ke sebuah query — self-hosted (bukan reseller pihak ketiga), bentuk request/response ikut standar Cohere supaya tooling RAG (LangChain, LlamaIndex, dst) bisa langsung pakai Kiosapi sebagai drop-in replacement. Ditagih per 1.000.000 token input — lihat harga.

Rerank — POST /v1/rerank

top_n opsional (default: semua dokumen diberi skor & diurutkan); return_documents opsional (default false) — kalau true, tiap hasil menyertakan teks dokumen aslinya.

curl https://api.kiosapi.id/v1/rerank \
  -H "Authorization: Bearer kios_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "baai/bge-reranker-base",
    "query": "apa itu kucing?",
    "documents": [
      "Kucing adalah hewan mamalia berkaki empat.",
      "Mobil listrik semakin populer di Indonesia."
    ],
    "return_documents": true
  }'

# Respons 200:
# { "model": "baai/bge-reranker-base",
#   "results": [
#     { "index": 0, "relevance_score": 0.9998, "document": { "text": "Kucing adalah..." } },
#     { "index": 1, "relevance_score": 0.0000373, "document": { "text": "Mobil listrik..." } }
#   ] }

8. Embeddings

Ubah teks jadi vektor untuk pencarian semantik / RAG — kompatibel OpenAI, cukup ganti base URL & API key. Ditagih per 1.000.000 token input — lihat harga.

Embedding — POST /v1/embeddings

curl https://api.kiosapi.id/v1/embeddings \
  -H "Authorization: Bearer kios_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/text-embedding-3-small",
    "input": "Selamat datang di Kiosapi!"
  }'

# Respons 200:
# { "object": "list", "model": "openai/text-embedding-3-small",
#   "data": [{ "object": "embedding", "index": 0, "embedding": [0.0123, -0.0456, ...] }],
#   "usage": { "prompt_tokens": 6, "total_tokens": 6 } }

9. Vector DB

Database vektor untuk RAG — self-hosted (bukan reseller pihak ketiga), bentuk request/response ikut standar Pinecone. Bikin index gratis (tanpa saldo); insert, pencarian, dan penyimpanan yang dibayar — lihat harga.

Bikin index — POST /v1/vector-indexes

curl -X POST https://api.kiosapi.id/v1/vector-indexes \
  -H "Authorization: Bearer kios_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{"name": "artikel-saya"}'

# Respons 201:
# { "name": "artikel-saya", "dimension": 1536, "metric": "cosine",
#   "vector_count": 0, "created_at": "..." }

Insert vektor — POST /v1/vector-indexes/:name/vectors/upsert

values wajib tepat 1536 angka (cocok dengan openai/text-embedding-3-small) — gunakan endpoint Embeddings di atas untuk menghasilkannya.

curl -X POST https://api.kiosapi.id/v1/vector-indexes/artikel-saya/vectors/upsert \
  -H "Authorization: Bearer kios_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "vectors": [
      { "id": "artikel-1", "values": [0.0123, -0.0456, ...], "metadata": { "kategori": "berita" } }
    ]
  }'

# Respons 200: { "upserted_count": 1 }

Cari vektor terdekat — POST /v1/vector-indexes/:name/query

top_k opsional (default 10, maks 100); filter opsional — exact-match per key metadata (mis. {"kategori": "berita"}).

curl -X POST https://api.kiosapi.id/v1/vector-indexes/artikel-saya/query \
  -H "Authorization: Bearer kios_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "vector": [0.0123, -0.0456, ...],
    "top_k": 5,
    "include_metadata": true
  }'

# Respons 200:
# { "matches": [{ "id": "artikel-1", "score": 0.87, "metadata": { "kategori": "berita" } }] }

Hapus vektor / index — POST .../vectors/delete & DELETE /v1/vector-indexes/:name

curl -X POST https://api.kiosapi.id/v1/vector-indexes/artikel-saya/vectors/delete \
  -H "Authorization: Bearer kios_live_xxxx" -H "Content-Type: application/json" \
  -d '{"delete_all": true}'

curl -X DELETE https://api.kiosapi.id/v1/vector-indexes/artikel-saya \
  -H "Authorization: Bearer kios_live_xxxx"

10. Saldo & top-up

Model gratis tidak memotong saldo — kuota 50 request/hari per akun (reset 07:00 WIB), wajib email terverifikasi. Model berbayar memotong saldo rupiah per token, tanpa batas harian. Isi saldo (QRIS, e-wallet, virtual account, kartu) mulai Rp10.000 — saldo masuk otomatis setelah bayar.

11. Batas & error

Integrasi

12. Editor & CLI tools

Karena OpenAI-compatible (plus endpoint Anthropic untuk Claude Code), Kiosapi bisa dipakai di hampir semua tool. Base URL & model:

Base URL (OpenAI)    : https://api.kiosapi.id/v1
Base URL (Anthropic) : https://api.kiosapi.id      (Claude Code)
Model                : mis. anthropic/claude-sonnet-4-6, deepseek/deepseek-v4-flash

Cline / Roo Code / Continue (VS Code)

Pilih provider OpenAI Compatible → Base URL https://api.kiosapi.id/v1, API key kios_live_…, model ID Kiosapi.

Claude Code (format Anthropic)

export ANTHROPIC_BASE_URL=https://api.kiosapi.id
export ANTHROPIC_API_KEY=kios_live_xxxx
export ANTHROPIC_MODEL=anthropic/claude-sonnet-4-6
export ANTHROPIC_SMALL_FAST_MODEL=anthropic/claude-haiku-4-5
claude

Wajib set model ke ID anthropic/* Kiosapi. Mode agent (tools) & streaming jalan penuh.

Codex CLI (~/.codex/config.toml)

model = "anthropic/claude-sonnet-4-6"
model_provider = "kiosapi"

[model_providers.kiosapi]
name = "Kiosapi"
base_url = "https://api.kiosapi.id/v1"
env_key = "KIOSAPI_API_KEY"
wire_api = "chat"

Aider

aider --openai-api-base https://api.kiosapi.id/v1 \
  --openai-api-key kios_live_xxxx \
  --model deepseek/deepseek-v4-flash

13. Bahasa lain

Endpoint OpenAI-compatible — pakai SDK OpenAI di bahasa apa pun, cukup arahkan base URL ke https://api.kiosapi.id/v1. Atau panggil HTTP langsung.

Keamanan: panggil API dari server/backend aplikasi Anda. Jangan menaruh kios_live_… di kode frontend/browser — mudah dicuri.

PHP

$ch = curl_init('https://api.kiosapi.id/v1/chat/completions');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    'Authorization: Bearer kios_live_xxxx',
    'Content-Type: application/json',
  ],
  CURLOPT_POSTFIELDS => json_encode([
    'model' => 'openai/gpt-4o',
    'messages' => [['role' => 'user', 'content' => 'Halo!']],
  ]),
]);
$res = json_decode(curl_exec($ch), true);
echo $res['choices'][0]['message']['content'];

Go (sashabaranov/go-openai)

cfg := openai.DefaultConfig("kios_live_xxxx")
cfg.BaseURL = "https://api.kiosapi.id/v1"
client := openai.NewClientWithConfig(cfg)

resp, _ := client.CreateChatCompletion(context.Background(), openai.ChatCompletionRequest{
    Model:    "openai/gpt-4o",
    Messages: []openai.ChatCompletionMessage{{Role: "user", Content: "Halo!"}},
})
fmt.Println(resp.Choices[0].Message.Content)

Ruby (ruby-openai)

client = OpenAI::Client.new(
  access_token: "kios_live_xxxx",
  uri_base: "https://api.kiosapi.id/v1"
)
resp = client.chat(parameters: {
  model: "openai/gpt-4o",
  messages: [{ role: "user", content: "Halo!" }]
})
puts resp.dig("choices", 0, "message", "content")

Java (HttpClient)

var body = """
  {"model":"openai/gpt-4o","messages":[{"role":"user","content":"Halo!"}]}
  """;
var req = HttpRequest.newBuilder(URI.create("https://api.kiosapi.id/v1/chat/completions"))
  .header("Authorization", "Bearer kios_live_xxxx")
  .header("Content-Type", "application/json")
  .POST(HttpRequest.BodyPublishers.ofString(body)).build();
var res = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());

C# / .NET (HttpClient)

using var http = new HttpClient();
http.DefaultRequestHeaders.Add("Authorization", "Bearer kios_live_xxxx");
var payload = new {
    model = "openai/gpt-4o",
    messages = new[] { new { role = "user", content = "Halo!" } }
};
var res = await http.PostAsJsonAsync(
    "https://api.kiosapi.id/v1/chat/completions", payload);
Console.WriteLine(await res.Content.ReadAsStringAsync());

Kiosapi CLI

CLI resmi berbahasa Indonesia — agen koding, tim multi-agen, Skills, MCP, multimodal.

14. Install & perintah

kiosapi (v0.2.1) — CLI resmi berbahasa Indonesia. Butuh Node.js ≥ 20; tanpa dependensi runtime lain.

Pasang & jalankan

# langsung (tanpa install)
npx kiosapi

# atau install global
npm i -g kiosapi
kiosapi

Masuk (sekali)

kiosapi masuk        # tempel kios_live_… (ditampilkan sebagai ****)
kiosapi periksa      # cek konektivitas, versi, & saldo
kiosapi --version    # tampilkan versi (alias: kiosapi versi / -v)
kiosapi perbarui     # update ke versi terbaru

Setup manual (config file)

# Linux/macOS : ~/.kiosapi/config.json
# Windows     : %USERPROFILE%\.kiosapi\config.json
{
  "apiKey": "kios_live_xxxxxxxxxxxx",
  "baseUrl": "https://api.kiosapi.id",
  "defaultModel": "anthropic/claude-sonnet-4-6"
}

# Atau via env (untuk CI/script)
export KIOSAPI_API_KEY=kios_live_xxxx
kiosapi tanya "halo"

Konfigurasi proyek (.kiosapi/config.json)

Semua setting per-proyek hidup di folder .kiosapi/ (config, skills, memory, tim) dan dilindungi — agen tak bisa menimpa/menghapusnya. Buat lewat kiosapi init (wizard) atau kiosapi setel -p <key> <value>. File kiosapi.json lama di root masih dibaca.

Semua kunci opsional — isi hanya yang ingin di-override. Contoh lengkap (semua kunci yang didukung):

# .kiosapi/config.json — semua kunci opsional
{
  "model": "deepseek/deepseek-v4-flash",
  "mode": "buat",
  "otomatis": false,
  "maxSteps": 60,
  "maxTokens": 80000,
  "projectContext": "REST API Express + TypeScript. Tes di src/__tests__/. Pakai Zod untuk validasi.",
  "tim": {
    "manajer":   "anthropic/claude-sonnet-4-6",
    "perencana": "anthropic/claude-sonnet-4-6",
    "koder":     "deepseek/deepseek-v4-pro",
    "peninjau":  "openai/gpt-4o-mini"
  },
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_TOKEN": "ghp_xxx" }
    }
  }
}

Referensi kunci

KunciTipeFungsi
modelstringModel default untuk proyek ini (override default global)
mode"rencana" | "edit" | "buat"Mode agen default saat masuk sesi
otomatisbooleanAuto-approve semua tool (lewati konfirmasi)
maxStepsnumberBatas langkah tool per giliran agen (default 60)
maxTokensnumberAnggaran token per tugas — agen berhenti bila terlewat
projectContextstringBriefing yang di-inject ke setiap agen (stack, konvensi, tujuan)
tim.manajerstringModel untuk manajer (yang memutuskan peran). Pilih model pintar
tim.perencanastringModel untuk perencana (susun rencana)
tim.koderstringModel untuk koder (tulis & jalankan kode)
tim.peninjaustringModel untuk peninjau (review hasil)
mcpServersobjectServer MCP per-proyek (command/args/env) — tools muncul di agen & tim

Presedence model tim: flag CLI (--koder dst) > tim.<peran> > model proyek > default global. Tiap peran yang tak diisi memakai model. Edit cepat tanpa wizard: kiosapi setel -p <key> <value> (mis. kiosapi setel -p budget 80000).

Perintah utama

PerintahFungsi
kiosapiSesi interaktif (login bila perlu)
masuk / keluarSimpan / hapus API key
periksaCek konektivitas + saldo
tanya "…"Tanya sekali (streaming); dukung pipe stdin
ngobrolMode percakapan multi-turn (REPL)
rencana "…"Agen read-only — telusuri kode & susun rencana
edit "…"Agen tulis file — ubah kode tanpa jalankan perintah
buat "…"Agen otonom — tulis file & jalankan perintah shell
initWizard setup proyek lokal → .kiosapi/config.json
setel -p <k> <v>Atur config proyek (model/mode/budget/konteks…)
tim "…"Manajer pilih peran (perencana/koder/peninjau) yang perlu
tim --peran <peran> "…"Jalankan satu peran langsung (lewati manajer)
tim --pakai <nama> "…"Jalankan tim kustom tersimpan
tim --buat <nama> [-g]Buat tim kustom (wizard); -g = global
tim --daftarTampilkan semua tim kustom (project + global)
lanjutLanjutkan sesi / tim dari checkpoint terakhir
balikKembalikan file yang diubah agen giliran terakhir (git)
skill buat <nama> [-g]Buat skill baru; -g = global
skill <nama> [args]Jalankan skill ($ARGUMENTS/{{1}} di prompt)
skillsLihat semua skill (project + global + bawaan)
mcpLihat server MCP dikonfigurasi
mcp sambungTest koneksi MCP + tampilkan tools tersedia
mcp initBuat ~/.kiosapi/mcp.json dengan contoh konfigurasi
gambar "…" [-o out.png]Buat gambar AI (ditagih per gambar)
video "…"Buat video AI asinkron (ditagih per detik / per klip)
musik "…" [--lirik "…"]Buat musik / lagu bervokal (--instrumental utk tanpa vokal)
suara "…" [--suara <id>]Text-to-speech → mp3 (suara Indonesia: Indonesian_CalmWoman dll.)
lihat <file> "…"Vision: analisis gambar lokal
model [--tools]Daftar model (🔧 = dukung tool/agen)
setel modelPilih model default (picker bernomor)
saldoLihat saldo saat ini
pakai [--hari N]Ringkasan pemakaian (default 7 hari)
isiBuka halaman top-up di browser
sambung <tool>Konfigurasi Kiosapi di aider/cursor/opencode dll

Mode agen

ModeBisa bacaBisa tulis fileBisa jalankan perintah
rencana
edit
buat

Sesi interaktif & slash commands

$ kiosapi
buat › bikin endpoint GET /health di Express + tes Jest-nya
buat › @src/routes/auth.ts perbaiki error handler ini
buat › @git:diff ada yang perlu di-refactor?
buat › /commit                  # buat commit git
buat › /diff HEAD~1             # git diff dengan argumen opsional
buat › /shell npm test          # jalankan perintah shell langsung
buat › /model                   # picker model bernomor
buat › /mode rencana            # ganti mode agen
buat › /tim tambah auth JWT     # manajer pilih peran & jalankan
buat › /tim koder perbaiki bug  # jalankan satu peran langsung
buat › /budget 50000            # anggaran token/giliran (agen berhenti bila lewat)
buat › /undo                    # batalkan giliran terakhir (dari riwayat)
buat › /balik                   # kembalikan file yang diubah agen (git)
buat › /ringkas                 # ringkas riwayat (hemat token)
buat › /bantuan                 # daftar semua slash command

@mention — injeksi konteks

buat › @src/routes/auth.ts cek bug di fungsi ini
buat › @src/**/*.test.ts ada tes yang gagal?
buat › @git:diff          # git diff HEAD
buat › @git:status        # git status --short
buat › @git:log           # git log --oneline -10
buat › @git:staged        # git diff --staged

Multi-agen (tim) — manajer

Manajer menentukan peran MINIMAL yang perlu untuk tugasmu (tak selalu seluruh pipeline): Perencana (read-only, susun rencana), Koder (tulis file & jalankan), Peninjau (review). Temuan peninjau bisa langsung diperbaiki (loop), dan manajer melacak aktivitas agar tak mengulang kerja. Kamu juga bisa memanggil satu peran langsung.

kiosapi tim "bikin endpoint GET /health + tes Jest"   # manajer yang memilih
kiosapi tim --peran koder "perbaiki bug di src/auth.ts"  # langsung ke koder

# model berbeda per peran (atau set di .kiosapi/config.json → "tim")
kiosapi tim "refactor modul auth + tes" \
  --perencana qwen/qwen3-30b \
  --koder     deepseek/deepseek-v4-pro \
  --peninjau  openai/gpt-4o-mini

Tim checkpoint & lanjutkan

Setiap langkah tim disimpan ke ~/.kiosapi/tim-checkpoint.json. Jika sesi terputus, jalankan kiosapi lanjut — CLI menawarkan resume dari langkah terakhir tanpa mengulang dari awal.

kiosapi lanjut
# Sesi tim tersimpan ditemukan
#   Tugas    : bikin REST API penuh dengan auth + tes
#   Progress : 3/7 langkah selesai
#   Langkah selesai:
#     ✓ 1. Buat struktur folder + package.json
#     ✓ 2. Implementasi model User + migrasi DB
#     ✓ 3. Endpoint auth (register/login/refresh)
# Lanjutkan? [y/t/n]

Skills — workflow tersimpan

Skills adalah workflow agen yang kamu simpan sebagai file Markdown — cocok untuk tugas berulang. CLI menyertakan skill bawaan siap pakai (review, tes, dokumentasi, jelaskan) yang bisa kamu timpa dengan skill project/global bernama sama.

# Buat skill di project (.kiosapi/skills/fix-tests.md)
kiosapi skill buat fix-tests

# Buat skill global (-g → ~/.kiosapi/skills/, tersedia di semua proyek)
kiosapi skill buat -g review-security

# Jalankan (argumen masuk ke $ARGUMENTS / {{1}})
kiosapi skill fix-tests
kiosapi skill fix-tests "src/auth/"

# Bawaan + dari sesi interaktif
kiosapi skill review        # tinjau git diff
buat › /skills
buat › /skill fix-tests src/auth/

Format frontmatter skill:

---
description: Perbaiki semua tes yang gagal dan jalankan ulang
mode: buat              # rencana | edit | buat
# otomatis: true
# model: deepseek/deepseek-v4-flash
# tim: true             # jalankan lewat manajer multi-agen
# peran: koder          # atau satu peran langsung: perencana | koder | peninjau
---

Jalankan tes untuk {{1}} dan perbaiki yang gagal:
- Analisis pesan error  (pakai $ARGUMENTS atau {{1}} {{2}} untuk argumen)
- Perbaiki satu per satu sampai semua lulus
- Jalankan ulang untuk konfirmasi semua hijau

Memori proyek, anggaran token & revert

Memori proyek (.kiosapi/memory.md) menyimpan fakta durable yang ditemukan agen (lokasi kode, konvensi, perintah build) dan disuntik di awal tiap sesi — agar agen tak mengeksplorasi ulang dari nol dan hemat token. Diisi otomatis oleh agen, bisa kamu edit/commit.

# Anggaran token per tugas — agen berhenti rapi bila terlewat (checkpoint tersimpan)
kiosapi buat --budget 80000 "refactor modul auth"
buat › /budget 50000

# Revert: kembalikan file yang diubah agen pada giliran terakhir (via git)
kiosapi balik        # tracked → HEAD, file baru dihapus (dengan konfirmasi)
buat › /balik

Seluruh folder .kiosapi/ (config, skills, memory, tim) terlindung: tool file maupun perintah shell agen tak bisa menimpa/menghapusnya.

MCP — Model Context Protocol

MCP memungkinkan agen memanggil tools dari server eksternal (filesystem, GitHub API, tools kustom). Transport: stdio (proses lokal). Semua tools MCP muncul otomatis di setiap sesi agen dan tim mode.

# Scaffold file config
kiosapi mcp init        # buat ~/.kiosapi/mcp.json

# Test koneksi + lihat tools tersedia
kiosapi mcp sambung

~/.kiosapi/mcp.json

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_TOKEN": "ghp_xxxxxxxxxxxx" }
    }
  }
}

Katalog tool agen bawaan

ToolFungsiMode
baca_fileBaca isi file tekssemua
daftar_fileDaftar isi foldersemua
cariCari teks di semua filesemua
lihat_gambarAnalisis gambar lokal (vision)semua
tulis_fileBuat / timpa fileedit, buat
edit_fileGanti potongan teks unik di fileedit, buat
hapus_fileHapus fileedit, buat
pindah_filePindahkan / ganti nama file atau folderedit, buat
buat_gambarBuat gambar AI dan simpan ke file (berbayar)edit, buat
jalankanJalankan perintah shellbuat
selesaiTandai tugas selesai dengan ringkasansemua

Contoh satu-baris (skrip/CI)

kiosapi tanya "ringkas ini" < README.md
kiosapi buat --otomatis "tambah endpoint /health + tes"
kiosapi tanya -m deepseek/deepseek-v4-flash "jelaskan kode" < src/auth.ts
kiosapi gambar "logo kopi minimalis, flat design" -o logo.png