Private-RestAPI.md

May 29, 2026 · View on GitHub

Table of Contents

General API Information

  • The base endpoint is: https://indodax.com/tapi
  • All endpoints return either a JSON object or array.
  • Data is returned in descending order. newest first, oldest last.
  • All time and timestamp related fields are in milliseconds.

Error Codes

  • Any endpoint can return an ERROR

Sample Payload below:

{
    "success": 0,
    "error": "Invalid credentials. API not found or session has expired.",
    "error_code": "invalid_credentials"
}

General Information on Endpoints

  • Parameters may be sent in any order.

  • All requests must be sent with POST.

  • For each request you need to include these variable to make the call valid: method and nonce or timestamp.

    ParameterDescriptionOptionalExample
    methodSpecify the method you want to callnogetInfo
    nonceAn increment integer. For example if the last request's nonce is 1000, the next request should be 1001 or a larger number. To learn more about nonceno1000
    ParameterDescriptionOptionalExample
    methodSpecify the method you want to callnogetInfo
    timestampThis parameter should be the millisecond timestamp of when the request was created and sentno1578303960000
    recvWindowThe value should specify the number of millisecond after timestamp where your request is valid. That mean your request still valid if it sent and processed within timestamp and timestamp + recvWindow. Default value is 5000 (milliseconds)no1578303937000

Endpoint Security Type

  • API-keys are passed into the Rest API via the Key header.

  • API-keys and secret-keys are case sensitive.

  • There are 3 different permissions that can be applied to API Key: view, trade and withdraw

    PermissionAllowed Methods
    viewgetInfo, transHistory, tradeHistory, openOrders, orderHistory, getOrder, getOrderByClientOrderId
    tradetrade, cancelOrder, cancelByClientOrderId
    withdrawwithdrawFee, withdrawCoin

Signed (TRADE and USER_DATA) Endpoint Security

  • SIGNED endpoints require an additional parameter, Sign, to be sent in the header.
  • Endpoints use HMAC SHA512 signatures. Use your secretKey as the key and totalParams as the value for the HMAC operation.
  • The signature is not case sensitive.
  • totalParams is defined as the query string concatenated with the request body. example *(?param=val&param1=val1) encrypted with method HMAC-SHA512 using secret key*

Timing Security

  • A SIGNED endpoint also requires a parameter, timestamp, to be sent which should be the millisecond timestamp of when the request was created and sent.
  • An additional parameter, recvWindow, may be sent to specify the number of milliseconds after timestamp the request is valid for. If recvWindow is not sent, it defaults to 5000.
  • The logic is as follows:
    if ($timestamp >= ($serverTime + 1000) || ($serverTime - $timestamp) > $recvWindow) {
        // reject request
    } else {
        // process 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.

SIGNED Endpoint Examples for POST getInfo

Here is a step-by-step example of how to send a valid signed payload from the Linux command line using. curl

KeyValue
apiKeyAEDHIGAT-QATEGWOX-OPCSCPQX-2E00B1L7-VJBXXKMA
secretKeyf60617a68fcce028f0a90bc9eb765d17379eb548cc935c01a7ee3186eecf870e9b68f27a31bcfe8d
ParameterValue
methodgetInfo
timestamp1578304294000
recvWindow1578303937000

Example : send parameter using request body

  • requestBody: method=getInfo&timestamp=1578304294000&recvWindow=1578303937000
  • HMAC SHA512 signature:
    [linux]$ echo -n "method=getInfo&timestamp=1578304294000&recvWindow=1578303937000" | openssl dgst -sha512 -hmac "f60617a68fcce028f0a90bc9eb765d17379eb548cc935c01a7ee3186eecf870e9b68f27a31bcfe8d"
    (stdin)= bab004e5a518740d7a33b38b44dbebecd3fb39f40b42391af39fcce06edabff5233b3e8064a07c528d1c751a6923d5116026c7786e01b22e2d35277a098cae99
    
  • curl command:
    (HMAC SHA512)
    [linux]$ curl -H "Key: AEDHIGAT-QATEGWOX-OPCSCPQX-2E00B1L7-VJBXXKMA" -H "Sign: bab004e5a518740d7a33b38b44dbebecd3fb39f40b42391af39fcce06edabff5233b3e8064a07c528d1c751a6923d5116026c7786e01b22e2d35277a098cae99" -X POST 'https://indodax.com/tapi' -d 'method=getInfo&timestamp=1578304294000&recvWindow=1578303937000'
    

Private API Endpoint

ENUM Definitions

Parameter method (Method) :

  • getInfo
  • transHistory
  • trade
  • tradeHistory
  • openOrders
  • orderHistory
  • getOrder
  • getOrderByClientOrderId
  • cancelOrder
  • cancelByClientOrderId
  • withdrawFee
  • withdrawCoin
  • listDownline
  • checkDownline
  • createVoucher (Partner Only)

Transaction type (type):

  • buy
  • sell

Sort by (order):

  • asc
  • desc

Pair to get the information from (pair):

  • btc_idr
  • ltc_btc
  • doge_btc

Currency to withdraw (currency):

  • btc
  • eth
  • doge
  • ltc

Private API Endpoints

All request sent to this endpoint

POST https://indodax.com/tapi

All request sent with Request header

NameTypeMandatoryDescription
KeystringyesAPI Key
SignstringyesEncrypted with method HMAC-SHA512 using secret key. (Request body (?param=val&param1=val1))

All request sent with Request body

NameTypeMandatoryDescription
methodstringyesSpecify the method you want to call
timestamptimestamp in milisecondoptional when sending request using nonceThe millisecond timestamp of when the request was created and sent. Default value is 5000 (milliseconds).
recvWindowtimestamp in milisecondnoThis parameter is optional when you sending request using timestamp. The value should specify the number of millisecond after timestamp where your request is valid. That mean your request still valid if it sent and processed within timestamp and timestamp + recvWindow. Default value is 5000 (milliseconds).
nonceintoptional when sending request using timestampAn increment integer. For example if the last request's nonce is 1000, the next request should be 1001 or a larger number.

Get Info Endpoint

This method gives user balances and server's timestamp.

Request Body

NameTypeMandatoryDescriptionValuedefault
methodstringyesSpecify the method you want to callgetInfo

Response

{
    "success": 1,
    "return": {
        "server_time": 1578638762,
        "balance": {
            "idr": 0,
            "btc": "0.00000000",
            ...
        },
        "balance_hold": {
            "idr": 0,
            "btc": "0.00000000",
            ...
        },
        "address": {
            "btc": "17wGZJCHfi1MJXY9V8NrbSwBYmUM2wXdER",
            "1inch": "0xaDF5bF5e8fa6966451D6cf43A9dbe3f142695362",
            "eth": "0xa6fd81330501442e8dff403f966b6e023a53763e"
        },
        "network": {
            "btc": "mainnet",
            "1inch": "erc20",
            "eth": [
                "eth",
                "arb",
                "op",
                "base"
            ]
        },
        "memo_is_required": {
            "btc": {
                "mainnet": false
            },
             "1inch": {
                "erc20": false
            },
            "eth": {
                "eth": false,
                "arb": false,
                "op": false,
                "base": false
            }
        },
        "user_id": "00001",
        "name": "Jhon Doe",
        "email": "jhonDoe@mail.com",
        "profile_picture": null,
        "verification_status": "verified",
        "gauth_enable": true,
        "withdraw_status" : 1 // 1 if user can withdraw, 0 if user can't withdraw
    }
}

Transaction History Endpoints

This method gives list of deposits and withdrawals of all currencies.

ℹ️ Information

As per 21 August 2024,

Fetch transaction history have a validation maximum 7 days, default: last 7 days

Max limit per fetch is 500 records (per deposit coin, withdraw coin, deposit idr, withdraw idr)

Order descending by submit_time

Request Body

NameTypeMandatoryDescriptionValueDefault
methodstringyesSpecify the method you want to calltransHistory
startdateoptionalSpecify the start date of transaction history you want to searchY-m-d (eg: 2021-07-17)7 days ago from today
enddateoptionalSpecify the end date of transaction history you want to searchY-m-d (eg: 2021-07-17)today

Example payload

{
    "method": "transHistory",
    "nonce":  1735516800,
    "start": "2024-07-01",
    "end":   "2024-07-07"
}

Response

Positive Case

{
    "success": 1,
    "return": {
        "withdraw": {
            "idr": [
                {
                    "status": "success",
                    "type": "coupon",
                    "rp": "115205",
                    "fee": "500",
                    "amount": "114705",
                    "submit_time": "1539844166",
                    "success_time": "1539844189",
                    "withdraw_id": "1783717",
                    "tx": "BTC-IDR-RDTVVO2P-ETD0EVAW-VTNZGMIR-HTNTUAPI-84ULM9OI"
                },
                ...
            ],
            "btc": [],
            "abyss": [],
            ...
        },
        "deposit": {
            "idr": [
                {
                    "status": "success",
                    "type": "duitku",
                    "rp": "393000",
                    "fee": "5895",
                    "amount": "387105",
                    "submit_time": "1576555012",
                    "success_time": "1576555012",
                    "deposit_id": "3395438",
                    "tx": "Duitku OVO Settlement"
                },
                ...
            ],
            "btc": [
                {
                    "status": "success",
                    "btc": "0.00118769",
                    "amount": "0.00118769",
                    "success_time": "1539529208",
                    "deposit_id": "3602369",
                    "tx": "c816aeb35a5b42f389970325a32aff69bb6b2126784dcda8f23b9dd9570d6573"
                },
                ...
            ],
            "abyss": [],
            ...
        }
    }
}

Negative Case

  • Invalid Format Date
{
    "success": 0,
    "error": "date format must be formatted yyyy-mm-dd",
    "error_code": "invalid_date"
}
  • Days greater than 7 days
{
    "success": 0,
    "error": "range date can't more than 7 days",
    "error_code": "invalid_date"
}
  • Start date greater then end date
{
    "success": 0,
    "error": "start date must be less then end date",
    "error_code": "invalid_date"
}

Trade Endpoints

Provides access to essential trading functionalities and data for seamless integration with trading platforms.

ℹ️ Important Updates

As per 10 September 2022,

  • You may experience under filled order if using idr parameter when create buy order. To solve this issue, simply send btc instead idr and use order_type : "limit".
  • You can create buy limit order using coin (eg: btc) as amount.
  • You can use order_type : "market" to create market order.
  • You can try the new API version by creating account in https://demo-indodax.com. You will receive balance for some coins, approximately 1 minute after successfully sign-up.
  • These coins can be used for trade testing, but can't be withdrawn. You also can't deposit any coin to demo-indodax.com.

As per January 2024,

  • You can create order by adding infomartional client_order_id (eg: client_order_id : "clientx-sj82ks82j")

ℹ️ Information

The trade API implements a rate limit of 20 requests per second per account and pair. Exceeding this triggers a 5-second trading block for the affected account and pair.

As per 28 August 2024,

  • We update the response format for rate limit trade like bellow
"status code": 429
"Content-Type": "application/json"
"Response Body": 
 {
   "success": 0,
   "error": "Your User ID sent too many trade request for pair BTCIDR, please try again in 5 seconds",
   "message": "Your User ID sent too many trade request for pair BTCIDR, please try again in 5 seconds",
   "error_code": "too_many_requests"
 }


Request Body

NameTypeMandatoryDescriptionValuedefault
methodstringyesSpecify the method you want to calltrade
pairstringyesPair to get the information frombtc_idr, ltc_btc, doge_btc, etc
typestringyestransaction type (buy or sell)buy/sell
pricenumericrequired on limit orderorder price5000000
idrnumericrequired for (limit/market) buy order with amount in IDRamount of rupiah to buy coin1000000
btcnumericrequired for limit buy order with amount in coin or sell orderamount of coin to buy/sell0.001
order_typestringoptionaltype of orderlimit/marketlimit
client_order_idstringoptional, max 36 character, allowed = alphanumeric _-set your client order ideg: clientx-sj82ks82j
time_in_forcestringoptionalcurrently only valid for "limit" order type, defines how long an order remains working till it is expired by the systemGTC,MOCGTC

Notes

  • Request will be rejected if you send BUY order request with both idr set & order_type set to LIMIT.
  • Currently MARKET BUY order only support amount in idr.
  • Trade Request from Trade API with order_type = limit and time_in_force = MOC specified will be rejected if price is better than top of book price.

Sample Payload for limit order using idr amount:

{
	"method": "trade"
	"nonce": 4531235
    "idr": 100000,
	"price": 500000,
	"type": "buy",
    "client_order_id": "clientx-sj82ks82j", // New field (optional)
 	"time_in_force": "MOC" // New field (GTC, MOC)
}

*Sample Payload for limit order using coin amount:

{
	"method": "trade",
	"nonce": 4531235,
    "btc": 0.001,
	"order_type": "limit",
	"price": 500000,
	"type": "buy",
    "client_order_id": "clientx-sj82ks82j", // New field (optional)
	"time_in_force": "MOC" // New field (GTC, MOC)
}

*Sample Payload for market order:

{
	"method": "trade",
	"nonce": 4531235,
    "idr": 200000,
    "order_type": "market",
    "type": "buy",
    "client_order_id": "clientx-sj82ks82j" // New field (optional)
}

Positive case

Response

{
    "success": 1,
    "return": {
        "receive_btc": "0.00000000",
        "spend_rp": 0,
        "fee": 0,
        "remain_rp": 5000000,
        "order_id": 59632813,
        "client_order_id": "clientx-sj82ks82j"
    }
}

Negative case

Response order_type = limit

{
    "success": 0,
    "error": "Order cancelled because it’s not maker."
}

Response time_in_force = MOC

{
    "success": 0,
    "error": "Order cancelled because it’s not maker."
}

Response limit in the money

{
    "success": 0,
    "error": "Order cancelled because it’s not maker."
}

Response client_order_id

{
    "success": 0,
    "error": "client order id clientx-sj82ks82j already exists"
}

Trade History Endpoints

This method gives information about transaction in buying and selling history.

ℹ️ Important Update

As of April 7th, 2026, this tradeHistory method will be decommissioned and will no longer be available.

  • To continue accessing the trade data, please migrate to the new Trade History endpoint: GET /api/v2/myTrades
  • The new endpoint provides enhanced stability, reliability, and Trade ID consistency for easier transaction tracking.
  • Users must migrate and ensure that all integrations are updated to avoid service disruption.

For details, refer to the INDODAX Trade API v2 Docs.

Request Body

NameTypeMandatoryDescriptionValuedefault
methodstringyesSpecify the method you want to calltradeHistory
countnumericnonumber of transaction which will be displayed1000
from_idnumericnofirst trade ID
end_idnumericnoend trade ID
orderstringnosort byasc / descdesc
sincetimestampnostart timeunix time
endtimestampnoend timeunix time
pairstringyesPair to get the information frombtc_idr, ltc_btc, doge_btc, etcbtc_idr
order_idnumericnoorder id59636253

Response

{
    "success": 1,
    "return": {
        "trades": [
            {
                "trade_id": "17393994",
                "order_id": "59636253",
                "type": "sell",
                "btc": "0.00313482",
                "price": "107202000",
                "fee": "0",
                "trade_time": "1578645297",
                "client_order_id": "clientx-sj82ks82j"
            },
            ...
        ]
    }
}

Open Orders Endpoints

This method gives the list of current open orders (buy and sell).

Request Body

NameTypeMandatoryDescriptionValuedefault
methodstringyesSpecify the method you want to callopenOrders
pairstringnoPair to get the information frombtc_idr, ltc_btc, doge_btc, etc

Response pair btc_idr

{
    "success": 1,
    "return": {
        "orders": [
                {
                    "order_id": "172",
                    "client_order_id": "clientx-sj82ks82j",
                    "submit_time": "1693226027",
                    "price": "421004000",
                    "type": "sell",
                    "order_type": "limit",
                    "order_btc": "0.02000000",
                    "remain_btc": "0.00133450"
                },
                {
                    "order_id": "173",
                    "client_order_id": "clientx-sj82ks83j",
                    "submit_time": "1693280465",
                    "price": "421003000.00000000",
                    "type": "buy",
                    "order_type": "stoplimit",
                    "order_idr": "1266293.00000000",
                    "remain_idr": "1266293.00000000"
                }
            ]
        }
    }

Response if pair is not set

{
    "success": 1,
    "return": {
        "orders": {
            "btc_idr": [
                {
                    "order_id": "172",
                    "client_order_id": "clientx-sj82ks82j",
                    "submit_time": "1693226027",
                    "price": "421004000",
                    "type": "sell",
                    "order_type": "limit",
                    "order_btc": "0.02000000",
                    "remain_btc": "0.00133450"
                },
                {
                    "order_id": "173",
                    "client_order_id": "clientx-sj82ks83j",
                    "submit_time": "1693280465",
                    "price": "421003000.00000000",
                    "type": "buy",
                    "order_type": "stoplimit",
                    "order_idr": "1266293.00000000",
                    "remain_idr": "1266293.00000000"
                }
            ]
        }
    }
}

Order History

This method gives the list of order history (buy and sell)

ℹ️ Important Update

As of April 7th, 2026, this orderHistory method will be decommissioned and will no longer be available.

  • To continue accessing the order data, please migrate to the new Order History endpoint: GET /api/v2/order/histories
  • The new endpoint provides enhanced stability and reliability for easier transaction tracking.
  • Users must migrate and ensure that all integrations are updated to avoid service disruption.

For details, refer to the INDODAX Trade API v2 Docs.

Request Body

NameTypeMandatoryDescriptionValuedefault
methodstringyesSpecify the method you want to callorderHistory
pairstringyesPair to get the information frombtc_idr, ltc_btc, doge_btc, etcbtc_idr
countintnonumber of transaction which will be displayed1000
fromintno

Response

{
    "success": 1,
    "return": {
        "orders": [
            {
                "order_id": "59639504",
                "client_order_id": "clientx-sj82ks82j",
                "type": "buy",
                "price": "100207000",
                "submit_time": "1578648363",
                "finish_time": "1578649332",
                "status": "cancelled",
                "order_idr": "336058",
                "remain_idr": "336058"
            },
            {
                "order_id": "59636253",
                "client_order_id": "clientx-sj82ks83j",
                "type": "sell",
                "price": "107202000",
                "submit_time": "1578645288",
                "finish_time": "1578645297",
                "status": "filled",
                "order_btc": "0.00313482",
                "remain_btc": "0.00000000"
            }...
        ]
    }
}

Get Order Endpoints

Use getOrder to get specific order details.

Request Body

NameTypeMandatoryDescriptionValuedefault
methodstringyesSpecify the method you want to callgetOrder
pairstringyesPair to get the information frombtc_idr, ltc_btc, doge_btc, etcbtc_idr
order_idintyesOrder ID59639504

Response

{
    "success": 1,
    "return": {
        "order": {
            "order_id": "59639504",
            "price": "100207000",
            "type": "buy",
            "order_rp": "336058",
            "remain_rp": "336058",
            "submit_time": "1578648363",
            "finish_time": "1578649332",
            "status": "cancelled",
            "receive_idr": "336058",
            "client_order_id": "clientx-sj82ks82j"
        }
    }
}

Response for refund order done

{
    "success": 1,
    "return": {
        "order": {
            "order_id": "59639504",
            "price": "100207000",
            "type": "buy",
            "order_rp": "336058",
            "remain_rp": "336058",
            "submit_time": "1578648363",
            "finish_time": "1578649332",
            "status": "cancelled",
            "receive_idr": "336058",
	        "refund_idr": "3866",
            "client_order_id": "clientx-sj82ks82j"
        }
    }
}

Get Order By Client Order ID Endpoints

Use getOrderByClientOrderId to get specific order details by Client Order ID.

Request Body

NameTypeMandatoryDescriptionValuedefault
methodstringyesSpecify the method you want to callgetOrderByClientOrderId
client_order_idstringyesClient Order IDclientx-sj82ks82j

Response

{
    "success": 1,
    "return": {
        "order": {
            "order_id": "59639504",
            "client_order_id": "clientx-sj82ks82j",
            "price": "100207000",
            "type": "buy",
            "order_rp": "336058",
            "remain_rp": "336058",
            "submit_time": "1578648363",
            "finish_time": "1578649332",
            "status": "cancelled",
            "receive_idr": "336058",
        }
    }
}

Response for refund order done

{
    "success": 1,
    "return": {
        "order": {
            "order_id": "59639504",
            "client_order_id": "clientx-sj82ks82j",
            "price": "100207000",
            "type": "buy",
            "order_rp": "336058",
            "remain_rp": "336058",
            "submit_time": "1578648363",
            "finish_time": "1578649332",
            "status": "cancelled",
            "receive_idr": "336058",
	        "refund_idr": "3866"
        }
    }
}

Cancel Order Endpoints

This method is for canceling an existing open order.

ℹ️ Information

As per 28 August 2024,

The trade API implements a rate limit of 30 requests per second for cancel order.

"status code": 429
"Content-Type": "application/json"
"Response Body": 
 {
   "success": 0,
   "error": "Your User ID sent too many cancel order requests",
   "error_code": "too_many_requests"
 }

Request Body

NameTypeMandatoryDescriptionValuedefault
methodstringyesSpecify the method you want to callcancelOrder
pairstringyesPair to get the information frombtc_idr, ltc_btc, doge_btc, etcbtc_idr
order_idintyesOrder ID10.00000000
typeintyesTransaction typebuy / sell
order_typestringoptionaltype of orderlimit, stoplimitlimit

Response

{
    "success": 1,
    "return": {
        "order_id": 666883,
        "client_order_id": "clientx-sj82ks82j",
        "type": "sell",
        "pair": "btc_idr",
        "balance": {
            "idr": "33605800",
            "btc": "0.00000000",
            ...
            "frozen_idr": "0",
            "frozen_btc": "0.00000000",
            ...
        }
    }
}

Cancel Order By Client Order ID Endpoints

This method is for canceling an existing open order by client_order_id.

ℹ️ Information

As per 28 August 2024,

The trade API implements a rate limit of 30 requests per second for cancel order by Client Order ID.

"status code": 429
"Content-Type": "application/json"
"Response Body": 
 {
   "success": 0,
   "error": "Your User ID sent too many cancel order requests",
   "error_code": "too_many_requests"
 }

Request Body

NameTypeMandatoryDescriptionValuedefault
methodstringyesSpecify the method you want to callcancelByClientOrderId
client_order_idstringyesClient Order IDclientx-sj82ks82j

Response

{
    "success": 1,
    "return": {
        "order_id": 666883,
        "client_order_id": "clientx-sj82ks82j",
        "type": "sell",
        "pair": "btc_idr",
        "balance": {
            "idr": "33605800",
            "btc": "0.00000000",
            ...
            "frozen_idr": "0",
            "frozen_btc": "0.00000000",
            ...
        }
    }
}

Withdraw Fee Endpoints

This method is for check withdraw fee

To be able to use this method you need to enable withdraw permission when you generate the API Key. Otherwise you will get “No permission” error.

Request Body

NameTypeMandatoryDescriptionValuedefault
methodstringyesSpecify the method you want to callwithdrawFee
currencystringyesCurrency for check withdraw feebtc, ltc, doge, eth, etc
networkstringnoSet optional network to see withdrawFee on coin with multiple networkerc20, trc20, bep2, bep20, etc

Response success

{
    "success": 1,
    "return": {
        "server_time": 1607923272,
        "withdraw_fee": 0.005,
        "currency": "eth"
    }
}

Response with invalid network

{
    "success": 0,
    "error" : "Invalid network, please fill with one of this erc20, trc20, bep20",
    "error_code": ""
}

Withdraw Coin Endpoints

This method is for withdrawing assets (except IDR). You can use address and username option when sending crypto via TAPI

If client withdraw from TAPI by internal address, there’s no fee (fee=0).

To be able to use this method you need to enable withdraw permission when you generate the API Key. Otherwise you will get “No permission” error.

You also need to prepare a Callback URL. Callback URL is a URL that our system will call to verify your withdrawal requests. Various parameters will be sent to Callback URL, make sure to check this information on your server side. If all the data is correct, print out a string “ok” (without quotes). We will continue the request if only we receive “ok” (without quotes) response, otherwise the request will be failed.

Callback call will be sent through a POST request, with 5 seconds connection timeout.

Request Body

NameTypeMandatoryDescriptionValuedefault
methodstringyesSpecify the method you want to callwithdrawCoin
currencystringyesCurrency to withdrawbtc, ltc, doge, eth, etc
networkstringyesCurrency network if existerc20, trc20, bep2, bep20
withdraw_addressstringyesReceiver addressa valid address
withdraw_amountnumericyesAmount to send10.00000000
withdraw_memostringnoMemo to be sent to the receiver, if supported by the asset platform. Exchanges use this memo for accepting deposits for certain assets.Example: Destination Tag (for Ripple)Message (for NXT)Memo (for BitShares)a valid memo/message/destination tag
request_idalphanumeric max 255 charyesCustom string you need to provide to identify each withdrawal request.request_id will be passed to callback call so your system can identify the request.d

Response

{
    "success": 1,
    "status": "approved",
    "withdraw_currency": "doge",
    "withdraw_address": "D9iCdBLBosJzGSvpQGMSobwtdgB2rS1zam",
    "withdraw_amount": "10.00000000",
    "fee": "5.00000000",
    "amount_after_fee": "5.00000000",
    "submit_time": "1578909560",
    "withdraw_id": "doge-1941965",
    "txid": ""
}

Response Withdraw to Own Address

{
    "success": 0,
    "error": "Please use recipient address other than your Indodax account address",
    "error_code": ""
}

Callback Parameter Sent to Client

ParameterDescription
request_idrequest_id from your request
withdraw_currencycurrency from your request
withdraw_addresswithdraw_address from your request
withdraw_amountwithdraw_amount from your request
withdraw_memowithdraw_memo from your request (if any)
requester_iprequester_ip of the request
request_datetime the request submitted

Withdraw Coin by Username

Client can view and use username option when sending crypto via TAPI. If client withdraw from TAPI by Indodax username, there’s no fee (fee=0).

Request Body

NameTypeMandatoryDescriptionValuedefault
methodstringyesSpecify the method you want to callwithdrawCoin
currencystringyesCurrency to withdrawbtc, ltc, doge, eth, etc
withdraw_amountnumericyesAmount to send10.00000000
withdraw_memostringnoMemo to be sent to the receiver, if supported by the asset platform. Exchanges use this memo for accepting deposits for certain assets.Example: Destination Tag (for Ripple)Message (for NXT)Memo (for BitShares)a valid memo/message/destination tag
request_idalphanumeric max 255 charyesCustom string you need to provide to identify each withdrawal request.request_id will be passed to callback call so your system can identify the request.d
withdraw_input_methodyesWithdraw using method username or addressusername
withdraw_usernamealphanumericyesusername withdraw from your request & followed by special character underscrore (_) or strip (-). Mandatory id withdraw_input_method = username

Response success Withdraw Username (BNB)

{
    "success": 1,
    "status": "wait",
    "withdraw_currency": "aave",
    "withdraw_address": ""
    "withdraw_amount": "0.05000000",
    "fee": "0.00000000",
    "amount_after_fee": "0.05000000",
    "submit_time": "1684723796",
    "withdraw_id": "aave-163",
    "txid": "",
    "withdraw_username": "User_13"
}

Response Withdraw Username (BNB) with invalid Username

{
    "success": 1,
    "error" : "Username is not found!"
    "error_code": ""
}

Response Withdraw Username (AAVE) 0 Coin

{
    "success": 1,
    "error" : "Can't make withdrawal with amount 0, input a larger withdraw_amount value"
    "error_code": ""
}

Response Withdraw Username (AAVE) > Maksimum Coin per Day

{
    "success": 1,
    "error" : "Exceeded today's limit. Remain limit: 217.35817575 AAVE. To increase the limit, please contact customer service."
}

Response Withdraw to Own Username

{
    "success": 0,
    "error": "Please use recipient address other than your Indodax account address",
    "error_code": ""
}

Callback Parameter Sent to Client

ParameterDescription
request_idrequest_id from your request
withdraw_currencycurrency from your request
withdraw_address
withdraw_amountwithdraw_amount from your request
withdraw_memowithdraw_memo from your request (if any)
withdraw_usernameusername withdraw from your request
requester_iprequester_ip of the request
request_datetime the request submitted

List Downline Endpoints

This method is for list all downline in current user

Request Body

NameTypeMandatoryDescriptionValuedefault
methodstringyesSpecify the method you want to calllistDownline
pageintyesSet the page you want to show1
limitintyesSet how many data you want to show10200

Response

{
  "success": 1,
  "return": {
    "curr_page": 1,
    "total_page": 102,
    "total_data_per_page": 2,
    "total": 203,
    "data": [
      {
        "name": "btc users",
        "username": "btcusers",
        "registration_date": "9-Jun-20 15:54",
        "email_verified": true,
        "id_verified": true,
        "level": "n/a",
        "end": "n/a",
        "start": "n/a"
      },
      {
        "name": "idx users",
        "username": "idxusers",
        "registration_date": "8-Jun-20 15:51",
        "email_verified": true,
        "id_verified": false,
        "level": "n/a",
        "end": "n/a",
        "start": "n/a"
      }
    ]
  }
}

Check Downline Endpoints

This method is for check wheter email exists in current user downline or not return is 1 or 0. 1 means this email is exists in current user downline 0 means email doesn't exists in current user downline

Request Body

NameTypeMandatoryDescriptionValuedefault
methodstringyesSpecify the method you want to calllistDownline
emailstringyesEmail want to checkbtc@gmail.com, idx@yahoo.com

Response

{
    "success": "1",
    "is_downline": "0"
}

Create Voucher Endpoints

This method used to generate Indodax voucher programmatically. To be able to use this method you need to be a partner and sign official aggreement between you and Indodax.

Request Body

NameTypeMandatoryDescriptionValuedefault
methodstringyesSpecify the method you want to callcreateVoucher
amountnumberyesThe voucher value in rupiahMinimum 1000
to_emailstrinngyesThe recipient email address which registered in Indodaxe.g. idx@gmail.com

Response

{
    "success": 1,
    "withdraw_id": 1234,
    "rp": 10000,
    "submit_time": "1578909560",
    "voucher": "BTC-IDR-XXXX"
}