行情数据
公开接口(无鉴权):盘口、最近成交、K 线、ticker、engine 健康。
盘口快照
返回当前内存订单簿的价格聚合快照。last_update_id 用于将来 WebSocket diff 流的排序。
GET /spot/depth?symbol=DFUSDT&limit=50
Query 参数
| 参数 | 类型 | 默认 | 备注 |
|---|---|---|---|
symbol | string | 必填 | market id |
limit | number | 50 | 1–1000,服务端 clamp |
响应 — 200 OK
{
"symbol": "DFUSDT",
"last_update_id": 12345,
"bids": [["0.5000", "100"], ["0.4999", "200"]],
"asks": [["0.5001", "150"], ["0.5002", "180"]]
}
| 字段 | 备注 |
|---|---|
bids | 按价格降序(最优买价在前)。每项 [price, total_qty_at_level] |
asks | 按价格升序(最优卖价在前) |
last_update_id | engine 单调计数器;每次盘口变动(place / cancel / fill)+1 |
每档的数量是该价位所有挂单的总和 —— 单个订单 id 不暴露。
错误
| HTTP | error |
|---|---|
503 | spot trading disabled(engine 未启动)/ ENGINE_BUSY / ENGINE_RESTARTING |
最近公共成交
GET /spot/trades?symbol=DFUSDT&limit=50
Query 参数
| 参数 | 类型 | 默认 | 备注 |
|---|---|---|---|
symbol | string | 必填 | |
limit | number | 50 | 1–1000 |
响应 — 200 OK —— 最新优先。
[
{
"trade_id": "9f2a-...",
"symbol": "DFUSDT",
"side": "buy",
"price": "0.5000",
"quantity": "30",
"ts": 1778400000123
}
]
| 字段 | 备注 |
|---|---|
side | 该笔成交的 taker 方(哪一边发起了交叉) |
ts | Unix 毫秒 |
K 线(Candlesticks)
预聚合。每笔成交触发 kline aggregator 增量更新。
GET /spot/klines?symbol=DFUSDT&interval=1m&limit=500
Query 参数
| 参数 | 类型 | 默认 | 备注 |
|---|---|---|---|
symbol | string | 必填 | |
interval | string | 必填 | 1m / 5m / 15m / 1h / 4h / 1d |
limit | number | 500 | 1–1000 |
start_time | number(unix 秒) | (任意) | open_time >= start_time |
end_time | number(unix 秒) | (任意) | open_time <= end_time |
响应 — 200 OK —— Binance 风格的数组中数组:
[
[1778313600, "0.48", "0.51", "0.47", "0.50", "10000", 1778313659, "4900", 234]
]
按位置取字段:
| 位置 | 含义 |
|---|---|
| 0 | open_time(unix 秒) |
| 1 | open_price |
| 2 | high_price |
| 3 | low_price |
| 4 | close_price |
| 5 | volume(base) |
| 6 | close_time(unix 秒;open_time + interval - 1) |
| 7 | quote_volume |
| 8 | trade_count |
错误
| HTTP | error |
|---|---|
400 | invalid interval |
24h Ticker
24 小时滚动统计。每笔成交增量更新,并且每 60s 由后台任务从 spot_trades 重算(处理脱出 24h 窗口的衰减)。
GET /spot/ticker/24hr # 所有 listed 市场 → 数组
GET /spot/ticker/24hr?symbol=DFUSDT # 单个市场 → 对象
响应(单市场)
{
"symbol": "DFUSDT",
"last_price": "0.5",
"open_price": "0.48",
"high": "0.51",
"low": "0.47",
"volume": "10000",
"quote_volume": "5000",
"trade_count": 234,
"open_time": 1778313600,
"close_time": 1778400000
}
| 字段 | 备注 |
|---|---|
open_price | 24h 窗口内第一笔成交的价格。如果窗口内无成交,等于 last_price |
last_price | 史上最近一笔成交(不限于窗口) |
volume / quote_volume | 24h 窗口求和 |
open_time / close_time | Unix 秒;窗口 = [now-86400, now] |
错误
| HTTP | error |
|---|---|
404 | TICKER_NOT_FOUND(按 symbol 查时该 symbol 还没行) |
Engine 健康
GET /spot/health
{ "engine": "running", "queue_depth": 0, "books_loaded": 1 }
| 字段 | 取值 |
|---|---|
engine | running(engine task 在跑)/ disabled(服务端 SPOT_TRADING_ENABLED=false) |
queue_depth | engine mpsc 待处理命令数。健康时 0 或个位数;持续高 → 负载问题 |
books_loaded | 内存里的 book 数。MVP:1(running)/ 0(disabled) |
LB / 看板 探针无鉴权直接打。
代码示例
import requests
BASE = "https://api-sepolia.p99.world/api/v1"
# 抓盘口 + ticker + 最近 5 笔成交 + 1m 最近 10 根 K 线
print(requests.get(f"{BASE}/spot/depth?symbol=DFUSDT&limit=10").json())
print(requests.get(f"{BASE}/spot/ticker/24hr?symbol=DFUSDT").json())
print(requests.get(f"{BASE}/spot/trades?symbol=DFUSDT&limit=5").json())
print(requests.get(f"{BASE}/spot/klines?symbol=DFUSDT&interval=1m&limit=10").json())
print(requests.get(f"{BASE}/spot/health").json())