Skip to main content

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

FieldTypeDescription
balancesarrayOne entry per token the user has ever held. May be empty.
balances[].tokenstringToken symbol — currently DF or USDT.
balances[].availablestringWithdrawable / transferable balance. Decimal string (no scientific notation).
balances[].frozenstringAmount reserved for in-flight withdrawals. Decimal string.

Balances are decimal strings (not Wei). Decimals are normalized: 1234.50000000000000 is returned as 1234.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

FieldTypeDescription
symbolstringToken ticker the UI displays.
imagestringReserved for token logo URL. Currently empty.
decimalsnumberToken decimals — needed to convert wei amounts for display.
chainIdnumberEVM chain id where the token lives (421614 = Arbitrum Sepolia, 97 = BSC Testnet).
contractstringERC-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']}")