API Keys Setup
The v5 Market REST surface (client.http.market) and the public-category WebSocket streams
(client.ws.spot, .linear, .inverse, .option, .spread, .rfq, .finance) are open
to anyone. Everything else — trading, positions, account and asset data, earn products, and
the private/trade WebSocket connections — needs credentials.
Environment Variables
# .env
BYBIT_API_KEY="your_api_key"
BYBIT_API_SECRET="your_api_secret"Constructing A Client
from typed_bybit import Bybit
async with Bybit.new() as client: # reads BYBIT_API_KEY / BYBIT_API_SECRET
balance = await client.http.account.wallet_balance(account_type='UNIFIED')
print(balance['list'][0]['accountType'], balance['list'][0]['coin'])Or pass credentials directly instead of relying on the environment:
from typed_bybit import Bybit
async with Bybit.new(api_key='...', api_secret='...') as client:
...Bybit.new() is authenticated by default — it raises AuthError if neither the environment
nor the constructor supplies a key and secret. Pass public=True for the credential-free
client, restricted to client.http.market and the public WebSocket streams:
from typed_bybit import Bybit
async with Bybit.new(public=True) as client:
ticker = await client.http.market.tickers(category='spot', symbol='BTCUSDT')One key/secret pair authenticates every signed transport on the client: HTTP endpoints under
client.http.trade, .position, .account, .asset, and the rest of the authenticated REST
tree, the signed private WebSocket connection (client.ws.private), and the signed WS Trade
order-entry connection (client.ws.trade).
See Configuration for region, testnet, and the rest of the
constructor's arguments.