Get started in 2 minutes.
The Geraikita AI API supports two formats at once: OpenAI Chat Completions and Anthropic Messages. Use the OpenAI SDK, Anthropic SDK, Claude Code CLI, Cline, and other tools — just change the base URL and API key.
https://ai.geraikita.com/v1https://ai.geraikita.comBearer gk-... (or x-api-key: gk-...)https://ai.geraikita.com/v1OpenAI clients append /chat/completions to the base URL — so the base ends with /v1.https://ai.geraikita.comAnthropic clients (Claude Code CLI, Anthropic SDK) append /v1/messages themselves — so the base goes without /v1.Get it wrong and the path becomes /v1/v1/messages → 400 error.
A bansos key must be claimed first on the Bansos page (login + verified WhatsApp + joining the Telegram channel & group, free, one key per account). A paid gk- key from the Dashboard does not work on the bansos endpoint, and vice versa — mixing them up returns 401 unauthorized.
The bansos base URL is also different from the paid one above:
https://ai.geraikita.com/v1/claudehttps://ai.geraikita.com/v1/claude/chat/completionsANTHROPIC_BASE_URL=https://ai.geraikita.com/v1/claudeThe SDK appends /v1/messages itself → https://ai.geraikita.com/v1/claude/v1/messages.GET https://ai.geraikita.com/v1/claude/modelsFree models: deepseek-v4-flash, glm-5.3-flash, qwen3.8-flash, qwen3.8-max. Other models return 404; the current list is at GET /models.
Everything else is exactly the same as the paid endpoint.
Authentication
Every request carries your gk- API key in the Authorization: Bearer gk-... header. Keys are created in the dashboard and shown only once at creation — store them safely. You can restrict each key to specific models (allowlist).
First request
from openai import OpenAI
client = OpenAI(
base_url="https://ai.geraikita.com/v1",
api_key="gk-xxxxxxxx",
)
resp = client.chat.completions.create(
model="claude-sonnet-5",
messages=[{"role": "user", "content": "Halo!"}],
)
print(resp.choices[0].message.content)Claude Code CLI
Claude Code uses the Anthropic format. Set the base URL to the root (https://ai.geraikita.com — without /v1), then run claude. Use the models claude-sonnet-5 / claude-opus-5 / claude-haiku-4-5.
# Base URL = ROOT without /v1 (Claude Code appends /v1/messages itself)
export ANTHROPIC_BASE_URL="https://ai.geraikita.com"
export ANTHROPIC_AUTH_TOKEN="gk-xxxxxxxx"
export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-5"
export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-opus-5"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-haiku-4-5"
claudeCline & other tools
Cline / Roo (OpenAI Compatible): provider OpenAI Compatible, Base URL https://ai.geraikita.com/v1, API key gk-..., Model ID claude-sonnet-5.
Cline (Anthropic): provider Anthropic, Base URL https://ai.geraikita.com, API key gk-....
Does your tool auto-discover models? The GET https://ai.geraikita.com/v1/models endpoint is available. If there is a "Gateway base URL" field that automatically appends /v1/models, fill it with https://ai.geraikita.com (root) so it doesn't become /v1/v1/models.
OpenCode
OpenCode reads its providers from a config file. Register Geraikita as an OpenAI-compatible provider in ~/.config/opencode/opencode.json, or in a project-level opencode.json.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"geraikita": {
"npm": "@ai-sdk/openai-compatible",
"name": "Geraikita AI",
"options": {
"baseURL": "https://ai.geraikita.com/v1",
"apiKey": "{env:GERAIKITA_API_KEY}"
},
"models": {
"claude-sonnet-5": { "name": "Claude Sonnet 5" },
"gpt-5.6-sol": { "name": "GPT 5.6 Sol" },
"deepseek-v4-pro": { "name": "DeepSeek V4 Pro" }
}
}
}
}Then export your key and start OpenCode. Pick the model with /models — it shows up as geraikita/claude-sonnet-5.
export GERAIKITA_API_KEY=gk-xxxxxxxx
opencodeImportant: the keys under models are sent to the API as-is, so they must match Geraikita's public model ids exactly.
Reminder: write the model name exactly as it appears on the pricing page — no prefix.
9router
9router is a local proxy that fans out to many providers and listens on http://localhost:20128. You don't point your tools at Geraikita directly — you register Geraikita as one of 9router's upstream providers.
- Open the 9router dashboard at http://localhost:20128/dashboard.
- Go to Providers and add a custom OpenAI-compatible endpoint: Base URL https://ai.geraikita.com/v1, API key gk-xxxxxxxx.
- Leave your coding tools pointing at 9router (http://localhost:20128/v1) and just select a Geraikita model — 9router forwards those requests to Geraikita.
http://localhost:20128/dashboardhttps://ai.geraikita.com/v1gk-xxxxxxxxhttp://localhost:20128/v1# your tool keeps pointing at 9router, not at Geraikita
export OPENAI_BASE_URL="http://localhost:20128/v1"That way you keep 9router's routing and fallback across providers, while the tokens are paid from your Geraikita GeraiPoints.
Reminder: write the model name exactly as it appears on the pricing page — no prefix.
Hermes
Hermes (NousResearch's Hermes Agent) works with any OpenAI-compatible endpoint. Point it at Geraikita in ~/.hermes/config.yaml.
model:
default: claude-sonnet-5
provider: custom
base_url: https://ai.geraikita.com/v1
api_key: gk-xxxxxxxx # or put it in ~/.hermes/.envOr run hermes model, choose Custom OpenAI-compatible endpoint, and enter the base URL plus your key — Hermes then discovers the available models itself via GET https://ai.geraikita.com/v1/models.
Reminder: write the model name exactly as it appears on the pricing page — no prefix.
GeraiPoints
Model list
The model values you can send. See the pricing page for each model's rates.
Create an API key
Error codes
| Status | Meaning |
|---|---|
| 400 | Wrong base URL / body — make sure there is no double /v1 (e.g. /v1/v1/messages) |
| 401 | Invalid API key / wrong lane — paid key ≠ bansos key. Check the base URL: paid uses /v1, bansos uses /v1/claude |
| 402 | Not enough GeraiPoints — please top up |
| 403 | Model not allowed for this key |
| 404 | Unknown model — send the EXACT MODEL NAME (e.g. claude-sonnet-5), no prefix. Names like gp/claude-sonnet-5 or openai/... will 404 |
| 429 | Too many requests |