bybit-api
A production-ready Node.js connector for the Bybit APIs and WebSockets, with TypeScript & browser support.
Installation
npm install --save bybit-api
Issues & Discussion
Documentation
Most methods accept JS objects. These can be populated using parameters specified by Bybit's API documentation.
Structure
This project uses typescript. Resources are stored in 3 key structures:
- src - the whole connector written in typescript
- lib - the javascript version of the project (compiled from typescript). This should not be edited directly, as it will be overwritten with each release.
- dist - the packed bundle of the project for use in browser environments.
Usage
Create API credentials at Bybit
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.
Inverse Contracts
Rest client
const { RestClient } = require('bybit-api');
const API_KEY = 'xxx';
const PRIVATE_KEY = 'yyy';
const useLivenet = false;
const restInverseOptions = {
recv_window?: number;
sync_interval_ms?: number | string;
disable_time_sync?: boolean;
strict_param_validation?: boolean;
baseUrl?: string;
parse_exceptions?: boolean;
};
const client = new RestClient(
API_KEY,
PRIVATE_KEY,
useLivenet,
);
client.changeUserLeverage({leverage: 4, symbol: 'ETHUSD'})
.then(result => {
console.log(result);
})
.catch(err => {
console.error(err);
});
See inverse rest-client.ts for further information.
Websocket client
const { WebsocketClient } = require('bybit-api');
const API_KEY = 'xxx';
const PRIVATE_KEY = 'yyy';
const wsConfig = {
key: API_KEY,
secret: PRIVATE_KEY,
};
const ws = new WebsocketClient(wsConfig);
ws.subscribe(['position', 'execution', 'trade']);
ws.subscribe('kline.BTCUSD.1m');
ws.on('open', () => {
console.log('connection open');
});
ws.on('update', message => {
console.log('update', message);
});
ws.on('response', response => {
console.log('response', response);
});
ws.on('close', () => {
console.log('connection closed');
});
ws.on('error', err => {
console.error('ERR', err);
});
See inverse websocket-client.ts for further information.
Customise Logging
Pass a custom logger which supports the log methods silly
, debug
, notice
, info
, warning
and error
, or override methods from the default logger as desired:
const { RestClient, WebsocketClient, DefaultLogger } = require('bybit-api');
DefaultLogger.silly = () => {};
const ws = new WebsocketClient({key: 'xxx', secret: 'yyy'}, DefaultLogger);
Contributions & Thanks
Donations
tiagosiebler
If you found this project interesting or useful, create accounts with my referral links:
Or buy me a coffee using any of these:
- BTC:
1C6GWZL1XW3jrjpPTS863XtZiXL1aTK7Jk
- ETH (ERC20):
0xd773d8e6a50758e1ada699bb6c4f98bb4abf82da
pixtron
The original library was started by @pixtron. If this library helps you to trade better on bybit, feel free to donate a coffee to @pixtron:
- BTC
1Fh1158pXXudfM6ZrPJJMR7Y5SgZUz4EdF
- ETH
0x21aEdeC53ab7593b77C9558942f0c9E78131e8d7
- LTC
LNdHSVtG6UWsriMYLJR3qLdfVNKwJ6GSLF
Contributions & Pull Requests
Contributions are encouraged, I will review any incoming pull requests. See the issues tab for todo items.