Balances & Token List
List Spot Balances
Returns all (token, available, frozen) rows the authenticated user holds in the spot wallet.
Authentication Required
Authorization: Bearer <JWT>
or
X-API-Key: <key>
GET /spot/balances
Response
{
"balances": [
{ "token": "DF", "available": "1234.5", "frozen": "0" },
{ "token": "USDT", "available": "5000", "frozen": "100" }
]
}
Fields
| Field | Type | Description |
|---|---|---|
balances | array | One entry per token the user has ever held. May be empty. |
balances[].token | string | Token symbol — currently DF or USDT. |
balances[].available | string | Withdrawable / transferable balance. Decimal string (no scientific notation). |
balances[].frozen | string | Amount reserved for in-flight withdrawals. Decimal string. |
Balances are decimal strings (not Wei). Decimals are normalized:
1234.50000000000000is returned as1234.5.
List Supported Tokens
Public endpoint used by the deposit / withdraw UI to know which tokens the platform supports, on which chain, and at which contract address.
GET /wallet/tokens
Response
{
"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
}
Fields
| Field | Type | Description |
|---|---|---|
symbol | string | Token ticker the UI displays. |
image | string | Reserved for token logo URL. Currently empty. |
decimals | number | Token decimals — needed to convert wei amounts for display. |
chainId | number | EVM chain id where the token lives (421614 = Arbitrum Sepolia, 97 = BSC Testnet). |
contract | string | ERC-20 contract address. |
The DF entry only appears when the spot subsystem is enabled (
SPOT_ENABLED=true). Otherwise the array contains only USDT.
Code Example
import requests
BASE = "https://api-sepolia.p99.world/api/v1"
JWT = "your_jwt_token"
# Public — token list
tokens = requests.get(f"{BASE}/wallet/tokens").json()["data"]
print({t["symbol"]: t["contract"] for t in tokens})
# Authenticated — user balances
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']}")