Change Log

2024-08-15

  • New endpoints for Spot Market:

    • GET /v1/get-recent-order to get Recent Order list

2024-04-01

  • New endpoints for Ecurrency:

    • POST /v1/ecurrency/get-transaction-list to get Ecurrency transaction list
    • POST /v1/ecurrency/create-deposit-transactionto create Ecurrency deposit transaction
    • POST /v1/ecurrency/create-withdraw-transactionto create Ecurrency withdraw transaction

2024-02-29

  • New endpoints for Spot:

    • GET /v1/get-user-all-order to get user all spot order

2024-01-05

  • New endpoints for Rapid:

    • POST /v1/rapid/get-rapid-currency-rate to get rapid pair wise rate
    • POST /v1/rapid/get-transaction-list Get All Rapid Transaction List

2023-09-01

  • New endpoints for Withdraw:

    • POST /v1/withdraw/create-fiat-transaction to create Fiat withdraw transaction
    • POST /v1/withdraw/get-fiat-transaction-list to get Fiat withdraw transaction list
    • GET /v1/get-available-currency to get available currency list
    • POST /v1/get-iban-account-details to get IBAN account details

2023-08-29

  • New endpoints for Address Managment:

    • POST /v1/address-managment/add-address to add new address
    • GET /v1/address-managment/list-address to get all saved address
    • POST /v1/address-managment/validate-address to validate address

2023-08-02

  • New endpoints for Trade Wallet:

    • GET /v1/check-user-trade-balance to get user trade balance
    • POST /v1/transfer-wallet-main-trade to transfer balance between main wallet to trade wallet

2023-06-06

  • New endpoints for Deposit,Withdraw and Rapid:

    • POST /v1/generate-deposit-wallet-address to generate deposit wallet address
    • POST /v1/get-deposit-transaction-list to get deposit transaction list
    • POST /v1/get-withdraw-transaction-list to get withdraw transaction list
    • POST /v1/create-withdraw-transaction to create withdraw transaction
    • POST /v1/rapid/get-reserve to get reserve rate
    • POST /v1/rapid/create-trade to create rapid transaction
    • GET /v1/rapid/transaction-detail/transaction_id to get rapid transaction
    • GET /v1/rapid/get-currency to get rapid Currency List
    • GET /v1/rapid/get-fees to get Currency Wise Fees

2021-08-20

  • New endpoints for Spot Trading:

    • GET /get-timestamp to get server timestamp
    • POST /v1/trade-bot to make buy and sell spot order
    • GET /v1/get-open-buy-sell-order Get All Active Buy Sell Trades
    • GET /v1/get-user-open-order Get All User Active Buy Sell Trades
    • GET /v1/cancel-user-trade Cancel User Active Buy Sell Trade
    • GET /v1/cancel-bulk-order Bulk Cancel User Active Buy Sell Trade
    • GET /v1/check-user-balance Check User Balance for particular Currency
    • GET /v1/get-market-price Get Market Price of single or all pair

Introduction

API Key Setup

  • Some endpoints will require an API Key. Please refer to this page regarding API key creation.
  • Never share your API key/secret key to ANYONE.
If the API keys were accidentally shared, please delete them immediately and create a new key.

API Key Restrictions

Security TypeDescription
NONEEndpoint can be accessed freely.
TRADEEndpoint requires sending a valid API-Key and signature.

Enabling Accounts

Main wallet

A Main wallet is your default wallet, you will be able to deposit, withdraw and make trade.

Trade wallet

Here you can transfer your assets to separate them for better accounting.

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: Farhad Exchange API Postman

Contact Us

General Info

General API Information

  • The base endpoint is: https://api.efex.pro
  • All endpoints return either a JSON object or array.
  • Data is returned in ascending order. Oldest first, newest last.
  • All time and timestamp related fields are in milliseconds.

HTTP Return Codes

  • HTTP 4XX return codes are used for malformed requests; the issue is on the sender's side.
  • HTTP 403 return code is used when the WAF Limit (Web Application Firewall) has been violated.
  • HTTP 429 return code is used when breaking a request rate limit.
  • HTTP 418 return code is used when an IP has been auto-banned for continuing to send requests after receiving 429 codes.
  • HTTP 5XX return codes are used for internal errors; the issue is on Farhad Exchange's side.

Error Codes and Messages

  • If there is an error, the API will return an error with a message of the reason.

The error payload on API and SAPI is as follows:

{
    "message": "Invalid symbol."
}

General Information on Endpoints

  • For GET endpoints, parameters must be sent as a query string.
  • For POST, PUT, and DELETE endpoints, the parameters may be sent in the request body with content typeapplication/form-data.
  • Parameters may be sent in any order.

SIGNED (TRADE, USER_DATA, AND MARGIN) Endpoint security

  • SIGNED endpoints require an additional parameter, signature, to be sent in the request body.
  • Endpoints use HMAC SHA256 signatures. The HMAC SHA256 signature is a keyed HMAC SHA256 operation. 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.

Timing security

  • A SIGNED endpoint also requires a parameter, timestamp, to be sent which should be the millisecond timestamp received from server by calling get timestamp api.
  • An additional parameter, receive_window, may be sent to specify the number of milliseconds after timestamp the request is valid for.

The logic is as follows:

if ((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 receive_window, 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 20,000!

Spot Market

TimeStamp Api

GET /get-timestamp

Response:

{
    "timestamp": 1630133102  
}

Buy/Sell Trade Api

POST /v1/trade-bot

Place Buy or sell Order

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYEScrypto pair symbol like "BTC_USDT".
order_typeINTYES1-LIMIT,2-MARKET,3-STOP-LIMIT,4-OCO
order_byINTNOPASS WHEN order_by is 2.Values for order by are 1 - ORDER BY QTY,2- ORDER BY AMOUNT
priceFLOATYESPrice is require for LIMIT, STOP-LIMIT and OCO type order
sideINTYES1-BUY,2-SELL
qtyFLOATYESQty is not required to pass when you are placing market type order by amount order else it is required
amountFLOATYESAmount is only required to pass when you are placing market type order by amount order else it is not required
trigger_priceFLOATNOTrigger Price is require for STOP-LIMIT and OCO type order
limit_priceFLOATNOLimit Price is require for OCO type order
is_hiddenINTNOIf you do not wish to display your order in the order book, please enter '1' in this field; otherwise, enter '0'. (Only LIMIT orders).
timestampMILLISECONDYESone you received from get timestamp api
receive_windowINTYesmax 20000.
signatureSTRINGYES
will be in this sequence
IF ORDER_TYPE == 1
"symbol:order_type:price:qty:side:timestamp:receive_window"
IF ORDER_TYPE == 2 AND ORDER_BY == 1
"symbol:order_type:order_by:qty:side:timestamp:receive_window"
IF ORDER_TYPE == 2 AND ORDER_BY == 2
"symbol:order_type:order_by:amount:side:timestamp:receive_window"
IF ORDER_TYPE == 3
"symbol:order_type:price:qty:trigger_price:side:timestamp:receive_window"
IF ORDER_TYPE == 4
"symbol:order_type:price:qty:limit_price:trigger_price:side:timestamp:receive_window"

Response:

{
    "message": "Sell Order Place Successfully"  
}

List All Active Buy/Sell Trade Api

GET /v1/get-open-buy-sell-order

Get All Active Buy Sell Trades

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
symbolBTC_USDTPass Pair Symbol Like given Above
type00-All,1-Buy,2-Sell
page1Page is required to pass and it start with 1 and max 10 you can pass.
per_page1per_page is required to pass and it start with 1 and max 100 you can pass.
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
signatureSTRINGwill be in this sequence "Symbol:type"

Response:

{
    "trades": {
        "sell": [
            {
                "price": 46705.6958,
                "qty": "3.02968500",
                "total": "141503.54597982"
            }
        ],
        "buy": [
            {
                "price": 46034.6299,
                "qty": "0.19120000",
                "total": "8801.82123688"
            }
        ]
    }
}

List All User Active Buy/Sell Trade Api

GET /v1/get-user-open-order

Get All User Active Buy Sell Trades

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
symbolBTC_USDTPass Pair Symbol Like given Above
type00-All,1-Buy,2-Sell
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
signatureSTRINGwill be in this sequence "Symbol:type"

Response:

{
    "trades": [
        {
            "id": 716880,
            "time": "11:36:03", //time is in utc
            "date": "16/03/2023", //date is in utc  
            "symbol": "BNB/USDT", //pair code
            "order_type": 1,
            "type": 1, //Buy Order
            "price": "360.90000000",
            "amount": "1.00000000", // qty
            "total": "360.90000000",
            "limit": "-",
            "confirm_qty": "0.00000000",
            "table": 1
        },
	]
}

Cancel Open Buy/Sell Trade Api

GET /v1/cancel-user-trade

Cancel User Active Buy Sell Trade

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
idTrade IDPass Open Trade id you wish to cancel
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
signatureSTRINGwill be in this sequence "id"

Response:

{
    "message": "Order Cancel Successfully"  
}

Bulk Cancel Open Buy/Sell Trade Api

GET /v1/cancel-bulk-order

Bulk Cancel User Active Buy Sell Trade

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
typeOrder Type0-all, 1-Limit, 2-Market, 3-Stop Limit
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
signatureSTRINGwill be in this sequence "Type"

Response:

{
    "message": "Order Cancel Successfully"  
}

Get User Current Balance

GET /v1/check-user-balance

Check User Balance for particular Currency

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
symbolUSDTPass Currency Code to get Balance particular Currency Balance else pass "ALL" for all currency
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
signatureSTRINGwill be in this sequence "symbol"

Response:

{
    "balance": "xxxxx.xxxxxxxx" //user balance of that coin is display  
}

Get Market Price

GET /v1/get-market-price

Get Market Price of single or all pair

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
symbolDOGE_USDTOptional if given only that pair price will come
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.

Response:

[
    {
        "currency_pair": "ETH/BTC",
        "last_trade_price": "0.07408300"
    },
    {
        "currency_pair": "BNB/USDT",
        "last_trade_price": "360.70000000"
    },
    {
        "currency_pair": "BTC/USDT",
        "last_trade_price": "16978.63460900"
    },
    {
        "currency_pair": "DOGE/USDT",
        "last_trade_price": "0.10085000"
    },
]

Get User all spot order

GET /v1/get-user-all-order

Check User all spot order

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
symbolUSDT_IRROptional.Pass Currency Pair Name to get Order of particular Pair Balance
page1Page is required to pass and it start with 1 and max 10 you can pass.
per_page1per_page is required to pass and it start with 1 and max 100 you can pass.
type00-All,1-Buy,2-Sell
from_timestampTIMESTAMPPass a timestamp to receive transactions from a specific time until the current date.
to_timestampTIMESTAMPPass a timestamp to receive transactions to a specific time..
tradeIdINTPass a tradeId to get a specific order.
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
signatureSTRINGwill be in this sequence "from_timestamp:to_timestamp:page:per_page"

Response:

{
    "trades": []
}

Get Recent Orders

GET /v1/get-recent-order

Get Recent Orders of single pair

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
symbolDOGE_USDTPass Pair Symbol Like given Above
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
pageINTOptional max 20 record will come in one page in descending order.

Response:

[
    {
        "price": 602.3923,
        "qty": 0.174474,
        "datetime": "2024-08-15T05:33:28.2501302",
        "isGreen": true
    },
    {
        "price": 584.7289,
        "qty": 0.112505,
        "datetime": "2024-08-15T05:30:27.2423365",
        "isGreen": false
    },
    {
        "price": 603.1283,
        "qty": 0.155497,
        "datetime": "2024-08-15T05:27:28.6631559",
        "isGreen": true
    }
]

Deposit & Withdraw

Status Code For Crypto Deposit and Withdraw Transaction

Below we have mention status code and there name in table for deposit and withdraw crypto transaction

Status Code:

CodeName
0Pending
1Completed
2Waiting for admin approval
3Cancel by Admin
4Processing
5Cancel by User

Get Available Currency List

GET /v1/get-available-currency

Get Available Currency list

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.

Response:

{
    "message": "Available Currency List receive successfully",
    "currency_list": [
        {
            "code": "BTC",
            "name": "Bitcoin",
            "deposite_status": 1,
            "withdraw_status": 1,
            "withdraw_fees": 10,
            "min_withdraw_amount": 0.001,
            "max_withdraw_amount": 0.31635748,
            "decimal_point": 8,
            "currency_type": "Crypto Currency",
            "network_list": [
                {
                    "network": "Bitcoin",
                    "protocol": "Bitcoin",
                    "symbol": "BTC",
                    "avg_time": 10,
                    "withdraw_fees": 0.0002,
                    "withdraw_type": 0,
                    "address_regex": 0
                },
                {
                    "network": "Binance Smart Chain",
                    "protocol": "BEP20",
                    "symbol": "BTC_BSC",
                    "avg_time": 2,
                    "withdraw_fees": 0.0002,
                    "withdraw_type": 0,
                    "address_regex": 0
                },
                {
                    "network": "Ethereum",
                    "protocol": "ERC20",
                    "symbol": "BTC_ERC",
                    "avg_time": 2,
                    "withdraw_fees": 0.0007,
                    "withdraw_type": 0,
                    "address_regex": 0
                }
            ]
        },
        {
            "code": "IRR",
            "name": "Iran's Rial",
            "deposite_status": 1,
            "withdraw_status": 1,
            "withdraw_fees": 0,
            "min_withdraw_amount": 10,
            "max_withdraw_amount": 100,
            "decimal_point": 0,
            "currency_type": "Fiat Currency"
        },
    ]
}

Get Crypto Deposit List

POST /v1/get-deposit-transaction-list

Get Recent 500 Crypto deposit Transaction list

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
pageINTmax 10 record will come in one page in descending order
currency_codeSTRINGOptional. You can skip this if you don't want to receive a transaction list sorted by specific assets.
destination_addressSTRINGOptional. You can skip this if you don't want to receive a transaction list sorted by specific destination address.
from_timestampTIMESTAMPOptional. Pass a timestamp if you want to receive transactions from a specific time until the current date.
to_timestampTIMESTAMPOptional. Pass a timestamp if you want to receive transactions to a specific time.
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.

Response:

{
    "message": "Transaction List receive successfully",
    "total_transaction_count": 19,
    "transaction_list": [
        {
            "currency_code": "USDT",
            "amount": "10.00000000",
            "address_from": "TNGozGijqxTyTip6gaasd9cuV4PJouBo1u",
            "address_to": "TF32u9nxn4CyZEQxtgHgmPmgtdAFq3g3rE",
            "unique_id": "2109251129268",
            "tx_id": "df21ee17241504ba56138a57a0d79aad2bd6b467768af4270ff80601b7757095",  
            "confirmation": 1,
            "error_reason": null,
            "status": 1,
            "created_at": "2021-09-25T16:59:40.000000Z"
        },
    ]
}

Get Crypto Withdraw List

POST /v1/get-withdraw-transaction-list

Get Recent 500 Crypto Withdraw Transaction list

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
page1max 10 record will come in one page in descending order
currency_codeSTRINGOptional. You can skip this if you don't want to receive a transaction list sorted by specific assets.
destination_addressSTRINGOptional. You can skip this if you don't want to receive a transaction list sorted by specific destination address.
from_timestampTIMESTAMPOptional. Pass a timestamp if you want to receive transactions from a specific time until the current date.
to_timestampTIMESTAMPOptional. Pass a timestamp if you want to receive transactions to a specific time.
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.

Response:

{
    "message": "Transaction List receive successfully",
    "total_transaction_count": 5,
    "transaction_list": [
        {
            "currency_code": "XRP",
            "amount": "2.00000000",
            "address_from": "rL7XrqvegsepuSs9FL35vpShr8yhubDDUc",
            "address_to": "rUzWJkXyEtT8ekSSxkBYPqCvHpngcy6Fks",
            "unique_id": "2109241155752",
            "tx_id": "456F7E536D48E71110E70412F8EACEF414DD7ED8F23A31B6DF565DE5D15D6544",
            "error_reason": null,
            "status": 1,
            "created_at": "2021-09-24T17:25:56.000000Z"
        },
    ]
}

Create Crypto Withdraw Transaction

POST /v1/create-withdraw-transaction

Create Crypto withdraw transaction

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
currency_codeDOGEassets currency code which you need to withdraw
fromAddressfrom assets addressOptional.Please provide the address from which you would like to send the assets. Please note that the amount will be deducted from the system wallet and not from the address you provide.
fromMemofrom assets memoOptional.pass NULL if there is no memo
toAddressto assets addresspass address to which you need to receive
memoto assets memoOptional.pass NULL if there is no memo
networkDOGEEnter Network Symbol which you get from currency list api for particular network
amount10Amount of assets to withdraw.
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
signatureSTRINGwill be in this sequence "fromAddress:from_memo:toAddress:memo:currency_code:network:amount:receive_window"

Response:

{
    "message": "Withdrawal Request Sent Successfully",
    "unique_transaction_id": "99580491-9fb3-4625-b66f-770a492504fb"  
}

Create deposit wallet address

POST /v1/generate-deposit-wallet-address

Generate Deposit Wallet Address

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
currencyDOGEAssets currency code for which you need to generate address
networkNULLpass Network (Symbol which you get from currency list api for particular network) if you want to generate address for particular network else leave null for generating all available network address
generate_new_addressTRUERequired.Boolean TRUE OR FALSE is value for this.Pass True if you want to generate new address else pass false
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
signatureSTRINGwill be in this sequence if network is not null "currency:network" else "currency"

Response:

{
    "message": "Address Generated Successfully",
    "address_data": [
        {
            "address": "0xfa9efdde29c50f2e660e13d50d9c99131bcc469c",
            "symbol": "USDT",
            "destination_tag": "",
            "memo": "",
            "message": "",
            "protocol": "ERC20"
        },
        {
            "address": "TKPj8LsVYAbsHmApfnxGZfeRcEiUVSNM4p",
            "symbol": "USDT_TRON",
            "destination_tag": "",
            "memo": "",
            "message": "",
            "protocol": "TRC20"
        }
    ]
}

Get IBAN Account Details

POST /v1/get-iban-account-details

Get IBAN Account Details

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
account_noaccount noPlease provide the account number from which you would like to get account details.
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
signatureSTRINGwill be in this sequence "account_no"

Response:

{
    "message": "Get IBAN account no details",  
    "data": {
        "bank_name": "بانک صادرات ایران",
        "IBAN": "IR840191110000111643351114",
        "deposit": "1111643351114",
        "deposit_description": "حساب فعال است",
        "account_name": "سیامک سیفی",
        "first_name": "سیامک",
        "last_name": "سیفی"
    }
}

Get Fiat Withdraw List

POST /v1/withdraw/get-fiat-transaction-list

Get Recent 500 Fiat Withdraw Transaction list

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
page1max 10 record will come in one page in descending order
account_noSTRINGOptional. You can skip this if you don't want to receive a transaction list sorted by specific account no.
from_timestampTIMESTAMPOptional. Pass a timestamp if you want to receive transactions from a specific time until the current date.
to_timestampTIMESTAMPOptional. Pass a timestamp if you want to receive transactions to a specific time.
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.

Response:

{
    "message": "Fiat Withdraw Transaction List receive successfully",
    "total_transaction_count": 10,
    "transaction_list": [
        {
            "unique_id": "2309010432437",
            "unique_transaction_id": "9a06dd65-41df-4727-ba9f-0a076e54e4a1",
            "currency_code": "IRR",
            "amount": "100",
            "account_no": "123456789123456789123456",
            "payment_id": "12121212",
            "transaction_id": "313113133113313",
            "status": "Completed",
            "error_reason": null,
            "created_at": "2023-09-01T04:32:28.000000Z"
        },
    ]
}

Create Fiat Withdraw Transaction

POST /v1/withdraw/create-fiat-transaction

Create Fiat Withdraw Transaction

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
account_noassets account noPlease provide the account number from which you would like to receive the assets. Please note that the amount will be deducted from the system wallet.
payment_idassets payment idOptional.pass NULL if there is no payment id
amount10Amount of assets to withdraw.
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
signatureSTRINGwill be in this sequence "account_no:payment_id:amount"
If there is no payment ID, the sequence will be "account_no:amount"

Response:

{
    "message": "Withdrawal Request Sent Successfully",
    "unique_transaction_id": "99580491-9fb3-4625-b66f-770a492504fb"  
}

Get Ecurrency Transaction List

POST /v1/ecurrency/get-transaction-list

Get Recent 500 Ecurrency Transaction list

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
page1max 10 record will come in one page in descending order
currencyPMVOptional. You can skip this if you don't want to receive a transaction list sorted by specific currency. (WMZ, PMD, PMV, PSV)
typeSTRINGOptional. You can skip this if you don't want to receive a transaction list sorted by specific type.
from_timestampTIMESTAMPOptional. Pass a timestamp if you want to receive transactions from a specific time until the current date.
to_timestampTIMESTAMPOptional. Pass a timestamp if you want to receive transactions to a specific time.
timestampMILISECOUNDone you recived from get timestamp api
receive_windowINTmax 20000.

Response:

{
    "message": "Ecurrency Transaction List receive successfully",
    "total_transaction_count": 10,
    "transaction_list": [
        {
            "unique_id": "2309010432437",
            "type": "Withdraw",
            "unique_transaction_id": "9a06dd65-41df-4727-ba9f-0a076e54e4a1",
            "currency_code": "PMD",
            "amount": "100",
            "account_no": "123456789123456789123456",
            "voucher_code": "",
            "voucher_secret": "",
            "transaction_id": "313113133113313",
            "status": "Completed",
            "error_reason": null,
            "created_at": "2023-09-01T04:32:28.000000Z"
        },
    ]
}

Create Ecurrency Deposit Transaction

POST /v1/ecurrency/create-deposit-transaction

Create Ecurrency Deposit Transaction

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
currencyPMVassets currency code which you need to deposit (PMV, PSV)
voucher_number123456789Optional.pass NULL if there is currency_code is PSV
voucher_code123456789pass voucher_code to which you need to redeem
amount10Amount of assets to withdraw.
timestampMILISECOUNDone you recived from get timestamp api
receive_windowINTmax 20000.
signatureSTRINGIf PMV will be in this sequence "currency:voucher_number:voucher_code:amount:receive_window"
If PSV is no voucher_number, the sequence will be "currency:voucher_code:amount:receive_window"

Response:

{
    "message": "Deposit Request Sent Successfully",
    "unique_transaction_id": "99580491-9fb3-4625-b66f-770a492504fb"  
}

Create Ecurrency Withdraw Transaction

POST /v1/ecurrency/create-withdraw-transaction

Create Ecurrency Withdraw Transaction

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
currencyPMDassets currency code which you need to deposit (WMZ, PMD, PMV, PSV)
account_noassets account noOptional. Please provide the account number from which you would like to receive the assets.
amount10Amount of assets to withdraw.
timestampMILISECOUNDone you recived from get timestamp api
receive_windowINTmax 20000.
signatureSTRINGWill be in this sequence "currency:account_no:amount:receive_window"
If PMV, PSV is no account_no, the sequence will be "currency:amount:receive_window"

Response:

{
    "message": "Withdrawal Request Sent Successfully",
    "unique_transaction_id": "99580491-9fb3-4625-b66f-770a492504fb"  
}

Rapid Convert Api

Get Reserve Rate

POST /v1/rapid/get-reserve

Get Reserve Rate

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
typeSTRINGValue will be BUY OR SELL
amountFromFLOATPass Amount you want to give.
pairSTRINGEnter Pair name like BTC/USDT.
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
signatureSTRINGwill be in this sequence "type:amountFrom:pair:receive_window"

Response:

{
    "status": 1,
    "rate": 49325.345193959  
}

Create Rapid Trade

POST /v1/rapid/create-trade

Get Reserve Rate

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
typeSTRINGValue will be BUY OR SELL
amountFromFLOATPass Amount you want to give.
pairSTRINGEnter Pair name like BTC/USDT.
send_typeINTPass 1 - Internal and 2 - External
receive_typeINTPass 1 - Internal and 2 - External
addressSTRINGIF Receive type is 2 then send address where you want to receive assets
memoSTRINGIF receive type is 2 and assets as memo then pass in this variable
send_networkSTRINGIf the send type is 2 and the currency is crypto, then pass in this variable.
receiver_networkSTRINGIf the receive type is 2 and the currency is crypto, then pass in this variable.
account_noSTRINGIf the receive type is 2 and the currency is ecurrency, then pass in this variable.
voucher_numberSTRINGIf the send type is 2 and the currency is ecurrency voucher, then pass in this variable.
voucher_codeSTRINGIf the send type is 2 and the currency is ecurrency voucher, then pass in this variable.
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
signatureSTRING
will be in this sequence
string = "type:amountFrom:pair:send_type:receive_type:receive_window"
if send_type == 2: //crypto currency
string += send_network
if receive_type == 2: //crypto currency
string += address
if not empty(memo):
string += memo
if not empty(receiver_network):
string += receiver_network

Response:

{
    "from_currency_id": 1,
    "to_currency_id": 3,
    "send_currency_network" => 'BTC,
    "receive_currency_network" => 'USDT',  
    "send_amount": "0.10000000",
    "receive_amount": "4883.20917000",
    "withdraw_fee": "0.00000000",
    "commission_fee": "49.32534519",
    "deposit_address": null,
    "deposite_destination_tag": null,
    "deposite_memo": null,
    "receive_address": "",
    "receiver_memo": "",
    "transaction_id": "2306061056608",
    "rate": "49325.34519000",
    "payment_status": "Confirmed",
    "receive_status": "Pending",
    "payment_mode": "Internal Wallet",
    "receive_mode": "Internal Wallet"
}

Get Rapid Transaction Detail

GET /v1/rapid/transaction-detail/transaction_id

Get Reserve Rate

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.

Response:

{
    "from_currency_id": 1,
    "to_currency_id": 3,
    "send_currency_network" => 'BTC,
    "receive_currency_network" => 'USDT',  
    "send_amount": "0.10000000",
    "receive_amount": "4883.20917000",
    "withdraw_fee": "0.00000000",
    "commission_fee": "49.32534519",
    "deposit_address": null,
    "deposite_destination_tag": null,
    "deposite_memo": null,
    "receive_address": "",
    "receiver_memo": "",
    "transaction_id": "2306061056608",
    "rate": "49325.34519000",
    "payment_status": "Confirmed",
    "receive_status": "Pending",
    "payment_mode": "Internal Wallet",
    "receive_mode": "Internal Wallet"
}

Get Rapid Currency List

GET /v1/rapid/get-currency

Get Reserve Rate

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.

Response:

[
    {
        "currency_code": "BTC",
        "min_amount_internal": "0.00010000",
        "max_amount_internal": "12.00000000",
        "min_amount_external": "0.0001000000",
        "max_amount_external": "1.0000000000",
        "commission_type": "Fixed",
        "commission_value": "0.00000000",
        "network": [
            {
                "network": "bitcoin",
                "protocol": "btc",
                "symbol": "BTC",
                "address_regex": "bc1[qQp][a-zA-HJ-NP-Z0-9]{14,72}",  
                "withdraw_type": "Percentage",
                "withdraw_fees": "1.00000000"
            }
        ]
    },
    {
        "currency_code": "USDT",
        "min_amount_internal": "2.00000000",
        "max_amount_internal": "200000.00000000",
        "min_amount_external": "3.0000000000",
        "max_amount_external": "100000.0000000000",
        "commission_type": "Percentage",
        "commission_value": "2.00000000",
        "network": [
            {
                "network": "tron",
                "protocol": "TRC20",
                "symbol": "USDT_TRON",
                "address_regex": "T[a-zA-Z1-9]{33}",
                "withdraw_type": "Percentage",
                "withdraw_fees": "1.00000000"
            },
            {
                "network": "ethereum",
                "protocol": "ERC20",
                "symbol": "USDT",
                "address_regex": "^0x[a-fA-F0-9]{40}$",
                "withdraw_type": "Percentage",
                "withdraw_fees": "1.00000000"
            },
            {
                "network": "Polygon",
                "protocol": "ERC20",
                "symbol": "USDT_MATIC",
                "address_regex": "^0x[a-fA-F0-9]{40}$",
                "withdraw_type": "Percentage",
                "withdraw_fees": "2.00000000"
            }
        ]
    },
]

Get Currency Wise Fees

GET /v1/rapid/get-fees

Get Reserve Rate

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.

Response:

{
    "spot": [
        {
            "pair": "ETH/BTC",
            "maker_fee": 0.1,
            "taker_fee": 0.1
        },
        {
            "pair": "BTC/USDT",
            "maker_fee": 0.1,
            "taker_fee": 0.1
        },
    ],
    "Rapid": [
        {
            "currency_code": "BTC",
            "commission": "0.10000000 %"   
        },
        {
            "currency_code": "ETH",
            "commission": "0.10000000 %"
        },
        {
            "currency_code": "USDT",
            "commission": "0.10000000 %"
        },
        {
            "currency_code": "IRR",
            "commission": "0.10000000 %"
        },
    ]
}

Get Rapid Currency Pair wise Rate

POST /v1/rapid/get-rapid-currency-rate

Get Reserve Currency Pair Wise Rate

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
typeSTRINGIt will be either "BUY" OR "SELL".
pairSTRINGCurrency Pair Name in following format "BTC/USDT".
amountINTamount of currency you want to buy or sell.
signatureSTRING"type:amount:pair"

Response:

{
    "rate": 42956.0407708915
}

Get All Rapid Transaction List

POST /v1/rapid/get-transaction-list

Get All Rapid Transactions

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
pageINTmax 10.

Response:

{
    "message": "Transaction List receive successfully",
    "total_transaction_count": 1,
    "transaction_list": [
        {
            "from_currency_id": 2,
            "to_currency_id": 3,
            "send_currency_network": null,
            "receive_currency_network": null,
            "send_amount": "0.01000000",
            "receive_amount": "39.16742000",
            "withdraw_fee": "1.00000000",
            "commission_fee": "0.39563049",
            "deposit_address": null,
            "deposite_destination_tag": null,
            "deposite_memo": null,
            "receive_address": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
            "receiver_memo": "",
            "transaction_id": "xxxxxxxxxxxxxxx",
            "rate": "4056.30492000",
            "payment_status": "Pending",
            "receive_status": "Pending",
            "payment_mode": "External Wallet",
            "receive_mode": "External Wallet"
        }
    ]
}

Trade Wallet Api

Get Trade Wallet Balance

GET /v1/check-user-trade-balance

Get Reserve Rate

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
symbolSTRINGCurrency Code like btc
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
signatureSTRINGwill be in this sequence "symbol"

Response:

{
    "balance": xxx
}

Transfer Wallet Balance

POST /v1/transfer-wallet-main-trade

Transfer Wallet Balance between main wallet and trade wallet

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
currency_codeSTRINGCurrency Code like btc
fromSTRINGValue will be "spot" or "trade"
toSTRINGValue will be "spot" or "trade"
amountFloatAmount to be transfer between wallet
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
signatureSTRINGwill be in this sequence "currency_code:from:to:amount"

Response:

{
    "message": "Amount transfer from main wallet to trade wallet"
}

Address Managment Api

Get Save Address List

GET /v1/address-managment/list-address

Get all save address

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.

Response:

[
    {
        "currency_code": "USDT",
        "label": "save address 1",  
        "address": "address1",
        "network": "TRC20",
        "memo": null
    },
    {
        "currency_code": "BTC",
        "label": "save address 2",
        "address": "address2",
        "network": null,
        "memo": null
    },
]

Add Address

POST /v1/address-managment/add-address

Add address to address managment

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
currency_codeSTRINGCurrency Code like btc
labelSTRINGUnique identification to address which you want to give
addressSTRINGaddress which you want to save
networkSTRINGLike ERC20 or TRC20
memoSTRINGIF Address has memo then only add else pass "NULL"
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
signatureSTRING
will be in this sequence "currency_code:label:address". 
if network present then "currency_code:label:address:network".
if memo present then "currency_code:label:address:memo".
if network and memo both present then "currency_code:label:address:network:memo"

Response:

{
    ""message": "The address has already been taken."  
}

Validate Address

POST /v1/address-managment/validate-address

Validate address

Headers:

KeyValue
Acceptapplication/json
api-keyYour Api Key

Params:

KeyValueDescription
currency_codeSTRINGCurrency Code like btc
addressSTRINGaddress which you want to validate
networkSTRINGLike ERC20 or TRC20
timestampMILLISECONDone you received from get timestamp api
receive_windowINTmax 20000.
signatureSTRING
will be in this sequence "currency_code:address". 
if network present then "currency_code:address:network".

Response:

{
    "is_farhad_deposit_address":true,  
    "message": "Address is valid",
    "status": 1
}