Markets
Description
Returns the full list of trading pairs and their configuration — tick size, lot size, minimum notional, fee rates, and listing status.
HTTP Request
GET /spot/markets (public — no auth required)
Weight
0 — public market-data endpoints have no per-IP weight limit today (MVP).
Response Example
200 OK
[
{
"id": "DFUSDT",
"base_token": "DF",
"quote_token": "USDT",
"tick_size": "0.0001",
"lot_size": "0.01",
"min_notional": "1",
"maker_fee_bps": 0,
"taker_fee_bps": 0,
"status": "listed"
}
]
| Field | Notes |
|---|---|
id | Symbol used throughout the REST and WebSocket API (e.g. DFUSDT). Case-sensitive. |
base_token / quote_token | Token symbols. Notional = price × quantity (denominated in quote_token). |
tick_size | Minimum price increment. Orders whose price is not a multiple of tick_size are rejected with INVALID_TICK. |
lot_size | Minimum quantity increment. Orders whose quantity is not a multiple of lot_size are rejected with INVALID_LOT. |
min_notional | Minimum order value (price × quantity). Below threshold → BELOW_MIN_NOTIONAL. |
maker_fee_bps / taker_fee_bps | Fee rates in basis points (1 bps = 0.01%). MVP testnet defaults: both 0. |
status | See Market Status: listed / halted / delisted. |
MVP: the array contains a single row —
DFUSDT.
Error Responses
| HTTP | error |
|---|---|
500 | DB_ERROR |
Full list: Error Codes.
Code Examples
cURL
curl -s "https://api-sepolia.p99.world/api/v1/spot/markets"
Python
import requests
BASE = "https://api-sepolia.p99.world/api/v1"
markets = requests.get(f"{BASE}/spot/markets").json()
for m in markets:
print(m["id"], m["status"], "tick:", m["tick_size"], "lot:", m["lot_size"])