Agent & Developer Docs
Everything you need to build AI agents and integrations on BFunBot — API reference, CLI, BFunBot LLM Gateway, and OpenClaw setup.
Overview
BFunBot exposes a full Agent API so your AI agent or application can create tokens, check balances, and call frontier AI models — all with a single bfbot_... API key.
Create tokens, check quota, manage balances — REST endpoints at api.bfun.bot
Command-line tool for humans and CI pipelines — npm install -g @bfun-bot/cli
OpenAI-compatible AI model access billed to your BFunBot Credits
# Agent API base URL
https://api.bfun.bot/agent/v1
# LLM Gateway base URL
https://llm.bfun.bot
# Auth header (all requests)
X-Api-Key: bfbot_...
Quick Start
Two ways to get started — pick what fits your workflow.
Before you start — get an API key
Go to bfun.bot/settings/api-keys → Create API Key → name it → copy the bfbot_... key.
Enable BFunBot LLM Gateway if you need AI model access. Enable Agent Reload if you want the agent to top up credits from your trading wallet.
Best for AI agent users (OpenClaw, etc.). The agent learns BFunBot's full API automatically.
Copy and paste this into your agent's chat:
Best for humans, scripts, and CI pipelines.
npm install -g @bfun-bot/cli
bfunbot login # enter your API key
bfunbot whoami # verify connection
bfunbot token create # deploy your first tokenAll commands support --json for scripting.
CLI Reference
The @bfun-bot/cli package provides a bfun binary for humans and CI/CD pipelines. All commands support --json for machine-readable output.
Installation & AuthView on npm ↗
npm install -g @bfun-bot/cli
# Authenticate
bfunbot login # prompts for API key
bfunbot logout # clear stored key
bfunbot whoami # show current identityToken Commands
# Create a token (interactive prompts if flags omitted)
bfunbot token create \
--name "Moon Token" \
--symbol MOON \
--description "To the moon" \
--source https://x.com/user/status/123 \
--image-url https://example.com/moon.png \
--platform flap
# Wait for deployment (polls until complete)
# Use --no-wait to return job ID immediately
# Get token info
bfunbot token info 0xABC123...
# Check job status
bfunbot status 12345
# List tokens you've created
bfunbot tokens createdBalance & Quota
# Show wallet balances (BNB Chain)
bfunbot balances
# Show daily token creation quota
bfunbot quotaFee Earnings
# Summary
bfunbot fees
# Per-platform breakdown
bfunbot fees --platform flap
bfunbot fees --platform flap --token 0x1234...
bfunbot fees --platform fourmeme --token 0x1234...BFunBot Credits & LLM
# Check BFunBot Credit balance + agent reload config
bfunbot llm credits
# List available AI models
bfunbot llm models
# Reload BFunBot Credits from trading wallet (BSC USDT)
bfunbot llm reload
# Emergency disable agent reload
bfunbot llm reload --disable
# Generate provider config for OpenClaw
bfunbot llm setup openclawOther Commands
# List all agent capabilities
bfunbot skills
# Config management
bfunbot config get
bfunbot config set apiKey bfbot_...
# Global flags
bfunbot <command> --json # machine-readable JSON
bfunbot <command> --debug # verbose logging
bfunbot --versionAgent API Reference
Base URL: https://api.bfun.bot/agent/v1 — Auth: X-Api-Key: bfbot_... header on all requests.
Identity
Token Creation
Quota
Balances
Fee Earnings API
BFunBot LLM Gateway
The BFunBot LLM Gateway is an OpenAI-compatible proxy billed to your BFunBot Credits. Use the same bfbot_... API key — no separate account needed.
Base URL: https://llm.bfun.bot · Auth: X-Api-Key: bfbot_... or Authorization: Bearer bfbot_...
Supported Models
| Model ID | Provider | Context |
|---|---|---|
| Anthropic | ||
| claude-opus-4-6 | Anthropic | 1M |
| claude-opus-4-5 | Anthropic | 200k |
| claude-sonnet-4-6 | Anthropic | 1M |
| claude-sonnet-4-5 | Anthropic | 1M |
| claude-haiku-4-5 | Anthropic | 200k |
| OpenAI | ||
| gpt-5.4-pro | OpenAI | 1.05M |
| gpt-5.4 | OpenAI | 1.05M |
| gpt-5.4-mini | OpenAI | 400k |
| gpt-5.4-nano | OpenAI | 400k |
| gpt-5.2-pro | OpenAI | 400k |
| gpt-5.2 | OpenAI | 400k |
| gpt-5.2-codex | OpenAI | 400k |
| gpt-5.2-chat | OpenAI | 128k |
| 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 | ||
| grok-4.1-fast | xAI | 2M |
| DeepSeek | ||
| deepseek-v3.2 | DeepSeek | 164k |
| Moonshot | ||
| kimi-k2.5 | Moonshot | 262k |
| Xiaomi | ||
| mimo-v2-pro | Xiaomi | 1M |
| mimo-v2-omni | Xiaomi | 262k |
| mimo-v2-flash | Xiaomi | 262k |
| ByteDance | ||
| seed-2.0-lite | ByteDance | 262k |
| seed-2.0-mini | ByteDance | 262k |
| Alibaba | ||
| qwen3-coder | Alibaba | 262k |
| qwen3.5-plus | Alibaba | 1M |
| qwen3.5-flash | Alibaba | 1M |
| MiniMax | ||
| minimax-m2.7 | MiniMax | 205k |
| minimax-m2.5 | MiniMax | 197k |
| Z.ai | ||
| glm-5-turbo | Z.ai | 203k |
| glm-5 | Z.ai | 80k |
OpenAI-compatible (all models)
curl https://llm.bfun.bot/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-Api-Key: bfbot_YOUR_KEY" \
-d '{
"model": "gpt-5.4",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 256
}'Anthropic-compatible (Claude only)
curl https://llm.bfun.bot/v1/messages \
-H "Content-Type: application/json" \
-H "X-Api-Key: bfbot_YOUR_KEY" \
-d '{
"model": "claude-sonnet-4-6",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 256
}'Other endpoints
GET /v1/models # list all models
GET /v1/models/openclaw # ready-to-paste OpenClaw config (no auth)Setup OpenClaw with BFunBot LLM Gateway
Use BFunBot as your OpenClaw agent's AI model provider — billed to your BFunBot Credits instead of paying providers directly.
Step 1 — Install the BFunBot skill
Copy and paste this into your agent's chat:
Or browse the SKILL.md source.
Step 2 — Add provider to openclaw.json
💡 If you ran the install command in Step 1 with "apply its OpenClaw config", this step was done automatically. Verify in your config file.
File: ~/.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": {
"bfunbot": {
"baseUrl": "https://llm.bfun.bot",
"apiKey": "bfbot_YOUR_KEY",
"api": "openai-completions",
"models": [
{ "id": "bfunbot-opus-4-6", "name": "Claude Opus 4.6", "api": "anthropic-messages", "contextWindow": 1000000, "maxTokens": 128000 },
{ "id": "bfunbot-opus-4-5", "name": "Claude Opus 4.5", "api": "anthropic-messages", "contextWindow": 200000, "maxTokens": 64000 },
{ "id": "bfunbot-sonnet-4-6", "name": "Claude Sonnet 4.6", "api": "anthropic-messages", "contextWindow": 1000000, "maxTokens": 128000 },
{ "id": "bfunbot-sonnet-4-5", "name": "Claude Sonnet 4.5", "api": "anthropic-messages", "contextWindow": 1000000, "maxTokens": 64000 },
{ "id": "bfunbot-haiku-4-5", "name": "Claude Haiku 4.5", "api": "anthropic-messages", "contextWindow": 200000, "maxTokens": 4096 },
{ "id": "bfunbot-gpt-5-4-pro", "name": "GPT 5.4 Pro", "contextWindow": 1050000, "maxTokens": 16384 },
{ "id": "bfunbot-gpt-5-4", "name": "GPT 5.4", "contextWindow": 1050000, "maxTokens": 16384 },
{ "id": "bfunbot-gpt-5-4-mini", "name": "GPT 5.4 Mini", "contextWindow": 400000, "maxTokens": 16384 },
{ "id": "bfunbot-gpt-5-4-nano", "name": "GPT 5.4 Nano", "contextWindow": 400000, "maxTokens": 16384 },
{ "id": "bfunbot-gpt-5-2-pro", "name": "GPT 5.2 Pro", "contextWindow": 400000, "maxTokens": 16384 },
{ "id": "bfunbot-gpt-5-2", "name": "GPT 5.2", "contextWindow": 400000, "maxTokens": 16384 },
{ "id": "bfunbot-gpt-5-2-codex", "name": "GPT 5.2 Codex", "contextWindow": 400000, "maxTokens": 16384 },
{ "id": "bfunbot-gpt-5-2-chat", "name": "GPT 5.2 Chat", "contextWindow": 128000, "maxTokens": 16384 },
{ "id": "bfunbot-gemini-3-1-pro", "name": "Gemini 3.1 Pro", "contextWindow": 1048576, "maxTokens": 16384 },
{ "id": "bfunbot-gemini-3-1-flash-lite", "name": "Gemini 3.1 Flash Lite", "contextWindow": 1048576, "maxTokens": 16384 },
{ "id": "bfunbot-gemini-3-flash", "name": "Gemini 3 Flash", "contextWindow": 1048576, "maxTokens": 16384 },
{ "id": "bfunbot-gemini-2-5-pro", "name": "Gemini 2.5 Pro", "contextWindow": 1048576, "maxTokens": 8192 },
{ "id": "bfunbot-gemini-2-5-flash", "name": "Gemini 2.5 Flash", "contextWindow": 1048576, "maxTokens": 8192 },
{ "id": "bfunbot-grok-4-1", "name": "Grok 4.1 Fast", "contextWindow": 2000000, "maxTokens": 16384 },
{ "id": "bfunbot-deepseek-v3-2", "name": "DeepSeek V3.2", "contextWindow": 164000, "maxTokens": 16384 },
{ "id": "bfunbot-kimi-k2-5", "name": "Kimi K2.5", "contextWindow": 262144, "maxTokens": 16384 },
{ "id": "bfunbot-mimo-v2-pro", "name": "MiMo-V2-Pro", "contextWindow": 1048576, "maxTokens": 16384 },
{ "id": "bfunbot-mimo-v2-omni", "name": "MiMo-V2-Omni", "contextWindow": 262144, "maxTokens": 16384 },
{ "id": "bfunbot-mimo-v2-flash", "name": "MiMo-V2-Flash", "contextWindow": 262144, "maxTokens": 16384 },
{ "id": "bfunbot-seed-2-0-lite", "name": "Seed 2.0 Lite", "contextWindow": 262144, "maxTokens": 16384 },
{ "id": "bfunbot-seed-2-0-mini", "name": "Seed 2.0 Mini", "contextWindow": 262144, "maxTokens": 16384 },
{ "id": "bfunbot-qwen-3-coder", "name": "Qwen3 Coder", "contextWindow": 262144, "maxTokens": 16384 },
{ "id": "bfunbot-qwen-3-5-plus", "name": "Qwen3.5 Plus", "contextWindow": 1000000, "maxTokens": 16384 },
{ "id": "bfunbot-qwen-3-5-flash", "name": "Qwen3.5 Flash", "contextWindow": 1000000, "maxTokens": 16384 },
{ "id": "bfunbot-minimax-m2-7", "name": "MiniMax M2.7", "contextWindow": 204800, "maxTokens": 16384 },
{ "id": "bfunbot-minimax-m2-5", "name": "MiniMax M2.5", "contextWindow": 196608, "maxTokens": 16384 },
{ "id": "bfunbot-glm-5-turbo", "name": "GLM 5 Turbo", "contextWindow": 202752, "maxTokens": 16384 },
{ "id": "bfunbot-glm-5", "name": "GLM 5", "contextWindow": 80000, "maxTokens": 16384 }
]
}
}
},
"agents": {
"defaults": {
"models": {
"bfunbot/bfunbot-opus-4-6": { "alias": "bfunbot-opus-4-6" },
"bfunbot/bfunbot-opus-4-5": { "alias": "bfunbot-opus-4-5" },
"bfunbot/bfunbot-sonnet-4-6": { "alias": "bfunbot-sonnet-4-6" },
"bfunbot/bfunbot-sonnet-4-5": { "alias": "bfunbot-sonnet-4-5" },
"bfunbot/bfunbot-haiku-4-5": { "alias": "bfunbot-haiku-4-5" },
"bfunbot/bfunbot-gpt-5-4-pro": { "alias": "bfunbot-gpt-5-4-pro" },
"bfunbot/bfunbot-gpt-5-4": { "alias": "bfunbot-gpt-5-4" },
"bfunbot/bfunbot-gpt-5-4-mini": { "alias": "bfunbot-gpt-5-4-mini" },
"bfunbot/bfunbot-gpt-5-4-nano": { "alias": "bfunbot-gpt-5-4-nano" },
"bfunbot/bfunbot-gpt-5-2-pro": { "alias": "bfunbot-gpt-5-2-pro" },
"bfunbot/bfunbot-gpt-5-2": { "alias": "bfunbot-gpt-5-2" },
"bfunbot/bfunbot-gpt-5-2-codex": { "alias": "bfunbot-gpt-5-2-codex" },
"bfunbot/bfunbot-gpt-5-2-chat": { "alias": "bfunbot-gpt-5-2-chat" },
"bfunbot/bfunbot-gemini-3-1-pro": { "alias": "bfunbot-gemini-3-1-pro" },
"bfunbot/bfunbot-gemini-3-1-flash-lite": { "alias": "bfunbot-gemini-3-1-flash-lite" },
"bfunbot/bfunbot-gemini-3-flash": { "alias": "bfunbot-gemini-3-flash" },
"bfunbot/bfunbot-gemini-2-5-pro": { "alias": "bfunbot-gemini-2-5-pro" },
"bfunbot/bfunbot-gemini-2-5-flash": { "alias": "bfunbot-gemini-2-5-flash" },
"bfunbot/bfunbot-grok-4-1": { "alias": "bfunbot-grok-4-1" },
"bfunbot/bfunbot-deepseek-v3-2": { "alias": "bfunbot-deepseek-v3-2" },
"bfunbot/bfunbot-kimi-k2-5": { "alias": "bfunbot-kimi-k2-5" },
"bfunbot/bfunbot-mimo-v2-pro": { "alias": "bfunbot-mimo-v2-pro" },
"bfunbot/bfunbot-mimo-v2-omni": { "alias": "bfunbot-mimo-v2-omni" },
"bfunbot/bfunbot-mimo-v2-flash": { "alias": "bfunbot-mimo-v2-flash" },
"bfunbot/bfunbot-seed-2-0-lite": { "alias": "bfunbot-seed-2-0-lite" },
"bfunbot/bfunbot-seed-2-0-mini": { "alias": "bfunbot-seed-2-0-mini" },
"bfunbot/bfunbot-qwen-3-coder": { "alias": "bfunbot-qwen-3-coder" },
"bfunbot/bfunbot-qwen-3-5-plus": { "alias": "bfunbot-qwen-3-5-plus" },
"bfunbot/bfunbot-qwen-3-5-flash": { "alias": "bfunbot-qwen-3-5-flash" },
"bfunbot/bfunbot-minimax-m2-7": { "alias": "bfunbot-minimax-m2-7" },
"bfunbot/bfunbot-minimax-m2-5": { "alias": "bfunbot-minimax-m2-5" },
"bfunbot/bfunbot-glm-5-turbo": { "alias": "bfunbot-glm-5-turbo" },
"bfunbot/bfunbot-glm-5": { "alias": "bfunbot-glm-5" }
}
}
}
}Or run bfunbot llm setup openclaw --install to generate and apply this automatically.
Step 3 — Set as default model (optional)
{
"agents": {
"defaults": {
"model": { "primary": "bfunbot/bfunbot-sonnet-4-6" }
}
}
}Step 4 — Restart and verify
openclaw gateway restart
# Ask your agent:
# "what's my BFunBot credit balance?"Reload BFunBot LLM Gateway Credits with Agent
Agent Reload lets your agent top up its own BFunBot Credits directly from your trading wallet USDT — without any human interaction.
This is a manual trigger — your agent decides when to call it. There is no background auto-reload watcher.
Setup (one-time, human)
- Go to bfun.bot/credits → Agent Reload section → enable it, set amount and daily limit (BSC USDT).
- Go to bfun.bot/settings/api-keys → Edit Permissions on your key → enable BFunBot LLM Gateway and Agent Reload.
How it works
Example flow
# Check balance first
curl https://api.bfun.bot/agent/v1/balance/credits \
-H "X-Api-Key: bfbot_YOUR_KEY"
# If low, reload (uses BSC USDT from trading wallet)
curl -X POST https://api.bfun.bot/agent/v1/balance/credits/reload \
-H "X-Api-Key: bfbot_YOUR_KEY"
# Emergency stop
curl -X POST https://api.bfun.bot/agent/v1/balance/credits/reload/disable \
-H "X-Api-Key: bfbot_YOUR_KEY"Errors
| Parameter | Type | Required | Description |
|---|---|---|---|
| 403 | No | Reload not enabled for user or this API key | |
| 429 | No | Daily reload limit would be exceeded | |
| 400 | No | Insufficient USDT on BSC trading wallet | |
| 500 | No | On-chain transaction failed |
Error Codes
All errors return JSON with a detail field describing what went wrong.
| Code | Meaning | Common cause |
|---|---|---|
| 401 | Unauthorized | Missing or invalid API key. Check bfun.bot/settings/api-keys. |
| 402 | Payment Required | Insufficient BFunBot Credits (LLM) or trading wallet balance (token creation). |
| 403 | Forbidden | Feature not enabled for this key or user — check key permissions. |
| 404 | Not Found | Resource doesn't exist or belongs to another user. |
| 422 | Validation Error | Invalid request body — check required fields and value constraints. |
| 429 | Too Many Requests | Rate limited or daily cap exceeded. Wait and retry. |
| 500 | Internal Server Error | Server-side failure — usually safe to retry after a short delay. |
