REST / WebSocket 接口

WebSocket 实时行情流

建立 WebSocket 连接后发送 subscribe JSON 订阅标的,接收实时推送。

更新日期:2026-09-12

WSwss://api.tiqex.io/api/v1/market/stream

接口说明

实时行情流

连接后发送 action、market、symbols 字段完成订阅。

请求参数

字段类型必填说明
actionstring首包必须为 subscribe
marketstringcrypto|stocks|cn|hk|futures|indices|forex|commodities|metals|energy|agri
symbolsstring[]订阅标的列表;数量受套餐限制

响应外壳与鉴权

字段类型说明
succboolean是否成功
dataobject | array业务数据(见下方字段)
msgstring失败时的可读错误信息(可选)
codestring机器可读错误码(可选)
X-Request-Idheader请求追踪 ID(响应头,不在 JSON body)
X-API-KeyheaderAPI Key;也可用 Authorization: Bearer

data 业务字段

字段类型说明
type=subscribedobject订阅确认:market、symbols
type=tickobject实时推送
tick.symbol / last / atmixed标的、最新价、RFC3339 时间
tick.bid / ask / volumenumber盘口与量
tick.change / changePercent / high / lownumber涨跌与高低
type=errorobject错误帧:msg + code(如 WS_CONN_LIMIT)

常见错误码

codeHTTP说明
INVALID_REQUEST400参数缺失或非法(如 interval)
INVALID_SYMBOL400标的代码格式无效
UNKNOWN_SYMBOL400无法识别的标的(多市场 quote)
NO_SUBSCRIPTION403无有效订阅
SUBSCRIPTION_EXPIRED403订阅已过期
MARKET_NOT_ENABLED403当前套餐未开通该市场
API_KEY_SCOPE_DENIED403Key 权限范围不足
IP_DENIED / GEO_DENIED403IP 或地区策略拒绝
DAILY_LIMIT_EXCEEDED429日请求配额用尽
MONTHLY_LIMIT_EXCEEDED429月请求配额用尽
RATE_LIMIT_EXCEEDED429用户级 RPM 超限
KEY_RATE_LIMIT_EXCEEDED429单 Key RPM 超限
UPSTREAM_UNAVAILABLE502上游行情源暂时不可用
RATE_LIMIT_UNAVAILABLE503限流组件不可用
WS_CONN_LIMITWSWebSocket 连接数达到套餐上限

限流与配额

  • REST 的 quote / kline / stream 握手计入日配额与 RPM;推送 tick 不再重复计次。
  • 默认 RPM 约:Free/Trial 30、Growth/Standard 120、Pro 600、Enterprise 3000(以控制台套餐为准)。
  • WebSocket 连接/标的上限约:Free 1 连接/10 标的;Growth 3/25;Pro 10/50;Enterprise 50/200。

连接示例 (cURL)

wss://api.tiqex.io/api/v1/market/stream
{ "action": "subscribe", "market": "crypto", "symbols": ["BTCUSDT"] }

Python

import asyncio
import websockets
import json

async def main():
    uri = "wss://api.tiqex.io/api/v1/market/stream"
    async with websockets.connect(uri) as ws:
        await ws.send(json.dumps({
            "action": "subscribe",
            "market": "crypto",
            "symbols": ["BTCUSDT"]
        }))
        print(await ws.recv())

asyncio.run(main())

JavaScript

const ws = new WebSocket("wss://api.tiqex.io/api/v1/market/stream");
ws.onopen = () => {
  ws.send(JSON.stringify({
    action: "subscribe",
    market: "crypto",
    symbols: ["BTCUSDT"]
  }));
};
ws.onmessage = (ev) => console.log(ev.data);