余额与代币列表
查询现货余额
返回当前用户在现货钱包中的所有 (token, available, frozen) 行。
需要鉴权
Authorization: Bearer <JWT>
或
X-API-Key: <key>
GET /spot/balances
响应
{
"balances": [
{ "token": "DF", "available": "1234.5", "frozen": "0" },
{ "token": "USDT", "available": "5000", "frozen": "100" }
]
}
字段
| 字段 | 类型 | 说明 |
|---|---|---|
balances | array | 用户曾持有过的每个代币一条记录,可能为空。 |
balances[].token | string | 代币符号,目前为 DF 或 USDT。 |
balances[].available | string | 可提现 / 可划转余额。十进制字符串(不会出现科学计数法)。 |
balances[].frozen | string | 已为在途提现冻结的金额。十进制字符串。 |
余额是十进制字符串(不是 Wei)。已做尾零归一化:
1234.50000000000000返回1234.5。
查询支持的代币
公开接口,供充值 / 提现 UI 知道平台支持哪些代币、在哪条链、合约地址是什么。
GET /wallet/tokens
响应
{
"success": true,
"data": [
{
"symbol": "USDT",
"image": "",
"decimals": 6,
"chainId": 421614,
"contract": "0xfA70c5A9221d239Cd51DBf48967ABc79d7B9D61d"
},
{
"symbol": "DF",
"image": "",
"decimals": 18,
"chainId": 97,
"contract": "0x8063a43ed88397c1b10da23dcc60ba1e7a0bf555"
}
],
"error": null,
"timestamp": 1778315534
}
字段
| 字段 | 类型 | 说明 |
|---|---|---|
symbol | string | UI 展示用的代币符号。 |
image | string | 预留的代币 logo URL,目前为空字符串。 |
decimals | number | 代币精度,前端用它把 wei 转成可读金额。 |
chainId | number | 代币所在的 EVM 链 ID(421614 = Arbitrum Sepolia,97 = BSC Testnet)。 |
contract | string | ERC-20 合约地址。 |
DF 这条只在现货子系统启用(
SPOT_ENABLED=true)时才会出现,否则数组里只有 USDT。
代码示例
import requests
BASE = "https://api-sepolia.p99.world/api/v1"
JWT = "your_jwt_token"
# 公开 — 代币列表
tokens = requests.get(f"{BASE}/wallet/tokens").json()["data"]
print({t["symbol"]: t["contract"] for t in tokens})
# 鉴权 — 用户余额
balances = requests.get(
f"{BASE}/spot/balances",
headers={"Authorization": f"Bearer {JWT}"},
).json()["balances"]
for b in balances:
print(f" {b['token']:5} available={b['available']:>14} frozen={b['frozen']}")