REST / WebSocket endpoints

WebSocket live stream

Connect via WebSocket, send a subscribe payload, and receive live market updates.

Updated: 2026-09-12

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

Overview

Live market stream

Payload fields: action, market, symbols.

Request parameters

FieldTypeRequiredDescription
actionstringYesFirst message must be subscribe
marketstringYesMarket channel
symbolsstring[]YesSymbols to subscribe; capped by plan

Response envelope & auth

FieldTypeDescription
succbooleanWhether the request succeeded
dataobject | arrayBusiness payload (see fields below)
msgstringHuman-readable error message on failure (optional)
codestringMachine-readable error code (optional)
X-Request-IdheaderRequest trace ID (response header, not in JSON body)
X-API-KeyheaderAPI key; Authorization: Bearer is also accepted

data payload fields

FieldTypeDescription
type=subscribedobjectAck with market and symbols
type=tickobjectLive tick
tick.symbol / last / atmixedSymbol, last, RFC3339 time
tick.bid / ask / volumenumberBook and volume
tick.change / changePercent / high / lownumberChange and range
type=errorobjectError frame: msg + code

Common error codes

codeHTTPDescription
INVALID_REQUEST400Missing or invalid parameters (e.g. interval)
INVALID_SYMBOL400Invalid symbol format
UNKNOWN_SYMBOL400Unrecognized symbol (multi-market quote)
NO_SUBSCRIPTION403No active subscription
SUBSCRIPTION_EXPIRED403Subscription expired
MARKET_NOT_ENABLED403Market not enabled on current plan
API_KEY_SCOPE_DENIED403API key scope denied
IP_DENIED / GEO_DENIED403IP or geo policy denied
DAILY_LIMIT_EXCEEDED429Daily quota exceeded
MONTHLY_LIMIT_EXCEEDED429Monthly quota exceeded
RATE_LIMIT_EXCEEDED429Per-user RPM exceeded
KEY_RATE_LIMIT_EXCEEDED429Per-key RPM exceeded
UPSTREAM_UNAVAILABLE502Upstream market source unavailable
RATE_LIMIT_UNAVAILABLE503Rate-limit infrastructure unavailable
WS_CONN_LIMITWSWebSocket connection cap reached

Rate limits & quotas

  • REST quote/kline and WS handshake count toward daily quota and RPM; pushed ticks are not re-counted.
  • Typical RPM: Free/Trial 30, Growth/Standard 120, Pro 600, Enterprise 3000 (see console plan).
  • WS caps (approx.): Free 1 conn / 10 symbols; Growth 3/25; Pro 10/50; Enterprise 50/200.

Connection example (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);