XXYY Trade
On-chain token trading and data queries on Solana, Ethereum, BSC, and Base via XXYY Open API.
Prerequisites
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 tohttps://www.xxyy.io
Authentication
All requests require header: Authorization: Bearer $XXYY_API_KEY
Security Notes
- ⚠️ API Key = Wallet access -- Your XXYY API Key can execute real on-chain trades using your wallet balance. If it leaks, anyone can buy/sell tokens with your funds. Never share it, never commit it to version control, never expose it in logs or public channels. If you suspect a leak, regenerate the key immediately at https://xxyy.io.
- Custodial trading model -- XXYY is a custodial trading platform. You only provide your wallet address (public key) and API Key. No private keys or wallet signing are needed -- XXYY executes trades on your behalf through their platform.
- No read-only mode -- The same API Key is used for both data queries (Feed, Token Query) and trading (Buy, Sell). There is currently no separate read-only key.
API Reference
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 Info
Buy Token
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
}
Buy Parameters
| 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 |
Sell Token
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
}
Sell Parameters
| 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 / priorityFee Rules
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.- SOL chain: unit is SOL (1 = 1 SOL, very expensive). Recommended range: 0.001 - 0.1
- EVM chains (eth/bsc/base): unit is Gwei. Recommended range: 0.1 - 100
priorityFee(optional) -- Only effective on Solana chain. Solana supports both tip and priorityFee simultaneously.
Query Trade
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
Ping
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/ping
Returns "pong" if API key is valid.
Feed (Scan Tokens)
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.
Path & Query Parameters
| 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 |
Body (Filter Parameters)
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 |
DEX Values by Chain
- SOL:
pump,pumpmayhem,bonk,heaven,believe,daosfun,launchlab,mdbc,jupstudio,mdbcbags,trends,moonshotn,boop,moon,time - BSC:
four,four_agent,bnonly,flap
quoteTokens Values by Chain
- SOL:
sol,usdc,usd1 - BSC:
bnb,usdt,usdc,usd1,aster,u
Feed Response
{
"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
Token Query
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.
Token Query Parameters
| 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 |
Token Query Response
{
"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:
- tradeInfo: marketCapUsd, price, holder, hourTradeNum, hourTradeVolume
- pairInfo: pairAddress, pair, liquidateUsd, createTime
- securityInfo: honeyPot, openSource, noOwner, locked
- taxInfo: buy, sell (percentage strings)
- dev: address, pct
- topHolderPct and topHolderList: top 10 holder distribution
List Wallets
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.
Wallets Parameters
| 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 |
Wallets Response
{
"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:
- totalCount: Total wallet count
- list[].chain: Chain code (1=SOL, 2=BSC, 3=ETH, 6=BASE)
- list[].name: Wallet display name
- list[].address: Wallet address
- list[].balance: Native token balance
- list[].topUp: 1=pinned, 0=normal
- list[].tokenBalance: Token holdings (only present when
tokenAddressis provided). Containsamount,decimals,uiAmount,uiAmountString - list[].isImport: Whether the wallet was imported
Chain Codes
| Code | Chain |
|---|---|
| 1 | SOL |
| 2 | BSC |
| 3 | ETH |
| 6 | BASE |
Wallet Info
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).
Wallet Info Parameters
| 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 |
Wallet Info Response
{
"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:
- address: Wallet address
- name: Wallet display name
- chain: Chain code (1=SOL, 2=BSC, 3=ETH, 6=BASE)
- balance: Native token balance
- topUp: 1=pinned, 0=normal
- isImport: Whether the wallet was imported
- tokenBalance: Only present when
tokenAddressis provided. Containsamount,uiAmount,decimals
Execution Rules
- Always confirm before trading -- Ask user to confirm: chain, token address, amount/percentage, buy or sell
- Auto-query wallet -- If the user does not provide a wallet address: a. If there is a remembered default wallet for that chain, use it directly and show its current balance via Wallet Info API before confirming. b. Otherwise, call List Wallets API. If only 1 wallet exists, auto-select it. If multiple, ask user to choose. If none, guide to create at https://www.xxyy.io/wallet/manager?chainId={chain}. c. Remember the selected wallet as default for that chain. d. If the user provides a wallet address, call Wallet Info API to verify it exists and show its balance before confirming the trade.
- Use Bash with curl to call the API
- Poll trade result -- After swap submission, query trade status up to 3 times with 5s intervals
- Show transaction link -- Always display the block explorer URL with the txId
- Never retry failed swap requests -- show the error to user instead
- Chain-wallet validation -- walletAddress must match the selected chain. A Solana wallet cannot be used for BSC/ETH/Base trades and vice versa. If the user provides a mismatched wallet/chain combination, warn them and ask to correct before proceeding.
- Strict parameter validation -- Before calling the API, validate EVERY field:
- All required parameters must be present and have legal values
chainmust be one ofsol/eth/bsc/baseisBuymust be booleantrueorfalseamountfor buy: must be > 0; for sell: must be 1-100tipmust 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 proceedingmodelif provided must be 1 or 2priorityFeeif provided only applies to Solana chain- Do NOT send any field names outside the parameter tables above
- If any validation fails, refuse to send the request and ask the user to correct
Feed Rules
- type validation -- Only accept
NEW,ALMOST,COMPLETED(uppercase). Reject any other value. - chain validation -- Feed only supports
solandbsc. If user specifiesethorbase, reject and inform them that Feed scanning is only available on Solana and BSC chains. - Single query mode (default) -- Call the Feed API once, format and display key info for each token: symbol, priceUSD, marketCapUSD, holders, devHoldPercent, launchPlatform (name + progress).
- Continuous monitor mode -- Activate only when user explicitly says "持续监控", "monitor", or "watch":
- Use a Bash polling loop, calling Feed API every 5 seconds
- Deduplicate by
tokenAddress— only display newly appeared tokens - Loop limit: 480 seconds (8 minutes). Set Bash timeout to 540000ms
- After loop ends, use AskUserQuestion to ask: continue monitoring / view token details / buy a token / stop
- When continuing, preserve the seen
tokenAddressset to avoid repeats
- Filter guidance -- Before querying, optionally ask user about filter preferences (market cap range, liquidity, holder count, etc.). If not asked, use no filters (return all).
- No auto-trading -- Feed scanning is for observation only. NEVER automatically buy or sell based on scan results.
- Error handling -- See Error Codes table. For data query APIs:
code == 200withsuccess == truemeans success;code == 300is server error (inform user to retry later);code == 8060/8061means stop immediately;code == 8062means wait 2 seconds and retry.
Token Query Rules
- ca required -- Contract address (
ca) must be provided. If missing, ask user for it. - chain validation -- Supports all 4 chains:
sol,eth,bsc,base. Defaultsol. - HoneyPot warning -- If
securityInfo.honeyPot == true, display a prominent warning that this token is a honeypot and trading it is extremely risky. - High tax alert -- If
taxInfo.buyortaxInfo.sell> 5%, warn user about high tax rates. - Display format -- Present results in groups: Trade Info → Security Check → Tax Rates → Holder Distribution → Social Links.
- Trade follow-up -- After displaying query results, optionally ask user if they want to buy this token, linking to the Buy Token flow.
- Error handling -- Same as Feed Rules (see Error Codes table).
Wallets Rules
- chain validation -- Supports all 4 chains. Default
sol. - Display format -- Show wallet name, address, native balance. Mark pinned wallets with ⭐.
- Token holdings -- If user asks about specific token holdings, pass
tokenAddressto show per-wallet balance. - No wallets -- If response returns empty list, guide user to create at: https://www.xxyy.io/wallet/manager?chainId={chain}
- Default wallet memory -- After user selects a wallet, remember it as the default for that chain in the current session. Use this default for subsequent trades on the same chain without asking again.
- Single wallet query -- When the user provides a specific wallet address and asks for its balance, use Wallet Info API instead of List Wallets. Also use Wallet Info to show balance before trade confirmation.
- Error handling -- Same as other data query APIs (see Error Codes table).
Onboarding Flow
Trigger: Automatically execute once when the skill is first activated in a session. Run only once per session.
Detection Logic
- Check if
$XXYY_API_KEYis set in the environment. - Case A — No API Key: Display a setup guide:
- How to get a key: visit https://www.xxyy.io/apikey
- How to set it:
export XXYY_API_KEY=xxyy_ak_xxxx - Show the feature table (Trade, Feed, Token Query, Wallets) and available strategies list.
- Stop here until user sets the key.
- Case B — API Key exists: Silently call Ping API.
- Ping success: Silently fetch wallets for all 4 chains (
sol,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:- Feature table (Trade, Feed, Token Query, Wallets)
- Default wallets table: Chain | Wallet Name | Address | Balance
- Available strategies list (Strategy 1/2/3 with trigger phrases)
- Tip:
修改默认钱包 {chain} {wallet name or address}to change defaults
- Ping failure (8060/8061): Case C — inform user that the API Key is invalid or disabled, guide them to regenerate at https://www.xxyy.io/apikey.
- Ping success: Silently fetch wallets for all 4 chains (
Change Default Wallet
When user says "修改默认钱包 {chain} {wallet name or address}":
- Match by wallet name (case-insensitive) or address against the List Wallets result for that chain.
- If matched, update the session default and confirm.
- If no match, show available wallets for that chain and ask user to pick.
Non-blocking
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.
Strategy Rules (Common)
These rules apply to all three strategies below.
- Wallet prerequisite — If no default wallet is set for the required chain, run the Onboarding wallet-fetch step first.
- Confirmation table — Before every trade, display a confirmation table with: chain, action (buy/sell), wallet (name + address + balance), token (symbol + address), amount, tip, slippage. Proceed only after explicit user confirmation.
- Result display — After trade completes, show: txId, status, block explorer link (see Block Explorer URLs).
- Mutual exclusion — Only one polling strategy (Strategy 2 or 3) can run at a time. Starting a new one stops the current one.
- Stop command — User says "stop" or "停止" → immediately terminate the active polling strategy.
- No auto-trading — Strategy 2 and 3 scanning only displays results. NEVER automatically submit a trade. User must explicitly choose to buy.
- Amount modification — User says "修改金额 {value}" → update the buy amount for the next trade (does not affect in-flight trades).
- Default parameters — SOL: slippage 20%, tip 0.001 SOL. EVM chains (eth/bsc/base): slippage 20%, tip 1 Gwei. Users can override.
- Error handling — 8060/8061: stop strategy immediately. 8062: wait 2s and retry. 300: notify user of server error.
- Parameter validation — All trades follow Execution Rules #8 (strict parameter validation).
Strategy 1: Direct Buy/Sell
Trigger: User provides a token contract address with buy/sell intent (e.g., "买 0x... 0.1 BNB", "sell 50% of ...").
Flow
- Parse intent: Identify action (buy/sell), token address, chain, amount, wallet.
- Chain auto-detect:
0xprefix → EVM chain. If the specific EVM chain (eth/bsc/base) cannot be determined, ask user. Base58 format → SOL. - Wallet selection: Follow Execution Rules #2 (auto-query wallet logic).
- Display confirmation table (see Strategy Rules #2).
- User confirms → Call Swap API → Poll trade status (Execution Rules #4) → Display result (Strategy Rules #3).
- On failure: Do NOT retry. Show error to user (Execution Rules #6).
Strategy 2: AI Auto Scan
Trigger: User says "AI扫链", "AI scan", "auto scan", "smart scan", or "开始AI扫链".
Setup
- Confirm default wallets exist for SOL and BSC (required chains for Feed). If missing, fetch via Onboarding.
- Confirm buy amount per chain. Defaults: 0.1 SOL / 0.001 BNB. User can customize.
- Display configuration summary: wallets, amounts, scan tiers.
Scan Tiers
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
Polling Logic
- Interval: Every 5 minutes per round.
- Requests per round: 3 tiers × 2 chains (sol + bsc) = up to 6 Feed API calls.
- Max duration: 60 minutes. After 60 minutes, ask user whether to continue.
- Deduplication: Track
tokenAddressacross all rounds and chains. Only display newly discovered tokens.
Display Format
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 |
User Interaction
After displaying new tokens, user can:
- Select a token → Call Token Query API to show full details (security, tax, links, holders).
- Buy a token → Switch to Strategy 1 flow with the selected token.
- Skip / continue → Wait for next polling round.
Strategy 3: Tweet Scan
Trigger: User says "推文扫链", "tweet scan", "twitter scan", or "开始推文扫链".
Default Monitored Accounts
@heyibinance, @cz_binance — recommended defaults. User can modify before or during scanning.
Setup
- Confirm monitored Twitter account list.
- Confirm BSC wallet exists (Tweet Scan is BSC-only). If missing, fetch via Onboarding.
- Confirm buy amount. Default: 0.001 BNB.
- Display configuration summary: accounts, wallet, amount.
- Fixed parameters (not user-modifiable): tip = 5 Gwei, slippage = 50%, model = 1.
Polling Flow
Every 5 seconds:
- Call
POST /feed/NEW?chain=bscwith body{"oneLink":1}to get new BSC tokens with social links. - Deduplicate by
tokenAddressusingseen_token_addressesset. - For each new token where
hasLink == true: a. CallGET /query?ca={tokenAddress}&chain=bscto fetch full token details includinglinkInfo. b. Check iflinkInfo.xcontains any monitored account handle (case-insensitive substring match). c. Also deduplicate bylinkInfo.xURL usingseen_twitter_urlsset. - Match found → Display token details + confirmation table. Wait for user response (buy / skip).
- No match → Skip silently, continue polling.
Duration
- Max duration: 30 minutes. After 30 minutes, ask user whether to continue.
- Use a Bash polling loop. Set Bash timeout to 1860000ms (31 minutes).
Account Management
- "修改账号 @xxx" → Replace the entire monitored list with the new account. Takes effect next polling round.
- "添加账号 @xxx" → Append to the monitored list. Takes effect next polling round.
Status Line
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.
Wallet Address Formats
| Chain | Format | Example pattern |
|---|---|---|
| SOL | Base58, 32-44 characters | 7xKX... |
| ETH / BSC / Base | 0x + 40 hex characters | 0x1a2B... |
Block Explorer URLs
- SOL:
https://solscan.io/tx/{txId} - ETH:
https://etherscan.io/tx/{txId} - BSC:
https://bscscan.com/tx/{txId} - BASE:
https://basescan.org/tx/{txId}
Error Codes
| 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) |
Example curl
# 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"