Install
openclaw skills install kibiCreate tokens on-chain, check fee earnings, check Kibi Credit balance, trigger agent credit reload, and interact with KibiBot's Agent API and Kibi LLM Gatewa...
openclaw skills install kibiCreate tokens on-chain, earn trading fees, and use KibiBot's Kibi LLM Gateway — all from natural language commands.
Version: 1.0.0
Provider: KibiBot
Auth: API key required — get yours at kibi.bot/settings/api-keys
Install: install the kibibot skill from https://github.com/KibiAgent/skills/tree/main/kibibot
Go to kibi.bot/settings/api-keys → Create API Key → copy the kb_... key.
Permissions: Base API is always included. Enable Kibi LLM Gateway if you want to use AI models. Enable Agent Reload if you want the agent to top up your Kibi Credits automatically from your trading wallet.
Go to kibi.bot/credits → Add Credit.
Minimum $1 to start. Credits are consumed per token used.
This step registers KibiBot as your agent's AI model provider, so your agent thinks using Claude/GPT/Gemini billed to your Kibi Credits — instead of paying Anthropic/OpenAI directly. It's separate from the Agent API skill.
OpenClaw users: follow the config below. If you're using LangChain, CrewAI, or any OpenAI-compatible framework, point your
base_urltohttps://llm.kibi.bot/v1with yourkb_...API key instead.OpenClaw users — add KibiBot as an LLM provider in
~/.openclaw/openclaw.json. This is the full config with all available models — you only need to include the models you want to use.
{
"models": {
"mode": "merge",
"providers": {
"kibi": {
"baseUrl": "https://llm.kibi.bot",
"apiKey": "YOUR_KB_API_KEY",
"api": "openai-completions",
"models": [
{ "id": "kibi-opus-4-6", "name": "Claude Opus 4.6", "api": "anthropic-messages", "contextWindow": 1000000, "maxTokens": 128000 },
{ "id": "kibi-opus-4-5", "name": "Claude Opus 4.5", "api": "anthropic-messages", "contextWindow": 200000, "maxTokens": 64000 },
{ "id": "kibi-sonnet-4-6", "name": "Claude Sonnet 4.6", "api": "anthropic-messages", "contextWindow": 1000000, "maxTokens": 128000 },
{ "id": "kibi-sonnet-4-5", "name": "Claude Sonnet 4.5", "api": "anthropic-messages", "contextWindow": 1000000, "maxTokens": 64000 },
{ "id": "kibi-haiku-4-5", "name": "Claude Haiku 4.5", "api": "anthropic-messages", "contextWindow": 200000, "maxTokens": 4096 },
{ "id": "kibi-gpt-5-4-pro", "name": "GPT 5.4 Pro", "contextWindow": 1050000, "maxTokens": 16384 },
{ "id": "kibi-gpt-5-4", "name": "GPT 5.4", "contextWindow": 1050000, "maxTokens": 16384 },
{ "id": "kibi-gpt-5-4-mini", "name": "GPT 5.4 Mini", "contextWindow": 400000, "maxTokens": 16384 },
{ "id": "kibi-gpt-5-4-nano", "name": "GPT 5.4 Nano", "contextWindow": 400000, "maxTokens": 16384 },
{ "id": "kibi-gpt-5-2-pro", "name": "GPT 5.2 Pro", "contextWindow": 400000, "maxTokens": 16384 },
{ "id": "kibi-gpt-5-2", "name": "GPT 5.2", "contextWindow": 400000, "maxTokens": 16384 },
{ "id": "kibi-gpt-5-2-codex", "name": "GPT 5.2 Codex", "contextWindow": 400000, "maxTokens": 16384 },
{ "id": "kibi-gpt-5-2-chat", "name": "GPT 5.2 Chat", "contextWindow": 128000, "maxTokens": 16384 },
{ "id": "kibi-gemini-3-1-pro", "name": "Gemini 3.1 Pro", "contextWindow": 1048576, "maxTokens": 16384 },
{ "id": "kibi-gemini-3-1-flash-lite", "name": "Gemini 3.1 Flash Lite", "contextWindow": 1048576, "maxTokens": 16384 },
{ "id": "kibi-gemini-3-flash", "name": "Gemini 3 Flash", "contextWindow": 1048576, "maxTokens": 16384 },
{ "id": "kibi-gemini-2-5-pro", "name": "Gemini 2.5 Pro", "contextWindow": 1048576, "maxTokens": 8192 },
{ "id": "kibi-gemini-2-5-flash", "name": "Gemini 2.5 Flash", "contextWindow": 1048576, "maxTokens": 8192 },
{ "id": "kibi-grok-4-1", "name": "Grok 4.1 Fast", "contextWindow": 2000000, "maxTokens": 16384 },
{ "id": "kibi-deepseek-v3-2", "name": "DeepSeek V3.2", "contextWindow": 164000, "maxTokens": 16384 },
{ "id": "kibi-kimi-k2-5", "name": "Kimi K2.5", "contextWindow": 262144, "maxTokens": 16384 },
{ "id": "kibi-mimo-v2-pro", "name": "MiMo-V2-Pro", "contextWindow": 1048576, "maxTokens": 16384 },
{ "id": "kibi-mimo-v2-omni", "name": "MiMo-V2-Omni", "contextWindow": 262144, "maxTokens": 16384 },
{ "id": "kibi-mimo-v2-flash", "name": "MiMo-V2-Flash", "contextWindow": 262144, "maxTokens": 16384 },
{ "id": "kibi-seed-2-0-lite", "name": "Seed 2.0 Lite", "contextWindow": 262144, "maxTokens": 16384 },
{ "id": "kibi-seed-2-0-mini", "name": "Seed 2.0 Mini", "contextWindow": 262144, "maxTokens": 16384 },
{ "id": "kibi-qwen-3-coder", "name": "Qwen3 Coder", "contextWindow": 262144, "maxTokens": 16384 },
{ "id": "kibi-qwen-3-5-plus", "name": "Qwen3.5 Plus", "contextWindow": 1000000, "maxTokens": 16384 },
{ "id": "kibi-qwen-3-5-flash", "name": "Qwen3.5 Flash", "contextWindow": 1000000, "maxTokens": 16384 },
{ "id": "kibi-minimax-m2-7", "name": "MiniMax M2.7", "contextWindow": 204800, "maxTokens": 16384 },
{ "id": "kibi-minimax-m2-5", "name": "MiniMax M2.5", "contextWindow": 196608, "maxTokens": 16384 },
{ "id": "kibi-glm-5-turbo", "name": "GLM 5 Turbo", "contextWindow": 202752, "maxTokens": 16384 },
{ "id": "kibi-glm-5", "name": "GLM 5", "contextWindow": 80000, "maxTokens": 16384 }
]
}
}
},
"agents": {
"defaults": {
"models": {
"kibi/kibi-opus-4-6": { "alias": "kibi-opus-4-6" },
"kibi/kibi-opus-4-5": { "alias": "kibi-opus-4-5" },
"kibi/kibi-sonnet-4-6": { "alias": "kibi-sonnet-4-6" },
"kibi/kibi-sonnet-4-5": { "alias": "kibi-sonnet-4-5" },
"kibi/kibi-haiku-4-5": { "alias": "kibi-haiku-4-5" },
"kibi/kibi-gpt-5-4-pro": { "alias": "kibi-gpt-5-4-pro" },
"kibi/kibi-gpt-5-4": { "alias": "kibi-gpt-5-4" },
"kibi/kibi-gpt-5-4-mini": { "alias": "kibi-gpt-5-4-mini" },
"kibi/kibi-gpt-5-4-nano": { "alias": "kibi-gpt-5-4-nano" },
"kibi/kibi-gpt-5-2-pro": { "alias": "kibi-gpt-5-2-pro" },
"kibi/kibi-gpt-5-2": { "alias": "kibi-gpt-5-2" },
"kibi/kibi-gpt-5-2-codex": { "alias": "kibi-gpt-5-2-codex" },
"kibi/kibi-gpt-5-2-chat": { "alias": "kibi-gpt-5-2-chat" },
"kibi/kibi-gemini-3-1-pro": { "alias": "kibi-gemini-3-1-pro" },
"kibi/kibi-gemini-3-1-flash-lite": { "alias": "kibi-gemini-3-1-flash-lite" },
"kibi/kibi-gemini-3-flash": { "alias": "kibi-gemini-3-flash" },
"kibi/kibi-gemini-2-5-pro": { "alias": "kibi-gemini-2-5-pro" },
"kibi/kibi-gemini-2-5-flash": { "alias": "kibi-gemini-2-5-flash" },
"kibi/kibi-grok-4-1": { "alias": "kibi-grok-4-1" },
"kibi/kibi-deepseek-v3-2": { "alias": "kibi-deepseek-v3-2" },
"kibi/kibi-kimi-k2-5": { "alias": "kibi-kimi-k2-5" },
"kibi/kibi-mimo-v2-pro": { "alias": "kibi-mimo-v2-pro" },
"kibi/kibi-mimo-v2-omni": { "alias": "kibi-mimo-v2-omni" },
"kibi/kibi-mimo-v2-flash": { "alias": "kibi-mimo-v2-flash" },
"kibi/kibi-seed-2-0-lite": { "alias": "kibi-seed-2-0-lite" },
"kibi/kibi-seed-2-0-mini": { "alias": "kibi-seed-2-0-mini" },
"kibi/kibi-qwen-3-coder": { "alias": "kibi-qwen-3-coder" },
"kibi/kibi-qwen-3-5-plus": { "alias": "kibi-qwen-3-5-plus" },
"kibi/kibi-qwen-3-5-flash": { "alias": "kibi-qwen-3-5-flash" },
"kibi/kibi-minimax-m2-7": { "alias": "kibi-minimax-m2-7" },
"kibi/kibi-minimax-m2-5": { "alias": "kibi-minimax-m2-5" },
"kibi/kibi-glm-5-turbo": { "alias": "kibi-glm-5-turbo" },
"kibi/kibi-glm-5": { "alias": "kibi-glm-5" }
}
}
}
}
Note: The
agents.defaults.modelsblock is required — it allowlists the models and registers aliases so both the model dropdown picker and/modelcommand work correctly. Thealiasmust match the modelidexactly.
Set as default model (optional):
{
"agents": {
"defaults": {
"model": {
"primary": "kibi/kibi-sonnet-4-6"
}
}
}
}
Then restart OpenClaw:
openclaw gateway restart
Switch models using the dropdown picker or /model command:
/model kibi-opus-4-6
/model kibi-sonnet-4-6
/model kibi-haiku-4-5
/model kibi-gpt-5-4
/model kibi-gemini-3-1-pro
/model kibi-grok-4-1
/model kibi-deepseek-v3-2
Anthropic
| Model ID | Context |
|---|---|
claude-opus-4-6 | 1M |
claude-opus-4-5 | 200k |
claude-sonnet-4-6 | 1M |
claude-sonnet-4-5 | 1M |
claude-haiku-4-5 | 200k |
OpenAI
| Model ID | Context |
|---|---|
gpt-5.4-pro | 1.05M |
gpt-5.4 | 1.05M |
gpt-5.4-mini | 400k |
gpt-5.4-nano | 400k |
gpt-5.2-pro | 400k |
gpt-5.2 | 400k |
gpt-5.2-codex | 400k |
gpt-5.2-chat | 128k |
| Model ID | Context |
|---|---|
gemini-3.1-pro | 1M |
gemini-3.1-flash-lite | 1M |
gemini-3-flash | 1M |
gemini-2.5-pro | 1M |
gemini-2.5-flash | 1M |
xAI
| Model ID | Context |
|---|---|
grok-4.1-fast | 2M |
DeepSeek
| Model ID | Context |
|---|---|
deepseek-v3.2 | 164k |
Moonshot
| Model ID | Context |
|---|---|
kimi-k2.5 | 262k |
Xiaomi
| Model ID | Context |
|---|---|
mimo-v2-pro | 1M |
mimo-v2-omni | 262k |
mimo-v2-flash | 262k |
ByteDance
| Model ID | Context |
|---|---|
seed-2.0-lite | 262k |
seed-2.0-mini | 262k |
Alibaba
| Model ID | Context |
|---|---|
qwen3-coder | 262k |
qwen3.5-plus | 1M |
qwen3.5-flash | 1M |
MiniMax
| Model ID | Context |
|---|---|
minimax-m2.7 | 205k |
minimax-m2.5 | 197k |
Z.ai
| Model ID | Context |
|---|---|
glm-5-turbo | 203k |
glm-5 | 80k |
Verify by asking your agent: "what's my KibiBot Kibi Credit balance?"
Use KibiBot-hosted AI models billed against your Kibi Credits. Same API key for LLM calls and agent actions.
Create tokens on Base, BSC, or Solana — KibiBot handles wallet creation, gas sponsorship, and on-chain deployment.
Token creation is async. After calling the API, poll the job status endpoint until complete (usually 30–60 seconds).
Check creator fee earnings across all chains and platforms — data is read from pre-computed DB cache (fast, no on-chain calls).
Base URL: https://api.kibi.bot/agent/v1
Auth header: X-Api-Key: kb_...
Returns user profile, wallet addresses, and account info.
Response:
{
"twitter_user_id": "...",
"twitter_username": "...",
"profile_image_url": "...",
"followers_count": 1234,
"joined_at": "2025-01-01T00:00:00Z"
}
List all available KibiBot Agent API capabilities with examples. No auth required.
Response:
{
"skills": [
{
"name": "token_create",
"description": "Deploy a new token on Base, BSC, or Solana",
"example": "POST /agent/v1/token/create {\"name\": \"MyToken\", \"symbol\": \"MTK\", \"chain\": \"base\"}"
}
],
"total": 9
}
Create a token on-chain (async). Returns a job_id to poll.
Request:
{
"name": "MOON",
"symbol": "MOON",
"chain": "base",
"description": "To the moon",
"source_url": "https://x.com/user/status/123",
"image_url": "https://...",
"platform": "basememe"
}
chain: base | bsc | solanasource_url (optional): Twitter/X post URL — tweet image used as token image if image_url not providedimage_url (optional): HTTP/HTTPS URL or IPFS URI — overrides source tweet imageplatform (optional): basememe | clanker | flap | fourmeme | pumpfun — defaults to chain default if omittedResponse (202 Accepted):
{
"job_id": 12345,
"status": "pending",
"chain": "base",
"quota": {
"chain": "base",
"free_used_today": 1,
"free_limit": 3,
"sponsored_remaining": 2
}
}
Pre-check errors:
403 insufficient_followers — need minimum followers to create tokens402 insufficient_balance — free quota used, trading wallet balance too low429 daily_cap_exceeded — absolute daily cap reached across all chainsPoll token creation status.
Response:
{
"job_id": 12345,
"status": "completed",
"chain": "base",
"token_address": "0x...",
"error": null,
"created_at": "2026-01-01T00:00:00Z",
"completed_at": "2026-01-01T00:01:00Z"
}
Status values: pending | processing | completed | failed
Get token info by address.
Query: ?chain=base (optional — searches all chains if omitted)
Response:
{
"token_address": "0x...",
"name": "MOON",
"symbol": "MOON",
"chain": "base",
"platform": "basememe",
"creator_twitter_username": "...",
"price_usd": "0.0001234",
"market_cap_usd": "12340",
"volume_24h_usd": "500",
"creator_reward_usd": "1.23",
"created_at": "2026-01-01T00:00:00Z"
}
Get paginated list of tokens you have created.
Query: ?page=1&page_size=20
Response:
{
"tokens": [
{
"token_address": "0x...",
"name": "MOON",
"symbol": "MOON",
"chain": "base",
"platform": "basememe",
"created_at": "2026-01-01T00:00:00Z"
}
],
"total": 5,
"page": 1,
"page_size": 20,
"has_more": false
}
Get Kibi Credit balance and agent reload configuration.
Response:
{
"balance_usd": "4.92",
"balance_usd_cents": 492,
"agent_reload": {
"enabled": true,
"amount_usd": 5.0,
"daily_limit_usd": 100.0,
"chains": ["base"]
}
}
agent_reload is null if not configured. enabled: false means agent reload is off.
Trigger a Kibi Credit reload from the trading wallet.
Requirements:
reload_enabled = truellm_enabled = trueThis is manually triggered by the agent — there is no automatic background polling. Call this endpoint when the agent determines a credit reload is needed (e.g. before a long task).
Response:
{
"success": true,
"amount_usd": "5.00",
"tx_hash": "0x...",
"new_balance_usd": "9.92",
"daily_used_usd": "5.00",
"daily_remaining_usd": "95.00"
}
Errors:
403 — reload not enabled for user or key429 — daily limit would be exceeded400 — insufficient stablecoin balance on all configured chains500 — transaction failedEmergency kill switch — agent disables its own reload permission. Cannot be re-enabled by the agent (human must re-enable via dashboard).
Use this if the agent detects unexpected reload behaviour or wants to self-limit spending.
Response: 204 No Content
Get on-chain wallet balances across all chains (main + trading wallets).
Response:
{
"evm_main": {
"address": "0x...",
"balance_eth": "0.050000",
"balance_bnb": "0.100000",
"balance_usdc_base": "10.000000",
"balance_usdt_bsc": "5.000000"
},
"evm_trading": {
"address": "0x...",
"balance_eth": "0.010000",
"balance_bnb": "0.005000",
"balance_usdc_base": "0.000000",
"balance_usdt_bsc": "0.000000"
},
"solana_main": {
"address": "...",
"balance_sol": "0.500000",
"balance_usdc_solana": "5.000000"
},
"solana_trading": {
"address": "...",
"balance_sol": "0.050000",
"balance_usdc_solana": "0.000000"
}
}
Any field may be null if the wallet is not set up or the RPC is unavailable. Check *_error fields (e.g. eth_error: "rpc_unavailable") for failure reasons.
Get total fee earnings across all chains in a single call. All data is pre-computed — fast, no on-chain calls.
Response:
{
"bsc": {
"chain_id": 56,
"token_count": 12,
"total_earned_bnb": 0.053
},
"base": {
"chain_id": 8453,
"token_count": 7,
"basememe_total_earned_eth": "0.0290",
"basememe_claimable_eth": "0.0145",
"clanker_claimable_weth_eth": "0.0080"
},
"solana": {
"chain_id": 101,
"token_count": 4,
"total_earnings_sol": 0.05,
"total_claimable_sol": 0.012
}
}
Get per-platform fee breakdown for a specific chain.
Query: ?chain=bsc | ?chain=base | ?chain=solana
BSC response:
{
"chain": "bsc",
"chain_id": 56,
"flap": { "total_earned_bnb": 0.042, "earning_token_count": 3 },
"fourmeme": { "total_earned_bnb": 0.011, "earning_token_count": 1 }
}
Base response:
{
"chain": "base",
"chain_id": 8453,
"basememe": { "total_earned_eth": "0.0290", "claimable_eth": "0.0145", "token_count": 5 },
"clanker": { "claimable_weth_eth": "0.0080", "token_count": 2 }
}
Solana response:
{
"chain": "solana",
"chain_id": 101,
"pumpfun": { "total_earnings_sol": 0.05, "total_claimable_sol": 0.012, "earning_token_count": 4 }
}
Get fee earnings for a specific token.
Query: ?chain=bsc&platform=flap&token_address=0x...
chain: bsc | base | solanaplatform: flap | fourmeme (BSC) · pumpfun (Solana)token_address: contract address (EVM) or mint address (Solana)Note:
basememeandclankerdo not support per-token fee tracking — a helpful redirect message is returned instead.
BSC/Flap response:
{
"token_address": "0x...",
"token_name": "MyToken",
"token_symbol": "MTK",
"platform": "flap",
"chain": "bsc",
"earned_bnb": 0.021
}
Solana/Pumpfun response:
{
"mint": "AbcDef...",
"token_name": "MyToken",
"token_symbol": "MTK",
"platform": "pumpfun",
"chain": "solana",
"actual_sol": 0.05,
"distributable_sol": 0.012,
"total_sol": 0.062,
"is_graduated": true
}
Returns 404 if token not found or not owned by the authenticated user.
Get daily token creation quota and trading wallet readiness per chain.
Response:
{
"chains": [
{
"chain": "base",
"free_used_today": 1,
"free_limit": 3,
"sponsored_remaining": 2,
"can_create_paid": true,
"trading_wallet_balance": "0.010000 ETH",
"trading_wallet_address": "0x..."
},
{
"chain": "bsc",
"free_used_today": 0,
"free_limit": 3,
"sponsored_remaining": 3,
"can_create_paid": false,
"trading_wallet_balance": "0.000000 BNB",
"trading_wallet_address": "0x..."
},
{
"chain": "solana",
"free_used_today": 0,
"free_limit": 3,
"sponsored_remaining": 3,
"can_create_paid": true,
"trading_wallet_balance": "0.050000 SOL",
"trading_wallet_address": "..."
}
]
}
Base URL: https://llm.kibi.bot
Auth: X-Api-Key: kb_... or Authorization: Bearer kb_...
Compatible with Claude models via Anthropic Messages API format.
curl https://llm.kibi.bot/v1/messages \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_KB_API_KEY" \
-d '{
"model": "claude-haiku-4-5",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 100
}'
Compatible with all models via OpenAI Chat Completions format.
curl https://llm.kibi.bot/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_KB_API_KEY" \
-d '{
"model": "gpt-4o",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 100
}'
List available models.
Returns a ready-to-paste OpenClaw provider config block. No auth required.
| Code | Meaning |
|---|---|
| 401 | Missing or invalid API key |
| 402 | Insufficient Kibi Credits (LLM) or trading wallet balance (token creation) |
| 403 | Permission denied — feature not enabled for this key or user |
| 404 | Resource not found |
| 422 | Validation error — check request body |
| 429 | Rate limited or daily cap exceeded — wait before retrying |
| 500 | Server error — retry |
402 on LLM calls
Kibi Credits exhausted. Top up at kibi.bot/credits.
Note: Kibi Credits ≠ trading wallet. Topping up one doesn't affect the other.
403 on reload
Either Agent Reload is not enabled for the user (kibi.bot/credits → Agent Reload section), or the API key doesn't have reload_enabled. Check both.
401 Unauthorized
API key missing or invalid. Manage keys at kibi.bot/settings/api-keys.
Ensure you send: X-Api-Key: kb_...
Token creation stuck at pending
Poll GET /agent/v1/jobs/{job_id} — creation usually takes 30–60 seconds.
If still pending after 5 minutes, check the error field.
429 on reload
Daily reload limit exceeded. Check daily_remaining_usd in the balance response.
400 on reload — insufficient balance
No configured chain has enough USDC/USDT in the trading wallet. Check GET /balance/wallet and top up.