KiwAssistant API Integration
One API for all your AI tools. KiwAssistant ships a developer endpoint that is compatible with both OpenAI and Anthropic, so it works out of the box with OpenCode, Claude Code, Cline, Open WebUI, Continue, aider, and other clients — no custom plugins required. Set the base URL, paste an API key, and the DX-Mark-0.2 model is ready to go.
Note: The DX-Mark-0.2 model is an official proprietary AI model built by KiwStudio, supporting multimodal inputs (text and image / Vision) by default both in the KiwAssistant web chat and via API (OpenAI
image_url& Anthropic image format).
Connection Info
| Parameter | Value |
|---|---|
| Base URL | https://kiwstudio.com/api/v1 |
| Authentication | Authorization: Bearer kiw_live_... |
| Model | kws/dx-mark-0.2 |
| Format | OpenAI (/chat/completions) + Anthropic (/messages) |
| Quota | 500 responses per 5 hours, API-only for VIP accounts |
Step 1 — Create an API Key
- Open the KiwAssistant page and switch to the API Key tab in the side panel.
- Give the key a name (for example
opencode-laptop) and click Create. - Copy the key — you can reveal it again anytime via the Reveal button in the key list.
- Store it somewhere safe. You can revoke a key at any time and it stops working immediately.
Step 2 — Test the Connection
curl https://kiwstudio.com/api/v1/chat/completions \
-H "Authorization: Bearer kiw_live_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"model":"kws/dx-mark-0.2","messages":[{"role":"user","content":"Hello, who are you?"}]}'
Step 3 — Connect Your Favorite Tool
OpenCode
Add a custom provider in opencode.json (project root or ~/.config/opencode/opencode.json):
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"kiwstudio": {
"npm": "@ai-sdk/openai-compatible",
"name": "KiwStudio",
"options": {
"baseURL": "https://kiwstudio.com/api/v1",
"apiKey": "kiw_live_xxxxxxxx"
},
"models": {
"kws/dx-mark-0.2": {
"name": "DX-Mark-0.2"
}
}
}
},
"model": "kws/dx-mark-0.2"
}
Claude Code
Claude Code uses the Anthropic format — set the environment variables and run claude as usual:
export ANTHROPIC_BASE_URL="https://kiwstudio.com/api/v1"
export ANTHROPIC_AUTH_TOKEN="kiw_live_xxxxxxxx"
export ANTHROPIC_MODEL="kws/dx-mark-0.2"
Cline
- Open Cline Settings → API Provider and choose OpenAI Compatible.
- Set Base URL to
https://kiwstudio.com/api/v1. - Paste the API key and set Model ID to
kws/dx-mark-0.2.
Open WebUI
Set these environment variables when running Open WebUI:
OPENAI_API_BASE_URL="https://kiwstudio.com/api/v1"
OPENAI_API_KEY="kiw_live_xxxxxxxx"
Continue
Add this model to your Continue config.json:
{
"models": [
{
"title": "DX-Mark-0.2",
"provider": "openai",
"model": "kws/dx-mark-0.2",
"apiBase": "https://kiwstudio.com/api/v1",
"apiKey": "kiw_live_xxxxxxxx"
}
]
}
aider
aider --openai-api-base https://kiwstudio.com/api/v1 \
--openai-api-key kiw_live_xxxxxxxx \
--model kws/dx-mark-0.2
Endpoint Reference
GET /api/v1/models— lists available models (currently one:kws/dx-mark-0.2).POST /api/v1/chat/completions— OpenAI-style chat completions (standard path: OpenCode, Cline, Open WebUI, Continue, aider, etc.), streaming (SSE) and non-streaming;/assistant/chatis also accepted as an alias.POST /api/v1/messages— Anthropic-style chat (Claude Code, Cursor, and similar), streaming and non-streaming.
Optional Parameter — reasoning_effort
reasoning_effort controls how deeply the model thinks before answering. Accepted values: none, low, medium, high, or auto.
- Default:
none— fastest responses, used for regular chat. low/medium/high— higher values mean more thorough (and slower) answers.auto— let the model router decide on its own.
{
"model": "kws/dx-mark-0.2",
"reasoning_effort": "medium",
"messages": [{"role": "user", "content": "Optimize this function"}]
}
The KiwAssistant web chat always uses none; this setting only takes effect when you call the API directly.
Quota & Limits
- The current response quota is 500 responses per 5 hours (exclusive to VIP API users).
- The weekly cap per account is 1,000 responses per week (rolling 7-day period).
- Every response includes the
X-Kiw-Response-Limit,X-Kiw-Response-Remaining,X-Kiw-Response-Reset, plusX-Kiw-Weekly-Limit,X-Kiw-Weekly-Remaining, andX-Kiw-Weekly-Resetheaders — use them to track remaining quota on the client side. - The last message in
messagesmust use theuserrole.
Error Codes
| Status | Meaning |
|---|---|
| 401 | API key invalid, expired, or revoked |
| 403 | VIP inactive, account blocked, or API disabled |
| 415 | Content-Type is not application/json |
| 422 | Invalid payload — details in error.param |
| 429 | Response quota or weekly cap reached — read the Retry-After header |
| 502 | Model temporarily unavailable — try again shortly |
Security
- Keys are encrypted on the server — the account owner can reveal them again anytime from the KiwAssistant page; admins never see the raw key.
- Never commit keys to public repositories; use environment variables or a secret manager.
- Create a separate key per device so you can revoke a single leak quickly.