Manages OKX Simple Earn (flexible savings/lending), Flash Earn, On-chain Earn (staking/DeFi), Dual Investment (DCD/双币赢), and AutoEarn (自动赚币) via the okx CLI.…
OKX CEX Earn CLI
Preflight
Before running any command, follow ../_shared/preflight.md.
Use metadata.version from this file's frontmatter as the reference for Step 2.
Prerequisites
Install okx CLI:
npm install -g @okx_ai/okx-trade-cli
Configure credentials:
okx config init # select site -> follow browser OAuth flow
Verify: okx earn savings balance
Security: NEVER accept credentials in chat. Guide users to okx config init for setup.
Credential & Profile Check
Run both commands before any authenticated command — the apiKey field from okx auth status --json is the auth-binary's internal state and is always false regardless of whether ~/.okx/config.toml has an API-key profile. okx config show --json is the only authoritative source for API-key presence. The auth method is detected during preflight Step 2 and remembered for the session.
okx config show --json # reveals API-key profiles (TOML config)
okx auth status --json # reveals OAuth session state (auth-binary state)
Apply in this order — first match wins:
config show --json has any profile with a non-empty api_key field → API Key mode. Proceed.
No API-key profile AND auth status --json returns "status":"logged_in" → OAuth mode. Proceed.
No API-key profile AND "status":"pending" — login is in progress, wait for it to complete.
No API-key profile AND "status":"not_logged_in" — stop, load okx-cex-auth skill and follow login steps, wait for completion.
OKX Earn does not support demo mode. Always use live mode silently — don't mention it unless there's an error.
API Key users: use --profile <live-profile> (the profile without demo=true).
OAuth users: no flag needed (live is the default).
On authentication errors (401 / "Session expired" / "Run okx auth login first"): stop immediately, load okx-cex-auth skill and follow re-authentication steps, then retry.
Skill Routing
User intent
Route to skill
Market prices, tickers, candles
okx-cex-market
Spot / swap / futures / options orders
okx-cex-trade
Account balance, positions, transfers
okx-cex-portfolio
Grid / DCA trading bots
okx-cex-bot
Simple Earn, Flash Earn, On-chain Earn, Dual Investment (双币赢), or AutoEarn (自动赚币)
This skill
Command Index
earn savings — Simple Earn (9 commands)
Command
Type
Auth
Description
earn savings balance [ccy]
READ
Required
Savings balance (all or specific currency). Also fetch fixed-term orders for a complete picture.
earn savings purchase --ccy --amt [--rate]
WRITE
Required
Subscribe funds to Simple Earn (活期)
earn savings redeem --ccy --amt
WRITE
Required
Redeem funds from Simple Earn (活期)
earn savings set-rate --ccy --rate
WRITE
Required
Set minimum lending rate
earn savings lending-history
READ
Required
User's personal lending records with earnings detail
earn savings rate-history
READ
Required
Simple Earn lending rates and fixed-term offers (require auth)
earn savings fixed-orders [--ccy] [--state]
READ
Required
Query fixed-term (定期) orders. States: pending/earning/expired/settled/cancelled
earn savings fixed-purchase --ccy --amt --term [--confirm]
WRITE
Required
Subscribe to Simple Earn Fixed (定期). Without --confirm: preview only
earn savings fixed-redeem <reqId>
WRITE
Required
Redeem a fixed-term order (full amount). Only pending state orders can be redeemed early
For full command syntax, rate field semantics, and confirmation templates, read {baseDir}/references/savings-commands.md.
earn dcd — Dual Investment / 双币赢 (6 commands)
Command
Type
Auth
Description
earn dcd pairs
READ
Required
Available DCD currency pairs
earn dcd products
READ
Required
Active products with filters
earn dcd quote-and-buy --productId --sz --notionalCcy
WRITE
Required
Atomic subscribe: quote + execute in one step
earn dcd order --ordId
READ
Required
Quick state check for a single order
earn dcd orders
READ
Required
Full order list / history
earn dcd redeem-execute --ordId
WRITE
Required
Two-step early redemption: preview then execute
DCD does not support demo/simulated trading mode. Always use live mode (API Key: --profile <live-profile>; OAuth: no flag needed).
For full command syntax, product concepts, and error codes, read {baseDir}/references/dcd-commands.md.
earn onchain — On-chain Earn (6 commands)
Command
Type
Auth
Description
earn onchain offers
READ
Required
Available staking/DeFi products
earn onchain purchase --productId --ccy --amt
WRITE
Required
Subscribe to on-chain product
earn onchain redeem --ordId --protocolType
WRITE
Required
Redeem on-chain investment
earn onchain cancel --ordId --protocolType
WRITE
Required
Cancel pending on-chain order
earn onchain orders
READ
Required
Active on-chain orders
earn onchain history
READ
Required
Historical on-chain orders
For full command syntax and parameters, read {baseDir}/references/onchain-commands.md.
earn auto-earn — AutoEarn / 自动赚币 (3 commands)
Command
Type
Auth
Description
earn auto-earn status [CCY]
READ
Required
Query currencies supporting auto-earn and their status
earn auto-earn on <CCY>
WRITE
Required
Enable auto-earn for a currency
earn auto-earn off <CCY>
WRITE
Required
Disable auto-earn for a currency
24h restriction: Cannot disable within 24 hours of enabling (API hard limit). Always warn user before enabling.
For full command syntax, earnType inference rules, and MCP tool reference, read {baseDir}/references/autoearn-commands.md.
earn flash-earn — Flash Earn / 闪赚 (1 command)
Command
Type
Auth
Description
earn flash-earn projects [--status <0|100|0,100>]
READ
Required
Browse Flash Earn projects by status. 0=upcoming, 100=in-progress, default is both
Operation Flow
Step 0 — Credential & Profile Check
Before any authenticated command: see Credential & Profile Check. Always use live mode silently.
Step 1 — Identify earn intent
Simple Earn Flexible (活期):
Query balance / history / rates → READ command, proceed directly.
Subscribe / redeem / set-rate → WRITE command, go to Step 2.
Simple Earn Fixed (定期):
Query offers / order list → READ command, proceed directly.
Subscribe (two-step: preview then confirm) / redeem (pending state only) → WRITE command, go to Step 2. Read {baseDir}/references/savings-commands.md for pre-execution checklists and confirmation templates.
For multi-step workflows (subscribe with preview, early redemption), read {baseDir}/references/workflows.md.
On-chain Earn:
Query offers / orders / history → READ command, proceed directly.
Purchase / redeem / cancel → WRITE command, go to Step 2.
AutoEarn (自动赚币):
Query auto-earn status → READ, proceed directly.
Enable / disable auto-earn → WRITE, go to Step 2. Read {baseDir}/references/autoearn-commands.md for confirmation templates and earnType inference.
Flash Earn (闪赚):
Browse projects → READ, proceed directly.
Use --status 0 for upcoming projects, --status 100 for in-progress projects, or omit the flag to view both.
When user asks to view "earn positions" or "赚币持仓" (regardless of whether they mention DCD explicitly), query all position-bearing sub-modules simultaneously (Flash Earn is query-only, no positions):
okx earn savings balance --json # Simple Earn Flexible (活期)
okx earn savings fixed-orders --json # Simple Earn Fixed (定期)
okx earn onchain orders --json # On-chain Earn
okx earn dcd orders --json # Dual Investment (双币赢)
Only present sections that have actual holdings. For DCD: translate state codes using the table in {baseDir}/references/dcd-commands.md.
Dual Investment (DCD / 双币赢):
Browse products / pairs → READ; when user specifies a currency, read {baseDir}/references/workflows.md (DCD browse flow) for the mandatory parallel pre-fetch before rendering the product table
Subscribe (quote-and-buy) → WRITE → see {baseDir}/references/workflows.md (DCD subscribe flow)
Early redeem → WRITE → see {baseDir}/references/workflows.md (DCD early redeem flow)
For multi-step workflows (idle fund analysis, subscribe + verify, redeem + transfer, on-chain subscribe), read {baseDir}/references/workflows.md.
Step 2 — Confirm write operation
For all WRITE commands, present a summary and wait for explicit confirmation.
"just do it" / "直接搞" is NOT valid confirmation — the user must see the summary first.
For Simple Earn confirmation dialog format, read {baseDir}/references/savings-commands.md. For On-chain confirmation, read {baseDir}/references/onchain-commands.md.
Step 3 — Execute and verify
After any purchase, verify based on product type:
DCD quote-and-buy succeeded → run earn dcd orders --json, show only the matching order.
On-chain purchase (response contains ordId) → run earn onchain orders --json, show only the matching order.
Simple Earn Flexible purchase (no ordId in response) → run earn savings balance --ccy <ccy> --json.
Simple Earn Fixed purchase → run earn savings fixed-orders --ccy <ccy> --state pending --json, show the new order.
Simple Earn Flexible purchase: Run in parallel — earn savings balance --ccy <ccy> and earn savings rate-history --ccy <ccy> --limit 1 --json. For output format, read {baseDir}/references/savings-commands.md.
Simple Earn Flexible redeem: Run earn savings balance --ccy <ccy> to confirm updated balance. Inform user funds returned to funding account.
Simple Earn Fixed purchase: Run earn savings fixed-orders --ccy <ccy> --state pending --json to confirm the order was created. Show order details including APR, term, and expected expiry date.
Simple Earn Fixed redeem: Run earn savings fixed-orders --json to confirm the order state changed to cancelled. Inform user full principal returned to funding account — no interest earned for early cancellation.
On-chain redeem: Query earn onchain orders to confirm state. Show estSettlementTime as estimated arrival time.
On-chain cancel: Query earn onchain orders after submission:
Order gone from list → inform user: cancellation complete, funds returned to funding account.
state: 3 (cancelling) → inform user: cancellation in progress, funds will return to funding account shortly.
Global Notes
Security: Never ask users to paste API keys or secrets into chat.
Output: Always pass --json to list/query commands and render results as a Markdown table — never paste raw terminal output.
Network errors: If commands fail with a connection error, prompt user to check VPN: curl -I https://www.okx.com
Language: Always respond in the user's language.
For number/time formatting and response structure conventions, read {baseDir}/references/templates.md.don't have the plugin yet? install it then click "run inline in claude" again.