OKX Exchange WebSocket Skill
Use this skill to run OKX public exchange WebSocket channels through uxc subscribe raw WebSocket mode.
Reuse the uxc skill for generic runtime behavior, sink handling, and event-envelope parsing.
Prerequisites
uxcis installed and available inPATH.- Network access to the OKX public WebSocket endpoint.
- A writable sink path for NDJSON output.
Scope
This skill covers OKX public exchange channels such as:
- tickers
- trades
- books and books5
- candle channels
This skill does not cover:
- OKX OnchainOS MCP
- private WebSocket login flows
- trading, account, or order-management channels
- REST API workflows
Endpoint Model
Use the OKX public WebSocket endpoint:
wss://ws.okx.com:8443/ws/v5/public
OKX public channels require a subscribe frame after connect, for example:
{"op":"subscribe","args":[{"channel":"tickers","instId":"BTC-USDT"}]}
Core Workflow
- Start a raw WebSocket subscription:
uxc subscribe start wss://ws.okx.com:8443/ws/v5/public --transport websocket --init-frame '{"op":"subscribe","args":[{"channel":"tickers","instId":"BTC-USDT"}]}' --sink file:$HOME/.uxc/subscriptions/okx-btcusdt-ticker.ndjson
- Inspect sink output:
tail -n 5 $HOME/.uxc/subscriptions/okx-btcusdt-ticker.ndjson
- Query runtime status:
uxc subscribe listuxc subscribe status <job_id>
- Stop the job when finished:
uxc subscribe stop <job_id>
Common Subscribe Frames
- tickers:
{"op":"subscribe","args":[{"channel":"tickers","instId":"BTC-USDT"}]}
- trades:
{"op":"subscribe","args":[{"channel":"trades","instId":"BTC-USDT"}]}
- books5:
{"op":"subscribe","args":[{"channel":"books5","instId":"BTC-USDT"}]}
- candles:
{"op":"subscribe","args":[{"channel":"candle1m","instId":"BTC-USDT"}]}
Runtime Validation
The following live raw WebSocket flow has been validated successfully through uxc:
- endpoint:
wss://ws.okx.com:8443/ws/v5/public - transport:
--transport websocket - init frame:
{"op":"subscribe","args":[{"channel":"tickers","instId":"BTC-USDT"}]}
Observed sink behavior:
- initial
open - JSON
dataevent for subscription acknowledgement - repeated
dataevents carrying ticker payloads under:arg.channelarg.instIddata[0].lastdata[0].bidPxdata[0].askPxdata[0].ts
Guardrails
- Keep automation on the JSON output envelope; do not use
--text. - Parse stable event fields first:
event_kind,data,meta. - Always pass
--transport websocketfor this skill. - Public OKX channels do not require login. Do not mix this skill with private WebSocket auth flows.
--init-frameis required because OKX public channels are multiplexed behind one endpoint.instIdvalues use OKX instrument naming such asBTC-USDT.uxc subscribe start ... --transport websocketis the intended execution path for this skill;uxc linkis not the main interface because channel selection lives in the subscribe frame.
References
- Usage patterns:
references/usage-patterns.md
- OKX WebSocket API: