SuperAPI AI Directory

bybit-v5

General & other

View repository

Updated 10-15 20:09

About this skill

Bybit AI Skills

Unified API skill for Bybit V5 covering all product types: spot, linear (USDT/USDC perpetuals), inverse (inverse perpetuals/futures), and option. All endpoints share a common category parameter to specify the product type. Returns results in JSON format.


Authentication

Base URLs

Region Mainnet URL Notes
Global (default) https://api.bybit.com Primary
Global (backup) https://api.bytick.com Backup
Netherlands https://api.bybit.nl
Turkey https://api.bybit-tr.com
Kazakhstan https://api.bybit.kz
Georgia https://api.bybitgeorgia.ge
UAE https://api.bybit.ae
EEA https://api.bybit.eu
Indonesia https://api.bybit.id
Testnet https://api-testnet.bybit.com Always this URL regardless of region

Agent SHALL auto-select the base URL based on the account's Region field. If no region is set, default to https://api.bybit.com. Testnet accounts always use https://api-testnet.bybit.com.

Required Headers

Header Value Description
X-BAPI-API-KEY Your API key API key identifier
X-BAPI-TIMESTAMP Unix timestamp (ms) Current UTC time in milliseconds
X-BAPI-SIGN HMAC-SHA256 hex string Request signature
X-BAPI-RECV-WINDOW 5000 (default) Request validity window in ms
Content-Type application/json Required for POST requests
User-Agent bybit-v5/1.0.0 (Skill) Product identifier

Signing Process

Step 1: Build the string to sign

For GET requests:

{timestamp}{apiKey}{recvWindow}{queryString}

For POST requests:

{timestamp}{apiKey}{recvWindow}{jsonBodyString}

Step 2: Generate HMAC-SHA256 signature

echo -n "${PARAM_STR}" | openssl dgst -sha256 -hmac "${SECRET_KEY}" | cut -d' ' -f2

The result is a lowercase hex string.

Step 3: Include signature in X-BAPI-SIGN header

Complete Examples

GET request (authenticated):

#!/bin/bash
API_KEY="your_api_key"
SECRET_KEY="your_secret_key"
BASE_URL="https://api.bybit.com"
RECV_WINDOW=5000
TIMESTAMP=$(date +%s000)

QUERY="category=linear&symbol=BTCUSDT"
PARAM_STR="${TIMESTAMP}${API_KEY}${RECV_WINDOW}${QUERY}"
SIGN=$(echo -n "$PARAM_STR" | openssl dgst -sha256 -hmac "$SECRET_KEY" | cut -d' ' -f2)

curl -s "${BASE_URL}/v5/position/list?${QUERY}" \
  -H "X-BAPI-API-KEY: ${API_KEY}" \
  -H "X-BAPI-TIMESTAMP: ${TIMESTAMP}" \
  -H "X-BAPI-SIGN: ${SIGN}" \
  -H "X-BAPI-RECV-WINDOW: ${RECV_WINDOW}" \
  -H "User-Agent: bybit-v5/1.0.0 (Skill)"

POST request (place order):

#!/bin/bash
API_KEY="your_api_key"
SECRET_KEY="your_secret_key"
BASE_URL="https://api.bybit.com"
RECV_WINDOW=5000
TIMESTAMP=$(date +%s000)

BODY='{"category":"spot","symbol":"BTCUSDT","side":"Buy","orderType":"Market","qty":"0.001"}'
PARAM_STR="${TIMESTAMP}${API_KEY}${RECV_WINDOW}${BODY}"
SIGN=$(echo -n "$PARAM_STR" | openssl dgst -sha256 -hmac "$SECRET_KEY" | cut -d' ' -f2)

curl -s -X POST "${BASE_URL}/v5/order/create" \
  -H "Content-Type: application/json" \
  -H "X-BAPI-API-KEY: ${API_KEY}" \
  -H "X-BAPI-TIMESTAMP: ${TIMESTAMP}" \
  -H "X-BAPI-SIGN: ${SIGN}" \
  -H "X-BAPI-RECV-WINDOW: ${RECV_WINDOW}" \
  -H "User-Agent: bybit-v5/1.0.0 (Skill)" \
  -d "${BODY}"

Response Format

All Bybit V5 responses follow this structure:

{
  "retCode": 0,
  "retMsg": "OK",
  "result": { },
  "retExtInfo": {},
  "time": 1672211918471
}

retCode=0 means success. Non-zero indicates an error.

Rate Limit Response Headers:

  • X-Bapi-Limit — Your rate limit for this endpoint
  • X-Bapi-Limit-Status — Remaining requests in current window
  • X-Bapi-Limit-Reset-Timestamp — When limit resets (ms)

Quick Reference

Market Data (No Authentication)

Endpoint Path Method Required Optional Categories
Kline /v5/market/kline GET symbol, interval category, start, end, limit spot, linear, inverse
Mark Price Kline /v5/market/mark-price-kline GET category, symbol, interval start, end, limit linear, inverse
Index Price Kline /v5/market/index-price-kline GET category, symbol, interval start, end, limit linear, inverse
Premium Index Kline /v5/market/premium-index-price-kline GET category, symbol, interval start, end, limit linear
Instruments Info /v5/market/instruments-info GET category symbol, baseCoin, limit, cursor, status spot, linear, inverse, option
Orderbook /v5/market/orderbook GET category, symbol limit spot, linear, inverse, option
Tickers /v5/market/tickers GET category symbol, baseCoin, expDate spot, linear, inverse, option
Funding Rate History /v5/market/funding/history GET category, symbol startTime, endTime, limit linear, inverse
Recent Trades /v5/market/recent-trade GET category, symbol baseCoin, limit spot, linear, inverse, option
Open Interest /v5/market/open-interest GET category, symbol, intervalTime startTime, endTime, limit, cursor linear, inverse
Historical Volatility /v5/market/historical-volatility GET category baseCoin, period, startTime, endTime option
Insurance /v5/market/insurance GET — coin —
Risk Limit /v5/market/risk-limit GET category symbol linear, inverse
Delivery Price /v5/market/delivery-price GET category symbol, baseCoin, limit, cursor linear, inverse, option
Long Short Ratio /v5/market/account-ratio GET category, symbol, period limit linear, inverse
Price Limit /v5/market/price-limit GET symbol category linear, inverse
Index Price Components /v5/market/index-price-components GET indexName — —
Fee Group Info /v5/market/fee-group-info GET productType groupId —
New Delivery Price /v5/market/new-delivery-price GET category, baseCoin settleCoin linear, inverse, option
ADL Alert /v5/market/adlAlert GET — symbol linear, inverse
RPI Orderbook /v5/market/rpi_orderbook GET symbol, limit category spot
Server Time /v5/market/time GET — — —
System Status /v5/system/status GET — id, state —
Announcement /v5/announcements/index GET — locale, type, tag, page, limit —

Trade (Authentication Required)

Endpoint Path Method Required Optional Rate Limit Categories
Place Order /v5/order/create POST category, symbol, side, orderType, qty price, timeInForce, orderLinkId, triggerPrice, takeProfit, stopLoss, tpslMode, reduceOnly, positionIdx, ... 10-20/s spot, linear, inverse, option
Amend Order /v5/order/amend POST category, symbol orderId/orderLinkId, qty, price, takeProfit, stopLoss, triggerPrice, tpLimitPrice, slLimitPrice 10/s spot, linear, inverse, option
Cancel Order /v5/order/cancel POST category, symbol orderId/orderLinkId, orderFilter 10-20/s spot, linear, inverse, option
Get Open Orders /v5/order/realtime GET category symbol, baseCoin, orderId, orderLinkId, openOnly, orderFilter, limit, cursor 50/s spot, linear, inverse, option
Cancel All Orders /v5/order/cancel-all POST category symbol, baseCoin, settleCoin, orderFilter, stopOrderType 10/s spot, linear, inverse, option
Get Order History /v5/order/history GET category symbol, orderId, orderLinkId, orderFilter, orderStatus, startTime, endTime, limit, cursor 50/s spot, linear, inverse, option
Batch Place /v5/order/create-batch POST category, request[] — per-order spot, linear, inverse, option
Batch Amend /v5/order/amend-batch POST category, request[] — per-order spot, linear, inverse, option
Batch Cancel /v5/order/cancel-batch POST category, request[] — per-order spot, linear, inverse, option
Spot Borrow Check /v5/order/spot-borrow-check GET category, symbol, side — — spot
Pre-Check Order /v5/order/pre-check POST (same as create) — — spot, linear, inverse, option
DCP /v5/order/disconnected-cancel-all POST timeWindow — — option

Position (Authentication Required)

Endpoint Path Method Required Optional Categories
Get Position /v5/position/list GET category symbol, baseCoin, settleCoin, limit, cursor linear, inverse, option
Set Leverage /v5/position/set-leverage POST category, symbol, buyLeverage, sellLeverage — linear, inverse
Switch Isolated/Cross /v5/position/switch-isolated POST category, symbol, tradeMode, buyLeverage, sellLeverage — linear, inverse
Set TP/SL Mode /v5/position/set-tpsl-mode POST category, symbol, tpSlMode — linear, inverse
Switch Position Mode /v5/position/switch-mode POST category, mode coin, symbol linear, inverse
Set Risk Limit /v5/position/set-risk-limit POST category, symbol, riskId — linear, inverse
Set Trading Stop /v5/position/trading-stop POST category, symbol, tpslMode, positionIdx takeProfit, stopLoss, trailingStop, tpTriggerBy, slTriggerBy, activePrice, tpSize, slSize, tpLimitPrice, slLimitPrice, tpOrderType, slOrderType linear, inverse
Set Auto Add Margin /v5/position/set-auto-add-margin POST category, symbol, autoAddMargin positionIdx linear, inverse
Add/Reduce Margin /v5/position/add-margin POST category, symbol, margin positionIdx linear, inverse
Move Position /v5/position/move-positions POST fromUid, toUid, list[] — linear, inverse
Move Position History /v5/position/move-history GET — category, symbol, startTime, endTime, status, blockTradeId, limit, cursor linear, inverse
Get Trade History /v5/execution/list GET category symbol, baseCoin, orderId, orderLinkId, startTime, endTime, execType, limit, cursor spot, linear, inverse, option
Get Closed PnL /v5/position/closed-pnl GET category, symbol startTime, endTime, limit, cursor linear, inverse
Get Closed Options /v5/position/get-closed-positions GET category symbol, limit, cursor option
Confirm Pending MMR /v5/position/confirm-pending-mmr POST category, symbol — linear, inverse

Account (Authentication Required)

Endpoint Path Method Required Optional
Wallet Balance /v5/account/wallet-balance GET accountType coin
Account Info /v5/account/info GET — —
Upgrade to UTA /v5/account/upgrade-to-uta POST — —
Borrow History /v5/account/borrow-history GET — currency, startTime, endTime, limit, cursor
Set Collateral /v5/account/set-collateral-switch POST coin, collateralSwitch —
Collateral Info /v5/account/collateral-info GET — currency
Coin Greeks /v5/asset/coin-greeks GET — baseCoin
Fee Rate /v5/account/fee-rate GET category symbol, baseCoin
Transaction Log /v5/account/transaction-log GET — accountType, category, currency, baseCoin, type, startTime, endTime, limit, cursor
Contract Transaction Log /v5/account/contract-transaction-log GET — currency, baseCoin, type, startTime, endTime, limit, cursor
Set Margin Mode /v5/account/set-margin-mode POST setMarginMode —
Set MMP /v5/account/mmp-modify POST baseCoin, window, frozenPeriod, qtyLimit, deltaLimit —
Reset MMP /v5/account/mmp-reset POST baseCoin —
Get MMP State /v5/account/mmp-state GET baseCoin —
Account Instruments Info /v5/account/instruments-info GET category symbol, limit, cursor
Get DCP Info /v5/account/query-dcp-info GET — —
Get SMP Group /v5/account/smp-group GET — —
Get Trade Behaviour Config /v5/account/user-setting-config GET — —
Get Transferable Amount /v5/account/withdrawal GET coinName —
Manual Borrow /v5/account/borrow POST coin, amount —
Manual Repay /v5/account/repay POST — coin, amount
No-Convert Repay /v5/account/no-convert-repay POST coin amount
Quick Repayment /v5/account/quick-repayment POST — coin
Batch Set Collateral Coin /v5/account/set-collateral-switch-batch POST request[] —
Set Spot Hedging /v5/account/set-hedging-mode POST setHedgingMode —
Set Price Limit Behaviour /v5/account/set-limit-px-action POST category, modifyEnable —
Request Demo Funds /v5/account/demo-apply-money POST — adjustType, utaDemoApplyMoney

Asset (Authentication Required)

Endpoint Path Method Required Optional
Coin Exchange Records /v5/asset/exchange/order-record GET — fromCoin, toCoin, limit, cursor
Delivery Record /v5/asset/delivery-record GET category symbol, expDate, limit, cursor
USDC Settlement Record /v5/asset/settlement-record GET category symbol, limit, cursor
Internal Transfer Records /v5/asset/transfer/query-inter-transfer-list GET — transferId, coin, status, startTime, endTime, limit, cursor
Asset Info (Spot) /v5/asset/transfer/query-asset-info GET accountType coin
All Coins Balance /v5/asset/transfer/query-account-coins-balance GET accountType memberId, coin, withBonus
Single Coin Balance /v5/asset/transfer/query-account-coin-balance GET accountType, coin memberId, toAccountType, toMemberId, withBonus, withTransferSafeAmount
Transferable Coins /v5/asset/transfer/query-transfer-coin-list GET fromAccountType, toAccountType —
Internal Transfer /v5/asset/transfer/inter-transfer POST transferId, coin, amount, fromAccountType, toAccountType —
Sub UID List /v5/asset/transfer/query-sub-member-list GET — —
Universal Transfer /v5/asset/transfer/universal-transfer POST transferId, coin, amount, fromMemberId, toMemberId, fromAccountType, toAccountType —
Universal Transfer Records /v5/asset/transfer/query-universal-transfer-list GET — transferId, coin, status, startTime, endTime, limit, cursor
Allowed Deposit List /v5/asset/deposit/query-allowed-list GET — coin, chain, cursor, limit
Set Deposit Account /v5/asset/deposit/deposit-to-account POST accountType —
Deposit Records /v5/asset/deposit/query-record GET — coin, startTime, endTime, limit, cursor
Sub Deposit Records /v5/asset/deposit/query-sub-member-record GET subMemberId coin, startTime, endTime, limit, cursor
Internal Deposit Records /v5/asset/deposit/query-internal-record GET — startTime, endTime, coin, cursor, limit
Master Deposit Address /v5/asset/deposit/query-address GET coin chainType
Sub Deposit Address /v5/asset/deposit/query-sub-member-address GET coin, chainType, subMemberId —
Coin Info /v5/asset/coin/query-info GET — coin
Withdrawal Records /v5/asset/withdraw/query-record GET — withdrawID, coin, withdrawType, startTime, endTime, limit, cursor
Withdrawable Amount /v5/asset/withdraw/withdrawable-amount GET coin —
Withdraw /v5/asset/withdraw/create POST coin, chain, address, tag, amount, timestamp, forceChain, accountType —
Cancel Withdrawal /v5/asset/withdraw/cancel POST id —
Withdrawal Address List /v5/asset/withdraw/query-address GET — coin, chain, addressType, limit, cursor
Available VASPs /v5/asset/withdraw/vasp/list GET — —
Internal Transfer Records (v2) /v5/asset/transfer/inter-transfer-list-query GET — coin, limit
Small Balance Coin List /v5/asset/covert/small-balance-list GET accountType fromCoin
Small Balance Quote /v5/asset/covert/get-quote POST accountType, fromCoinList, toCoin —
Small Balance Execute /v5/asset/covert/small-balance-execute POST quoteId —
Small Balance History /v5/asset/covert/small-balance-history GET — accountType, quoteId, startTime, endTime, cursor, size
Convert Coin List /v5/asset/exchange/query-coin-list GET accountType coin, side
Convert Request Quote /v5/asset/exchange/quote-apply POST accountType, fromCoin, toCoin, requestCoin, requestAmount fromCoinType, toCoinType
Convert Execute /v5/asset/exchange/convert-execute POST quoteTxId —
Convert Result Query /v5/asset/exchange/convert-result-query GET quoteTxId, accountType —
Convert History /v5/asset/exchange/query-convert-history GET — accountType, index, limit

User (Authentication Required)

Endpoint Path Method Required Optional
Create Sub Account /v5/user/create-sub-member POST username, memberType switch, isUta, note
Create Sub API Key /v5/user/create-sub-api POST subuid, readOnly, permissions note, ips
Get Sub UID List /v5/user/query-sub-members GET — —
Freeze/Unfreeze Sub /v5/user/frozen-sub-member POST subuid, frozen —
Get API Key Info /v5/user/query-api GET — —
Get Member Type /v5/user/get-member-type GET — —
Modify Master API Key /v5/user/update-api POST — readOnly, ips, permissions
Modify Sub API Key /v5/user/update-sub-api POST apikey readOnly, ips, permissions
Delete Master API Key /v5/user/delete-api POST — —
Delete Sub API Key /v5/user/delete-sub-api POST apikey —
Get Affiliate User Info /v5/user/aff-customer-info GET uid —
Get Sub UID List (Unlimited) /v5/user/submembers GET — pageSize, nextCursor
Get Sub All API Keys /v5/user/sub-apikeys GET subMemberId limit, cursor
Get Custodial Sub Accts /v5/user/escrow_sub_members GET — pageSize, nextCursor
Delete Sub UID /v5/user/del-submember POST subMemberId —
Create Demo Account /v5/user/create-demo-member POST — —
Get Affiliate User List /v5/affiliate/aff-user-list GET — size, cursor, need365, need30, needDeposit, startDate, endDate

Spot Margin — Unified Account (Authentication Required)

Endpoint Path Method Required Optional
Switch Margin Mode /v5/spot-margin-trade/switch-mode POST spotMarginMode —
Set Spot Leverage /v5/spot-margin-trade/set-leverage POST leverage —
Get VIP Margin Data /v5/spot-margin-trade/data GET — —
Interest Rate History /v5/spot-margin-trade/interest-rate-history GET currency startTime, endTime, vipLevel
Get Margin State /v5/spot-margin-trade/state GET — —
Cross Margin Loan Info /v5/spot-cross-margin-trade/loan-info GET — coin
Cross Margin Account /v5/spot-cross-margin-trade/account GET — —
Borrow /v5/spot-cross-margin-trade/loan POST coin, qty —
Repay /v5/spot-cross-margin-trade/repay POST coin, qty —
Cross Margin Switch /v5/spot-cross-margin-trade/switch POST switch —
Coin State /v5/spot-margin-trade/coinstate GET — currency
Tiered Collateral Ratio /v5/spot-margin-trade/collateral GET — currency
Get Auto Repay Mode /v5/spot-margin-trade/get-auto-repay-mode GET — —
Set Auto Repay Mode /v5/spot-margin-trade/set-auto-repay-mode POST — —
Max Borrowable /v5/spot-margin-trade/max-borrowable GET — coin
Position Tiers /v5/spot-margin-trade/position-tiers GET — —
Repayment Available Amount /v5/spot-margin-trade/repayment-available-amount GET — —

Leverage Token (Authentication for Purchase/Redeem)

Endpoint Path Method Required Optional Auth
LT Info /v5/spot-lever-token/info GET — ltCoin No
LT Market /v5/spot-lever-token/reference GET ltCoin — No
Purchase /v5/spot-lever-token/purchase POST ltCoin, ltAmount serialNo Yes
Redeem /v5/spot-lever-token/redeem POST ltCoin, ltAmount serialNo Yes
Order Records /v5/spot-lever-token/order-record GET — ltCoin, orderId, startTime, endTime, limit, ltOrderType, serialNo Yes

Broker (Authentication Required)

Endpoint Path Method Required Optional
Earnings Info /v5/broker/earnings-info GET — bizType, startTime, endTime, limit, cursor
Account Info /v5/broker/account-info GET — —
Sub Deposit Records /v5/broker/asset/query-sub-member-deposit-record GET — subMemberId, coin, startTime, endTime, limit, cursor
Voucher Spec /v5/broker/award/info GET awardId —
Distribute Voucher /v5/broker/award/distribute-award POST uid, awardId, amount, specCode —
Voucher Distribution Records /v5/broker/award/distribution-record GET — awardId, startTime, endTime, limit, cursor
Get All Rate Limits /v5/broker/apilimit/query-all GET — limit, cursor, uids
Get Rate Limit Cap /v5/broker/apilimit/query-cap GET — —
Set Rate Limit /v5/broker/apilimit/set POST list —

Earn (Authentication Required)

Endpoint Path Method Required Optional
Product Info /v5/earn/product-info GET — category, coin
Stake / Redeem /v5/earn/create-order POST productId, amount, orderType serialNo, accountType
Staked Position /v5/earn/position GET — productId, coin, category
Order History /v5/earn/order-history GET — productId, orderId, startTime, endTime, limit, cursor
Yield History /v5/earn/yield-history GET — productId, coin, startTime, endTime, limit, cursor
Get Product (v2) /v5/earn/product GET category coin
Place Order (v2) /v5/earn/place-order POST category, coin, amount orderLinkId
Get Order (v2) /v5/earn/order GET category orderId, orderLinkId, productId, startTime, endTime, limit, cursor
Get Yield (v2) /v5/earn/yield GET category productId, startTime, endTime, limit, cursor
Hourly Yield /v5/earn/hourly-yield GET category productId, startTime, endTime, limit, cursor

Crypto Loan

Endpoint Path Method Required Optional Auth
Borrowable Coins /v5/crypto-loan/loan-coin GET — coin No
Collateral Coins /v5/crypto-loan/collateral-coin GET — coin No
Flexible Borrow /v5/crypto-loan/flexible/borrow POST loanCoin loanAmount, collateralCoin, collateralAmount Yes
Flexible Repay /v5/crypto-loan/flexible/repay POST orderId, amount — Yes
Flexible Loans /v5/crypto-loan/flexible/ongoing-orders GET — orderId, loanCoin, collateralCoin, limit, cursor Yes
Adjust Collateral /v5/crypto-loan/adjust-collateral POST orderId, amount, direction — Yes
Fixed Borrow /v5/crypto-loan/fixed/borrow POST loanCoin, loanAmount, collateralCoin, termId — Yes
Fixed Repay /v5/crypto-loan/fixed/repay POST orderId, amount — Yes
Max Loan Amount /v5/crypto-loan/max-loan-amount GET loanCoin, collateralCoin collateralAmount, loanAmount Yes
LTV Adjust History /v5/crypto-loan/ltv-adjust-history GET — orderId, startTime, endTime, limit, cursor Yes
Borrow (v2) /v5/crypto-loan/borrow POST loanCoin, collateralCoin, loanAmount — Yes
Repay (v2) /v5/crypto-loan/repay POST orderId, repayAmount — Yes
Adjust LTV (v2) /v5/crypto-loan/adjust-ltv POST currency, amount, direction — Yes
Get Ongoing Orders (v2) /v5/crypto-loan/ongoing-orders GET — orderId, limit, cursor Yes
Borrow History (v2) /v5/crypto-loan/borrow-history GET — currency, limit, cursor Yes
Repayment History (v2) /v5/crypto-loan/repayment-history GET — orderId, limit, cursor Yes
Adjustment History (v2) /v5/crypto-loan/adjustment-history GET — currency, limit, cursor Yes
Loanable Data (v2) /v5/crypto-loan/loanable-data GET — — No
Collateral Data (v2) /v5/crypto-loan/collateral-data GET — — No
Max Collateral Amount (v2) /v5/crypto-loan/max-collateral-amount GET currency — Yes
Borrowable & Collateralizable Num /v5/crypto-loan/borrowable-collateralisable-number GET — — Yes

Crypto Loan — Common (Authentication Required)

Endpoint Path Method Required Optional
Get Position /v5/crypto-loan-common/position GET — —
Get Collateral Data /v5/crypto-loan-common/collateral-data GET — —
Get Loanable Data /v5/crypto-loan-common/loanable-data GET — —
Get Max Collateral Amount /v5/crypto-loan-common/max-collateral-amount GET currency —
Get Max Loan /v5/crypto-loan-common/max-loan GET currency —
Adjust LTV /v5/crypto-loan-common/adjust-ltv POST currency, amount, direction —
Adjustment History /v5/crypto-loan-common/adjustment-history GET — currency, limit, cursor

Crypto Loan — Fixed Term (Authentication Required)

Endpoint Path Method Required Optional
Borrow Contract Info /v5/crypto-loan-fixed/borrow-contract-info GET orderCurrency —
Borrow Order Quote /v5/crypto-loan-fixed/borrow-order-quote GET orderCurrency orderBy
Borrow /v5/crypto-loan-fixed/borrow POST orderCurrency, loanAmount, collateralCoin, termId —
Borrow Order Info /v5/crypto-loan-fixed/borrow-order-info GET — orderId
Cancel Borrow Order /v5/crypto-loan-fixed/borrow-order-cancel POST orderId —
Fully Repay /v5/crypto-loan-fixed/fully-repay POST orderId —
Repay Collateral /v5/crypto-loan-fixed/repay-collateral POST orderId —
Repayment History /v5/crypto-loan-fixed/repayment-history GET — repayId
Renew Info /v5/crypto-loan-fixed/renew-info GET orderId —
Renew /v5/crypto-loan-fixed/renew POST orderId —
Supply Contract Info /v5/crypto-loan-fixed/supply-contract-info GET supplyCurrency —
Supply Order Quote /v5/crypto-loan-fixed/supply-order-quote GET orderCurrency orderBy
Supply /v5/crypto-loan-fixed/supply POST supplyCurrency, supplyAmount, termId —
Supply Order Info /v5/crypto-loan-fixed/supply-order-info GET — orderId
Cancel Supply Order /v5/crypto-loan-fixed/supply-order-cancel POST orderId —

Crypto Loan — Flexible (Authentication Required)

Endpoint Path Method Required Optional
Borrow /v5/crypto-loan-flexible/borrow POST loanCoin, loanAmount —
Repay /v5/crypto-loan-flexible/repay POST loanCoin, repayAmount —
Repay Collateral /v5/crypto-loan-flexible/repay-collateral POST orderId —
Ongoing Coins /v5/crypto-loan-flexible/ongoing-coin GET — loanCurrency
Borrow History /v5/crypto-loan-flexible/borrow-history GET — limit
Repayment History /v5/crypto-loan-flexible/repayment-history GET — loanCurrency

Institutional Loan (Authentication Required)

Endpoint Path Method Required Optional
Product Info /v5/ins-loan/product-infos GET — productId
Margin Coin Info /v5/ins-loan/ensure-tokens-convert GET — loanOrderId
Loan Orders /v5/ins-loan/loan-order GET — orderId, startTime, endTime, limit
Repay History /v5/ins-loan/repaid-history GET — startTime, endTime, limit
LTV /v5/ins-loan/ltv-convert GET — —
Get Margin Coin Info /v5/ins-loan/ensure-tokens GET — productId
Get LTV /v5/ins-loan/ltv GET — —
Bind/Unbind UID /v5/ins-loan/association-uid POST uid, operate —
Repay Loan /v5/ins-loan/repay-loan POST — —

RFQ — Block Trading (Authentication Required, 50/s)

Endpoint Path Method Required Optional
Create RFQ /v5/rfq/create-rfq POST baseCoin, legs[] rfqId, quoteExpiry
Cancel RFQ /v5/rfq/cancel-rfq POST rfqId —
Cancel All RFQs /v5/rfq/cancel-all-rfq POST — —
Create Quote /v5/rfq/create-quote POST rfqId, legs[] —
Execute Quote /v5/rfq/execute-quote POST rfqId, quoteId —
Cancel Quote /v5/rfq/cancel-quote POST quoteId —
Cancel All Quotes /v5/rfq/cancel-all-quotes POST — —
RFQ Realtime /v5/rfq/rfq-realtime GET — rfqId, baseCoin, side, limit
RFQ History /v5/rfq/rfq-list GET — rfqId, startTime, endTime, limit, cursor
Quote Realtime /v5/rfq/quote-realtime GET — quoteId, rfqId, baseCoin, limit
Quote History /v5/rfq/quote-list GET — quoteId, startTime, endTime, limit, cursor
Trade List /v5/rfq/trade-list GET — rfqId, startTime, endTime, limit, cursor
Public Trades /v5/rfq/public-trades GET — baseCoin, category, limit
Config /v5/rfq/config GET — —
Accept Non-LP Quote /v5/rfq/accept-other-quote POST rfqId —

Spread Trade (Authentication Required)

Endpoint Path Method Required Optional
Place Order /v5/spread/order/create POST symbol, side, orderType, qty price, orderLinkId, timeInForce
Amend Order /v5/spread/order/amend POST symbol orderId, orderLinkId, qty, price
Cancel Order /v5/spread/order/cancel POST — orderId, orderLinkId
Cancel All Orders /v5/spread/order/cancel-all POST — symbol, cancelAll
Get Open Orders /v5/spread/order/realtime GET — symbol, baseCoin, orderId, orderLinkId, limit, cursor
Get Order History /v5/spread/order/history GET — symbol, baseCoin, orderId, orderLinkId, startTime, endTime, limit, cursor
Get Trade History /v5/spread/execution/list GET — symbol, orderId, orderLinkId, startTime, endTime, limit, cursor
Get Instruments /v5/spread/instrument GET — symbol, baseCoin, limit, cursor
Get Orderbook /v5/spread/orderbook GET symbol, limit —
Get Tickers /v5/spread/tickers GET symbol —
Get Recent Trades /v5/spread/recent-trade GET symbol limit

Fiat (Authentication Required)

Endpoint Path Method Required Optional
Get Balance /v5/fiat/balance-query GET — currency
Get Trading Pair List /v5/fiat/query-coin-list GET — side
Get Reference Price /v5/fiat/reference-price GET symbol —
Request Quote /v5/fiat/quote-apply POST fromCoin, fromCoinType, toCoin, toCoinType, requestAmount requestCoinType
Execute Trade /v5/fiat/trade-execute POST quoteTxId, subUserId webhookUrl, MerchantRequestId
Get Trade Status /v5/fiat/trade-query GET — tradeNo, merchantRequestId
Get Trade History /v5/fiat/trade-query-history GET — —

Lending (Authentication Required)

Endpoint Path Method Required Optional
Get Lending Coin Info /v5/lending/info GET — coin
Get Lending Account /v5/lending/account GET coin —
Deposit Funds /v5/lending/purchase POST coin, quantity serialNo
Redeem Funds /v5/lending/redeem POST coin, quantity serialNo
Cancel Redeem /v5/lending/redeem-cancel POST orderId —
Get Order History /v5/lending/history-order GET — coin, orderId, startTime, endTime, limit, orderType

API Rate Limit (Authentication Required)

Endpoint Path Method Required Optional
Get Rate Limit /v5/apilimit/query GET uids —
Get All Rate Limits /v5/apilimit/query-all GET — limit, cursor, uids
Get Rate Limit Cap /v5/apilimit/query-cap GET — —
Set Rate Limit /v5/apilimit/set POST list —

Parameters

Common Parameters

  • category: Product type — spot, linear, inverse, option
  • symbol: Trading pair symbol, uppercase (e.g., BTCUSDT, ETH-25DEC22-1400-C)
  • side: Buy, Sell
  • orderType: Market, Limit
  • qty: Order quantity (string)
  • price: Order price (string, required for Limit orders)
  • timeInForce: GTC (default), IOC, FOK, PostOnly, RPI
  • orderLinkId: Custom order ID (max 36 chars, unique among open orders)
  • positionIdx: 0 (one-way mode), 1 (hedge-mode buy side), 2 (hedge-mode sell side)
  • triggerPrice: Conditional order trigger price (string)
  • triggerBy: Trigger price type — LastPrice, IndexPrice, MarkPrice
  • reduceOnly: true = reduce position only
  • closeOnTrigger: true = close order behavior
  • isLeverage: 0 (no borrow, default), 1 (margin trading, spot only)
  • orderFilter: Spot only — Order (default), tpslOrder, StopOrder
  • marketUnit: Spot market orders — baseCoin, quoteCoin. Tip: For spot market Buy orders, prefer marketUnit=quoteCoin with qty as the USDT amount (e.g., "qty":"7000","marketUnit":"quoteCoin") for more reliable execution. Using baseCoin qty may hit "Order value exceeded lower limit" on some environments.

TP/SL Parameters

Used on /v5/order/create, /v5/order/amend, and /v5/position/trading-stop:

  • takeProfit: Take profit price (pass "0" to cancel)
  • stopLoss: Stop loss price (pass "0" to cancel)
  • tpTriggerBy: TP trigger price type — LastPrice (default), IndexPrice, MarkPrice
  • slTriggerBy: SL trigger price type — LastPrice (default), IndexPrice, MarkPrice
  • tpslMode: Full (entire position), Partial (specify size)
  • tpSize: TP quantity for partial mode
  • slSize: SL quantity for partial mode
  • tpLimitPrice: Limit price when TP is triggered (partial mode, Limit order)
  • slLimitPrice: Limit price when SL is triggered (partial mode, Limit order)
  • tpOrderType: Market (default), Limit
  • slOrderType: Market (default), Limit
  • trailingStop: Trailing stop distance (pass "0" to cancel, position only)
  • activePrice: Trailing stop activation price (position only)

Enums

  • category: spot | linear | inverse | option
  • side: Buy | Sell
  • orderType: Market | Limit
  • timeInForce: GTC | IOC | FOK | PostOnly | RPI
  • triggerBy: LastPrice | IndexPrice | MarkPrice
  • positionIdx: 0 (one-way) | 1 (hedge-buy) | 2 (hedge-sell)
  • accountType: UNIFIED | FUND
  • tpslMode: Full | Partial
  • tradeMode: 0 (cross margin) | 1 (isolated margin)
  • positionMode: 0 (MergedSingle / one-way) | 3 (BothSide / hedge)
  • orderStatus (open): New | PartiallyFilled | Untriggered
  • orderStatus (closed): Rejected | PartiallyFilledCanceled | Filled | Cancelled | Triggered | Deactivated
  • execType: Trade | AdlTrade | Funding | BustTrade | Delivery | Settle | BlockTrade | MovePosition
  • stopOrderType: TakeProfit | StopLoss | TrailingStop | Stop | PartialTakeProfit | PartialStopLoss | tpslOrder | OcoOrder
  • cancelType: CancelByUser | CancelByReduceOnly | CancelByPrepareLiq | CancelByPrepareAdl | CancelByAdmin | CancelBySettle | CancelByTpSlTsClear | CancelBySmp | CancelByDCP
  • interval (kline): 1 | 3 | 5 | 15 | 30 | 60 | 120 | 240 | 360 | 720 | D | W | M
  • intervalTime (open interest): 5min | 15min | 30min | 1h | 4h | 1d
  • period (long/short ratio): 5min | 15min | 30min | 1h | 4h | 1d
  • setMarginMode: ISOLATED_MARGIN | REGULAR_MARGIN | PORTFOLIO_MARGIN
  • collateralSwitch: ON | OFF
  • autoAddMargin: 0 (off) | 1 (on)
  • frozen (sub account): 0 (unfreeze) | 1 (freeze)
  • memberType (sub account): 1 (normal) | 6 (custodial)
  • spotMarginMode: 0 (off) | 1 (on)
  • direction (collateral adjust): ADD | REDUCE
  • earnOrderType: Stake | Redeem

WebSocket Reference

For agents that need real-time push notifications (e.g., always-on assistants).

Public Streams

URL: wss://stream.bybit.com/v5/public/{category} Testnet: wss://stream-testnet.bybit.com/v5/public/{category}

Where {category} = spot, linear, inverse, option

Topic Format Description
Orderbook orderbook.{depth}.{symbol} Depth: 1, 50, 200, 500
Public Trade publicTrade.{symbol} Real-time trades
Tickers tickers.{symbol} Ticker updates
Kline kline.{interval}.{symbol} Candlestick updates
Liquidation liquidation.{symbol} Liquidation events
LT Kline kline_lt.{interval}.{symbol} Leveraged token kline
LT Ticker tickers_lt.{symbol} Leveraged token ticker
LT NAV lt.{symbol} Leveraged token NAV

Private Streams

URL: wss://stream.bybit.com/v5/private Testnet: wss://stream-testnet.bybit.com/v5/private

Topic Description
position Position updates
execution Trade execution updates
execution.fast Fast execution updates (lower latency)
order Order status updates
wallet Wallet balance changes
greeks Option greeks updates
dcp Disconnect cancel-all protection

Subscription Format

{"op": "subscribe", "args": ["orderbook.50.BTCUSDT", "publicTrade.BTCUSDT"]}

Unsubscribe:

{"op": "unsubscribe", "args": ["orderbook.50.BTCUSDT"]}

Heartbeat: Send {"op": "ping"} every 20 seconds.

Private Stream Authentication

{"op": "auth", "args": ["<apiKey>", "<expires>", "<signature>"]}

Where:

  • expires = future timestamp in milliseconds
  • signature = HMAC-SHA256 of GET/realtime{expires} using secret key

Security

Share Credentials

Users can provide Bybit API credentials by sending a file:

abc123...xyz
secret123...key

Never Display Full Secrets

When showing credentials to users:

  • API Key: Show first 5 + last 4 characters: su1Qc...8akf
  • Secret Key: Always mask, show only last 5: ***...aws1

Example:

Account: main
API Key: su1Qc...8akf
Secret: ***...aws1
Environment: Mainnet
Region: Global

Listing Accounts

Show names, environment, and region only — never keys:

Bybit Accounts:
* main (Mainnet, Global)
* testnet-dev (Testnet)
* uae-trading (Mainnet, UAE)

Mainnet Confirmation Rules

Not all requests need confirmation. Only mainnet write operations require user to type "CONFIRM":

Request Type Example Confirmation
Public GET (no auth) tickers, orderbook, kline, funding rate No
Private GET (read-only) wallet balance, positions, open orders, trade history No
Private POST (write, mainnet) place/amend/cancel order, set leverage, transfer, withdraw Yes — require "CONFIRM"
Private POST (write, testnet) same as above but on testnet No

Rule: Read access is available at any time; mainnet writes require confirmation; testnet writes require no confirmation.


Bybit Accounts

Accounts are stored in TOOLS.md, NOT in this file. See TOOLS.md for actual credentials.

TOOLS.md Structure

## Bybit Accounts

### account-name
- API Key: abc123...xyz
- Secret: secret123...key
- Testnet: false
- Region: uae
- Description: UAE trading account

Valid Region values: global, netherlands, turkey, kazakhstan, georgia, uae, eea, indonesia

Adding New Accounts

When user provides new credentials:

  1. Ask for account name
  2. Ask: Mainnet or Testnet
  3. Ask: Region (or default to global)
  4. Store in TOOLS.md with masked display confirmation

Agent Behavior

  1. Category confirmation: When a symbol like BTCUSDT can exist in multiple categories (spot, linear, inverse), the agent MUST ask the user whether they want spot (现货) or perpetual/futures (合约) before placing orders. Never assume a category.
  2. Credentials requested: Mask secrets (API Key: first 5 + last 4, Secret: last 5 only)
  3. Listing accounts: Show names, environment, and region — never keys
  4. Account selection: Ask if ambiguous, default to main
  5. Mainnet confirmation: Only mainnet POST (write) operations require "CONFIRM". GET requests (public or private) never need confirmation. Testnet never needs confirmation
  6. New credentials: Ask for account name, environment (Mainnet/Testnet), region, then store in TOOLS.md
  7. Regional URL: Auto-select based on account Region field. Testnet always uses api-testnet.bybit.com
  8. Response handling: Check retCode — 0 means success, non-zero is an error. Show retMsg on errors
  9. POST requests: Always use Content-Type: application/json with JSON body
  10. GET requests: Parameters as query string
  11. User-Agent: Include User-Agent: bybit-v5/1.0.0 (Skill) on all requests
  12. Spot Market Buy: Prefer marketUnit=quoteCoin with USDT amount for spot market buy orders (more reliable than baseCoin qty)
  13. Hedge Mode detection: If a linear/inverse order returns retCode=10001 "position idx not match position mode", the account is in hedge mode. Retry with positionIdx: 1 for Buy/Long, 2 for Sell/Short. Agent should remember and auto-apply for subsequent orders.