Python3 API connector for Bybit's HTTP and Websockets APIs.
Put simply, pybit
(Python + Bybit) is a lightweight one-stop-shop module for the Bybit HTTP and WebSocket APIs. I was personally never a fan of auto-generated connectors that used a mosh-pit of various modules you didn't want (sorry, bravado
) and wanted to build my own Python3-dedicated connector with very little external resources. The goal of the connector is to provide traders and developers with an easy-to-use high-performing module that has an active issue and discussion board leading to consistent improvements.
As a user of the module myself, pybit
is being actively developed, especially since Bybit is making changes and improvements to their API on a daily basis (we're still missing some key functions such as bulk order submission or withdrawals). pybit
uses requests
and websocket-client
for its methods, alongside other built-in modules. Anyone is welcome to branch/fork the repository and add their own upgrades. If you think you've made substantial improvements to the module, submit a pull request and I'll gladly take a look.
pybit
requires Python 3.6.1 or higher. The module can be installed manually or via PyPI with pip
:
pip install pybit
You can retrieve the HTTP and WebSocket classes like so:
from pybit import HTTP, WebSocket
Create an HTTP session and connect via WebSocket:
session = HTTP(
endpoint='https://api.bybit.com',
api_key='...',
api_secret='...'
)
ws = WebSocket(
endpoint='wss://stream.bybit.com/realtime',
subscriptions=['order', 'position'],
api_key='...',
api_secret='...'
)
Information can be sent to, or retrieved from, the Bybit APIs:
# Get orderbook.
session.orderbook(symbol='BTCUSD')
# Create five long orders.
orders = [{
'symbol': 'BTCUSD',
'order_type': 'Limit',
'side': 'Buy',
'qty': 100,
'price': i,
'time_in_force': 'GoodTillCancel'
} for i in [5000, 5500, 6000, 6500, 7000]]
# Submit the orders in bulk.
session.place_active_order_bulk(orders)
# Check on your order and position through WebSocket.
ws.fetch('order')
ws.fetch('position')
Check out the example python files or the list of endpoints below for more information on available
endpoints and methods. More documentation on the HTTP
and WebSocket
methods can
be found at https://github.com/verata-veritatis/pybit/blob/master/docs/HTTP.md and https://github.com/verata-veritatis/pybit/blob/master/docs/WebSocket.md, respectively.
Endpoint | Method |
---|---|
Orderbook | orderbook() |
Query Kline | query_kline() |
Latest Information for Symbol | latest_information_for_symbol() |
Public Trading Records | public_trading_records() |
Query Symbol | query_symbol() |
Liquidated Orders | liquidated_orders() |
Query Mark Price Kline | query_mark_price_kline() |
Open Interest | open_interest() |
Endpoint | Method |
---|---|
Query Kline | query_kline() |
Latest Big Deal | latest_big_deal() |
Long Short Ratio | long_short_ratio() |
Endpoint | Method |
---|---|
Place Active Order | place_active_order() |
Get Active Order | get_active_order() |
Cancel Active Order | cancel_active_order() |
Cancel All Active Orders | cancel_all_active_orders() |
Replace Active Order | replace_active_order() |
Query Active Order | query_active_order() |
Endpoint | Method |
---|---|
Place Conditional Order | place_conditional_order() |
Get Conditional Order | get_conditional_order() |
Cancel Conditional Order | cancel_conditional_order() |
Cancel All Conditional Orders | cancel_all_conditional_orders() |
Replace Conditional Order | replace_conditional_order() |
Query Conditional Order | query_conditional_order() |
Endpoint | Method |
---|---|
My Position | my_position() |
Set Auto Add Margin (Linear) | set_auto_add_margin() |
Cross/Isolated Margin Switch (Linear) | cross_isolated_margin_switch() |
Full/Partial Position SL/TP Switch (not avail. yet) | N/A |
Add/Reduce Margin (Linear) | add_reduce_margin() |
Set Trading-Stop | set_trading_stop() |
Set Leverage | set_leverage() |
User Leverage (deprecated) | user_leverage() |
User Trade Records | user_trade_records() |
Closed Profit and Loss | closed_profit_and_loss() |
Endpoint | Method |
---|---|
Get Risk Limit | my_position() |
Set Risk Limit (Inverse) | set_auto_add_margin() |
Endpoint | Method |
---|---|
Get the Last Funding Rate (Inverse) | get_the_last_funding_rate() |
My Last Funding Fee | my_last_funding_fee() |
Predicted Funding Rate and My Funding Fee | predicted_funding_rate() |
Endpoint | Method |
---|---|
API Key Info | api_key_info() |
Endpoint | Method |
---|---|
LCP Info | lcp_info() |
Endpoint | Method |
---|---|
Get Wallet Balance | get_wallet_balance() |
Wallet Fund Records | wallet_fund_records() |
Withdraw Records | withdraw_records() |
Asset Exchange Records | asset_exchange_records() |
Endpoint | Method |
---|---|
Server Time | server_time() |
Announcement | announcement() |
Endpoint | Method |
---|---|
Place Active Order (Bulk) | place_active_order_bulk() |
Cancel Active Order (Bulk) | cancel_active_order_bulk() |
Place Conditional Order (Bulk) | place_conditional_order_bulk() |
Cancel Conditional Order (Bulk) | cancel_conditional_order_bulk() |
Close Position | close_position() |
Topic Name | Topic String |
---|---|
orderBookL2_25 | 'orderBookL2_25' |
orderBookL2_200 | 'orderBookL2_200' |
trade | 'trade' |
insurance | 'insurance' |
instrument_info | 'instrument_info' |
klineV2 | 'klineV2' |
Topic Name | Topic String |
---|---|
position | 'position' |
execution | 'execution' |
order | 'order' |
stop_order | 'stop_order' |
You can reach out to me via Telegram: @verataveritatis. I'm pretty active on the BybitAPI Telegram group chat.
Thanks goes to these wonderful people (emoji key):
verata-veritatis 💻 📖 |
APF20 💻 |
Cameron Harder-Hutton 💻 |
Tom Rumpf 💻 |
Todd Conley 🤔 |
This project follows the all-contributors specification. Contributions of any kind welcome!
I work on pybit
in my spare time, along with other contributors. If you like the project and want to donate, you can do so to the following addresses:
XTZ: tz1hKHdZeHf2LMpyJmZzj4eteF7tNNP2c97C
BTC: bc1q9tamcc7hmcwya42mkplahrvqvkcr52yd56um69
ETH: 0xDe4BbEB308A995FF3a8De98F70943D756EcE058D