okx-cex-earn

Originally fromokx/agent-skills
Installation
SKILL.md

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

  1. Install okx CLI:
    npm install -g @okx_ai/okx-trade-cli
    
  2. Configure credentials:
    okx config init   # select site -> follow browser OAuth flow
    
  3. 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.

Weekly Installs
17
GitHub Stars
265
First Seen
1 day ago