bankr▌
bankrbot/openclaw-skills · updated Apr 8, 2026
MDX-style export adds YAML metadata + attribution linking explainx.ai and this canonical listing URL.
$22
Bankr
Execute crypto trading and DeFi operations using natural language. Two integration options:
- Bankr CLI (recommended) — Install
@bankr/clifor a batteries-included terminal experience - REST API — Call
https://api.bankr.botdirectly from any language or tool
Both use the same API key. The API has two layers:
- Wallet API (
/wallet/*) — Direct, synchronous endpoints for portfolio, transfers, signing, and transaction submission - Agent API (
/agent/*) — AI-powered async prompt endpoint for natural language operations
Getting an API Key
Before using either option, you need a Bankr API key. Two ways to get one:
Option A: Headless email login (recommended for agents)
Two-step flow — send OTP, then verify and complete setup. See "First-Time Setup" below for the full guided flow with user preference prompts.
# Step 1 — send OTP to email
bankr login email [email protected]
# Step 2 — verify OTP and generate API key (options based on user preferences)
bankr login email [email protected] --code 123456 --accept-terms --key-name "My Agent" --read-write
This creates a wallet, accepts terms, and generates an API key — no browser needed. Before running step 2, ask the user which APIs they need (wallet, agent, both via --read-write, LLM gateway) and their preferred key name.
Option B: Bankr Terminal
- Visit bankr.bot/api
- Sign up / Sign in — Enter your email and the one-time passcode (OTP) sent to it
- Generate an API key — Create a key with Wallet & Agent API access enabled (the key starts with
bk_...)
Both options automatically provision EVM wallets (Base, Ethereum, Polygon, Unichain) and a Solana wallet — no manual wallet setup needed.
Option 1: Bankr CLI (Recommended)
Install
bun install -g @bankr/cli
Or with npm:
npm install -g @bankr/cli
First-Time Setup
Headless email login (recommended for agents)
When the user asks to log in with an email, walk them through this flow:
Step 1 — Send verification code
bankr login email <user-email>
Step 2 — Ask the user for the OTP code and all preferences in a single message. This avoids unnecessary back-and-forth. Ask for:
- OTP code — the code they received via email
- Accept Terms of Service (REQUIRED) — Present the Terms of Service link and confirm the user agrees. The login command will fail for new users without
--accept-terms. You MUST ask for ToS acceptance and do not pass--accept-termsunless the user has explicitly confirmed. - Which APIs do they need?
- Wallet API — enabled by default, use
--no-wallet-apito disable - Agent API (
--agent-api) — AI-powered prompts and natural language operations - Token Launch — enabled by default, use
--no-token-launchto disable - Add
--read-writeto allow transactions (without it, enabled APIs are read-only)
- Wallet API — enabled by default, use
- Enable LLM gateway access? (
--llm) — multi-model API atllm.bankr.bot(currently limited to beta testers). Skip if user doesn't need it. - Key name? (
--key-name) — a display name for the API key (e.g. "My Agent", "Trading Bot")
Step 3 — Construct and run the step 2 command with the user's choices. Do NOT execute if the user has not explicitly accepted the Terms of Service — ask again if needed:
# Full access: wallet + agent with write + LLM
bankr login email <user-email> --code <otp> --accept-terms --key-name "My Agent" --agent-api --read-write --llm
# Agent with write access (AI can execute transactions)
bankr login email <user-email> --code <otp> --accept-terms --key-name "Trading Agent" --agent-api --read-write
# Default key (wallet + token launch, read-only)
bankr login email <user-email> --code <otp> --accept-terms --key-name "My Key"
# Agent read-only (research, prices, balances — no transactions)
bankr login email <user-email> --code <otp> --accept-terms --key-name "Research Agent" --agent-api
# LLM-only (no wallet, no token launch)
bankr login email <user-email> --code <otp> --accept-terms --key-name "LLM Client" --no-wallet-api --no-token-launch --llm
Login options reference
| Option | Description |
|---|---|
--code <otp> |
OTP code received via email (step 2) |
--accept-terms |
Accept Terms of Service without prompting (required for new users) |
--key-name <name> |
Display name for the API key (e.g. "My Agent"). Prompted if omitted |
--no-wallet-api |
Disable Wallet API (enabled by default) |
--agent-api |
Enable Agent API (AI prompts, natural language operations) |
--read-write |
Disable read-only mode (allow transactions). Without this, enabled APIs are read-only |
--no-token-launch |
Disable Token Launch API (enabled by default) |
--llm |
Enable LLM gateway access (multi-model API at llm.bankr.bot). Currently limited to beta testers |
--allowed-ips <ips> |
Comma-separated IP allowlist for the API key |
--allowed-recipients <addresses> |
Comma-separated EVM/Solana addresses the key can send to (auto-classified by 0x prefix) |
New key defaults (when no flags are passed):
| Flag | Default | To change |
|---|---|---|
walletApiEnabled |
Enabled | --no-wallet-api |
agentApiEnabled |
Disabled | --agent-api |
tokenLaunchApiEnabled |
Enabled | --no-token-launch |
llmGatewayEnabled |
Disabled | --llm |
readOnly |
Enabled (read-only) | --read-write |
Any option not provided on the command line will be prompted interactively by the CLI, so you can mix headless and interactive as needed.
Login with existing API key
If the user already has an API key:
bankr login --api-key bk_YOUR_KEY_HERE
If they need to create one at the Bankr Terminal:
- Run
bankr login --url— prints the terminal URL - Present the URL to the user, ask them to generate a
bk_...key - Run
bankr login --api-key bk_THE_KEY
Separate LLM Gateway Key (Optional)
If your LLM gateway key differs from your API key, pass --llm-key during login or run bankr config set llmKey YOUR_LLM_KEY afterward. When not set, the API key is used for both. See references/llm-gateway.md for full details.
Verify Setup
bankr whoami
bankr wallet portfolio
bankr agent prompt "What is my balance?"
Option 2: REST API (Direct)
No CLI installation required — call the API directly with curl, fetch, or any HTTP client.
Authentication
All requests require an X-API-Key header:
curl -X POST "https://api.bankr.bot/agent/prompt" \
-H "X-API-Key: bk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "What is my ETH balance?"}'
Quick Example: Submit → Poll → Complete
# 1. Submit a prompt — returns a job ID
JOB=$(curl -s -X POST "https://api.bankr.bot/agent/prompt" \
-H "X-API-Key: $BANKR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "What is my ETH balance?"}')
JOB_ID=$(echo "$JOB" | jq -r '.jobId')
# 2. Poll until terminal status
while true; do
RESULT=$(curl -s "https://api.bankr.bot/agent/job/$JOB_ID" \
-H "X-API-Key: $BANKR_API_KEY")
STATUS=$(echo "$RESULT" | jq -r '.status')
[ "$STATUS" = "completed" ] || [ "$STATUS" = "failed" ] || [ "$STATUS" = "cancelled" ] && break
sleep 2
done
# 3. Read the response
echo "$RESULT" | jq -r '.response'
Conversation Threads
Every prompt response includes a threadId. Pass it back to continue the conversation:
# Start — the response includes a threadId
curl -X POST "https://api.bankr.bot/agent/prompt" \
-H "X-API-Key: $BANKR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "What is the price of ETH?"}'
# → {"jobId": "job_abc", "threadId": "thr_XYZ", ...}
# Continue — pass threadId to maintain context
curl -X POST "https://api.bankr.bot/agent/prompt" \
-H "X-API-Key: $BANKR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "And what about SOL?", "threadId": "thr_XYZ"}'
Omit threadId to start a new conversation. CLI equivalent: bankr agent prompt --continue (reuses last thread) or bankr agent prompt --thread <id>.
API Endpoints Summary
Wallet API (/wallet/*) — Direct endpoints (synchronous)
| Endpoint | Method | Auth | Description |
|---|---|---|---|
/wallet/me |
GET | Read | Wallet info (address, chains) |
/wallet/portfolio |
GET | Read | Portfolio balances, supports ?include=pnl,nfts for progressive loading |
/wallet/transfer |
POST | Write | Transfer tokens (multi-chain, supports allowedRecipients enforcement) |
/wallet/sign |
POST | Write | Sign messages, typed data, or transactions |
/wallet/submit |
POST | Write | Submit raw transactions to chain |
- Read endpoints (
/wallet/me,/wallet/portfolio) — any valid API key with a wallet - Write endpoints (
/wallet/transfer,/wallet/sign,/wallet/submit) — requirewalletApiEnabled,readOnlycheck, andallowedRecipientsenforcement - IP allowlist enforced on all endpoints
Agent API (/agent/*) — AI-powered endpoints (async)
| Endpoint | Method | Description |
|---|---|---|
/agent/prompt |
POST | Submit a prompt (async, returns job ID) |
/agent/job/{jobId} |
GET | Check job status and results |
/agent/job/{jobId}/cancel |
POST | Cancel a running job |
Deprecated endpoints
The following /agent/* endpoints still work but are deprecated in favor of /wallet/*:
| Deprecated | Use Instead |
|---|---|
GET /agent/me |
GET /wallet/me |
GET /agent/balances |
GET /wallet/portfolio |
POST /agent/sign |
POST /wallet/sign |
POST /agent/submit |
POST /wallet/submit |
For full API details (request/response schemas, job states, rich data, polling strategy), see:
Reference: references/api-workflow.md | references/sign-submit-api.md
CLI Command Reference (v0.2.0)
CLI 0.2.0 organizes commands into three namespaces: wallet, agent, and tokens. Old flat commands (balances, prompt, status, etc.) still work as deprecated aliases.
bankr wallet — Wallet Operations
| Command | Description |
|---|---|
bankr wallet |
Show wallet info (default: whoami) |
bankr wallet portfolio |
Portfolio balances across all chains (hides tokens under $1 by default) |
bankr wallet portfolio --pnl |
Include profit/loss data |