NAV

Public Rest API for WazirX

Introduction

This document details the use of Wazirx’s REST API for spot exchange. This helps you automate trades in real-time, stream live crypto rates and build other integrations for your trading journey.

Our REST API is organized into publicly accessible endpoints (market data, exchange status, etc.), and private authenticated endpoints (trading, funding, user data) which require requests to be signed.

API Key Setup

API Key Restrictions

Spot Account

A SPOT account is provided by default upon creation of a WazirX Account.

Futures Account

A Futures account is not provided by default upon creation of a WazirX Account. To start trading Futures, you will need to complete the Futures activation process on the WazirX app or web platform. The activation takes just a few minutes.

Python connector

This is a lightweight library that works as a connector to WazirX public API, written in Python. - Python connector

Ruby connector

This is a lightweight library that works as a connector to WazirX public API, written in Ruby. - Ruby connector

Postman Collections

There is now a Postman collection containing the API endpoints for quick and easy use. This is recommended for new users who want to get a quick-start into using the API. For more information please refer to this page: WazirX API Postman

Contact Us

API third party Integrations

These integrations will help you in increasing your speed to build bots

General API Information

HTTP Return Codes

Error Codes and Messages

Sample Payload below:

{
  "code": -1121,
  "message": "Invalid symbol."
}

General Information on Endpoints

Limits

General Info on Limits

IP Limits

Websocket Limits

Endpoint security type

Security Type Description
NONE Endpoint can be accessed freely.
TRADE Endpoint requires sending a valid API-Key and signature.
USER_DATA Endpoint requires sending a valid API-Key and signature.
MARKET_DATA Endpoint requires sending a valid API-Key.

SIGNED (TRADE and USER_DATA) Endpoint security

Timing security

The logic is as follows:

  if (timestamp < (serverTime + 1000) && (serverTime - timestamp) <= recvWindow) {
    // process request
  } else {
    // reject request
  }

Serious trading is about timing. Networks can be unstable and unreliable, which can lead to requests taking varying amounts of time to reach the servers. With recvWindow, you can specify that the request must be processed within a certain number of milliseconds or be rejected by the server.

It is recommended to use a small recvWindow of 5000 or less! The max cannot go beyond 60,000!

SIGNED Endpoint Examples for POST /sapi/v1/order

Here is a step-by-step example of how to send a vaild signed payload from the Linux command line using echo, openssl, and curl.

Key Value
apiKey vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A
secretKey NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j
Parameter Value
symbol ltcbtc
side buy
type limit
quantity 1
price 0.1
recvWindow 5000
timestamp 1499827319559

Example 1: As a request body

Request Body:

symbol=ltcbtc&side=buy&type=limit&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559

HMAC SHA256 signature:

[linux]$ echo -n "symbol=ltcbtc&side=buy&type=limit&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559" | openssl dgst -sha256 -hmac "Nh***0j"
(stdin)= a0***60

(HMAC SHA256)

[linux]$ curl -H "X-API-KEY: vm***8A" -X POST 'https://api.wazirx.com/sapi/v1/order' -d 'symbol=ltcbtc&side=buy&type=limit&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559&signature=a0***60'

Example 2: As a query string

Query String:

symbol=ltcbtc&side=buy&type=limit&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559

HMAC SHA256 signature:

[linux]$ echo -n "symbol=ltcbtc&side=buy&type=limit&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559" | openssl dgst -sha256 -hmac "Nh***0j"
(stdin)= a0***60

Curl Command:

[linux]$ curl -H "X-API-KEY: vm***8A" -X POST 'https://api.wazirx.com/sapi/v1/order?symbol=ltcbtc&side=buy&type=limit&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559&signature=a0***60'

Public API Endpoints

ENUM definitions

Order status (status):

Order types (orderTypes, type):

Order side (side):

General endpoints

Test connectivity

GET /sapi/v1/ping
curl --location --request GET 'https://api.wazirx.com/sapi/v1/ping'

Response:

{}

Test connectivity to the Rest API.

Rate limit: 1 per second

Query Parameters: NONE



System status

GET /sapi/v1/systemStatus
curl --location --request GET 'https://api.wazirx.com/sapi/v1/systemStatus'

Response:

{
    "status": "normal",  // normal or system maintenance
    "message": "System is running normally."
}

Fetch system status.

Rate limit: 1 per second

Query Parameters: NONE






Check server time

GET /sapi/v1/time
curl --location --request GET 'https://api.wazirx.com/sapi/v1/time'

Response:

{
  "serverTime": 1499827319559
}

Test connectivity to the Rest API and get the current server time.

Rate limit: 1 per second

Query Parameters: NONE






Exchange Info

GET /sapi/v1/exchangeInfo
curl --location --request GET 'https://api.wazirx.com/sapi/v1/exchangeInfo'

Response:

{
  "timezone": "UTC",
    "serverTime": 1631531599247,
    "symbols": [
        {
            "symbol": "btcinr",
            "status": "trading",
            "baseAsset": "btc",
            "quoteAsset": "inr",
            "baseAssetPrecision": 5,
            "quoteAssetPrecision": 0,
            "orderTypes": [
                "limit",
                "stop_limit"
            ],
            "isSpotTradingAllowed": true,
            "filters": [
                {
                    "filterType": "PRICE_FILTER",
                    "minPrice": "1",
                    "tickSize": "1"
                }
            ]
        }
      ]
}

Fetch all exchange information

Rate limit: 1 per second

Query Parameters: NONE

Market Data endpoints

24hr tickers price change statistics

GET /sapi/v1/tickers/24hr
curl --location --request GET 'https://api.wazirx.com/sapi/v1/tickers/24hr'

Response:

[
  {
    "symbol": "btcinr",
    "baseAsset": "btc",
    "quoteAsset": "inr",
    "openPrice": "704999.0",
    "lowPrice": "702603.0",    
    "highPrice": "730001.0",
    "lastPrice": "720101.0",
    "volume": "891.8329",
    "bidPrice": "720102.0",
    "askPrice": "722999.0",
    "at": 1588829734
  }
]

24 hour rolling window price change statistics.

Rate limit: 1 per second

24hr ticker price change statistics

GET /sapi/v1/ticker/24hr
curl --location --request GET 'https://api.wazirx.com/sapi/v1/ticker/24hr?symbol=wrxinr'

Response:

{
  "symbol": "wrxinr",
  "baseAsset": "wrx",
  "quoteAsset": "inr",
  "openPrice": "704999.0",
  "lowPrice": "702603.0",    
  "highPrice": "730001.0",
  "lastPrice": "720101.0",
  "volume": "891.8329",
  "bidPrice": "720102.0",
  "askPrice": "722999.0",
  "at": 1588829734
}

24 hour rolling window price change statistics.

Rate limit: 1 per second

Query Parameters:

Name Type Mandatory Description
symbol STRING YES

Kline/Candlestick Data

GET /sapi/v1/klines
curl --location --request GET 'https://api.wazirx.com/sapi/v1/klines?symbol=btcinr&limit=5&interval=1m&startTime=1647822960&endTime=1647823020'

Response:

[
    [
        1647822960,   // Kline start time
        20,           // Open price
        20,           // High price
        20,           // Low price
        20,           // Close price
        0             // Base asset volume
    ],
    [
        1647823020,   // Kline start time
        20,           // Open price
        20,           // High price
        20,           // Low price
        20,           // Close price
        0             // Base asset volume
    ]
]

Request via this endpoint to get the klines data of the specified symbol.

Rate limit: 1 per second

Query Parameters:

Name Type Mandatory Description
symbol STRING YES
limit STRING NO default 500, max 2000
interval STRING NO allowed values [1m,5m,15m,30m,1h,2h,4h,6h,12h,1d,1w]
startTime LONG NO
endTime LONG NO

Order book

GET /sapi/v1/depth
curl --location --request GET 'https://api.wazirx.com/sapi/v1/depth?symbol=wrxinr&limit=5'

Response:

{
   "lastUpdateAt": 1588831243,
   "asks":[
      [
         "9291.0",   // PRICE
         "0.0119"    // QTY
      ]
   ],
   "bids":[
      [
         "9253.0",   // PRICE
         "1.0456"    // QTY
      ]
   ]
}

Rate limit: 2 per second

Query Parameters:

Name Type Mandatory Description
symbol STRING YES
limit INT NO Default 20; max 1000. Valid limits:[1, 5, 10, 20, 50, 100, 500, 1000]


Recent trades list

GET /sapi/v1/trades
curl --location --request GET 'https://api.wazirx.com/sapi/v1/trades?symbol=wrxinr&limit=10'

Response:

[
  {
    "id": 28457,
    "price": "4.00000100",
    "qty": "12.00000000",
    "quoteQty": "48.000012",
    "time": 1499865549590,
    "isBuyerMaker": true
  }
]

Get recent trades.

Rate limit: 1 per second

Query Parameters:

Name Type Mandatory Description
symbol STRING YES
limit INT NO Default 500; max 1000.


Old trade lookup (MARKET_DATA)

GET /sapi/v1/historicalTrades
curl --location --request GET 'https://api.wazirx.com/sapi/v1/historicalTrades?limit=10&symbol=wrxinr&signature=e0***cb&recvWindow=10000&timestamp=1632376801204' \
--header 'X-Api-Key: Ry***n0'

Response:

[
  {
    "id": 28457,
    "price": "4.00000100",
    "qty": "12.00000000",
    "quoteQty": "48.000012",
    "time": 1499865549590,
    "isBuyerMaker": true
  }
]

Get older trades.

Rate limit: 1 per second

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Query Parameters:

Name Type Mandatory Description
symbol STRING YES
limit INT NO Default 500; max 1000.
fromId LONG NO TradeId to fetch from. Default gets most recent trades.

Trading Endpoints

New order (TRADE)

POST /sapi/v1/order (HMAC SHA256)
curl --location --request POST 'https://api.wazirx.com/sapi/v1/order' \
--header 'X-Api-Key: Ry***n0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'symbol=wrxinr' \
--data-urlencode 'side=buy' \
--data-urlencode 'type=limit' \
--data-urlencode 'price=500' \
--data-urlencode 'quantity=1' \
--data-urlencode 'recvWindow=10000' \
--data-urlencode 'timestamp=1632376923837' \
--data-urlencode 'signature=11***6f' \
--data-urlencode 'clientOrderId=clientOrderIdSampl12'

Response:

{
  "id": 28,
  "clientOrderId":"clientOrderIdSampl12",
  "symbol": "wrxinr",
  "price": "9293.0",
  "origQty": "10.0",
  "executedQty": "8.2",
  "status": "wait",
  "type": "limit",
  "side": "sell",
  "createdTime": 1499827319559,
  "updatedTime": 1499827319559
}

Send in a new order.

Rate limit: 10 per second

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Body Parameters:

Name Type Mandatory Description
symbol STRING YES
side ENUM YES
type ENUM YES limit or stop_limit
quantity DECIMAL NO
price DECIMAL NO
stopPrice DECIMAL NO
clientOrderId STRING NO A unique id among open orders. Automatically generated if not sent.
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
signature STRING YES

Additional mandatory parameters based on type:

Type Additional mandatory parameters
limit quantity, price
stop_limit quantity, price, stopPrice

Test new order (TRADE)

POST /sapi/v1/order/test (HMAC SHA256)
curl --location --request POST 'https://api.wazirx.com/sapi/v1/order/test' \
--header 'X-Api-Key: Ry***n0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'symbol=wrxinr' \
--data-urlencode 'side=buy' \
--data-urlencode 'type=limit' \
--data-urlencode 'price=500' \
--data-urlencode 'quantity=1' \
--data-urlencode 'recvWindow=10000' \
--data-urlencode 'timestamp=1632376923837' \
--data-urlencode 'signature=11***6f'

Response:

{}

Test new order creation and signature/recvWindow long. Validates a new order but does not send it into the matching engine.

Rate limit: 2 per second

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Body Parameters: Same as POST /sapi/v1/order

Query order (USER_DATA)

GET /sapi/v1/order (HMAC SHA256)
curl --location --request GET 'https://api.wazirx.com/sapi/v1/order/?orderId=1234&clientOrderId=clientOrderIdSampl12&recvWindow=20000&timestamp=1632377057552&signature=91***f0' \
--header 'X-Api-Key: Ry***n0'

Response:

{
  "id": 30,
  "clientOrderId":"clientOrderIdSampl12",
  "symbol": "wrxinr",
  "price": "9293.0",
  "stopPrice": "9200.0",
  "origQty": "10.0",
  "executedQty": "0.0",
  "status": "idle",
  "type": "stop_limit",
  "side": "sell",
  "createdTime": 1499827319559,
  "updatedTime": 1507725176595
}

Check an order's status.

Rate limit: 2 per second

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Query Parameters:

Name Type Mandatory Description
orderId LONG NO
clientOrderId STRING NO A unique clientOrderId among open orders.
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
signature STRING YES


Current open orders (USER_DATA)

GET /sapi/v1/openOrders  (HMAC SHA256)
curl --location --request GET 'https://api.wazirx.com/sapi/v1/openOrders?symbol=wrxinr&limit=2&recvWindow=20000&timestamp=1632377102391&signature=a1***af' \
--header 'X-Api-Key: Ry***n0'

Response:

[
  {
    "id": 28,
    "clientOrderId":"clientOrderIdSampl12",
    "symbol": "wrxinr",
    "price": "9293.0",
    "origQty": "10.0",
    "executedQty": "8.2",
    "status": "wait",
    "type": "limit",
    "side": "sell",
    "createdTime": 1499827319559,
    "updatedTime": 1499827319559
  },
  {
    "id": 30,
    "clientOrderId":"clientOrderIdSampl123",
    "symbol": "btcusdt",
    "price": "9293.0",
    "stopPrice": "9200.0",
    "origQty": "10.0",
    "executedQty": "0.0",
    "status": "idle",
    "type": "stop_limit",
    "side": "sell",
    "createdTime": 1499827319559,
    "updatedTime": 1507725176595
  }
]

Get all open orders on a symbol.

Rate limit: 1 per second

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Query Parameters:

Name Type Mandatory Description
symbol STRING NO
orderId LONG NO
startTime LONG NO Fetch orders after this time
endTime LONG NO Fetch orders before this time
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
signature STRING YES

Notes:


All orders (USER_DATA)

GET /sapi/v1/allOrders (HMAC SHA256)
curl --location --request GET 'https://api.wazirx.com/uapi/v1/allOrders?symbol=wrxinr&orderId=1234&startTime=1590148051000&endTime=1590148051000&limit=100&recvWindow=20000&timestamp=1632377355091&signature=Ot***' \
--header 'X-Api-Key: Ry***n0'

Response:

[
  {
    "id": 28,
    "clientOrderId":"clientOrderIdSampl12",
    "symbol": "wrxinr",
    "price": "9293.0",
    "origQty": "10.0",
    "executedQty": "8.2",
    "status": "cancel",
    "type": "limit",
    "side": "sell",
    "createdTime": 1499827319559,
    "updatedTime": 1499827319559
  },
  {
    "id": 30,
    "clientOrderId":"clientOrderIdSampl12",
    "symbol": "wrxinr",
    "price": "9293.0",
    "stopPrice": "9200.0",
    "origQty": "10.0",
    "executedQty": "0.0",
    "status": "cancel",
    "type": "stop_limit",
    "side": "sell",
    "createdTime": 1499827319559,
    "updatedTime": 1507725176595
  }
]

Get all account orders; "idle", "wait", "cancel" or "done".

Rate limit: 1 per second

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Query Parameters:

Name Type Mandatory Description
symbol STRING YES
orderId LONG NO
startTime LONG NO Fetch order after this time
endTime LONG NO Fetch order before this time
limit INT NO Default 500; max 1000.
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
signature STRING YES

Notes:


Cancel order (TRADE)

DELETE /sapi/v1/order  (HMAC SHA256)
curl --location --request DELETE 'https://api.wazirx.com/sapi/v1/order' \
--header 'X-Api-Key: Ry***n0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'symbol=wrxinr' \
--data-urlencode 'orderId=1234' \
--data-urlencode 'clientOrderId=clientOrderIdSampl12' \
--data-urlencode 'recvWindow=20000' \
--data-urlencode 'timestamp=1632377448564' \
--data-urlencode 'signature=c2***17'

Response:

{
  "id": 30,
  "clientOrderId":"clientOrderIdSampl12",
  "symbol": "wrxinr",
  "price": "9293.0",
  "origQty": "10.0",
  "executedQty": "0.0",
  "status": "wait",
  "type": "limit",
  "side": "sell",
  "createdTime": 1499827319559,
  "updatedTime": 1507725176595
}

Cancel an active order.

Rate limit: 10 per second

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Body Parameters:

Name Type Mandatory Description
symbol STRING YES
orderId LONG NO
clientOrderId STRING NO A unique clientOrderId among open orders.
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
signature STRING YES


Cancel All Open Orders on a Symbol (TRADE)

DELETE /sapi/v1/openOrders (HMAC SHA256)
curl --location --request DELETE 'https://api.wazirx.com/sapi/v1/openOrders' \
--header 'X-Api-Key: Ry***n0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'symbol=wrxinr' \
--data-urlencode 'recvWindow=20000' \
--data-urlencode 'timestamp=1632377515580' \
--data-urlencode 'signature=5f***5e'

Response:

[
  {
      "id": 28,
      "clientOrderId":"clientOrderIdSampl12",
      "symbol": "btcusdt",
      "price": "9293.0",
      "origQty": "10.0",
      "executedQty": "8.2",
      "status": "cancel",
      "type": "limit",
      "side": "sell",
      "createdTime": 1499827319559,
      "updatedTime": 1499827319559
    },
    {
      "id": 30,
      "clientOrderId":"clientOrderIdSampl12",
      "symbol": "btcusdt",
      "price": "9293.0",
      "stopPrice": "9200.0",
      "origQty": "10.0",
      "executedQty": "0.0",
      "status": "cancel",
      "type": "stop_limit",
      "side": "sell",
      "createdTime": 1499827319559,
      "updatedTime": 1507725176595
    }
]

Cancels all active orders on a symbol.

Rate limit: 1 per second

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Body Parameters:

Name Type Mandatory Description
symbol STRING YES
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
signature STRING YES


My Trades (TRADE)

GET sapi/v1/myTrades
curl --location --request GET 'https://api.wazirx.com/sapi/v1/myTrades?limit=10&symbol=wrxinrt&signature=5f***5e&orderId=22394630&recvWindow=10000&timestamp=1632377515580' \
--header 'X-Api-Key: Ry***n0'

Response:

[
  {
      "id": 22394630,
      "symbol": "wrxinr",
      "fee": "32.40551116",
      "feeCurrency": "inr",
      "quoteQty": "16202.75558",
      "price": "22.0",
      "qty": "736.48889",
      "orderId": 22394630,
      "side": "buy",
      "isBuyerMaker": true,
      "time": 1634898186000
  }
]

Get trades for a specific orderId and symbol.

Rate limit: 2 per second

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Query Parameters:

Name Type Mandatory Description
symbol STRING NO
orderId LONG NO Fetch all trades for a given orderId
fromId LONG NO Fetch all trades after a given tradeId including the given tradeId
limit INT NO Default 500; max 1000.
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
signature STRING YES
startTime LONG NO Fetch trades after this time
endTime LONG NO Fetch trades before this time

Wallet Endpoints

All Coins' Information (USER_DATA)

GET /sapi/v1/coins (HMAC SHA256)
curl --location --request GET 'https://api.wazirx.com/sapi/v1/coins?recvWindow=10000&signature=91***f0&timestamp=1663323414556' \
--header 'X-Api-Key: Ry***n0'

Response:

[
    {
        "coin": "BTC",
        "rapidListed": true,
        "name": "Bitcoin",
        "binanceTransferEnable": true,
        "binanceTransferFee": "0.0000010",
        "minBinanceTransfer": "0.0000020",
        "networkList": [
            {
                "coin": "BTC",
                "depositEnable": false,
                "isDefault": false,
                "confirmations": 1,
                "name": "BEP2",
                "network": "BNB",            
                "withdrawEnable": false,
                "withdrawFee": "0.00000220",
                "withdrawMax": "9999999999.99999999",
                "withdrawMin": "0.00000440",
                "memoRequired": true
            },
            {
                "coin": "BTC",
                "depositEnable": true,
                "isDefault": true,
                "confirmations": 1, 
                "name": "BTC",
                "network": "BTC",
                "withdrawEnable": true,
                "withdrawFee": "0.00050000",
                "withdrawIntegerMultiple": "0.00000001",
                "withdrawMax": "750",
                "withdrawMin": "0.00100000",
                "memoRequired": false
            }
        ]
    }
]

Get information of coins (available for deposit and withdraw) for user.

Rate limit: 5 per minute

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Query Parameters:

Name Type Mandatory Description
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
signature STRING YES


Address Book (USER_DATA)

GET /sapi/v1/crypto/withdraw/address-book (HMAC SHA256)
curl --location --request GET 'https://api.wazirx.com/sapi/v1/crypto/withdraw/address-book?recvWindow=10000&signature=91***f0&timestamp=1663323414556&coin=btc&sortOrder=asc' \
--header 'X-Api-Key: Ry***n0'

Response:

[
    {
        "address": "tb1p5cyxnu*****mvzv",
        "createdAt": "2025-11-11T11:49:00Z",
        "currency": "btc",
        "id": 980,
        "isUniversal": false,
        "isWithdrawAllowed": true,
        "name": "test address btc",
        "networkObj": {
            "name": "Bitcoin",
            "network": "btc"
        },
        "provider": {
            "id": 540,
            "name": "Notabene RoboVASP ACCEPT",
            "type": "exchange"
        },
        "userAddressId": 980,
        "verificationStatus": "unverified",
        "withdrawAllowedAfter": "2025-11-12T11:49:00Z"
    }
]

Retrieve the list of addresses in the user’s withdrawal address book.

Rate limit: 5 per minute

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Query Parameters:

Name Type Mandatory Description
coin STRING YES
sortOrder STRING NO Default: desc; asc or desc
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
signature STRING YES


Crypto Withdraw (USER_DATA)

POST /sapi/v1/crypto/withdraw (HMAC SHA256)
curl --location --request POST 'https://api.wazirx.com/sapi/v1/crypto/withdraw' \
--header 'X-Api-Key: Ry***n0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'coin=xrp' \
--data-urlencode 'addressBookId=123' \
--data-urlencode 'amount=100.50' \
--data-urlencode 'withdrawConsent=I confirm that this withdrawal of crypto assets is being done to my own wallet, as specified above. I authorize you to share travel rule information with the destination wallet service provider wherever applicable.' \
--data-urlencode 'extra=Remark text' \
--data-urlencode 'recvWindow=10000' \
--data-urlencode 'timestamp=1632376923837' \
--data-urlencode 'signature=11***6f' \
--data-urlencode 'withdrawOrderId=clientOrderIdSampl12'

Response:

{
  "id" : 1234567,
  "withdrawOrderId": "clientOrderIdSampl12"
}

Initiate a crypto withdrawal transaction.

To use this API, the API key must have the “Crypto Withdrawal” permission enabled. If this permission is not available in your account, please contact support to enable it.

Unlike crypto withdrawals initiated through the application, this API does not require 2FA verification. Use it with caution.

Rate limit: 1 per minute.

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Body Parameters:

Name Type Mandatory Description
coin STRING YES
addressBookId LONG YES You can obtain the addressBookId using the Address Book API
amount DECIMAL YES
withdrawConsent STRING YES Fetch the value from networkList.withdrawConsent.message in the All Coins' Information (GET /sapi/v1/coins) API response
extra STRING YES Enter Remarks
withdrawOrderId STRING NO A unique client-generated id to identify the withdrawal request. Automatically generated if not sent.
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
signature STRING YES

Notes:


Withdraw History (supporting network) (USER_DATA)

GET /sapi/v1/crypto/withdraws (HMAC SHA256)
curl --location --request GET 'https://api.wazirx.com/sapi/v1/crypto/withdraws?recvWindow=10000&transferType=2&timestamp=1663323414556&signature=91***f0&startTime=1660301719&endTime=1652263206&coin=btc&offset=1&limit=5' \
--header 'X-Api-Key: Ry***n0'

Response:

[
    {
        "binanceTransfer": false,
        "address": "0x94df8b352de7f46f64b01d3666bf6e936e44ce60",
        "amount": "8.91000000",
        "createdAt": "2019-10-12 09:12:02",
        "lastUpdated": "2019-10-12 11:12:02",
        "coin": "USDT",
        "id": "b6ae22b3aa844210a7041aee7589627c",
        "withdrawOrderId": "WITHDRAWtest123",
        "network": "ETH",
        "status": 1,
        "transactionFee": "0.004",
        "failureInfo":"The address is not valid. Please confirm with the recipient",
        "txId": "0xb5ef8c13b968a406cc62a93a8bd80f9e9a906ef1b3fcf20a2e48573c17659268"
    },
    {
        "binanceTransfer": true,
        "transactionFee": "0.004",
        "amount": "8.91000000",
        "createdAt": "2019-10-12 09:12:02",
        "lastUpdated": "2019-10-12 11:12:02",
        "coin": "USDT",
        "id": "b6ae22b3aa844210a7041aee7589627c",
        "withdrawOrderId": "WITHDRAWtest123",
        "status": 1,
        "failureInfo":"The address is not valid. Please confirm with the recipient",
    },
    {
        "binanceTransfer": "true",
        "transactionFee": "0.004",
        "address": "1FZdVHtiBqMrWdjPyRPULCUceZPJ2WLCsB",
        "amount": "0.00150000",
        "createdAt": "2019-09-24 12:33:45",
        "lastUpdated": "2019-09-24 12:43:45",
        "coin": "BTC",
        "id": "156ec387f49b41df8724fa744fa82719",
        "network": "BTC",
        "status": 0,
        "transactionFee": "0.004",
        "failureInfo":"",
        "txId": "60fd9007ebfddc753455f95fafa808c4302c836e4d1eebc5a132c36c1d8ac354"
    }
]

Fetch crypto withdraw history. This includes both onchain and offchain (binance) transactions.

Rate limit: 5 per minute

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Query Parameters:

Name Type Mandatory Description
coin STRING NO
transferType INT NO 1 - only onchain withdrawas; 2 - only binance transfers
withdrawOrderId STRING NO client id for withdraw
status INT NO Success, Failed, Pending, Cancelled
offset INT NO
limit INT NO Default: 100, Max: 1000
startTime LONG NO Default: 90 days from current timestamp
endTime LONG NO Default: present timestamp
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
signature STRING YES

Notes:


Deposit Address (supporting network) (USER_DATA)

GET /sapi/v1/crypto/deposits/address (HMAC SHA256)
curl --location --request GET 'https://api.wazirx.com/sapi/v1/crypto/deposits/address?recvWindow=10000&signature=91***f0&timestamp=1663323414556&coin=btc&network=btc' \
--header 'X-Api-Key: Ry***n0'

Response:

{
    "address": "1HP...89wv",
    "coin": "BTC",
    "tag": "",
    "url": "https://btc.com/1HP...89wv"
}

Fetch deposit address with network.

Rate limit: 1 per minute

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Query Parameters:

Name Type Mandatory Description
coin STRING YES
network STRING YES
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
signature STRING YES

Notes:


Account Endpoints

Account information (USER_DATA)

GET /sapi/v1/account (HMAC SHA256)
curl --location --request GET 'https://api.wazirx.com/sapi/v1/account?recvWindow=20000&timestamp=1632377552095&signature=3c***e5' \
--header 'X-Api-Key: Ry***n0'

Response:

{
  "accountType": "default",
  "canTrade": true,
  "canWithdraw": true,
  "updateTime": 123456789
}

Get current account information.

Rate limit: 1 per second

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Query Parameters:

Name Type Mandatory Description
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
signature STRING YES


Fund details (USER_DATA)

GET /sapi/v1/funds (HMAC SHA256)
curl --location --request GET 'https://api.wazirx.com/sapi/v1/funds?recvWindow=20000&timestamp=1632377552095&signature=3c***e5' \
--header 'X-Api-Key: Ry***n0'

Response:

[
  {
    "asset": "btc",
    "free": "4723846.89208129",
    "locked": "0.0"
  },
  {
    "asset": "wrx",
    "free": "4763368.68006011",
    "locked": "0.0",
    "reservedFee": "12.5"
  }
]

Get fund details for current account.

Rate limit: 1 per second

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Query Parameters:

Name Type Mandatory Description
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
signature STRING YES


Fund details V2 (USER_DATA)

GET /sapi/v2/funds (HMAC SHA256)
curl --location --request GET 'https://api.wazirx.com/sapi/v2/funds?wallets=spot&wallets=futures&timestamp=1700000000000&signature=11***6f' \
--header 'X-Api-Key: Ry***n0'

Response:

{
  "spot": [
    {
      "asset": "inr",
      "free": "15000.50",
      "locked": "200.00",
      "reservedFee": "10.00"
    }
  ],
  "futures": [
    {
      "asset": "inr",
      "free": "5000.00",
      "locked": "0.0"
    }
  ]
}

Returns the user's balances across the Spot and Futures wallets.

Query Parameters:

Name Type Mandatory Default Description
wallets ARRAY NO spot, futures Wallets to include: spot, futures. Repeat the parameter for multiple values (e.g. wallets=spot&wallets=futures). If omitted, both wallets are returned.
timestamp LONG YES
signature STRING YES

Response fields:

Field Type Note
spot ARRAY Spot wallet balances. Omitted when wallets does not include spot.
futures ARRAY Futures wallet balances. Omitted when wallets does not include futures or Futures is not activated for the account.
asset STRING
free STRING Available balance.
locked STRING Balance locked in open orders / pending operations.
reservedFee STRING Spot rows only; omitted when zero.


Wallet Transfer (USER_DATA)

Move funds between your Spot and Futures wallets. Our wallets are Spot and Futures only, so only these two transfer directions are supported:

type Direction
MAIN_TO_FUTURE Spot → Futures
FUTURE_TO_MAIN Futures → Spot
POST /sapi/v1/asset/transfer (HMAC SHA256)
curl --location --request POST 'https://api.wazirx.com/sapi/v1/asset/transfer' \
--header 'X-Api-Key: Ry***n0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'type=MAIN_TO_FUTURE' \
--data-urlencode 'asset=INR' \
--data-urlencode 'amount=5000' \
--data-urlencode 'timestamp=1700000000000' \
--data-urlencode 'signature=11***6f'

Response:

{
  "id": 9000123
}

Initiate a transfer between the Spot and Futures wallets.

Body Parameters:

Name Type Mandatory Description
requestId STRING NO A client-supplied unique id for idempotency; alphanumeric, at most 64 characters — a duplicate is rejected.
type ENUM YES MAIN_TO_FUTURE or FUTURE_TO_MAIN.
asset STRING YES Asset to transfer (e.g. INR, USDT).
amount DECIMAL YES Amount to transfer.
timestamp LONG YES
signature STRING YES

Response fields:

Field Type Note
id LONG Transfer transaction id.


Wallet Transfer History (USER_DATA)

GET /sapi/v1/asset/transfer (HMAC SHA256)
curl --location --request GET 'https://api.wazirx.com/sapi/v1/asset/transfer?type=MAIN_TO_FUTURE&timestamp=1700000000000&signature=11***6f' \
--header 'X-Api-Key: Ry***n0'

Response:

{
  "total": 1,
  "rows": [
    {
      "asset": "INR",
      "amount": "5000.00",
      "type": "MAIN_TO_FUTURE",
      "status": "CONFIRMED",
      "id": 9000123,
      "timestamp": 1700000000000,
      "requestId": "01ARZ3NDEKTSV4RRFFQ69G5FAV"
    }
  ]
}

Query the history of Spot ↔ Futures transfers.

Query Parameters:

Name Type Mandatory Default Description
type ENUM YES MAIN_TO_FUTURE or FUTURE_TO_MAIN.
startTime LONG NO If omitted, defaults to the last 7 days.
endTime LONG NO
fromId LONG NO Transfer record id (id) to fetch from; returns records with id < fromId (older than fromId), ordered by id descending. If omitted, the most recent records are returned.
limit INT NO 100 Records per page; max 1000.
timestamp LONG YES
signature STRING YES

Response fields:

Field Type Note
total INT Total number of transfer records.
rows ARRAY Transfer records.
rows[].asset STRING
rows[].amount STRING
rows[].type STRING MAIN_TO_FUTURE or FUTURE_TO_MAIN.
rows[].status STRING PENDING, CONFIRMED, or FAILED.
rows[].requestId STRING
rows[].id LONG
rows[].timestamp LONG


Sub-Account Endpoints

Transfer Funds

POST /sapi/v1/sub_account/fund_transfer (HMAC SHA256)
curl --location --request POST 'https://api.wazirx.com/sapi/v1/sub_account/fund_transfer' \
--header 'X-Api-Key: Ry***n0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'amount=5' \
--data-urlencode 'currency=btc' \
--data-urlencode 'fromEmail=abc@abc.com' \
--data-urlencode 'toEmail=xyz@xyz.com' \
--data-urlencode 'recvWindow=10000' \
--data-urlencode 'signature=11***6f' \
--data-urlencode 'timestamp=1659607794977'

Response:

{
  "status": "success", 
  "txnId": 163
}

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Body Parameters:

Name Type Mandatory Description
currency STRING YES
amount DECIMAL YES
fromEmail STRING YES
toEmail STRING YES
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
signature STRING YES


Get Transfer History

GET /sapi/v1/sub_account/fund_transfer/history (HMAC SHA256)
curl --location --request GET 'https://api.wazirx.com/sapi/v1/sub_account/fund_transfer/history?recvWindow=10000&signature=3c***e5&timestamp=1672204922962' \
--header 'X-Api-Key: Ry***n0'

Response:

[
    {
        "asset": "wrx",
        "from": "abc@abc.xom",
        "qty": "1.2222",
        "status": "success",
        "time": 1672144988,
        "to": "xyx@xyz.com",
        "txnId": 200
    },
    {
        "asset": "wrx",
        "from": "xyx@xyz.com",
        "qty": "1.2222",
        "status": "success",
        "time": 1672144812,
        "to": "abc@abc.xom",
        "txnId": 199
    },
]

Fetch transfer history between main account and sub-accounts

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Query Parameters:

Name Type Mandatory Description
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
signature STRING YES

Get Fund Details

GET /sapi/v1/sub_account/accounts (HMAC SHA256)
curl --location --request GET 'https://api.wazirx.com/sapi/v1/sub_account/accounts?recvWindow=20000&signature=3c***e5&timestamp=1672204922962' \
--header 'X-Api-Key: Ry***n0'

Response:

[
  {
        "action": "Freeze",
        "balance": [
            {
                "balance": "50.0",
                "symbol": "inr"
            }
        ],
        "created_at": 1637757662,
        "email": "abc@abc.com",
        "emailVerification": "Completed",
        "portfolio": "50.0",
        "status": "Active"
    },
    {
        "action": "Freeze",
        "balance": [
            {
                "balance": "18.072",
                "symbol": "wrx"
            }
        ],
        "created_at": 1637757677,
        "email": "xyz@xyz.com",
        "emailVerification": "Completed",
        "portfolio": "162.648",
        "status": "Active"
    },
]

Get funds details of sub-accounts from parent account API key

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Query Parameters:

Name Type Mandatory Description
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
signature STRING YES

Websocket Auth Tokens

Create Auth Token

POST /sapi/v1/create_auth_token (HMAC SHA256)
curl --location --request POST 'https://api.wazirx.com/sapi/v1/create_auth_token?recvWindow=20000&timestamp=1632377552095&signature=3c***e5' \
--header 'X-Api-Key: Ry***n0'

Response:

{
    "auth_key": "Xx***dM",
    "timeout_duration": 900
}

Create your auth token for subscription to private socket streams. The stream will close after 30 minutes unless a ping event is sent. If the account has an active auth_key, the api will return the same auth_key and its validity will be extended for another 30 minutes.

Rate limit: 1 per second

Headers:

Name Type Mandatory Description
X-API-KEY STRING YES

Query Parameters:

Name Type Mandatory Description
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
signature STRING YES


Websocket Market Streams

Sample ping request

{"event":"ping"}

Sample pong response

{"data":{"timeout_duration":1800},"event":"pong","id":0}

Live Subscribing/Unsubscribing to streams

Subscribe to public streams

{"event":"subscribe","streams":["!ticker@arr"]}

Subscribe to private streams

{"event":"subscribe","streams":["orderUpdate"], "auth_key": "***"}

Payload (same for both public and private):

{
  "data":
  {
    "streams":
    [
    "!ticker@arr"
    ]
  },
  "event":"subscribed",
  "id":0
}

Subscribe to a stream






















Unsubscribing from any stream

{"event":"unsubscribe","streams":["!ticker@arr"]}

Payload:

{
  "data":
  {
    "streams":
    [
    "!ticker@arr"
    ]
  },
  "event":"unsubscribed",
  "id":0
}

Unsubscribe to a stream

Error Messages

Error Message Description
{"data":{"code":400,"message":"Invalid request: streams must be an array"},"event":"error","id":0} This is when key-pair is not valid
{"data":{"code":401,"message":"Invalid request: unauthorized access"},"event":"error","id":0} This is when your auth_key does not have access for a private stream
{"data":{"code":400,"message":"Invalid request: unsupported method","id":0} This is when method is not correct
{"data":{"code":500,"message":"Invalid request: could not parse message","id":0} This is when message cannot be parsed
{"data":{"code":400,"message":"Invalid request: ID must be an unsigned integer","id":0} This is when ID is invalid
{"data":{"code":400,"message":"Invalid request: auth_key must be a string","id":0} This is when auth_key is not a string
{"data":{"code":429,"message":"Too many request: max streams subscription limit reached","id":0} This is when limit reached of maximum requests

Trade Streams

Request

{"event":"subscribe","streams":["btcinr@trades"]}

Payload:

{
  "data":
  {
    "trades":
    [
      {
        "E":1631681323000,  // Event time
        "S":"buy",          // Side [To be deprecated soon]
        "a":26946138,       // Buyer order ID
        "b":26946169,       // Seller order ID
        "m":true,           // Is buyer maker?
        "p":"7.0",          // Price
        "q":"15.0",         // Quantity
        "s":"btcinr",       // Symbol
        "t":17376030        // Trade ID
      }
    ]
  },
  "stream":"btcinr@trades"
}

The Trade Streams push raw trade information; each trade has a unique buyer and seller.

Stream Name: <symbol>@trades

All Market Tickers Stream

Request

{"event":"subscribe","streams":["!ticker@arr"]}

Payload:

{
  "data":
  [
    {
      "E":1631625534000,    // Event time
      "T":"SPOT",           // Type
      "U":"wrx",            // Quote unit
      "a":"0.0",            // Best sell price
      "b":"0.0",            // Best buy price
      "c":"5.0",            // Last price
      "h":"5.0",            // High price
      "l":"5.0",            // Low price
      "o":"5.0",            // Open price
      "q":"0.0",            // Quantity
      "s":"btcwrx",         // Symbol
      "u":"btc"             // Base unit
    }
  ],
  "stream":"!ticker@arr"
}

24hr rolling window ticker statistics for all symbols that changed in an array. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs. Note that only tickers that have changed will be present in the array.

Stream Name: !ticker@arr

Kline/Candlestick Stream

Request

{"event":"subscribe","streams":["btcinr@kline_1m"]}

Payload:

{
    "data": {
      "E":1631683058904,      // Event time
      "s": "btcinr",          // Symbol
      "t": 1638747660000,     // Kline start time
      "T": 1638747719999,     // Kline close time
      "i": "1m",              // Interval
      "o": "0.0010",          // Open price
      "c": "0.0020",          // Close price
      "h": "0.0025",          // High price
      "l": "0.0015",          // Low price
      "v": "1000",            // Base asset volume
    },
    "stream": "btcinr@kline_1m"
}

The Kline/Candlestick Stream pushes update of current klines/candlestick every few second.

Kline intervals:

Key Value
m Minutes
h Hours
d Days
w Weeks
M Months

Stream Name: <symbol>@kline_<interval>

Update Speed: 5 seconds

Depth Stream

Request

{"event":"subscribe","streams":["btcinr@depth"]}

Payload:

{
  "data":
  {
    "E":1631682370000,       // Event time
    "a": [                   // Asks to be updated
      [
        "10.0",              // Price level to be updated
        "75.0"               // Quantity
      ]
    ],
    "b": [                   // Bids to be updated
      [
        "6.0",               // Price level to be updated
        "50.0"               // Quantity
      ]
    ],
    "s":"btcinr"             // Symbol
  },
  "stream":"btcinr@depth"
}

Order book price and quantity depth updates.

Stream Name: <symbol>@depth

Update Speed: 3 seconds, or 10 seconds if no changes in the order book.

Partial Depth Stream

Request

{"event":"subscribe","streams":["btcinr@depth10@100ms"]}

Payload:

{
  "data":
  {
    "E":1631682370000,       // Event time
    "a": [                   // Asks to be updated
      [
        "10.0",              // Price level to be updated
        "75.0"               // Quantity
      ],
      ...
    ],
    "b": [                   // Bids to be updated
      [
        "6.0",               // Price level to be updated
        "50.0"               // Quantity
      ],
      ...
    ],
    "s":"btcinr"             // Symbol
  },
  "stream":"btcinr@depth10@100ms"
}

Order book price and quantity depth updates.

Supported levels - 5, 10 or 20.

Stream Name: <symbol>@depth<level>@100ms

Update Speed: 100 ms

Account Update

Request

{"event":"subscribe","streams":["outboundAccountPosition"], "auth_key":"***"}

Payload:

{
  "data":
  {
    "B": [                            // Balances Array
      {
        "a":"wrx",                    // Asset
        "b":"2043856.426455209",      // Free
        "l":"3001318.98"              // Locked
      }
    ],
    "E":1631683058909                 // Event time
  },
  "stream":"outboundAccountPosition"
}

outboundAccountPosition is sent any time an account balance has changed and contains the assets that were possibly changed by the event that generated the balance change.

Stream Name: outboundAccountPosition

Requires: auth_key

Order Update

Request

{"event":"subscribe","streams":["orderUpdate"], "auth_key":"***"}

Payload:

{
  "data":
  {
    "E":1631683058904,       // Event time
    "O":1631683058000,       // Updated time
    "S":"sell",              // Kind
    "V":"70.0",              // Original volume
    "X":"wait",              // State
    "i":26946170,            // Order ID
    "c":"my_clientorder_1",  // Client Order ID
    "m":true,                // Is market maker?
    "o":"limit",             // Type
    "p":"5.0",               // Price
    "q":"70.0",              // Balance Volume
    "s":"wrxinr",            // Symbol
    "v":"0.0"                // Average price
    "z":"0.0"                // Filled Volume
  },
  "stream":"orderUpdate"
}

Orders are updated with the orderUpdate event.

Stream Name: orderUpdate

Requires: auth_key

Trade Update

Request

{"event":"subscribe","streams":["ownTrade"], "auth_key":"***"}

Payload:

{
  "data":
  {
    "E":1631683058000,      // Event time
    "S":"ask",              // Kind
    "U":"inr",              // Fee currency
    "a":114144050,          // Seller ID
    "b":114144121,          // Buyer ID
    "f":"0.2",              // Fee
    "m":true,               // Is market maker?
    "o":26946170,           // Order ID
    "c":"my_clientorder_1", // Client Order ID
    "p":"5.0",              // Price
    "q":"20.0",             // Quantity
    "s":"btcinr",           // Symbol
    "t":17376032,           // Trade ID
    "w":"100.0"             // Funds
  },
  "stream":"ownTrade"
}

Trades are updated with the ownTrade event.

Stream Name: ownTrade

Requires: auth_key

Futures Endpoints

Public reference for the WazirX Futures REST API (FAPI). Only the fields currently supported are documented; unsupported fields are noted and will be added in future releases.

Base URLs:

Futures Conventions

Futures Authentication

WazirX Futures uses the same API-key + HMAC SHA256 signature scheme as the WazirX SAPI.

Security type Endpoints Requirement
Public Market Data No authentication.
Signed Account Read, Orders, Margin API key + signature required.

Every signed request must include your API key in the header:

X-Api-Key: <your-api-key>

In addition to an endpoint's own parameters, every signed request must include:

Name Type Mandatory Default Description
timestamp LONG YES Current time in milliseconds.
recvWindow LONG NO 60000 Number of milliseconds after timestamp the request is valid for (1–60000). The request is processed only when timestamp < serverTime + 1000 and serverTime − timestamp ≤ recvWindow; otherwise it is rejected.
signature STRING YES HMAC SHA256 signature of the request (see below).

Futures How to sign

  1. Build the parameter string — the query string for GET/DELETE, or the form-encoded body for POST — using the parameters in the order they are sent (e.g. symbol=BTCINR&timestamp=1700000000000).
  2. Compute HMAC_SHA256(secretKey, parameterString) and hex-encode it. secretKey is the secret issued with your API key.
  3. Append the result as the signature parameter. The signature field itself is not part of the signed payload.

Example (GET)

parameterString : symbol=BTCINR&timestamp=1700000000000
signature       : HMAC_SHA256(secretKey, parameterString) -> hex string

GET https://api.wazirx.com/fapi/v1/positionRisk?symbol=BTCINR&timestamp=1700000000000&signature=<hex>
Header: X-Api-Key: <your-api-key>

Futures Permissions

Futures API access is governed by per-API-key permissions, managed in the API Key Manager.

Permission Applies to Default Description
Read Only Spot & Futures - Unified read access. Allows read-only Futures calls such as account balances, open positions, and market data.
Futures Trade Futures OFF Required to place, cancel, or otherwise execute Futures trades via the API. Trading requests are rejected unless this permission is explicitly granted.
Wallet Transfer Spot & Futures OFF

Futures Rate Limiting

Limits are applied per API key.

Endpoint Interval Limit
POST /fapi/v1/order (New Order) 1 second 10 requests
DELETE /fapi/v1/order (Cancel Order) 1 second 10 requests
All other endpoints 1 second 1 request

General Endpoints

Test Connectivity (Futures)

GET /fapi/v1/ping
curl --location --request GET 'https://api.wazirx.com/fapi/v1/ping'

Response:

{}

Test connectivity to the REST API.

Parameters: NONE

Check Server Time (Futures)

GET /fapi/v1/time
curl --location --request GET 'https://api.wazirx.com/fapi/v1/time'

Response:

{
  "serverTime": 1700000000000
}

Get the current server time.

Parameters: NONE

Exchange Information (Futures)

GET /fapi/v1/exchangeInfo
curl --location --request GET 'https://api.wazirx.com/fapi/v1/exchangeInfo'

Response:

{
  "timeZone": "UTC",
  "serverTime": 1781248635323,
  "assets": [
    {
      "asset": "INR",
      "precision": 2
    }
  ],
  "symbols": [
    {
      "symbol": "BTCINR",
      "contractType": "PERPETUAL",
      "contractName": "Bitcoin",
      "baseAsset": "BTC",
      "quoteAsset": "INR",
      "marginAsset": "INR",
      "orderTypes": ["MARKET", "LIMIT"],
      "maxLeverage": "10",
      "pricePrecision": "0",
      "quantityPrecision": "3",
      "maintMarginPercent": "15",
      "reduceMarginAllowedRatioPercent": "20",
      "filters": [
        { "maxQty": "1000", "minQty": "0.001", "filterType": "limit_qty_size" },
        { "maxQty": "120", "minQty": "0.001", "filterType": "market_qty_size" },
        { "filterType": "max_num_orders", "limit": "200" },
        { "filterType": "min_notional", "notional": "11040" }
      ],
      "limitPriceVarAllowedPercent": "15",
      "maintenanceMarginConfig": [
        { "rangeStart": 1, "rangeEnd": 5, "percentage": "3" }
      ]
    }
  ]
}

Current exchange trading rules and symbol information.

Parameters: NONE

Market Data

Mark Price (Futures)

GET /fapi/v1/premiumIndex
curl --location --request GET 'https://api.wazirx.com/fapi/v1/premiumIndex?symbol=BTCINR'

Response (with symbol):

{
  "E": 1781891824866,
  "T": 1781891824866,
  "symbol": "BTCINR",
  "markPrice": "6011674",
  "indexPrice": "6010000",
  "estimatedSettlePrice": "6154388",
  "lastFundingRate": "0.0001",
  "nextFundingTime": 1781913600000,
  "time": 1781891824866
}

Response (without symbol) returns an array of the same objects for all symbols.

Mark price and funding rate for a symbol.

Query Parameters:

Name Type Mandatory Description
symbol STRING NO If sent, returns a single object for that symbol. If omitted, returns an array of all symbols.

Response fields:

Field Type Description
E LONG Event time (ms)
T LONG Transaction time (ms)
symbol STRING Symbol (uppercase)
markPrice STRING Mark price
indexPrice STRING Index price
estimatedSettlePrice STRING Estimated settle price
lastFundingRate STRING Last funding rate
nextFundingTime LONG Next funding time (ms)
time LONG Server time (ms)

Order Book / Depth (Futures)

GET /fapi/v1/depth
curl --location --request GET 'https://api.wazirx.com/fapi/v1/depth?symbol=BTCINR&limit=20'

Response:

{
  "E": 1700000000123,
  "T": 1700000000000,
  "bids": [
    ["5749500.00", "0.250"]
  ],
  "asks": [
    ["5750500.00", "0.180"]
  ]
}

Query Parameters:

Name Type Mandatory Description
symbol STRING YES Symbol to query, e.g. BTCINR.
limit INT NO Number of price levels per side. Only 20 is supported yet; defaults to 20.

Response fields:

Field Type Note
E LONG Current timestamp (response generation time).
T LONG Last cached at (time the depth snapshot was cached).
bids ARRAY [price, quantity]
asks ARRAY [price, quantity]

24hr Ticker (Futures)

GET /fapi/v1/ticker/24hr
curl --location --request GET 'https://api.wazirx.com/fapi/v1/ticker/24hr?symbol=BTCINR'

Response:

{
  "E": 1781891824866,
  "T": 1781891824866,
  "symbol": "BTCINR",
  "priceChange": "1500.00",
  "priceChangePercent": "0.025",
  "lastPrice": "6011674",
  "openPrice": "6010174",
  "highPrice": "6050000",
  "lowPrice": "5990000",
  "volume": "12.345"
}

24 hour rolling window price change statistics.

Query Parameters:

Name Type Mandatory Description
symbol STRING NO Symbol to query, e.g. BTCINR. If omitted, returns a ticker for every symbol.

Response fields:

Field Type Description
E LONG Event time (ms)
T LONG Transaction time (ms)
symbol STRING Symbol (uppercase)
priceChange STRING Price change
priceChangePercent STRING Price change percent
lastPrice STRING Last price
openPrice STRING Open price
highPrice STRING High price
lowPrice STRING Low price
volume STRING Volume

Klines / Candlestick (Futures)

GET /fapi/v1/klines
curl --location --request GET 'https://api.wazirx.com/fapi/v1/klines?symbol=BTCINR&interval=1m&limit=5'

Response:

[
  [
    1700000000000, // Open time
    "5700000.00",  // Open
    "5760000.00",  // High
    "5690000.00",  // Low
    "5750000.50",  // Close
    "12.345"       // Volume
  ]
]

Query Parameters:

Name Type Mandatory Description
symbol STRING YES Symbol to query, e.g. BTCINR.
interval ENUM YES Candle interval. One of 1m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d, 1w.
startTime LONG NO Start time in milliseconds.
endTime LONG NO End time in milliseconds.
limit INT NO Number of candles to return. Default 500.

Response array index:

Index Field Type
0 Open time LONG
1 Open STRING
2 High STRING
3 Low STRING
4 Close STRING
5 Volume STRING

Account Read

Position Risk (Futures)

GET /fapi/v1/positionRisk (HMAC SHA256)
curl --location --request GET 'https://api.wazirx.com/fapi/v1/positionRisk?symbol=BTCINR&timestamp=1700000000000&signature=11***6f' \
--header 'X-Api-Key: Ry***n0'

Response:

[
  {
    "id": 12345,
    "symbol": "BTCINR",
    "positionAmt": "0.015",
    "positionType": "LONG",
    "entryPrice": "5600000.00",
    "markPrice": "5750000.50",
    "liquidationPrice": "5100000.00",
    "leverage": "10",
    "marginType": "ISOLATED",
    "margin": "8400.00",
    "marginAsset": "INR",
    "updatedTime": 1781891824866
  }
]

Only open positions are returned.

Query Parameters:

Name Type Mandatory Description
symbol STRING NO Symbol to query, e.g. BTCINR. If omitted, returns risk for every open position.
fromId INTEGER NO Position id to fetch from; returns positions with id < fromId (older than fromId), ordered by id descending. If omitted, the most recent positions are returned.
limit INTEGER NO Number of records to return. Default 500; max 1000.
recvWindow LONG NO Number of milliseconds after timestamp the request is valid for (1–60000). Default 60000.
timestamp LONG YES Current time in milliseconds.
signature STRING YES HMAC SHA256 signature of the request.

Response fields:

Field Type Note
id LONG Position id; usable as fromId for pagination.
symbol STRING
positionAmt STRING Always positive; direction is given by positionType.
positionType ENUM LONG or SHORT
entryPrice STRING
markPrice STRING
liquidationPrice STRING
leverage STRING
marginType STRING
margin STRING Margin allocated to the position.
marginAsset STRING
updatedTime LONG Updated time (ms)

Income History (Futures)

GET /fapi/v1/income (HMAC SHA256)
curl --location --request GET 'https://api.wazirx.com/fapi/v1/income?symbol=BTCINR&timestamp=1700000000000&signature=11***6f' \
--header 'X-Api-Key: Ry***n0'

Response:

[
  {
    "id": 5012,
    "time": 1781891824866,
    "amount": "-0.52",
    "asset": "INR",
    "symbol": "BTCINR",
    "type": "FUNDING_FEE",
    "contractType": "PERPETUAL",
    "positionId": "pos-123",
    "createdAt": 1781891824900,
    "updatedAt": 1781891824900
  },
  {
    "id": 5013,
    "time": 1781891820000,
    "amount": "125.40",
    "asset": "INR",
    "symbol": "BTCINR",
    "type": "REALIZED_PNL",
    "contractType": "PERPETUAL",
    "tradeId": 88001,
    "createdAt": 1781891820100,
    "updatedAt": 1781891820100
  }
]

Query Parameters:

Name Type Mandatory Default Description
symbol STRING NO Symbol to query, e.g. BTCINR. If omitted, returns income across all symbols.
incomeType ENUM NO One of: REALIZED_PNL, COMMISSION, GST_ON_COMMISSION, FEE_DISCOUNT, FUNDING_FEE, GST_ON_FUNDING_FEE, CLEARANCE_FEE, GST_ON_CLEARANCE_FEE.
startTime LONG NO Start time in milliseconds.
endTime LONG NO End time in milliseconds.
fromId LONG NO Income record id (id) to fetch from; returns records with id < fromId (older than fromId), ordered by id descending. If omitted, the most recent records are returned.
limit INT NO 100 Number of records; max 1000.
recvWindow LONG NO 60000 Number of milliseconds after timestamp the request is valid for (1–60000).
timestamp LONG YES Current time in milliseconds.
signature STRING YES HMAC SHA256 signature of the request.

Response fields:

Field Type Description
id LONG Record id
time LONG Income event time (ms; from upstream)
amount STRING Amount (numeric string)
asset STRING Asset
symbol STRING Symbol (uppercase)
type STRING Income type (uppercase)
contractType STRING Contract type (uppercase)
tradeId LONG Trade id — present for trade-linked income (xor positionId)
positionId STRING Position id — present for position-linked income (xor tradeId)
createdAt LONG Record created time (ms)
updatedAt LONG Record updated time (ms)

Account Trade List (Futures)

GET /fapi/v1/userTrades (HMAC SHA256)
curl --location --request GET 'https://api.wazirx.com/fapi/v1/userTrades?symbol=BTCINR&timestamp=1700000000000&signature=11***6f' \
--header 'X-Api-Key: Ry***n0'

Response:

[
  {
    "symbol": "BTCINR",
    "id": 88001,
    "orderId": 1234567,
    "side": "BUY",
    "price": "5700000.00",
    "qty": "0.010",
    "realizedPnl": "500.00",
    "quoteQty": "57000.00",
    "commission": "28.50",
    "commissionAsset": "INR",
    "createdTime": 1781891824866,
    "buyer": true,
    "maker": false
  }
]

Query Parameters:

Name Type Mandatory Default Description
symbol STRING YES
orderId LONG NO Can only be used in combination with symbol.
startTime LONG NO
endTime LONG NO
fromId LONG NO Trade id to fetch from; returns trades with id < fromId (older than fromId), ordered by id descending. If omitted, the most recent trades are returned.
limit INT NO 500 Number of records; max 1000.
recvWindow LONG NO 60000 Number of milliseconds after timestamp the request is valid for (1–60000).
timestamp LONG YES Current time in milliseconds.
signature STRING YES HMAC SHA256 signature of the request.

Response fields:

Field Type Note
symbol STRING
id LONG
orderId LONG
side STRING
price STRING
qty STRING
realizedPnl STRING
quoteQty STRING
commission STRING
commissionAsset STRING
createdTime LONG Created time / trade time (ms)
buyer BOOLEAN
maker BOOLEAN

Orders

The status field in every order response is one of:

Status Description
INIT Order accepted locally and being submitted to the matching engine.
WAIT Order is live on the book and not yet fully filled (includes partial fills).
DONE Order is fully filled.
CANCEL Order was canceled.
IDLE Linked TP/SL leg waiting for its trigger price.
REJECT Order was rejected or failed to be placed.
EXPIRE Order expired.

New Order (Futures, TRADE)

POST /fapi/v1/order (HMAC SHA256)
curl --location --request POST 'https://api.wazirx.com/fapi/v1/order' \
--header 'X-Api-Key: Ry***n0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'symbol=BTCINR' \
--data-urlencode 'side=BUY' \
--data-urlencode 'type=LIMIT' \
--data-urlencode 'quantity=0.010' \
--data-urlencode 'price=5700000' \
--data-urlencode 'leverage=10' \
--data-urlencode 'takeProfitPrice=6000000' \
--data-urlencode 'stopLossPrice=5500000' \
--data-urlencode 'timestamp=1700000000000' \
--data-urlencode 'signature=11***6f'

Response:

{
  "id": 1234567,
  "symbol": "BTCINR",
  "status": "INIT",
  "requestId": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
  "price": "5700000.00",
  "avgPrice": "0.00000000",
  "origQty": "0.010",
  "executedQty": "0.000",
  "type": "LIMIT",
  "side": "BUY",
  "leverage": 10,
  "linkId": "",
  "linkType": "ORDER",
  "subType": "PRIMARY",
  "time": 1700000000000,
  "createdTime": 1781891824866,
  "updatedTime": 1781891824866
}

Send in a new order.

Body Parameters:

Name Type Mandatory Description
requestId STRING NO A client-supplied unique id for idempotency; alphanumeric, at most 64 characters — a duplicate is rejected. Automatically generated if not sent.
symbol STRING YES
side ENUM YES BUY / SELL. Must not be sent when closing via positionId.
type ENUM YES MARKET or LIMIT.
quantity DECIMAL NO See additional mandatory parameters by type below.
price DECIMAL NO Required for LIMIT.
leverage INT NO Leverage for the position (1–150). Required when opening a position. Ignored when positionId is sent.
positionId LONG NO Send to close (or reduce) an existing position. Omit to open a new position.
takeProfitPrice DECIMAL NO Attaches a take-profit leg; closes the position when the mark price reaches this level.
stopLossPrice DECIMAL NO Attaches a stop-loss leg; closes the position when the mark price reaches this level.
recvWindow LONG NO The value cannot be greater than 60000.
timestamp LONG YES
signature STRING YES

Additional mandatory parameters by type:

Type Additional mandatory parameters
MARKET quantity
LIMIT quantity, price

Two ways to place an order, selected by whether you send positionId:

Response fields:

Field Type Note
id LONG
symbol STRING
status STRING
requestId STRING The order's requestId.
price STRING
avgPrice STRING
origQty STRING
executedQty STRING
type STRING
side STRING
leverage INT
linkId STRING ULID bundle id shared by a primary order and its linked TP/SL child orders; empty ("") when the order has no linked legs.
linkType STRING ORDER (standalone), ORDER_TP, ORDER_SL, or ORDER_TP_SL.
subType STRING PRIMARY, STOP_LOSS, or TAKE_PROFIT.
time LONG Order time (ms)
createdTime LONG Created time (ms)
updatedTime LONG Updated time (ms)

Cancel Order (Futures, TRADE)

DELETE /fapi/v1/order (HMAC SHA256)
curl --location --request DELETE 'https://api.wazirx.com/fapi/v1/order' \
--header 'X-Api-Key: Ry***n0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'symbol=BTCINR' \
--data-urlencode 'orderId=1234567' \
--data-urlencode 'timestamp=1700000000000' \
--data-urlencode 'signature=11***6f'

Response:

{
  "id": 1234567,
  "requestId": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
  "symbol": "BTCINR",
  "status": "CANCEL",
  "price": "5700000.00",
  "avgPrice": "0.00000000",
  "origQty": "0.010",
  "executedQty": "0.000",
  "type": "LIMIT",
  "side": "BUY",
  "leverage": 10,
  "linkId": "",
  "linkType": "ORDER",
  "subType": "PRIMARY",
  "time": 1700000000000,
  "createdTime": 1781891824866,
  "updatedTime": 1781891824866
}

Body Parameters:

Name Type Mandatory Description
symbol STRING YES
orderId LONG NO The order's numeric id. Send either orderId or requestId.
requestId STRING NO The order's client-supplied id. Send either orderId or requestId.
recvWindow LONG NO The value cannot be greater than 60000.
timestamp LONG YES Current time in milliseconds.
signature STRING YES HMAC SHA256 signature of the request.

Current Open Orders (Futures)

GET /fapi/v1/openOrders (HMAC SHA256)
curl --location --request GET 'https://api.wazirx.com/fapi/v1/openOrders?symbol=BTCINR&timestamp=1700000000000&signature=11***6f' \
--header 'X-Api-Key: Ry***n0'

Response:

[
  {
    "id": 1234567,
    "symbol": "BTCINR",
    "status": "WAIT",
    "requestId": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
    "price": "5700000.00",
    "avgPrice": "0.00000000",
    "origQty": "0.010",
    "executedQty": "0.000",
    "type": "LIMIT",
    "side": "BUY",
    "leverage": 10,
    "linkId": "",
    "linkType": "ORDER",
    "subType": "PRIMARY",
    "time": 1700000000000,
    "createdTime": 1781891824866,
    "updatedTime": 1781891824866
  }
]

Query Parameters:

Name Type Mandatory Default Description
symbol STRING NO If omitted, open orders across all symbols are returned.
startTime LONG NO Start time in milliseconds.
endTime LONG NO End time in milliseconds.
fromId LONG NO Order id to fetch from; returns orders with id < fromId (older than fromId), ordered by id descending. If omitted, the most recent orders are returned.
limit INT NO 200 Number of records; max 1000.
recvWindow LONG NO 60000 Number of milliseconds after timestamp the request is valid for (1–60000).
timestamp LONG YES Current time in milliseconds.
signature STRING YES HMAC SHA256 signature of the request.

All Orders (Futures)

GET /fapi/v1/allOrders (HMAC SHA256)
curl --location --request GET 'https://api.wazirx.com/fapi/v1/allOrders?symbol=BTCINR&timestamp=1700000000000&signature=11***6f' \
--header 'X-Api-Key: Ry***n0'

Response:

[
  {
    "id": 1234560,
    "symbol": "BTCINR",
    "status": "DONE",
    "requestId": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
    "price": "5700000.00",
    "avgPrice": "5700000.00",
    "origQty": "0.010",
    "executedQty": "0.010",
    "type": "LIMIT",
    "side": "BUY",
    "leverage": 10,
    "linkId": "",
    "linkType": "ORDER",
    "subType": "PRIMARY",
    "time": 1700000000000,
    "createdTime": 1781891824866,
    "updatedTime": 1781891824866
  }
]

Query Parameters:

Name Type Mandatory Default Description
symbol STRING YES
fromId LONG NO Order id to fetch from; returns orders with id < fromId (the page older than fromId), ordered by id descending. If omitted, the most recent orders are returned. To page backward through history, pass the smallest id from the current page as the next fromId.
startTime LONG NO
endTime LONG NO
limit INT NO 500 Number of records; max 1000.
recvWindow LONG NO 60000 Number of milliseconds after timestamp the request is valid for (1–60000).
timestamp LONG YES Current time in milliseconds.
signature STRING YES HMAC SHA256 signature of the request.

Cancel All Open Orders (Futures, TRADE)

DELETE /fapi/v1/allOpenOrders (HMAC SHA256)
curl --location --request DELETE 'https://api.wazirx.com/fapi/v1/allOpenOrders' \
--header 'X-Api-Key: Ry***n0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'symbol=BTCINR' \
--data-urlencode 'timestamp=1700000000000' \
--data-urlencode 'signature=11***6f'

Response:

{
  "code": 200,
  "msg": "The operation of cancel all open order is done."
}

Body Parameters:

Name Type Mandatory Description
symbol STRING YES Cancels all open orders for this symbol.
recvWindow LONG NO The value cannot be greater than 60000.
timestamp LONG YES Current time in milliseconds.
signature STRING YES HMAC SHA256 signature of the request.

Margin

Modify Isolated Position Margin (Futures, TRADE)

POST /fapi/v1/positionMargin (HMAC SHA256)
curl --location --request POST 'https://api.wazirx.com/fapi/v1/positionMargin' \
--header 'X-Api-Key: Ry***n0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'symbol=BTCINR' \
--data-urlencode 'positionId=12345' \
--data-urlencode 'amount=5000' \
--data-urlencode 'type=1' \
--data-urlencode 'timestamp=1700000000000' \
--data-urlencode 'signature=11***6f'

Response:

{
  "amount": "5000.00",
  "code": 200,
  "msg": "Successfully modified position margin.",
  "type": 1
}

Add or reduce margin on an isolated position.

Body Parameters:

Name Type Mandatory Description
requestId STRING NO A client-supplied unique id for idempotency; alphanumeric, at most 64 characters — a duplicate is rejected.
symbol STRING YES Symbol of the position, e.g. BTCINR.
positionId INTEGER YES
amount DECIMAL YES Margin amount to add or reduce.
type INT YES 1 = add margin, 2 = reduce margin.
recvWindow LONG NO The value cannot be greater than 60000.
timestamp LONG YES Current time in milliseconds.
signature STRING YES HMAC SHA256 signature of the request.

Response fields:

Field Type Note
amount STRING
code INT
msg STRING
type INT

Futures Streams

Live market data and private account events are streamed over a single WebSocket endpoint.

WebSocket Authentication (Futures)

Create (or refresh) an auth token with a signed REST call (same signing as every other signed request):

POST /sapi/v1/create_auth_token (HMAC SHA256)
curl --location --request POST 'https://api.wazirx.com/sapi/v1/create_auth_token' \
--header 'X-Api-Key: Ry***n0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'timestamp=1700000000000' \
--data-urlencode 'signature=11***6f'

Response:

{
  "auth_key": "Xx***dM",
  "timeout_duration": 1800
}

WebSocket Subscribe / Unsubscribe (Futures)

After connecting, send a subscribe message listing the streams you want. Public streams need no auth_key; private streams require it.

Subscribe to public streams

{ "event": "subscribe", "streams": ["btcinr@aggTrade", "!ticker@arr"] }

Subscribe to a private stream (auth required)

{ "event": "subscribe", "streams": ["orderUpdate"], "auth_key": "Xx***dM" }

Success response:

{ "data": { "streams": ["btcinr@aggTrade", "!ticker@arr"] }, "event": "subscribed", "id": 0 }

Unsubscribe:

{ "event": "unsubscribe", "streams": ["btcinr@aggTrade"] }
{ "data": { "streams": ["btcinr@aggTrade"] }, "event": "unsubscribed", "id": 0 }

Keepalive — send a ping, the server replies with pong:

{ "event": "ping" }
{ "data": { "timeout_duration": 1800 }, "event": "pong", "id": 0 }

Aggregate Trade Stream (Futures)

Payload:

{
  "data": {
    "e": "aggTrade",
    "E": 1631683058904,
    "s": "btcinr",
    "p": "57650.50",
    "q": "0.025",
    "T": 1631683058900,
    "m": true
  },
  "stream": "btcinr@aggTrade"
}

Stream Name: <symbol>@aggTrade

Field Type Note
e STRING Event type (aggTrade)
E LONG Event time (ms)
s STRING Symbol (lowercase)
p / q STRING Price / quantity
T LONG Trade time (ms)
m BOOL Is the buyer the market maker?

Mark Price Stream (Futures)

Payload:

{
  "data": [
    {
      "e": "markPriceUpdate", // Event type
      "E": 1562305380000,     // Event time (ms)
      "s": "btcinr",          // Symbol (lowercase)
      "p": "11794.15000000",  // Mark price
      "i": "11784.62659091",  // Index price
      "r": "0.00038167",      // Funding rate
      "T": 1562306400000      // Next funding time (ms)
    }
  ],
  "stream": "!markPrice@arr"
}

Stream Name: !markPrice@arr — delivers an array of the same objects for all symbols.

Field Type Note
e STRING Event type (markPriceUpdate)
E LONG Event time (ms)
s STRING Symbol (lowercase)
p STRING Mark price
i STRING Index price
r STRING Funding rate
T LONG Next funding time (ms)

Kline/Candlestick Stream (Futures)

Payload:

{
  "data": {
    "E": 1631683058904, // Event time
    "s": "btcinr",      // Symbol (lowercase)
    "t": 1638747660000, // Kline start time
    "T": 1638747719999, // Kline close time
    "i": "1m",          // Interval
    "o": "0.0010",      // Open price
    "c": "0.0020",      // Close price
    "h": "0.0025",      // High price
    "l": "0.0015",      // Low price
    "v": "1000"         // Base asset volume
  },
  "stream": "btcinr@kline_1m"
}

Stream Name: <symbol>@kline_<interval>

Field Type Note
E LONG Event time (ms)
s STRING Symbol (lowercase)
t LONG Kline start time (ms)
T LONG Kline close time (ms)
i STRING Interval (e.g. 1m)
o / c STRING Open / close price
h / l STRING High / low price
v STRING Base asset volume

Order Depth Stream (Futures)

Payload:

{
  "data": {
    "e": "depthUpdate", // Event type
    "E": 123456789,     // Event time (ms)
    "T": 123456788,     // Transaction time (ms)
    "s": "btcinr",      // Symbol (lowercase)
    "b": [              // Bids to be updated [price, qty]
      ["0.0024", "10"]
    ],
    "a": [              // Asks to be updated [price, qty]
      ["0.0026", "100"]
    ]
  },
  "stream": "btcinr@depth"
}

Stream Name: <symbol>@depth (update speed ~1000ms)

Field Type Note
e STRING Event type (depthUpdate)
E LONG Event time (ms)
T LONG Transaction time (ms)
s STRING Symbol (lowercase)
b ARRAY Bids to update; each [price, qty] as strings. qty "0" removes the level.
a ARRAY Asks to update; each [price, qty] as strings. qty "0" removes the level.

24hr Ticker Stream (Futures)

Payload:

{
  "data": [
    {
      "e": "24hrTicker", // Event type
      "E": 123456789,    // Event time (ms)
      "s": "btcinr",     // Symbol (lowercase)
      "p": "0.0015",     // Price change
      "P": "250.00",     // Price change percent
      "w": "0.0018",     // Weighted average price
      "c": "0.0025",     // Last price
      "Q": "10",         // Last quantity
      "o": "0.0010",     // Open price
      "h": "0.0025",     // High price
      "l": "0.0010",     // Low price
      "v": "10000",      // Total traded base asset volume
      "q": "18",         // Total traded quote asset volume
      "O": 0,            // Statistics open time
      "C": 86400000,     // Statistics close time
      "F": 0,            // First trade ID
      "L": 18150,        // Last trade ID
      "n": 18151         // Total number of trades
    }
  ],
  "stream": "!ticker@arr"
}

Stream Name: !ticker@arr

Field Type Note
e STRING Event type (24hrTicker)
E LONG Event time (ms)
s STRING Symbol (lowercase)
p / P STRING Price change / price change percent
w STRING Weighted average price
c / Q STRING Last price / last quantity
o / h / l STRING Open / high / low price
v / q STRING Total traded base / quote asset volume
O / C LONG Statistics open / close time (ms)
F / L LONG First / last trade ID
n LONG Total number of trades

Order Update Stream (Futures)

Fires on every order state change and execution.

Payload:

{
  "data": {
    "e": "orderUpdate",      // Event type
    "E": 1568879465651,      // Event time (ms)
    "s": "btcinr",           // Symbol
    "S": "sell",             // Side
    "o": "limit",            // Order type
    "q": "0.001",            // Original quantity
    "p": "7000",             // Price
    "ap": "0",               // Average price
    "X": "wait",             // Order status
    "i": 8886774,            // Order id
    "c": "abc123",           // Client order id
    "z": "0",                // Filled accumulated quantity
    "rq": "0.001",           // Remaining quantity
    "li": "01HVZLINKPARENT", // Link id
    "lt": "order",           // Link type
    "pt": "order_form",      // Place type
    "pi": 12345,             // Position id
    "lk": "70",              // Locked amount (INR)
    "lv": 10,                // Leverage
    "st": "take_profit"      // Sub type
  },
  "stream": "orderUpdate"
}

Stream Name: orderUpdate   Requires: auth_key

Field Type Description
e STRING Event type (orderUpdate)
E LONG Event time (ms)
s STRING Symbol (lowercase)
S STRING Side (buy / sell)
o STRING Order type (e.g. limit, market)
q STRING Original quantity
p STRING Price
ap STRING Average price
X STRING Order status (wait / done / cancel / …)
i LONG Order id
c STRING Client order id
z STRING Filled accumulated quantity
rq STRING Remaining quantity (= q − z)
li STRING Link id (set for TP/SL bundles)
lt STRING Link type
pt STRING Place type (e.g. order_form, position)
pi LONG Position id (present only when position-linked; omitempty)
lk STRING Locked amount (INR)
lv INT Leverage
st STRING Sub type (e.g. primary, take_profit, stop_loss)

Balance Update Stream (Futures)

Fires when wallet balances change.

Payload:

{
  "data": {
    "e": "outboundAccountPosition", // Event type
    "E": 1564745798000,             // Event time (ms)
    "B": [                          // Balances
      {
        "a": "inr",                 // Asset (lowercase)
        "b": "1200.50",             // Free (available) balance
        "l": "300.00"               // Locked balance
      }
    ]
  },
  "stream": "outboundAccountPosition"
}

Stream Name: outboundAccountPosition   Requires: auth_key

Field Type Note
e STRING Event type (outboundAccountPosition)
E LONG Event time (ms)
B ARRAY Balances, one entry per asset
B[].a STRING Asset (lowercase)
B[].b STRING Free (available) balance
B[].l STRING Locked balance

Position Update Stream (Futures)

Payload:

{
  "data": {
    "e": "positionUpdate", // Event type
    "E": 1568879465651,    // Event time (ms)
    "s": "btcinr",         // Symbol (lowercase)
    "ep": "5600000.00",    // Entry price
    "l": 10,               // Leverage
    "lp": "5100000.00",    // Liquidation price
    "m": "8400.00",        // Margin
    "ma": "inr",           // Margin asset (lowercase)
    "i": 12345,            // Position id
    "X": "open",           // Position status
    "ps": "long",          // Position side
    "rp": "0",             // Realised profit
    "q": "0.015",          // Remaining amount
    "S": "0.015"           // Position size
  },
  "stream": "positionUpdate"
}

Stream Name: positionUpdate   Requires: auth_key

Field Type Note
e STRING Event type (positionUpdate)
E LONG Event time (ms)
s STRING Symbol (lowercase)
ep STRING Entry price
l INT Leverage
lp STRING Liquidation price
m STRING Margin
ma STRING Margin asset (lowercase)
i LONG Position id (internal numeric id)
X STRING Position status (open / closed / liquidated)
ps STRING Position side (long / short)
rp STRING Realised profit
q STRING Remaining amount
S STRING Position size

Margin Call Stream (Futures)

Payload:

{
  "data": {
    "e": "marginCall",  // Event type
    "E": 1587727187525, // Event time (ms)
    "s": "btcinr",      // Symbol
    "ps": "LONG",       // Position side
    "pa": "1.327",      // Position amount
    "lp": "6500",       // Liquidation price
    "i": "pos-123"      // Position id
  },
  "stream": "marginCall"
}

Stream Name: marginCall   Requires: auth_key

Field Type Note
e STRING Event type (marginCall)
E LONG Event time (ms)
s STRING Symbol
ps STRING Position side
pa STRING Position amount
lp STRING Liquidation price
i STRING Position id

Liquidation Alert Stream (Futures)

Fires when one of your positions is liquidated.

Payload:

{
  "data": {
    "e": "liquidationAlert", // Event type
    "E": 1587727187525,      // Event time (ms)
    "s": "btcinr",           // Symbol
    "ps": "LONG",            // Position side
    "pa": "1.327",           // Position amount
    "lp": "6500",            // Liquidation price
    "i": "pos-123"           // Position id
  },
  "stream": "liquidationAlert"
}

Stream Name: liquidationAlert   Requires: auth_key

Field Type Note
e STRING Event type (liquidationAlert)
E LONG Event time (ms)
s STRING Symbol
ps STRING Position side
pa STRING Position amount
lp STRING Liquidation price
i STRING Position id

Own Trade Stream (Futures)

Fires on each of your trade executions (fills).

Payload:

{
  "data": {
    "e": "ownTrade",    // Event type
    "E": 1568879465651, // Event time (ms)
    "i": 778,           // Trade id
    "t": 1568879465650, // Trade time (ms)
    "s": "btcinr",      // Symbol (lowercase)
    "S": "sell",        // Side
    "p": "7000",        // Executed price
    "q": "0.001",       // Executed quantity
    "f": "0.07",        // Fee (INR)
    "rp": "12.5",       // Realised PnL (INR)
    "o": 8886774,       // Order id
    "m": false,         // Is buyer the maker?
    "pi": "pos-123",    // Position id
    "T": "limit",       // Trade/order type
    "fc": "inr",        // Fee currency
    "r": "taker",       // Role (maker/taker)
    "dt": "limit"       // Display type
  },
  "stream": "ownTrade"
}

Stream Name: ownTrade   Requires: auth_key

Field Type Note
e STRING Event type (ownTrade)
E LONG Event time (ms)
i LONG Trade id
t LONG Trade time (ms)
s STRING Symbol (lowercase)
S STRING Side (buy / sell)
p STRING Executed price
q STRING Executed quantity
f STRING Fee (INR)
rp STRING Realised PnL (INR)
o LONG Order id
m BOOL Is the buyer the maker?
pi STRING Position id
T STRING Trade/order type
fc STRING Fee currency
r STRING Role (maker / taker)
dt STRING Display type