Node.js & Typescript OKX API client
Node.js connector for the OKX APIs and WebSockets:
- Complete integration with all OKX APIs.
- TypeScript support (with type declarations for most API requests & responses).
- Robust WebSocket integration
- Configurable connection heartbeats (automatically detect failing connections).
- Automatic reconnect then resubscribe workflows.
- Automatic authentication and heartbeat handling.
- Browser support (via webpack bundle - see "Browser Usage" below).
Installation
npm install okx-api-node-client
Documentation
Most methods accept JS objects. These can be populated using parameters specified by okx's API documentation, or check the type definition in the rest-client class methods.
Usage
Create API credentials at okx
REST Client
Requests & Responses
- If your IDE doesn't have IntelliSense, check the rest-client.ts for a list of methods, params & return types.
- Requests follow the same ordering and format as the categories in the API docs.
- Responses are parsed automatically for less nesting. Error responses are thrown in full:
- If the response looks successful (HTTP 200 and "code" in the response body === "0"), only the
data
property is directly (without thecode
,data
&msg
properties). - If the response looks like an error (HTTP error OR the "code" property in the response does not equal "0"), the full response is thrown (including
code
andmsg
properties). See the interface for APIResponse.
- If the response looks successful (HTTP 200 and "code" in the response body === "0"), only the
Websocket Client
This connector includes a high-performance node.js & typescript websocket client for the OKX public & private websockets.
- If your IDE doesn't have IntelliSense, check the websocket-client.ts for a list of methods, params & return types.
- When subscribing to channels, only the "args" should be passed as an object or array when calling the websocket client subcribe() function: API docs.
- TypeScript recommended (but it is not required) for a richer experience:
- The ws client will automatically open connections as needed when subscribing to a channel.
- If the connection is lost for any reason, the ws client will detect this (via the connection heartbeats). It will then:
- Automatically teardown the dead connection.
- Automatically respawn a fresh connection.
- Automatically reauthenticate, if using private channels.
- Automatically resubscribe to previously subscribed topics.
- Resume producing events as before, without extra handling needed in your logic.
- The ws client will automatically authenticate if accounts are provided and a private channel is subscribed to.
- Up to 100 accounts are supported on the private connection, as per the API docs. Authentication is automatic if accounts are provided.
- For examples in using the websocket client, check the examples in the repo:
- Private channels (account data): examples/ws-private.ts
- Public chanels (market data): examples/ws-public.ts
- These examples are written in TypeScript, so can be executed with ts-node for easy testing:
ts-node examples/ws-private.ts
- Or convert them to javascript:
- Change the
import { ... } from 'okx-api-node-client'
toconst { ... } = require('okx-api-node-client');
- Rename the file to
ws-private.js
- And execute with node:
node examples/ws-private.js
- Change the
Browser Usage
Build a bundle using webpack:
npm install
npm build
npm pack
The bundle can be found in dist/
. Altough usage should be largely consistent, smaller differences will exist. Documentation is still TODO.