Referensi API
API mengikuti format OpenAI di https://ai.geraikita.com/v1 dan format Anthropic di https://ai.geraikita.com. Semua body permintaan dan respons berformat JSON (UTF-8).
| Endpoint | Fungsi |
|---|---|
| POST /v1/chat/completions | Chat format OpenAI (stream & non-stream) |
| POST /v1/messages | Messages format Anthropic (stream & non-stream) |
| POST /v1/messages/count_tokens | Hitung token prompt format Anthropic — gratis |
| GET /v1/models | Daftar model yang bisa dipakai |
| POST /v1/images/generations | Membuat gambar dari prompt teks, ditagih per gambar — lihat Membuat gambar |
/v1/responses, /v1/embeddings) belum didukung.Chat completions (OpenAI)
https://ai.geraikita.com/v1/chat/completionsMembuat jawaban dari daftar pesan. Header: Authorization: Bearer gk-… dan Content-Type: application/json.
Body permintaan
| Parameter | Tipe | Keterangan |
|---|---|---|
model | string | Wajib. Id model persis seperti di daftar model, tanpa prefix. |
messages | array | Wajib. Array pesan berurutan; tiap pesan berisi role dan content. Minimal satu pesan. |
stream | boolean | true untuk menerima jawaban bertahap lewat Server-Sent Events. |
max_tokens | integer | Batas token jawaban. Bila saldo tidak cukup untuk nilai yang diminta, server bisa menurunkannya otomatis. |
temperature, top_p, stop | — | Diteruskan ke model apa adanya. Dukungan dan rentang nilainya bergantung model. |
tools, tool_choice | array / object | Pemanggilan fungsi (tool calling) format OpenAI, diteruskan ke model yang mendukungnya. |
Contoh permintaan
curl https://ai.geraikita.com/v1/chat/completions \
-H "Authorization: Bearer gk-xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5",
"messages": [{"role": "user", "content": "Halo!"}]
}'Contoh respons
{
"id": "chatcmpl-…",
"object": "chat.completion",
"model": "claude-sonnet-5",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "…" },
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 12, "completion_tokens": 9, "total_tokens": 21 }
}Objek usage berisi jumlah token yang menjadi dasar tagihan — lihat Harga & penagihan.
Messages (Anthropic)
https://ai.geraikita.com/v1/messagesEndpoint native Anthropic untuk SDK Anthropic dan Claude Code CLI. Base URL di klien = https://ai.geraikita.com (tanpa /v1).
Header
| Header | Nilai | Keterangan |
|---|---|---|
| x-api-key | gk-… | API key gk- kamu (Authorization: Bearer juga diterima). |
| anthropic-version | 2023-06-01 | Versi API Anthropic; dikirim otomatis oleh SDK. |
| content-type | application/json | — |
Body permintaan
| Parameter | Tipe | Keterangan |
|---|---|---|
model | string | Wajib. Id model persis seperti di daftar model, tanpa prefix. |
messages | array | Wajib. Array pesan format Anthropic, minimal satu pesan. |
max_tokens | integer | Batas token jawaban (wajib di format Anthropic). |
system | string / array | Instruksi sistem (opsional). |
stream | boolean | true untuk menerima jawaban bertahap lewat Server-Sent Events. |
Contoh permintaan
curl https://ai.geraikita.com/v1/messages \
-H "x-api-key: gk-xxxxxxxx" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Halo!"}]
}'Perlu menghitung token sebelum mengirim? POST https://ai.geraikita.com/v1/messages/count_tokens menerima body yang sama dan tidak ditagih.
Daftar model
https://ai.geraikita.com/v1/modelsMengembalikan daftar id model yang bisa dikirim di kolom model. Bila dipanggil dengan key yang dibatasi allowlist, hanya model yang diizinkan yang tampil. Dengan header x-api-key atau anthropic-version, bentuk respons mengikuti format Anthropic.
curl https://ai.geraikita.com/v1/models \
-H "Authorization: Bearer gk-xxxxxxxx"Streaming (SSE)
Dengan "stream": true, jawaban dikirim sebagai text/event-stream. Server langsung mengirim header, lalu baris komentar keepalive : ka tiap 10 detik selama menunggu, sehingga koneksi tidak dianggap mati. Setel timeout total aplikasi minimal 300 detik.
data: {"choices":[{"index":0,"delta":{"content":"Ha"}}]}
: ka
data: {"choices":[{"index":0,"delta":{"content":"lo!"}}]}
data: [DONE]- Format OpenAI: setiap potongan berupa baris
data:berisi JSON denganchoices[].delta, diakhiridata: [DONE]. - Format Anthropic: event
message_start,content_block_delta, …,message_stopseperti API Anthropic. - Abaikan baris yang diawali titik dua (
:) — itu keepalive, bukan data. Panduan per tool ada di Setelan tool agentic.