Install
openclaw skills install xxyy-trade-skillThis skill should be used when the user asks to "buy token", "sell token", "swap token", "trade crypto", "check trade status", "query transaction", "scan tokens", "feed", "monitor chain", "query token", "token details", "check token safety", "list wallets", "show wallets", "my wallets", "AI scan", "AI扫链", "auto scan", "smart scan", "tweet scan", "推文扫链", "twitter scan", "onboarding", "get started", "check IP", "get IP", "IP whitelist", "查IP", "IP白名单", "launch token", "create token", "发币", "创建代币", or mentions trading on Solana/ETH/BSC/Base chains via XXYY. Enables on-chain token trading and data queries through the XXYY Open API.
openclaw skills install xxyy-trade-skillOn-chain token trading and data queries on Solana, Ethereum, BSC, and Base via XXYY Open API.
Set environment variables before use:
XXYY_API_KEY (required) -- Your XXYY Open API Key (format: xxyy_ak_xxxx). Get one at https://www.xxyy.io/apikeyXXYY_API_BASE_URL (optional) -- API base URL, defaults to https://www.xxyy.ioAll requests require header: Authorization: Bearer $XXYY_API_KEY
get_ip tool to check your current outbound IP before setting up the whitelist.STRICT: Only the endpoints listed below exist. Do NOT guess, infer, or construct any URL that is not explicitly documented here. If you need functionality not covered below, tell the user it is not supported.
Complete endpoint list:
POST /api/trade/open/api/swap— Buy / SellGET /api/trade/open/api/trade— Query TradeGET /api/trade/open/api/ping— PingPOST /api/trade/open/api/feed/{type}— Feed ScanGET /api/trade/open/api/query— Token QueryGET /api/trade/open/api/wallets— List WalletsGET /api/trade/open/api/wallet/info— Wallet InfoGET /api/trade/open/api/pnl— PNL QueryGET /api/trade/open/api/trades— Trade HistoryGET /api/trade/open/api/ip— Get IP (exempt from IP whitelist)GET /api/trade/open/api/kol-buy-list— KOL Buy ListGET /api/trade/open/api/tag-holder-buy-list— Tag Holder Buy ListGET /api/trade/open/api/label-list— Label List (tokens with specific labels, SOL only)POST /api/trade/open/api/signal-list— Signal List (AI trending signals, SOL/BSC)POST /api/trade/open/api/trending-list— Trending List (hot tokens by period, SOL/BSC)POST /api/trade/open/api/{chain}/launch— Launch Token (create new token, SOL/BSC)
POST ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/swap
{
"chain": "sol",
"walletAddress": "<user_wallet>",
"tokenAddress": "<token_contract>",
"isBuy": true,
"amount": 0.1,
"tip": 0.001,
"slippage": 20
}
| Param | Required | Type | Valid values | Description |
|---|---|---|---|---|
chain | YES | string | sol / eth / bsc / base | Only these 4 values accepted |
walletAddress | YES | string | SOL: Base58 32-44 chars; EVM: 0x+40hex | Wallet address on XXYY platform, must match chain |
tokenAddress | YES | string | Valid contract address | Token contract address to buy |
isBuy | YES | boolean | true | Must be true for buy |
amount | YES | number | > 0 | Amount in native currency (SOL/ETH/BNB) |
tip | YES | number | SOL: 0.001-0.1 (unit: SOL); EVM: 0.1-100 (unit: Gwei) | Priority fee for all chains. If not provided, falls back to priorityFee |
slippage | NO | number | 0-100 | Slippage tolerance %, default 20 |
model | NO | number | 1 or 2 | 1=anti-sandwich (default), 2=fast mode |
priorityFee | NO | number | >= 0 | Solana chain only. Extra priority fee in addition to tip |
POST ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/swap
{
"chain": "sol",
"walletAddress": "<user_wallet>",
"tokenAddress": "<token_contract>",
"isBuy": false,
"amount": 50,
"tip": 0.001
}
| Param | Required | Type | Valid values | Description |
|---|---|---|---|---|
chain | YES | string | sol / eth / bsc / base | Only these 4 values accepted |
walletAddress | YES | string | SOL: Base58 32-44 chars; EVM: 0x+40hex | Wallet address on XXYY platform, must match chain |
tokenAddress | YES | string | Valid contract address | Token contract address to sell |
isBuy | YES | boolean | false | Must be false for sell |
amount | YES | number | 1-100 | Sell percentage. Example: 50 = sell 50% of holdings |
tip | YES | number | SOL: 0.001-0.1 (unit: SOL); EVM: 0.1-100 (unit: Gwei) | Priority fee for all chains. If not provided, falls back to priorityFee |
slippage | NO | number | 0-100 | Slippage tolerance %, default 20 |
model | NO | number | 1 or 2 | 1=anti-sandwich (default), 2=fast mode |
priorityFee | NO | number | >= 0 | Solana chain only. Extra priority fee in addition to tip |
tip (required) -- Universal priority fee for ALL chains. EVM chains (eth/bsc/base) use tip as the priority fee. If tip is not provided, the API falls back to priorityFee.
priorityFee (optional) -- Only effective on Solana chain. Solana supports both tip and priorityFee simultaneously.GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/trade?txId=<tx_id>
Response fields: txId, status (pending/success/failed), statusDesc, chain, tokenAddress, walletAddress, isBuy, baseAmount, quoteAmount
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/trades?walletAddress=<wallet>&chain=<chain>
Paginated query of successful trade records for a specific wallet. Only returns completed transactions, sorted by creation time (newest first).
| Param | Required | Type | Valid values | Description |
|---|---|---|---|---|
walletAddress | YES | string | Wallet address | Must belong to current API Key user |
chain | YES | string | sol / eth / bsc / base | Chain identifier (required) |
tokenAddress | NO | string | Contract address | Filter by specific token |
pageNum | NO | int | >= 1 | Page number, default 1 |
pageSize | NO | int | 1-20 | Items per page, default 20 |
{
"code": 200,
"data": {
"pageNum": 1,
"pageSize": 10,
"total": 56,
"list": [
{
"txId": "5xYz...",
"status": 2,
"statusDesc": "success",
"chain": "sol",
"tokenAddress": "EPjF...",
"walletAddress": "5xYz...",
"isBuy": 1,
"baseAmount": 0.5,
"quoteAmount": 1000,
"createTime": "2026-03-18T10:00:00",
"updateTime": "2026-03-18T10:00:05"
}
]
}
}
Response fields: txId, status (fixed 2=success), statusDesc, chain, tokenAddress, walletAddress, isBuy (1=buy, 0=sell), baseAmount, quoteAmount, createTime, updateTime
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/ping
Returns "pong" if API key is valid.
POST ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/feed/{type}?chain={chain}
Retrieve Meme token lists: newly launched, almost graduated, or graduated.
| Param | Required | Type | Valid values | Description |
|---|---|---|---|---|
type | YES | path string | NEW / ALMOST / COMPLETED | NEW = newly launched, ALMOST = almost graduated, COMPLETED = graduated |
chain | NO | query string | sol / bsc | Only these 2 chains supported. Default sol |
All filters are optional. Range parameters use comma-separated string format "min,max". Leave one side empty to set only min or max (e.g. "100," = min 100, ",50" = max 50).
| Param | Type | Description | Example |
|---|---|---|---|
dex | string[] | DEX platform filter | See DEX Values by Chain below |
quoteTokens | string[] | Quote token filter | See quoteTokens Values by Chain below |
link | string[] | Social media link filter | ["x","tg","web"] |
keywords | string[] | Token name/symbol keyword match | ["pepe","doge"] |
ignoreWords | string[] | Ignore keywords | ["scam"] |
mc | string | Market cap range (USD) | "10000,500000" |
liq | string | Liquidity range (USD) | "1000," |
vol | string | Trading volume range (USD) | "5000,100000" |
holder | string | Holder count range | "50," |
createTime | string | Creation time range (minutes from now) | "1,20" |
tradeCount | string | Trade count range | "100," |
buyCount | string | Buy count range | "50," |
sellCount | string | Sell count range | "10," |
devBuy | string | Dev buy amount range (native token) | "0.001," |
devSell | string | Dev sell amount range (native token) | "0.001," |
devHp | string | Dev holding % range | ",60" |
topHp | string | Top10 holding % range | ",60" |
insiderHp | string | Insider holding % range | ",50" |
bundleHp | string | Bundle holding % range | ",60" |
newWalletHp | string | New wallet holding % range | ",30" |
progress | string | Graduation progress % range (NEW/ALMOST only) | "1,90" |
snipers | string | Sniper count range | ",5" |
xnameCount | string | Twitter rename count range | ",3" |
tagHolder | string | Watched wallet buy count range | "1,2" |
kol | string | KOL buy count range | "1,2" |
dexPay | int | DexScreener paid, 1 = filter paid only | 1 |
oneLink | int | At least one social link, 1 = enabled | 1 |
live | int | Currently live streaming, 1 = filter live | 1 |
pump, pumpmayhem, bonk, heaven, believe, daosfun, launchlab, mdbc, jupstudio, mdbcbags, trends, moonshotn, boop, moon, timefour, four_agent, bnonly, flapsol, usdc, usd1bnb, usdt, usdc, usd1, aster, u{
"code": 200,
"msg": "success",
"data": {
"items": [
{
"tokenAddress": "...",
"symbol": "TOKEN",
"name": "Token Name",
"createTime": 1773140232851,
"dexName": "PUMPFUN",
"launchPlatform": { "name": "PUMPFUN", "progress": "12.89", "completed": false },
"holders": 3,
"priceUSD": 0.000003046,
"marketCapUSD": 3046.80,
"devHoldPercent": 12.48,
"hasLink": false,
"snipers": 0,
"quoteToken": "sol"
}
]
},
"success": true
}
Key response fields: tokenAddress, symbol, name, createTime, dexName, launchPlatform (name/progress/completed), holders, priceUSD, marketCapUSD, devHoldPercent, hasLink, snipers, volume, tradeCount, buyCount, sellCount, topHolderPercent, insiderHp, bundleHp
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/query?ca={contract_address}&chain={chain}
Query token details: price, security checks, tax rates, holder distribution, etc.
| Param | Required | Type | Valid values | Description |
|---|---|---|---|---|
ca | YES | string | Contract address | Token contract address |
chain | NO | string | sol / eth / bsc / base | Default sol. All 4 chains supported |
{
"code": 200,
"msg": "success",
"data": {
"chainId": "bsc",
"tokenAddress": "0x...",
"baseSymbol": "TOKEN",
"tradeInfo": {
"marketCapUsd": 15464629.87,
"price": 0.01546,
"holder": 7596,
"hourTradeNum": 20611,
"hourTradeVolume": 2564705.05
},
"pairInfo": {
"pairAddress": "0x...",
"pair": "TOKEN - WBNB",
"liquidateUsd": 581750.57,
"createTime": 1772182240000
},
"securityInfo": {
"honeyPot": false,
"openSource": true,
"noOwner": true,
"locked": true
},
"taxInfo": { "buy": "0", "sell": "0" },
"linkInfo": { "tg": "", "x": "", "web": "" },
"dev": { "address": "0x...", "pct": 0.0 },
"topHolderPct": 25.14,
"topHolderList": [
{ "address": "0x...", "balance": 98665702.34, "pct": 9.86 }
]
},
"success": true
}
Response groups:
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/wallets
Query the current user's wallet list (with balances) for a specific chain.
| Param | Required | Type | Valid values | Description |
|---|---|---|---|---|
chain | NO | string | sol / eth / bsc / base | Default sol |
pageNum | NO | int | >= 1 | Page number, default 1 |
pageSize | NO | int | 1-20 | Items per page, default 20 |
tokenAddress | NO | string | Contract address | Returns token holdings per wallet |
{
"code": 200,
"msg": "success",
"data": {
"totalCount": 3,
"pageSize": 20,
"totalPage": 1,
"currPage": 1,
"list": [
{
"userId": 12345,
"chain": 1,
"name": "Wallet-1",
"address": "5xYz...abc",
"balance": 1.523456789,
"topUp": 1,
"tokenBalance": null,
"createTime": "2025-01-01 00:00:00",
"updateTime": "2025-06-01 12:00:00",
"isImport": false
}
]
},
"success": true
}
Response fields:
tokenAddress is provided). Contains amount, decimals, uiAmount, uiAmountString| Code | Chain |
|---|---|
| 1 | SOL |
| 2 | BSC |
| 3 | ETH |
| 6 | BASE |
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/wallet/info
Query a single wallet's details (native balance + optional token balance).
| Param | Required | Type | Valid values | Description |
|---|---|---|---|---|
walletAddress | YES | string | Wallet address | EVM chains are case-insensitive |
chain | NO | string | sol / eth / bsc / base | Default sol |
tokenAddress | NO | string | Contract address | Returns token holdings for this token |
{
"code": 200,
"msg": "success",
"data": {
"address": "5xY...abc",
"name": "MyWallet",
"chain": 1,
"isImport": false,
"topUp": 0,
"balance": 1.234567,
"tokenBalance": {
"amount": "1000000",
"uiAmount": 1.0,
"decimals": 6
}
},
"success": true
}
Response fields:
tokenAddress is provided. Contains amount, uiAmount, decimalsGET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/pnl?walletAddress=<wallet>&tokenAddress=<token>&chain=<chain>
Query PNL (profit and loss) data for a specific wallet-token pair. Returns buy/sell totals, current holdings, and profit in both native currency and USD. Covers the last 30 days.
| Param | Required | Type | Valid values | Description |
|---|---|---|---|---|
walletAddress | YES | string | Wallet address | Must belong to current API Key user |
tokenAddress | YES | string | Contract address | Token contract address |
chain | YES | string | sol / eth / bsc / base | Chain identifier (required) |
{
"code": 200,
"data": {
"wallet": "5xYz...",
"tokenMint": "EPjF...",
"balance": 1.5,
"buy": 2.0,
"sell": 0.8,
"hold": 1.2,
"pnl": 0.5,
"pnlusd": 75.0,
"holdTokenNum": 1000,
"holdTokenPercent": 0.05,
"lastTradeTime": 1710000000000,
"meta": {
"symbol": "TOKEN",
"dexId": "raydium",
"pairAddress": "xxx"
}
}
}
Response fields:
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/ip
Get the current outbound IP address of this server. Use this to check which IP to add to your API Key's whitelist. This endpoint is exempt from IP whitelist restrictions — it will work even if your IP is not whitelisted.
No parameters required.
{
"code": 200,
"data": {
"ip": "203.0.113.42"
},
"success": true
}
Response fields:
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/kol-buy-list?chain={chain}
Get KOL (Key Opinion Leader) recent buy list. Shows tokens recently purchased by influential traders.
| Param | Required | Type | Valid values | Description |
|---|---|---|---|---|
chain | NO | string | sol / bsc | Default sol. Only SOL and BSC supported |
{
"code": 200,
"msg": "success",
"data": [
{
"tokenMeta": {
"symbol": "TOKEN",
"dexId": "pump",
"dexIcon": "https://...",
"imageUrl": "https://...",
"pairAddress": "PairAddress...",
"mint": "TokenMintAddress..."
},
"priceNative": 0.0000001,
"priceUsd": 0.0000085,
"marketCap": 8500.0,
"priceChange24h": 15.0,
"walletBuyCnt": 2,
"lastTradeTime": 1711234567890,
"holder": 120,
"volumeNative": 5000.0,
"volumeUSD": 5000.0,
"walletBuyItemList": [
{
"wallet": "KolWalletAddress...",
"walletName": "KOL Name",
"walletBuyAmount": 1.5
}
]
}
]
}
Response fields:
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/tag-holder-buy-list?chain={chain}
Get tag holder (Smart Money, Whale, etc.) recent buy list. Shows tokens recently purchased by tagged wallets.
| Param | Required | Type | Valid values | Description |
|---|---|---|---|---|
chain | NO | string | sol / bsc | Default sol. Only SOL and BSC supported |
{
"code": 200,
"msg": "success",
"data": [
{
"tokenMeta": {
"symbol": "TOKEN",
"dexId": "pump",
"dexIcon": "https://...",
"imageUrl": "https://...",
"pairAddress": "PairAddress...",
"mint": "TokenMintAddress..."
},
"priceNative": 0.0000001,
"priceUsd": 0.0000085,
"marketCap": 8500.0,
"priceChange24h": -5.0,
"walletBuyCnt": 1,
"lastTradeTime": 1711234567890,
"holder": 250,
"volumeNative": 12000.0,
"volumeUSD": 12000.0,
"walletBuyItemList": [
{
"wallet": "HolderWalletAddress...",
"walletName": "Smart Money",
"walletBuyAmount": 2.5
}
]
}
]
}
Response fields:
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/label-list?chain={chain}&labelType={labelType}
Get tokens with specific labels (e.g., AGENT_KOL marked tokens). Currently only supports Solana chain.
| Param | Required | Type | Valid values | Description |
|---|---|---|---|---|
chain | NO | string | sol / bsc | Default sol. Supports SOL and BSC |
labelType | NO | string | AGENT_KOL | Default AGENT_KOL. Currently only AGENT_KOL supported |
{
"code": 200,
"msg": "success",
"data": [
{
"pairAddress": "PairAddress...",
"dexId": "raydium",
"dexName": "Raydium",
"symbol": "TOKEN",
"name": "Token Name",
"tokenAddress": "TokenAddress...",
"imageUrl": "https://...",
"priceUSD": "0.00123",
"marketCapUSD": "123456.78",
"priceChange24H": "15.5",
"launchFrom": "pump",
"links": {
"tg": "https://t.me/...",
"x": "https://x.com/...",
"web": "https://..."
}
}
],
"success": true
}
Response fields:
POST ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/signal-list?type={type}&chain={chain}
Get AI trend signal list (e.g., open-ai-trending tokens). Supports SOL and BSC chains.
| Param | Required | Type | Valid values | Description |
|---|---|---|---|---|
type | NO | string | open-ai-trending | Default open-ai-trending. Currently only open-ai-trending supported |
chain | NO | string | sol / bsc | Default sol. Supports SOL and BSC |
Request body: Empty JSON object {}
{
"code": 200,
"msg": "success",
"data": [
{
"pairAddress": "PairAddress...",
"dexId": "raydium",
"dexName": "Raydium",
"symbol": "TOKEN",
"name": "Token Name",
"tokenAddress": "TokenAddress...",
"imageUrl": "https://...",
"priceUSD": "0.00456",
"marketCapUSD": "456789.12",
"priceChange24H": "-5.2",
"launchFrom": "pump",
"links": {
"tg": "https://t.me/...",
"x": "https://x.com/...",
"web": "https://..."
}
}
],
"success": true
}
Response fields: Same as Label List (see above)
POST ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/trending-list?chain={chain}
Get trending/hot token list. Shows the most active tokens within a given time period. Supports SOL and BSC chains.
| Param | Required | Type | Valid values | Description |
|---|---|---|---|---|
chain | NO | string | sol / bsc | Default sol. Only SOL and BSC supported |
period | YES | string | 1M / 5M / 30M / 1H / 6H / 24H | Time period for trending. Not all periods available for all internal categories |
Request body:
{ "period": "5M" }
{
"code": 200,
"msg": "success",
"data": [
{
"imageUrl": "https://...",
"createTime": "1774581395318",
"symbol": "TOKEN",
"name": "Token Name",
"dexId": "pfamm",
"headerImage": "https://...",
"pairAddress": "PairAddress...",
"tokenAddress": "TokenMintAddress...",
"priceUSD": "0.00005670",
"priceChange24H": "98.00",
"launchPlatform": {
"name": "PUMP",
"progress": 85,
"completed": false,
"launchedPair": null
},
"dexName": "Pump AMM",
"dexIcon": "https://...",
"marketCapUSD": "56708.41",
"links": { "tg": "", "x": "https://x.com/...", "web": "" },
"security": {
"mintAuthority": { "value": false, "passed": true },
"freezeAuthority": { "value": false, "passed": true },
"topHolder": { "value": 18.61, "passed": false },
"lpBurned": { "value": 100.0, "passed": true }
},
"holders": 641,
"devHoldPercent": "0.0000000000000",
"smartWallets": { "total": 3, "records": [{ "wallet": "...", "action": "buy", "nativeAmount": "1.5" }] },
"sourceDexIcon": "https://...",
"launchFrom": "pump",
"extendFlags": { "live": false },
"volume": 142092.91,
"liquid": 20995.35,
"buyCount": 2123,
"sellCount": 1620,
"auditInfo": {
"devHp": 0,
"snipers": 20,
"insiderHp": 0,
"newHp": 10.63,
"bundleHp": 0,
"dexPaid": true
}
}
]
}
Response fields:
POST ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/{chain}/launch
Launch (create) a new token on SOL or BSC chain. Optionally buy an initial amount of the newly created token.
| Param | Required | Type | Valid values | Description |
|---|---|---|---|---|
chain | YES | string | sol / bsc | Only SOL and BSC supported |
| Param | Required | Type | Description |
|---|---|---|---|
walletAddress | YES | string | Wallet address (must belong to the API Key's account) |
name | YES | string | Token name |
symbol | YES | string | Token symbol |
buyAmount | NO | string | Native token amount for initial buy. "0" = create only. Default: "0" |
solOptions | Sol only | object | Solana chain specific options (see below) |
bscOptions | BSC only | object | BSC chain specific options (see below) |
buyAmount Limits:
| Param | Required | Type | Default | Description |
|---|---|---|---|---|
uri | YES | string | - | Metadata JSON URI (Metaplex standard, containing name/symbol/description/image) |
slippage | NO | integer | 100 | Slippage in basis points. 100 = 1%. Only effective when buyAmount > 0 |
priorityFee | NO | long | 100000 | Priority fee in lamports |
tipFee | NO | long | 100000 | Tip fee in lamports |
model | NO | integer | 1 | 1 = MEV protection, 2 = fast mode |
creator | NO | string | null | Creator address (base58). Defaults to signing wallet |
mayhemMode | NO | boolean | false | Pump mayhem mode |
cashback | NO | boolean | false | Pump cashback |
Platform fee (1%) is charged automatically when buyAmount > 0, not configurable.
| Param | Required | Type | Default | Description |
|---|---|---|---|---|
desc | YES | string | - | Token description |
image | YES | string | - | Image URL / base64 / data URI (≤5MB) |
label | NO | string | "Meme" | Category: Meme, AI, Defi, Games, Infra, De-Sci, Social, Depin, Charity, Others |
gasPrice | NO | string | null | Custom gas price (wei). Auto-fetched if not provided |
model | NO | integer | 1 | 1 = MEV protection (bundle), 2 = fast mode |
feePlan | NO | boolean | false | Fee plan toggle |
webUrl | NO | string | "" | Website URL |
twitterUrl | NO | string | "" | Twitter URL |
telegramUrl | NO | string | "" | Telegram URL |
tokenTaxInfo | NO | object | null | Token tax configuration (see below) |
| Param | Required | Type | Description |
|---|---|---|---|
feeRate | YES | integer | Trading fee rate. Fixed options: 1, 3, 5, 10 (representing 1%-10%) |
burnRate | YES | integer | Burn rate (0-100) |
divideRate | YES | integer | Dividend distribution rate (0-100) |
liquidityRate | YES | integer | Liquidity pool rate (0-100) |
recipientRate | YES | integer | Recipient allocation rate (0-100) |
minSharing | Conditional | long | Min token amount for dividend participation (in ether). Required when divideRate > 0. Format: d × 10^n (n≥5, 1≤d≤9) |
recipientAddress | Conditional | string | Recipient address (0x...). Required when recipientRate > 0 |
Constraint: burnRate + divideRate + liquidityRate + recipientRate must equal 100.
Success:
{
"code": 200,
"msg": "success",
"data": {
"txHash": "transaction hash or signature",
"tokenAddress": "newly created token address",
"success": true
},
"success": true
}
On-chain execution failed:
{
"code": 200,
"msg": "success",
"data": {
"txHash": "transaction hash or signature",
"tokenAddress": null,
"success": false
},
"success": true
}
| Code | Message | Description |
|---|---|---|
| 8004 | wrong_parameter | Missing or invalid required fields |
| 8006 | insufficient_balance | Wallet balance below minimum |
| 8060 | api_key_invalid | Invalid API Key |
| 8062 | api_key_rate_limited | QPS limit exceeded |
| 8106 | open_api_launch_chain_not_supported | Chain not supported (only sol/bsc) |
| 8107 | open_api_launch_buy_amount_exceed | buyAmount exceeds max (SOL: 100, BSC: 20) |
| 8108 | open_api_launch_failed | Node service call failed |
| 9006 | wallet_not_exists | Wallet not found or not owned by current account |
chain must be one of sol/eth/bsc/baseisBuy must be boolean true or falseamount for buy: must be > 0; for sell: must be 1-100tip must be provided; SOL chain: 0.001-0.1 (unit: SOL); EVM chains: 0.1-100 (unit: Gwei). If tip is outside the recommended range, must warn the user about potentially high cost and require explicit confirmation before proceedingmodel if provided must be 1 or 2priorityFee if provided only applies to Solana chainNEW, ALMOST, COMPLETED (uppercase). Reject any other value.sol and bsc. If user specifies eth or base, reject and inform them that Feed scanning is only available on Solana and BSC chains.tokenAddress — only display newly appeared tokenstokenAddress set to avoid repeatscode == 200 with success == true means success; code == 300 is server error (inform user to retry later); code == 8060/8061 means stop immediately; code == 8062 means wait 2 seconds and retry.ca) must be provided. If missing, ask user for it.sol, eth, bsc, base. Default sol.securityInfo.honeyPot == true, display a prominent warning that this token is a honeypot and trading it is extremely risky.taxInfo.buy or taxInfo.sell > 5%, warn user about high tax rates.sol.tokenAddress to show per-wallet balance.Trigger: Automatically execute once when the skill is first activated in a session. Run only once per session.
$XXYY_API_KEY is set in the environment.export XXYY_API_KEY=xxyy_ak_xxxxsol, eth, bsc, base) via List Wallets API. For each chain, pick the index-0 wallet as the default; if no wallet exists, show "N/A". Display:
修改默认钱包 {chain} {wallet name or address} to change defaultsWhen user says "修改默认钱包 {chain} {wallet name or address}":
If the user sends an action command (e.g., buy/sell/scan) before onboarding completes, silently finish the detection in the background and proceed to handle their command directly.
These rules apply to all three strategies below.
Trigger: User provides a token contract address with buy/sell intent (e.g., "买 0x... 0.1 BNB", "sell 50% of ...").
0x prefix → EVM chain. If the specific EVM chain (eth/bsc/base) cannot be determined, ask user. Base58 format → SOL.Trigger: User says "AI扫链", "AI scan", "auto scan", "smart scan", or "开始AI扫链".
Three tiers run in parallel each polling round. These are pre-validated filter parameters; users can modify them.
Tier A — NEW (freshly launched tokens):
{"topHp":"22,40","snipers":",6","insiderHp":",8","holder":"10,","mc":"8000,","oneLink":1,"createTime":"1,70"}
Feed type: NEW
Tier B — ALMOST (near graduation):
{"createTime":"1,120","dexPay":1,"mc":"13000,"}
Feed type: ALMOST
Tier C — COMPLETED (graduated tokens):
{"createTime":"1,240","topHp":"18,","holder":"300,","mc":"20000,160000"}
Feed type: COMPLETED
tokenAddress across all rounds and chains. Only display newly discovered tokens.For each new token found, show:
| Field | Source |
|---|---|
| Symbol | symbol |
| Chain | request chain |
| Price | priceUSD |
| Market Cap | marketCapUSD |
| Holders | holders |
| Dev Hold % | devHoldPercent |
| Platform + Progress | launchPlatform.name + launchPlatform.progress |
| Matched Tier | A / B / C |
After displaying new tokens, user can:
Trigger: User says "推文扫链", "tweet scan", "twitter scan", or "开始推文扫链".
@heyibinance, @cz_binance — recommended defaults. User can modify before or during scanning.
Every 5 seconds:
POST /feed/NEW?chain=bsc with body {"oneLink":1} to get new BSC tokens with social links.tokenAddress using seen_token_addresses set.hasLink == true:
a. Call GET /query?ca={tokenAddress}&chain=bsc to fetch full token details including linkInfo.
b. Check if linkInfo.x contains any monitored account handle (case-insensitive substring match).
c. Also deduplicate by linkInfo.x URL using seen_twitter_urls set.Display a status line during scanning:
[HH:MM:SS] Scanning BSC... (watching: @heyibinance, @cz_binance) #N
Where #N is the count of tokens scanned so far.
| Chain | Format | Example pattern |
|---|---|---|
| SOL | Base58, 32-44 characters | 7xKX... |
| ETH / BSC / Base | 0x + 40 hex characters | 0x1a2B... |
https://solscan.io/tx/{txId}https://etherscan.io/tx/{txId}https://bscscan.com/tx/{txId}https://basescan.org/tx/{txId}| Code | Meaning | Scope |
|---|---|---|
| 200 | Success | Data query APIs (Feed, Token Query) |
| 300 | Server error — inform user to retry later | Data query APIs (Feed, Token Query) |
| 8060 | API Key invalid | All APIs |
| 8061 | API Key disabled | All APIs |
| 8062 | Rate limited | All APIs — data query: retry after 2s; trade: retry after 1s (except swap, see Execution Rules #5) |
| 8063 | IP not in whitelist — use get_ip to check current IP, update whitelist at https://www.xxyy.io/apikey | All APIs |
# Buy
curl -s -X POST "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/swap" \
-H "Authorization: Bearer $XXYY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"chain":"sol","walletAddress":"...","tokenAddress":"...","isBuy":true,"amount":0.1,"tip":0.001}'
# Query Trade
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/trade?txId=..." \
-H "Authorization: Bearer $XXYY_API_KEY"
# Feed - Scan newly launched tokens on SOL (with filters)
curl -s -X POST "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/feed/NEW?chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"mc":"10000,500000","holder":"50,","insiderHp":",50"}'
# Token Query
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/query?ca=TOKEN_ADDRESS&chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY"
# List Wallets
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/wallets?chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Wallet Info
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/wallet/info?walletAddress=YOUR_WALLET&chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY"
# PNL Query
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/pnl?walletAddress=YOUR_WALLET&tokenAddress=TOKEN_ADDRESS&chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Trade History
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/trades?walletAddress=YOUR_WALLET&chain=sol&pageNum=1&pageSize=10" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Get IP (exempt from IP whitelist)
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/ip" \
-H "Authorization: Bearer $XXYY_API_KEY"
# KOL Buy List
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/kol-buy-list?chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Tag Holder Buy List
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/tag-holder-buy-list?chain=bsc" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Label List (SOL only)
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/label-list?chain=sol&labelType=AGENT_KOL" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Signal List (SOL/BSC)
curl -s -X POST "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/signal-list?type=open-ai-trending&chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
# Trending List (SOL/BSC)
curl -s -X POST "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/trending-list?chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"period": "5M"}'
# Launch Token - SOL (create only)
curl -s -X POST "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/sol/launch" \
-H "Authorization: Bearer $XXYY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"walletAddress":"<SOL_WALLET>","name":"My Token","symbol":"MTK","buyAmount":"0","solOptions":{"uri":"https://arweave.net/<metadata_id>","slippage":10000,"priorityFee":100000,"tipFee":100000,"model":1}}'
# Launch Token - SOL (create + buy 0.5 SOL)
curl -s -X POST "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/sol/launch" \
-H "Authorization: Bearer $XXYY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"walletAddress":"<SOL_WALLET>","name":"My Token","symbol":"MTK","buyAmount":"0.5","solOptions":{"uri":"https://arweave.net/<metadata_id>","slippage":10000,"priorityFee":100000,"tipFee":100000,"model":1,"cashback":true}}'
# Launch Token - BSC (create + buy 0.001 BNB)
curl -s -X POST "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/bsc/launch" \
-H "Authorization: Bearer $XXYY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"walletAddress":"<BSC_WALLET>","name":"Exchange the world","symbol":"ETW","buyAmount":"0.001","bscOptions":{"desc":"Exchange the world","image":"https://example.com/image.png","label":"Meme","gasPrice":"3000000000","model":1,"feePlan":false}}'
# Launch Token - BSC (with token tax)
curl -s -X POST "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/bsc/launch" \
-H "Authorization: Bearer $XXYY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"walletAddress":"<BSC_WALLET>","name":"Tax Token","symbol":"TAXT","buyAmount":"0.1","bscOptions":{"desc":"A token with tax","image":"https://example.com/image.png","label":"Defi","model":1,"tokenTaxInfo":{"feeRate":5,"burnRate":20,"divideRate":30,"liquidityRate":0,"recipientRate":50,"minSharing":100000,"recipientAddress":"0x..."}}}'