Introduction
Welcome to the Bitwyre API!
All API URLs should use the base URL https://api.bitwyre.com for REST, and wss://api.bitwyre.com/ws for Websocket.
We have APIs for REST Public, REST Private, Websocket Public, and Websocket Private.
All endpoints returns either a JSON object or array along with some error messages (REST only, if any).
REST APIs
Example: REST On success
{
"error": [],
"result": {"some array or object of result(s)"}
}
Example: REST On error
{
"error": ["some (array) of error message(s)"],
"result": {}
}
- Public endpoints are all using
GET
method. - Private endpoints are using
POST
,GET
, andDELETE
with authentication scheme described in Authentication.
Websocket APIs
All of the examples are using Websocat, to install it you need Rust's Cargo and execute cargo install --features=ssl websocat
.
By its responses, both Public & Private, Websocket APIs both Public and Private can be categorized as:
- Asynchronous Request-Reply (Reactive), Private API must include auth scheme in the request data.
- Streaming Data/Broadcast (Pubsub and Periodic), Private API must include auth scheme in the the subscribe request data.
Authentication
Bitwyre uses HTTP Header authentication to allow access to the Private API.
REST Private API Request Headers
Example: REST GET private/account/balance
curl "https://api.bitwyre.com/private/orders" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"cd94e66609492952b26a4f3b29949d58548e9bd5e7bdd72598e441c6a57e57f4\",\
\"payload\": {\
\"pair\": \"btc_idr\",\
\"type\": \"buy\",\
\"ordertype\": \"limit\",\
\"price\": \"125000000\",\
\"volume\": \"500000\"\
}\
}"
Make sure to fill all fields with the correct ones.
All Private API endpoints expects for the following headers to be included in all API requests:
Header Key | Data Type | Required | Remark |
---|---|---|---|
"API-Key" | string | true | unique API-Key bounded to a user, see API Key. |
"API-Sign" | string | true | request signature , see API Sign. |
"Content-type" | string | varies | always application/json for POST & DELETE |
API Key
You can get a new Bitwyre API key pairs (api-key
and api-secret
) at our developer portal.
API Sign
The signature
, we call it API-Sign
, is created using HMAC-SHA512 of (URI path + SHA256(nonce + checksum))
and api-secret
, see REST Private API Data.
For websocket, signature is created using HMAC-SHA512 of api-secret
.
The URI path
is the endpoint path, e.g /private/orders
.
REST Private API Request Data
All Private API endpoints expect for the follow json data structure (form/query url for GET
) to be included in all API requests:
JSON Field | Data Type | Required | Remark |
---|---|---|---|
"nonce" | big-integer | true | always increasing unsigned 64 bit integer, see Cryptographic Nonce. |
"checksum" | string | true | SHA256 hash of "payload". |
"payload" | json-object/json-array | varies | endpoint specific request payload data. |
Websocket Private API Request Data
Example: Websocket Subscribe Request (Note: minify the json request for websocat)
websocat -E wss://api.bitwyre.com/ws/private/orders
>{
"command": "create",
"nonce": 1573882687533732677,
"checksum": "cd94e66609492952b26a4f3b29949d58548e9bd5e7bdd72598e441c6a57e57f4",
"api_key": "user_apikey",
"api_sign": "request_signature",
"payload": {
"pair": "btc_idr_spot",
"type": "buy",
"ordertype": "limit",
"price": "125000000",
"volume": "500000"
}
}
The Websocket Private API expects no HTTP Headers, bellow json data structure is needed for any secure request.
JSON Field | Data Type | Required | Remark |
---|---|---|---|
"command" | string | true | endpoint specific command. |
"nonce" | big-integer | true | see REST Private API Request Data. |
"checksum" | string | true | see REST Private API Request Data. |
"api_key" | string | true | see API Key. |
"api_sign" | string | true | see API Sign. |
"payload" | json-object/array | true | endpoint specific request payload data. |
Public API Endpoints
Server Time
Request
curl "https://api.bitwyre.com/public/time" -X GET
Response
{
"error": [],
"result": {
"unixtime": 1571744594571020435
}
}
Returns server's time.
This helps in approximating the time difference between the server and client.
Endpoint
https://api.bitwyre.com/public/time
Request Fields/Parameters
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
unixtime | big-integer | unix time in nanoseconds |
Markets
Request
curl "https://api.bitwyre.com/public/markets" -X GET
Response
{
"error": [],
"result": [
"crypto",
"equities",
"stablecoin",
"commodities",
"fixed_income",
"carbon"
]
}
Returns an underscore _
delimited tradable markets array
Endpoint
https://api.bitwyre.com/public/markets
Request Fields/Parameters
Response Types (JSON Array)
JSON Field | Data Type | Remark |
---|---|---|
JSON-array | string | Returns an underscore _ delimited tradable markets array |
Products
Request
curl "https://api.bitwyre.com/public/products" -X GET
Response
{
"error": [],
"result": ["spot", "futures", "options", "swaps", "spreads"]
}
Returns an underscore _
delimited tradable products array
Endpoint
https://api.bitwyre.com/public/products
Request Fields/Parameters
Response Types (JSON Array)
JSON Field | Data Type | Remark |
---|---|---|
JSON-array | string | Returns an underscore _ delimited tradable products array |
Assets
Request
curl "https://api.bitwyre.com/public/assets" -X GET
Response
{
"error": [],
"result": [
{
"asset": "btc",
"btc_equivalent": "1",
"icon_url": "https://storage.bitwyre.com/assets/btc.png",
"is_deposit_enabled": true,
"is_trading_enabled": true,
"is_withdraw_enabled": true,
"local_equivalent": "",
"local_reference": "",
"max_withdrawal": "10",
"min_withdrawal": "0.001",
"name": "Bitcoin",
"precision": "1e-8",
"withdrawal_fee": "0.00000001"
},
{
"asset": "eth",
"btc_equivalent": "",
"icon_url": "https://storage.bitwyre.com/public/images/coins/raster/ETH_500px.png",
"is_deposit_enabled": true,
"is_trading_enabled": true,
"is_withdraw_enabled": true,
"local_equivalent": "",
"local_reference": "",
"max_withdrawal": "10",
"min_withdrawal": "0.001",
"name": "Ethereum",
"precision": "1e-9",
"withdrawal_fee": "0.00000001"
},
{
"asset": "xmr",
"btc_equivalent": "",
"icon_url": "https://storage.bitwyre.com/public/images/coins/raster/XMR_500px.png",
"is_deposit_enabled": true,
"is_trading_enabled": true,
"is_withdraw_enabled": true,
"local_equivalent": "",
"local_reference": "",
"max_withdrawal": "10",
"min_withdrawal": "0.001",
"name": "Monero",
"precision": "1e-12",
"withdrawal_fee": "0.00000001"
},
{
"asset": "zec",
"btc_equivalent": "",
"icon_url": "https://storage.bitwyre.com/public/images/coins/raster/ZEC_500px.png",
"is_deposit_enabled": true,
"is_trading_enabled": true,
"is_withdraw_enabled": true,
"local_equivalent": "",
"local_reference": "",
"max_withdrawal": "10",
"min_withdrawal": "0.001",
"name": "ZCash",
"precision": "1e-8",
"withdrawal_fee": "0.00000001"
},
{
"asset": "usdt",
"btc_equivalent": "",
"icon_url": "https://storage.bitwyre.com/assets/usdt.png",
"is_deposit_enabled": true,
"is_trading_enabled": true,
"is_withdraw_enabled": true,
"local_equivalent": "",
"local_reference": "",
"max_withdrawal": "",
"min_withdrawal": "20000",
"name": "USD Tether Stablecoin",
"precision": "1e-6",
"withdrawal_fee": "10000"
},
{
"asset": "idr",
"btc_equivalent": "",
"icon_url": "https://storage.bitwyre.com/public/images/coins/raster/IDR.png",
"is_deposit_enabled": true,
"is_trading_enabled": true,
"is_withdraw_enabled": true,
"local_equivalent": "",
"local_reference": "",
"max_withdrawal": "100000000",
"min_withdrawal": "100000",
"name": "Indonesian Rupiah",
"precision": "1",
"withdrawal_fee": "0"
},
{
"asset": "usd",
"btc_equivalent": "",
"icon_url": "https://storage.bitwyre.com/assets/usd.png",
"is_deposit_enabled": true,
"is_trading_enabled": true,
"is_withdraw_enabled": true,
"local_equivalent": "",
"local_reference": "",
"max_withdrawal": "",
"min_withdrawal": "20000",
"name": "United States Dollar",
"precision": "1e-2",
"withdrawal_fee": "10000"
},
{
"asset": "brl",
"btc_equivalent": "",
"icon_url": "https://storage.bitwyre.com/public/images/fiats/raster/brl.png",
"is_deposit_enabled": true,
"is_trading_enabled": true,
"is_withdraw_enabled": true,
"local_equivalent": "",
"local_reference": "",
"max_withdrawal": "",
"min_withdrawal": "20000",
"name": "Brazilian Real",
"precision": "1e-2",
"withdrawal_fee": "10000"
},
{
"asset": "mxn",
"btc_equivalent": "",
"icon_url": "https://storage.bitwyre.com/public/images/fiats/raster/mxn.png",
"is_deposit_enabled": true,
"is_trading_enabled": true,
"is_withdraw_enabled": true,
"local_equivalent": "",
"local_reference": "",
"max_withdrawal": "",
"min_withdrawal": "20000",
"name": "Mexican Peso",
"precision": "1e-2",
"withdrawal_fee": "10000"
}
]
}
Returns an array filled with supported assets.
Endpoint
https://api.bitwyre.com/public/assets
Request Fields/Parameters
Response Types (JSON Array)
JSON Field | Data Type | Remark |
---|---|---|
JSON-array | string | Returns an an array filled with tradable products |
Crypto Assets
Request
curl "https://api.bitwyre.com/public/assets/crypto" -X GET
Response
{
"error": [],
"result": [
{
"asset": "btc",
"btc_equivalent": "1.000000000000000",
"icon_url": "https://storage.bitwyre.com/assets/btc.png",
"is_deposit_enabled": true,
"is_trading_enabled": true,
"is_withdraw_enabled": true,
"local_equivalent": "",
"local_reference": "",
"market_cap_rank": "1",
"market_cap_usd": "420000000000",
"max_withdrawal": "10",
"min_deposit": "0",
"min_order_size": "0.00001",
"min_order_size_increment": "0.00001",
"min_price_increment_usd": "0.01",
"min_withdrawal": "0.001",
"name": "Bitcoin",
"network_list": [
{
"network_name": "Bitcoin",
"network_id": "BTC",
"asset_type": "coin",
"address_tag": "",
"token_type": "",
"address_regex": "^(tb1)[a-zA-Z0-9]{39}$|^(m|n)[a-zA-Z0-9]{33}$",
"memo_regex": "",
"is_contains_address_tag": false,
"is_network_deposit_enabled": true,
"is_network_withdraw_enabled": true,
"is_default_network": true,
"network_confirmations": 1,
"max_withdrawal": "100",
"min_deposit": "0.0001",
"min_withdrawal": "0",
"withdrawal_fee": "0",
"deposit_desc": "Ensure to check withdrawal address supports Bitcoin (BTC) chain deposits",
"withdraw_desc": "Send only Bitcoin (BTC) asset to this deposit address",
"explorer_address_url": "https://live.blockcypher.com/btc/address/",
"explorer_tx_url": "https://live.blockcypher.com/btc/tx/",
"notes": "",
}
],
"precision": "1e-8",
"price_to_usd": "21950.0000000000",
"withdrawal_fee": "0.00000001",
},
{
"asset": "eth",
"btc_equivalent": "0.069503416856492",
"icon_url": "https://storage.bitwyre.com/public/images/coins/raster/ETH_500px.png",
"is_deposit_enabled": true,
"is_trading_enabled": true,
"is_withdraw_enabled": true,
"local_equivalent": "",
"local_reference": "",
"market_cap_rank": "2",
"market_cap_usd": "180000000000",
"max_withdrawal": "10",
"min_deposit": "0",
"min_order_size": "0.0001",
"min_order_size_increment": "0.0001",
"min_price_increment_usd": "0.01",
"min_withdrawal": "0.001",
"name": "Ethereum",
"network_list": [
{
"network_name": "Ethereum",
"network_id": "ETH",
"asset_type": "coin",
"address_tag": "",
"token_type": "",
"address_regex": "^(0x)[0-9A-Fa-f]{40}$",
"memo_regex": "",
"is_contains_address_tag": false,
"is_network_deposit_enabled": true,
"is_network_withdraw_enabled": true,
"is_default_network": true,
"network_confirmations": 12,
"max_withdrawal": "1000",
"min_deposit": "1",
"min_withdrawal": "0",
"withdrawal_fee": "0",
"deposit_desc": "Ensure to check withdrawal address supports Ethereum (ETH) chain deposits",
"withdraw_desc": "Send only Ethereum (ETH) asset to this deposit address",
"explorer_address_url": "https://etherscan.io/address/",
"explorer_tx_url": "https://etherscan.io/tx/",
"notes": "",
},
{
"network_name": "Binance Smart Chain",
"network_id": "BSC",
"asset_type": "token",
"address_tag": "",
"token_type": "BEP20",
"address_regex": "^(0x)[0-9A-Fa-f]{40}$",
"memo_regex": "",
"is_contains_address_tag": false,
"is_network_deposit_enabled": true,
"is_network_withdraw_enabled": true,
"is_default_network": false,
"network_confirmations": 12,
"max_withdrawal": "1000",
"min_deposit": "1",
"min_withdrawal": "0",
"withdrawal_fee": "0",
"deposit_desc": "Ensure to check withdrawal address supports Ethereum (Binance Smart Chain BEP20) chain deposits",
"withdraw_desc": "Send only Ethereum (Binance Smart Chain BEP20) to this deposit address",
"explorer_address_url": "https://bscscan.com/address/",
"explorer_tx_url": "https://bscscan.com/tx/",
"notes": "",
},
{
"network_name": "Fantom",
"network_id": "FTM",
"asset_type": "token",
"address_tag": "",
"token_type": "ERC20",
"address_regex": "^(0x)[0-9A-Fa-f]{40}$",
"memo_regex": "",
"is_contains_address_tag": false,
"is_network_deposit_enabled": true,
"is_network_withdraw_enabled": true,
"is_default_network": false,
"network_confirmations": 12,
"max_withdrawal": "1000",
"min_deposit": "1",
"min_withdrawal": "0",
"withdrawal_fee": "0",
"deposit_desc": "Ensure to check withdrawal address supports Ethereum (Fantom ERC20) chain deposits",
"withdraw_desc": "Send only Ethereum (Fantom ERC20) to this deposit address",
"explorer_address_url": "https://ftmscan.com/address/",
"explorer_tx_url": "https://ftmscan.com/tx/",
"notes": "",
},
{
"network_name": "Solana",
"network_id": "SOL",
"asset_type": "token",
"address_tag": "",
"token_type": "SOL",
"address_regex": "^(0x)[0-9A-Fa-f]{40}$",
"memo_regex": "",
"is_contains_address_tag": false,
"is_network_deposit_enabled": true,
"is_network_withdraw_enabled": true,
"is_default_network": false,
"network_confirmations": 12,
"max_withdrawal": "1000",
"min_deposit": "1",
"min_withdrawal": "0",
"withdrawal_fee": "0",
"deposit_desc": "Ensure to check withdrawal address supports Ethereum (Solana SOL) chain deposits",
"withdraw_desc": "Send only Ethereum (Solana SOL) to this deposit address",
"explorer_address_url": "https://solscan.io/address/",
"explorer_tx_url": "https://solscan.io/tx/",
"notes": "",
}
],
"precision": "1e-9",
"price_to_usd": "1525.6000000000",
"withdrawal_fee": "0.00000001"
}
]
}
Returns an array filled with supported crypto assets.
Endpoint
https://api.bitwyre.com/public/assets/crypto
Request Fields/Parameters
Response Types (JSON Array)
JSON Field | Data Type | Remark |
---|---|---|
JSON-array | string | Returns an an array filled with tradable products |
Fiat Assets
Request
curl "https://api.bitwyre.com/public/assets/fiat" -X GET
Response
{
"error": [],
"result": [
{
"asset": "idr",
"btc_equivalent": "",
"icon_url": "https://storage.bitwyre.com/public/images/coins/raster/IDR.png",
"is_deposit_enabled": true,
"is_trading_enabled": true,
"is_withdraw_enabled": true,
"local_equivalent": "",
"local_reference": "",
"max_withdrawal": "100000000",
"min_withdrawal": "100000",
"name": "Indonesian Rupiah",
"precision": "1",
"withdrawal_fee": "0"
},
{
"asset": "mxn",
"btc_equivalent": "",
"icon_url": "https://storage.bitwyre.com/public/images/fiats/raster/mxn.png",
"is_deposit_enabled": true,
"is_trading_enabled": true,
"is_withdraw_enabled": true,
"local_equivalent": "",
"local_reference": "",
"max_withdrawal": "",
"min_withdrawal": "20000",
"name": "Mexican Peso",
"precision": "1e-2",
"withdrawal_fee": "10000"
},
{
"asset": "brl",
"btc_equivalent": "",
"icon_url": "https://storage.bitwyre.com/public/images/fiats/raster/brl.png",
"is_deposit_enabled": true,
"is_trading_enabled": true,
"is_withdraw_enabled": true,
"local_equivalent": "",
"local_reference": "",
"max_withdrawal": "",
"min_withdrawal": "20000",
"name": "Brazilian Real",
"precision": "1e-2",
"withdrawal_fee": "10000"
},
{
"asset": "usd",
"btc_equivalent": "",
"icon_url": "https://storage.bitwyre.com/assets/usd.png",
"is_deposit_enabled": true,
"is_trading_enabled": true,
"is_withdraw_enabled": true,
"local_equivalent": "",
"local_reference": "",
"max_withdrawal": "",
"min_withdrawal": "20000",
"name": "United States Dollar",
"precision": "1e-2",
"withdrawal_fee": "10000"
}
]
}
Returns an array filled with supported fiat assets.
Endpoint
https://api.bitwyre.com/public/assets/fiat
Request Fields/Parameters
Response Types (JSON Array)
JSON Field | Data Type | Remark |
---|---|---|
JSON-array | string | Returns an an array filled with tradable products |
Instruments
Request
curl "https://api.bitwyre.com/public/pairs?market=crypto&product=spot&country=ID" -X GET
Response For Spot Product
{
"error": [],
"result": [
{
"base_asset": "btc",
"best_ask": "0",
"best_bid": "9000.0",
"change_24hours": "0",
"forbidden_country": "US",
"incremental_price": "0.000001",
"instrument": "btc_usdt_spot",
"is_halt": false,
"is_matching_engine_replaying": false,
"last": "60000",
"market": "crypto",
"minimum_order_size": "0.00001",
"product": "spot",
"quote_asset": "usdt",
"size_increment": "0.00001",
"symbol": "BTC/USDT",
"volume_base": "0.001",
"volume_quote": "60"
},
{
"base_asset": "eth",
"best_ask": "0",
"best_bid": "1233.0",
"change_24hours": "0",
"forbidden_country": "US",
"incremental_price": "0.000001",
"instrument": "eth_usdt_spot",
"is_halt": true,
"is_matching_engine_replaying": false,
"last": "0",
"market": "crypto",
"minimum_order_size": "0.0001",
"product": "spot",
"quote_asset": "usdt",
"size_increment": "0.000001",
"symbol": "ETH/USDT",
"volume_base": "0",
"volume_quote": "0"
}
]
}
Returns an underscore _
delimited tradable asset pairs array.
A sample response for a futures market in crypto:
Request
curl "https://api.bitwyre.com/public/pairs?market=crypto&product=futures&country=GLOBAL" -X GET
Response
{
error: [],
result: [
{ instrument: "btcusdx_200607_futures", symbol: "BTCM20" }, // BTC USD Index, futures contract, settled in USD, delivery on June 7th 2020
{ instrument: "bchusdx_200607_futures", symbol: "BCHM20" }, // BCH USD Index, futures contract, settled in USD, delivery on June 7th 2020
{ instrument: "ethusdx_200607_futures", symbol: "ETHM20" }, // ETH USD Index, futures contract, settled in USD, delivery on June 7th 2020
{ instrument: "ethusdx_perp_futures", symbol: "ETHPERPS" }, // ETH USD Index, perpetual swap futures contracts, USD settled
{ instrument: "btcusdx_perp_futures", symbol: "BTCPERPS" }, // ETH USD Index, perpetual swap futures contracts, USD settled
],
}
For long product codes, we are using an _
(underscore) delimited convention to refer our futures and options product: indexname_expiry_producttype
.
- Underlying financial instrument price.
btcusdtx
here is the Bitcoin to USD index on Bitwyre's exchange; a weighted average of worldwide Bitcoin spot market index price. - Settlement currency,
USD
. - Product type, that can only be futures, swap, calloption, putoption, swaptions, swapfutures, spreads.
For short product codes, we are using the Chicago Mercantile Exchange (CME) convention with asset traded, month code and year code concatenated in capital letters.
Month | Month Code |
---|---|
January | F |
February | G |
March | H |
April | J |
May | K |
June | L |
July | M |
August | Q |
September | U |
October | V |
November | X |
December | Z |
A sample response for an options market in crypto:
Request
curl "https://api.bitwyre.com/public/pairs?market=crypto&product=options&country=GLOBAL" -X GET
Response
{
error: [],
result: [
{ instrument: "btcusdx_200607_10000_calloption", symbol: "BTCM20" }, // BTC USD Index, call options, settled in USD, delivery on June 7th 2020, strike price of 10000 USD
{ instrument: "bchusdx_200607_300_calloption", symbol: "BCHM20" }, // BCH USD Index, call options, settled in USD, delivery on June 7th 2020, strike price of 300 USD
{ instrument: "ethusdx_200607_500_calloption", symbol: "ETHM20" }, // ETH USD Index, call options, settled in USD, delivery on June 7th 2020, strike price of 300 USD
{ instrument: "btcusdx_200607_5000_putoption", symbol: "BTCM20" }, // BTC USD Index, put options, settled in USD, delivery on June 7th 2020, strike price of 5000 USD
{ instrument: "bchusdx_200607_100_putoption", symbol: "BCHM20" }, // BCH USD Index, put options, settled in USD, delivery on June 7th 2020, strike price of 100 USD
{ instrument: "ethusdx_200607_100_putoption", symbol: "ETHM20" }, // ETH USD Index, put options, settled in USD, delivery on June 7th 2020, strike price of 100 USD
{ instrument: "ethusdx_perp_100_putoption", symbol: "ETH100PUTPERPS" }, // ETH USD Index, put options, settled in USD, perpetual/everlasting options, strike price of 100 USD
{ instrument: "ethusdx_perp_1000000_calloption", symbol: "ETH1000000CALLPERPS" }, // ETH USD Index, call options, settled in USD, perpetual/everlasting options, strike price of 1,000,000 USD (one million dollars)
],
}
The product btcusdx_200607_10000_calloption
means a call contract
with delivery on June 7th, 2020
, at the strike price of 10,000
of the underlying financial instrument BTCUSDX
). bchusdx_200607_2000_calloption0
means a put contract
with delivery on June 7th, 2020
, at the strike price of 2,000
of the underlying financial instrument BTCUSDX
).
Endpoint
https://api.bitwyre.com/public/pairs
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
"market" | string | true | crypto , equity , stablecoin , fixed_income , commodities or carbon |
"product" | string | true | spot , futures , options , swaps , or spreads |
"country" | string | true | ISO 3166-2 Country Code. Only ID or PA for now |
Response Types (JSON Array)
JSON Field | Data Type | Remark |
---|---|---|
JSON-array | string | base asset, quote asset, product filter, delimited with an _ (underscore). |
Ticker
Request
curl "https://api.bitwyre.com/public/ticker?instrument=btc_idr_spot" -X GET
Response
{
"error": [],
"result": [
{
"instrument": "btc_idr_spot",
"asset_base": "btc",
"asset_quote": "idr",
"high": "126989000",
"low": "115201000",
"percent_change": "-2.123",
"volume_base": "611.66499447",
"volume_quote": "7434324.9431",
"last": "124783000",
"best_bid": "124761000",
"best_ask": "124777000",
"timestamp": 1571744594571020435,
"market": "crypto",
"is_frozen": false
},
{
"instrument": "btc_usdt_spot",
"asset_base": "btc",
"asset_quote": "usdt",
"high": "126989000",
"low": "115201000",
"percent_change": "-2.123",
"volume_base": "611.66499447",
"volume_quote": "7434324.9431",
"last": "124783000",
"best_bid": "124761000",
"best_ask": "124777000",
"timestamp": 1571744594571020435,
"market": "crypto",
"is_frozen": false
}
]
}
Returns ticker information for an asset pair.
Endpoint
https://api.bitwyre.com/public/ticker
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
"instrument" | string | false | base asset, quote asset, product filter, delimited with an _ (underscore). |
If the instrument
paremeter is empty or omitted, will return the ticker data of all available asset pairs.
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
"instrument" | string | base asset, quote asset, product filter, delimited with an _ (underscore). |
"asset_base" | string | base asset in the trade pair |
"asset_quote" | string | quote asset in the trade pair |
"high" | float-string | highest market price in the last 24 hours |
"low" | float-string | lowest market price in the last 24 hours |
"percent_change" | float-string | market price change percentage in the last 24 hours (up to 8 precision) |
"volume_base" | float-string | total market volume of the base asset in the last 24 hours |
"volume_quote" | float-string | total market volume of the quote asset in the last 24 hours |
"last" | float-string | last market price for the base asset |
"best_bid" | float-string | current highest bid price |
"best_ask" | float-string | current lowest ask price |
"timestamp" | big-integer | unix time in nanoseconds |
"market" | enum-string | equities , crypto , fixed_income , or commodiities |
"is_frozen" | boolean | market frozen status |
Trades
Request
curl "https://api.bitwyre.com/public/trades?instrument=btc_usdt_spot&trade_num=2" -X GET
Response
{
"error": [],
"result": [
{
"instrument": "btc_usd_spot",
"price": "70000.0",
"side": 1,
"timestamp": 1617701262147203562,
"trade_uuid": "7d0cec66-f130-4fc6-b314-622d394ccec2",
"value": "4900.0",
"volume": "0.07"
},
{
"instrument": "btc_usd_spot",
"price": "70000.0",
"side": 2,
"timestamp": 1617701262147203562,
"trade_uuid": "7d0cec66-f130-4fc6-b314-622d394ccec2",
"value": "4900.0",
"volume": "0.07"
}
]
}
Returns last trade_num
trades for an asset pair.
Limited to a maximum of 50
last trades.
Endpoint
https://api.bitwyre.com/public/trades
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
"instrument" | string | false | base asset, quote asset, product filter, delimited with an _ (underscore). |
"trade_num" | number | true | last trade_num trades to get |
"from_time" | int | false | start timestamp in nanoseconds. |
"to_time" | int | false | end timestamp in nanoseconds. |
Response Types (Array of JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
instrument | string | base asset, quote asset, product filter, delimited with an _ (underscore). |
price | float-string | price/quote asset of the traded base asset |
volume | float-string | volume of the traded base asset |
value | float-string | quote value (price x volume) |
side | enum-number | trade type ( 1 - buy; 2 - sell ) |
id | uuid-string | universal unique id of the trade |
timestamp | big-integer | trade time, unixtime in nanoseconds |
Depth
Request
curl "https://api.bitwyre.com/public/depth?instrument=btc_idr_futures&depth_num=2" -X GET
Response
{
"error": [],
"result": {
"bids": [
["124112000", "0.18154050"],
["124110000", "0.47319750"]
],
"asks": [
["124130000", "0.03701609"],
["124251000", "0.03223585"]
],
"is_frozen": 0
}
}
Response For All Instrument
{
error: [],
result: {
asks: {
btc_usd_spot: [[]],
btc_idr_spot: [
["124112000", "0.18154050"],
["124110000", "0.47319750"],
],
// ... other instrument
},
bids: {
btc_usd_spot: [[]],
btc_idr_spot: [
["124130000", "0.03701609"],
["124251000", "0.03223585"],
],
// ... other instrument
},
is_frozen: 0,
},
}
Returns depth data for an asset pair.
Limited to a maximum of 150
data points.
Endpoint
https://api.bitwyre.com/public/depth
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
instrument | string | false | base asset, quote asset, product filter, delimited with an _ (underscore). If instrument empty will fetch all depth from all instrument |
depth_num | number | true | depth_num count of data points to get |
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
bids | array-of-float-string-tuple | depth_num count of current bid orders in the orderbook |
asks | array-of-float-string-tuple | depth_num count of current ask orders in the orderbook |
is_frozen | boolean | market frozen status |
Contract
Request
curl "https://api.bitwyre.com/public/contract?instrument=btcusdtx_usdt_200607F1000000" -X GET
Response
{
"error": [],
"result": {
"instrument": "btcusdtx_usdt_200607F1000000",
"details": "contract for cash delivery of BTC/USD index settled for July 6th, 2020 for the strike price of 10,000 USD",
"pricing_source": "CME Bitcoin Real Time Index",
"bitwyre_index_price": "11500.00",
"bitwyre_index_price_currency": "USD",
"24h_volume": "800,000,000.00",
"24h_volume_currency": "USD",
"open_interest": "600,000,000.00",
"interest_rate": "0.001%",
"contract_value": "1 USD",
"initial_margin_base_value": "1%",
"maintenance_margin_base_value": "0.5%"
}
}
Returns contract details for a derivative instrument/asset pair.
Endpoint
https://api.bitwyre.com/public/contract
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
instrument | string | true | base asset, quote asset, product filter, delimited with an _ (underscore). |
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
instrument | string | base asset, quote asset, product filter, delimited with an _ (underscore). |
details | string | detail of financial contract |
pricing_source | string | source of index pricing |
bitwyre_index_price | float-string | price of index |
bitwyre_index_price_currency | string | currency of price index |
24h_volume | string | 24 hour traded volume of instrument |
24h_volume_currency | string | currency reference for 24 hour traded volume |
open_interest | string | the number of contracts or commitments outstanding in futures and options that are trading on an official exchange at any one time. |
interest_rate | percentage-string | interest rate reference for valuation reference |
contract_value | string | 1 contract value equivalent in USD |
initial_margin_base_value | string | initial margin percentage |
maintenance_margin_base_value | string | maintenance margin percentage |
Get Fiat Withdrawal Method
Request
curl "https://api.bitwyre.com/public/withdrawal/fiat/method" -X GET
Response
{
"error": [],
"result": [
{
"asset": "idr",
"fee": "0",
"fee_type": "",
"is_enabled": true,
"max_withdrawal": "",
"merchant_id": "MANDIRI",
"min_withdrawal": "0",
"payment_type": "Bank Transfer"
},
{
"asset": "idr",
"fee": "0",
"fee_type": "",
"is_enabled": true,
"max_withdrawal": "",
"merchant_id": "BRI",
"min_withdrawal": "0",
"payment_type": "Bank Transfer"
},
{
"asset": "idr",
"fee": "0",
"fee_type": "",
"is_enabled": true,
"max_withdrawal": "",
"merchant_id": "BNI",
"min_withdrawal": "0",
"payment_type": "Bank Transfer"
}
],
}
Get fiat withdrawal method data
Endpoint
https://api.bitwyre.com/public/withdrawal/fiat/method
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
asset | string | false | Transaction Asset. Default all |
payment_type | string | false | Withdrawal Payment Type (ex. Bank Transfer ) . Default all |
merchant_id | string | false | Withdrawal Merchant ID. Default all |
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
asset | string | Transaction Asset |
fee | string | Amount of withdrawal fee |
fee_type | string | Type of fee (if any) |
is_enabled | boolean | true if withdrawal method is enabled |
max_withdrawal | string | Maximum amount of withdrawal for the method |
merchant_id | string | Withdrawal Merchant ID |
min_withdrawal | string | Minimum amount of withdrawal for the method |
payment_type | string | Withdrawal Payment Type |
Insider Profiles
Request
curl "https://api.bitwyre.com/public/insider"
-X GET
Response
{
"error": [],
"result": [
{
"email": "[email protected]",
"email_verified": 0,
"has_submitted_kyc": null,
"insider": 1,
"institution": 0,
"is_otp_activated": 0,
"kyc_level": 0,
"master_account": 1,
"master_account_uuid": null,
"monthly_avg_trading_volumes": null,
"nationality": "ID",
"preference_pairs": null,
"pseudonym": null,
"reference_asset": null,
"restricted": 0,
"sub_account": 0,
"subaccount_code": "541ebc38-6bef-4d65-aefd-c3575d4e4a21",
"suspended": 0,
"user_uuid": "2952e311-cfc9-412e-9ff3-e5cb8131ed45",
"username": "Insider 1"
},
{
"email": "[email protected]",
"email_verified": 0,
"has_submitted_kyc": 1,
"insider": 1,
"institution": 0,
"is_otp_activated": 0,
"kyc_level": 0,
"master_account": 1,
"master_account_uuid": null,
"monthly_avg_trading_volumes": null,
"nationality": "ID",
"preference_pairs": null,
"pseudonym": null,
"reference_asset": null,
"restricted": 1,
"sub_account": 0,
"subaccount_code": "55e77e70-bfba-46be-aad1-dc986312da5a",
"suspended": 0,
"user_uuid": "04761f29-0288-4fff-97c8-14d58413e720",
"username": "Insider 2"
}
]
}
Request
curl "https://api.bitwyre.com/public/insider?username=<username>"
-X GET
Response
{
"error": [],
"result": {
"email": "[email protected]",
"email_verified": 0,
"has_submitted_kyc": null,
"insider": 1,
"institution": 0,
"is_otp_activated": 0,
"kyc_level": 0,
"master_account": 1,
"master_account_uuid": null,
"monthly_avg_trading_volumes": null,
"nationality": "ID",
"preference_pairs": null,
"pseudonym": null,
"reference_asset": null,
"restricted": 0,
"sub_account": 0,
"subaccount_code": "541ebc38-6bef-4d65-aefd-c3575d4e4a21",
"suspended": 0,
"user_uuid": "2952e311-cfc9-412e-9ff3-e5cb8131ed45",
"username": "Insider 1"
}
}
Returns insider user profiles info
Endpoint
https://api.bitwyre.com/public/insider
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
username | string | false | Username |
Response Types (JSON Object/Arrays)
JSON Field | Data Type | Remark |
---|---|---|
string | Insider Email | |
email_verified | boolean | 1 if email is already verified |
has_submitted_kyc | boolean | 1 if user is already submitted kyc |
insider | boolean | 1 if user is an insider |
institution | boolean | 1 if user has an institution |
is_otp_activated | boolean | 1 if user is already activated otp |
kyc_level | integer | User KYC Level |
master_account | boolean | 1 if user is a master account |
master_account_uuid | string | User Master Account UUID |
monthly_avg_trading_volumes | integer | User Monthly Average Trading Volumes |
nationality | string | User Nationality |
preference_pairs | boolean | User preference pairs |
reference_asset | array-of-string | User reference asset |
restricted | boolean | User trading status |
sub_account | boolean | 1 if user has a sub account |
subaccount_code | string | User Sub Account User Code |
suspended | boolean | User Status |
user_uuid | string | User UUID |
username | string | Username |
Insider Trades
Request
curl "https://api.bitwyre.com/public/insider/trades"
-X GET
Response
{
"error": [],
"result": [
{
"btc_usdt_spot": [
{
"exec_price": 1.21,
"exec_qty": 10.0,
"exec_type": 13,
"exec_value": 12.1,
"fee_paid": -0.015,
"fee_paid_asset": "btc",
"fee_rate": -0.0015,
"fee_type": 1,
"notes": null,
"order_price": 1.21,
"order_qty": 10.0,
"order_remaining": 0.0,
"order_type": 2,
"side": 1,
"status": 2,
"timestamp": 1609027200000000000,
"username": "Insider 1"
}
],
"eth_usdt_spot": [
{
"exec_price": 1.21,
"exec_qty": 1.0,
"exec_type": 13,
"exec_value": 12.1,
"fee_paid": 36300.0,
"fee_paid_asset": "idr",
"fee_rate": 0.003,
"fee_type": 2,
"notes": null,
"order_price": 1.21,
"order_qty": 1.0,
"order_remaining": 0.0,
"order_type": 2,
"side": 2,
"status": 2,
"timestamp": 1609027200000000000,
"username": "Insider 2"
}
]
}
]
}
Request
curl "https://api.bitwyre.com/public/insider/trades?username=<username>"
-X GET
Response
{
"error": [],
"result": [
{
"btc_usdt_spot": [
{
"exec_price": 1.21,
"exec_qty": 10.0,
"exec_type": 13,
"exec_value": 12.1,
"fee_paid": -0.015,
"fee_paid_asset": "btc",
"fee_rate": -0.0015,
"fee_type": 1,
"notes": null,
"order_price": 1.21,
"order_qty": 10.0,
"order_remaining": 0.0,
"order_type": 2,
"side": 1,
"status": 2,
"timestamp": 1609027200000000000
}
]
}
]
}
Returns user insider's trades data info
Endpoint
https://api.bitwyre.com/public/insider/trades
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
username | string | false | Username |
Response Types (JSON Arrays)
JSON Field | Data Type | Remark |
---|---|---|
exec_price | float | Order Execution Price |
exec_qty | float | Order Execution Quantity |
exec_type | integer | Order Execution Type |
exec_value | float | Order Execution Value |
fee_paid | float | Order Paid Fees |
fee_paid_asset | string | Asset of Fees |
fee_rate | float | Fees Rate |
fee_type | integer | Type of Fees |
notes | string | Order Notes |
order_price | float | Order Price |
order_qty | float | Order Quantity |
order_remaining | integer | Order Remaining Quantity |
order_type | enum-number | order type |
side | enum-number | trade type ( 1 - buy; 2 - sell) |
status | enum-number | order status |
timestamp | big-integer | unix time in nanoseconds |
Announcements
Request
curl "https://api.bitwyre.com/public/announcements" -X GET
Response
{
"error": [],
"result": {
"unixtime": 1571744594571020435,
"announcement": "halting btc_usdt_spot"
}
}
Returns announcement with the server's time.
Endpoint
https://api.bitwyre.com/public/announcements
Request Fields/Parameters
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
unixtime | big-integer | unix time in nanoseconds |
announcement | string | announcement |
Order Types
Request
curl "https://api.bitwyre.com/public/ordertypes" -X GET
Response
{
"error": [],
"result": {
"1": "Market",
"2": "Limit",
"3": "Stop",
"4": "Stop Limit"
}
}
Returns enumeration of order types
Endpoint
https://api.bitwyre.com/public/ordertypes
Request Fields/Parameters
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
result | JSON | Enumeration of order types |
Supported Languages
Request
curl "https://api.bitwyre.com/public/languages" -X GET
Response
{
"error": [],
"result": [
{
"iso639-2_code": "eng",
"language": "English"
},
{
"iso639-2_code": "rus",
"language": "Russian"
},
{
"iso639-2_code": "hin",
"language": "Hindi"
},
{
"iso639-2_code": "ind",
"language": "Bahasa Indonesia"
},
{
"iso639-2_code": "chi",
"language": "官话"
},
{
"iso639-2_code": "fra",
"language": "Français"
},
{
"iso639-2_code": "spa",
"language": "Español"
},
{
"iso639-2_code": "por",
"language": "Portugais"
}
]
}
Returns pairs of supported languages
Endpoint
https://api.bitwyre.com/public/languages
Request Fields/Parameters
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
"result" | JSON | Pairs of supported languages |
Get Search Results
Request
curl 'https://api.bitwyre.com/public/search \
-X GET
Response
{
"error": [],
"result": {
[
{"keyword": "btc_usdt_spot", "url": "https://www.bitwyre.com/terminal/btc_usdt_spot"},
{"keyword": "btc_idr_spot", "url": "https://www.bitwyre.com/terminal/btc_idr_spot"},
]
....
}
}
Retrieve search query
Endpoint
https://api.bitwyre.com/public/search
Request Fields/Parameters
None needed yet
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
Nearest neighbor search of words | string | Closest word |
... | ... | ... |
Price Index
An aggregate of an instrument's current market price, collected from multiple third party sources and major exchanges Indices are calculated by fetching orderbook per exchanges, getting their bid-ask spread, then averaging their prices. It is calculated every second by our backend. Current sources are:
- Binance
- Bitfinex
- Bitstamp
- Coinbase
- Huobi
- Okex
Request
curl "https://api.bitwyre.com/public/index?instrument=btc_usdt_spot" -X GET
Response
{
"error": [],
"result": {
"btc_usdt_spot": [
{
"price": "400000.0",
"timestamp": "2021-08-13 04:26:34.086636",
"timestamp_integer": 1628828794
},
{
"price": "500000.0",
"timestamp": "2021-08-18 05:08:29.128583",
"timestamp_integer": 1629263309
}
]
}
}
Endpoint
https://api.bitwyre.com/public/index
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
"instrument" | string | true | base asset, quote asset, product filter, delimited with an _ (underscore). |
"amount" | integer | false | amount of data to be fetched |
"to_time" | integer | false | end time of data to be fetched |
"from_time" | integer | false | start time of data to be fetched |
"ascending" | boolean | false | true to sort data ascending bytime |
Notes:
- Example for instruments:
btc_usdt_spot
,eth_usdc_spot
. - If no amount is specified, endpoint will returns only 1 data, depends on whether it is ascending/descending. Current limit is 100 data points per request.
- If no to_time is specified, endpoint will fetch the latest data.
- If no from_time is specified, endpoint will try to fetch data from earliest possible point given the maximum limit of data per request.
- Default for ascending is false (
0
), ie the data is sorted descending by time, change to1
to sort ascending
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
error | list | Error messages, if any |
result | dictionaries | contain list of dictionaries of the data, grouped by instrument |
and the list of dictionaries for the results
JSON Field | Data Type | Remark |
---|---|---|
price | string | String representation of the price, up to two decimals |
timestamp | string | Human-readable UTC timestamp |
timestamp_integer | integer | UNIX timestamp, in seconds |
Search
Search ticker, trades, and depth data in one endpoint
Request
curl "https://api.bitwyre.com/public/search?country=ID" -X GET
Response
{
"error": [],
"result": {
"spot": {
"crypto": {
"btc_usdt_spot": {
"high": "11000",
"low": "10000",
"percent_change": "110.0",
"volume_base": "34",
"volume_quote": "267346.0",
"last": "10100",
"best_bid": "10075",
"best_ask": "11000",
"timestamp": 1571747594573320135,
"last_trade_price": "10000.0",
"last_trade_side": 1,
"last_trade_uuid": "752837c7-aec6-41f8-bb07-286f859f2718",
"last_trade_value": "20000.0",
"last_trade_volume": "2.0",
"last_trade_timestamp": 1571747594573320135,
"bidbook": [["310.0", "5.0"]],
"askbook": [["400.0", "2.0"]]
}
}
}
}
}
Endpoint
https://api.bitwyre.com/public/search
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
"country" | string | true | two-character of country of interest (eg. US, ID, HK) |
"instrument" | string | false | Instrument of interest (eg btc_usdt_spot) |
Notes: if no instrument is specified, endpoint will return all available instrument
Response Types (JSON Object)
Returns | JSON Field | Data Type | Remark | | ---------- | --------- | -------------------------- | | error | list | Error messages, if any | | result | dictionaries | contain list of dictionaries of the data, grouped by product, market, instrument |
Please check ticker, trades, and depth endpoint documentation for explanation of the dictionary members
Matching Engine Order Lag
Request
curl "https://api.bitwyre.com/public/orderlag?instrument=<instrument>"
-X GET
Response
{
"error": [],
"result": {
"btc_usdt_spot": "1",
"eth_usdt_spot": "0"
}
}
Return order lag of matching engine per instrument (in events)
Endpoint
https://api.bitwyre.com/public/orderlag
Request Fields/Parameters
Parameter | Data Type | Required | Remark |
---|---|---|---|
instrument | string | false | Instrument of interest (eg btc_usdt_spot) |
Notes: if no instrument is specified, endpoint will return all available instrument
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
instrument | string | amount of order event lag |
Please check ticker, trades, and depth endpoint documentation for explanation of the dictionary members
Matching Engine Throughput
Request
curl "https://api.bitwyre.com/public/throughput?instrument=<instrument>"
-X GET
Response
{
"error": [],
"result": {
"Consumer": [
{
"instrument": "btc_usdt_spot",
"lag": "22",
"max_lag": "2000",
"throughput": "1000 msg/s"
},
{
"instrument": "eth_usdt_spot",
"lag": "0",
"max_lag": "2000",
"throughput": "500 msg/s"
}
],
"CreditRiskAccountManagement": [
{
"lag": "11",
},
],
"Matching": [
{
"instrument": "btc_usdt_spot",
"lag": "983",
"max_lag": "2000",
"throughput": "1000 msg/s"
},
{
"instrument": "eth_usdt_spot",
"lag": "1",
"max_lag": "2000",
"throughput": "500 msg/s"
}
],
"Producer": [
{
"instrument": "btc_usdt_spot",
"lag": "154",
"max_lag": "2000",
"throughput": "500 msg/s"
},
{
"instrument": "eth_usdt_spot",
"lag": "0",
"max_lag": "2000",
"throughput": "1000 msg/s"
}
]
}
}
Return throughput rate data of matching engine of the instrument (in events/second), in addition of consumer and max lag data of the instrument.
Endpoint
https://api.bitwyre.com/public/throughput
Request Fields/Parameters
Parameter | Data Type | Required | Remark |
---|---|---|---|
instrument | string | false | Instrument of interest (eg btc_usdt_spot) |
Notes: if no instrument is specified, endpoint will return all available instrument if no type is specified, endpoint will return all available type
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
Consumer | array-of-objects | consumer matching engine throughput rate of the instrument |
Matching | array-of-objects | mathcing engine throughput rate of the instrument |
Producer | array-of-objects | producer matching engine throughput rate of the instrument |
OTC
Request
curl "https://api.bitwyre.com/public/otc?base_asset=<base_asset>"e_asset=<quote_asset>&spread=<spread>"
-X GET
Response
{
"error": [],
"result": {
"ask_price": 59816.143336500005,
"bid_price": 19938.7144455
}
}
Return Ask Price and Bid Price real time.
Endpoint
https://api.bitwyre.com/public/otc?base_asset=btc"e_asset=usd&spread=1.0
Request Fields/Parameters
Parameter | Data Type | Required | Remark |
---|---|---|---|
base_asset | string | true | Base Asset (eg btc) |
quote_asset | string | true | Quote Asset (eg usd) |
spread | float | true | Spread parameter (eg 1.0) |
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
ask_price | float | Value of Ask Price (eg 59816.143336500005) |
bid_price | float | Value of Bid Price (eg 19938.7144455) |
Get Convert Rate
Request
curl "https://api.bitwyre.com/public/convert?from_coin=btc&to_coin=usdt&size=2&convert_uuid={convert_uuid}"
-X GET
Response
{
"error": [],
"result": {
"amount": "60000",
"convert_price": "30000",
"size": "2",
"volatility": "1.54",
}
}
Return Ask Price and Bid Price real time.
Endpoint
https://api.bitwyre.com/public/convert
Request Fields/Parameters
Parameter | Data Type | Required | Remark |
---|---|---|---|
from_coin | string | true | Asset that will be converted from |
to_coin | string | true | Asset that will be converted to |
size | string | true | Convert amount (used only if value is empty) |
value | string | true | Convert value (used only if size is empty) |
convert_uuid | string | true | Convert UUID |
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
convert_price | string | Asset conversion price rate |
amount | string | Calculated amount of asset that will be received |
volatility | string | Price volatility |
Spot Product API Endpoints
Getting Spot Account Balance
Request
curl "https://api.bitwyre.com/private/rust/account/spotbalance?nonce=1730953397255336684&checksum=<payload_checksum>&payload={"type": "all", "page": 1, "per_page": 10, "usd_limit": 0.00} \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"total_usd": "75179375442.74",
"total_idr": 1186239873055522,
"total_idr_str": "1186239873055522.8478570819961",
"data": [
{
"asset": "btc",
"available_balance": 999999.9927558,
"available_balance_str": "999999.9927558",
"btc_equivalent": 999693.8933955025,
"constant_multiplier": 100000000,
"icon_url": "https://robin.bitwyre.id/app/Raster/BTC_125px.png",
"is_deposit_enabled": true,
"is_trading_enabled": true,
"is_usd_stablecoin": false,
"is_withdraw_enabled": true,
"local_equivalent": "",
"local_reference": 0,
"locked_balance": 0.01,
"locked_balance_str": "0.01",
"max_withdrawal": "100",
"min_withdrawal": "0.0006",
"name": "Bitcoin",
"precision": "1.00E-08",
"total_balance": 1000000.0027558,
"total_balance_str": "1000000.0027558",
"type": "crypto",
"usd_equivalent": 75115999455.84,
"idr_equivalent": 1185239876413885.2,
"withdrawal_fee": "0.0003"
},
{
"asset": "idr",
"available_balance": 999996637487.8,
"available_balance_str": "999996637487.80",
"btc_equivalent": 842.6311666328947,
"constant_multiplier": 100,
"icon_url": "https://robin.bitwyre.id/app/Raster/ID_150px.png",
"is_deposit_enabled": true,
"is_trading_enabled": true,
"is_usd_stablecoin": false,
"is_withdraw_enabled": true,
"local_equivalent": "",
"local_reference": 0,
"locked_balance": 273867.18,
"locked_balance_str": "273867.18",
"max_withdrawal": "100000000",
"min_withdrawal": "0",
"name": "Indonesian Rupiah",
"precision": "1.00E-02",
"total_balance": 999996911354.98,
"total_balance_str": "999996911354.98",
"type": "fiat",
"usd_equivalent": 63375986.9,
"idr_equivalent": 999996637487.8,
"withdrawal_fee": "0"
},
// ... and all other asset balances
]
},
"meta": {
"has_next": true,
"has_prev": false,
"next_page": 2,
"page": 1,
"pages": 8,
"prev_page": null,
"total_count": 16
}
}
Retrieve all user's fiat and crypto balance.
Endpoint
https://api.bitwyre.com/private/rust/account/spotbalance
Request Fields/Parameters
Because this is a GET endpoint, nonce
, checksum
and payload
are query parameters.
Please refer to Authentication.
The payload
is a json object with these fields:
Fields | Value | Required | Description |
---|---|---|---|
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
use_pagination | bool | false | Default is 1. To turn off the pagination set use_pagination=0 |
asset | str | false | Eg. asset=btc to retrieve only btc balance |
type | str | false | crypto or fiat to retrieve balance by type, use all to retrieve all balances |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
total_usd | string | total asset balance equivalent in USD |
total_idr | integer | total asset balance equivalent in IDR |
total_idr_str | string | total asset balance equivalent in IDR in string |
data | array | array of json objects |
asset | string | asset |
available_balance | float | available asset balance |
available_balance_str | string | available asset balance in string format |
constant_multiplier | integer | asset constant multiplier |
icon_url | string | asset icon image url |
is_deposit_enabled | bool | true if asset deposit is enabled |
is_trading_enabled | bool | true if asset trade is enabled |
is_withdraw_enabled | bool | true if asset withdraw is enabled |
btc_equivalent | float | balance in bitcoin |
local_equivalent | string | balance in local reference |
local_reference | integer | local reference asset |
locked_balance | float | amount of locked balance |
locked_balance_str | string | amount of locked balance in string format |
max_withdrawal | string | maximum amount of withdrawal |
min_withdrawal | string | minimum amount of withdrawal |
name | string | name of asset |
precision | string | precision of asset |
total_balance | float | amount of total balance |
total_balance_str | string | amount of total balance in string format |
type | string | type of asset (crypto/fiat) |
usd_equivalent | float | asset equivalent in USD |
idr_equivalent | float | asset equivalent in IDR |
withdrawal_fee | string | asset withdrawal fees |
is_usd_stablecoin | false | true if asset is usd stablecoin |
Moving Spot Account Balance to Derivatives Account Balance
Request
curl "https://api.bitwyre.com/private/account/spotbalance?nonce=17081945&checksum=<payload_checksum>&payload=" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X POST
Response
{
"error": [],
"result": [
{
"asset": "btc",
"amount": 100,
"to_derivatives": true,
"to_spot": false,
"success": true
},
{
"asset": "usdt",
"amount": 100,
"to_derivatives": true,
"to_spot": false,
"success": true
}
]
}
Move a user's fiat and crypto balance for derivatives trading.
Endpoint
https://api.bitwyre.com/private/account/spotbalance
Request Fields/Parameters
JSON Field | Value | Required | Description |
---|---|---|---|
asset | string | true | the asset to be moved from the spot balance to the derivatives account balance |
amount | integer | true | the amount of the asset to be moved from the spot balance to the derivatives account balance (in the currency's normal unit e.g bitcoin, ether) |
Please refer to Authentication.
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
asset | string | name of asset |
amount | integer | asset amount moved |
to_derivatives | boolean | if the direction is spot -> derivatives |
to_spot | boolean | if the direction is derivatives -> spot |
success | boolean | if the move operation is a success |
Getting Account Statement
Request
curl "https://api.bitwyre.com/private/account/statement?nonce=17081945&checksum=<payload_checksum>&asset=idr&payload={\"assets\": [\"btc\", \"idr\"]}&page=1&per_page=5" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"deposit": {
"brl": [],
"btc": [
{
"fee": 5e-5,
"gross_amount": 0.01,
"id": 4,
"nett_amount": 0.00995,
"network_confirmation": 0,
"provider": "duitku",
"status": "pending",
"submit_time": 1571747594573320135,
"success_time": 0,
"transaction_id": "26a13a32-2e11-472a-84cc-242d765a88dg",
"tx_id": "26a13a32-2e11-472a-84cc-242d765a88dg",
"type": "crypto"
}
],
"eth": [],
"idr": [
{
"centralized_confirmation": 0,
"fee": 1000.0,
"gross_amount": 5000.0,
"id": 5,
"nett_amount": 4000.0,
"provider": "duitku",
"status": "pending",
"submit_time": 1571747594573320135,
"success_time": 0,
"transaction_id": "26a13a32-2e11-472a-84cc-242d765a88dg",
"type": "fiat"
}
],
"mxn": [],
"usd": [],
"usdt": [],
"xmr": [],
"zec": []
},
"withdrawal": {
"brl": [],
"btc": [
{
"fee": 5e-5,
"gross_amount": 0.01,
"id": 6,
"nett_amount": 0.00995,
"network_confirmation": 0,
"provider": "duitku",
"status": "pending",
"submit_time": 1571747594573320135,
"success_time": 0,
"transaction_id": "26a13a32-2e11-472a-84cc-242d765a88dj",
"tx_id": "26a13a32-2e11-472a-84cc-242d765a88dj",
"type": "crypto"
}
],
"eth": [],
"idr": [
{
"centralized_confirmation": 0,
"fee": 1000.0,
"gross_amount": 10000.0,
"id": 1,
"nett_amount": 9000.0,
"provider": "duitku",
"status": "pending",
"submit_time": 1571747594573320135,
"success_time": 0,
"transaction_id": "26a13a32-2e11-472a-84cc-242d765a88de",
"type": "fiat"
},
{
"centralized_confirmation": 0,
"fee": 1000.0,
"gross_amount": 5000.0,
"id": 3,
"nett_amount": 4000.0,
"provider": "duitku",
"status": "pending",
"submit_time": 1571747594573320135,
"success_time": 0,
"transaction_id": "26a13a32-2e11-472a-84cc-242d765a88df",
"type": "fiat"
}
],
"mxn": [],
"usd": [],
"usdt": [],
"xmr": [],
"zec": []
}
},
"meta": {
"has_next": false,
"has_prev": false,
"next_page": 2,
"page": 1,
"pages": 1,
"prev_page": null,
"total_count": 6
}
}
Retrieve user's withdraw and deposit history.
Endpoint
https://api.bitwyre.com/private/account/statement
Request Fields/Parameters
Because this is a GET endpoint, nonce
& checksum
are query parameters, also payload
should be always an empty string.
The SHA256
steps for this endpoint's payload:
- jsonify an empty string.
- then SHA256 from above result.
Please refer to Authentication.
Parameter | Value | Required | Description |
---|---|---|---|
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
Request Payload Fields
When no payload specified, it will return all statements
Payload Fields | Value | Required | Description |
---|---|---|---|
assets | list | false | list of assets for the statements |
Please refer to Authentication.
Response Base Structure
JSON Field | Data Type | Remark |
---|---|---|
withdrawal | asset-statement-object | historical withdrawal data for specific asset (array). |
deposit | asset-statement-object | historical deposit data for specific asset (array). |
Getting User Withdrawal Fees
Request (All Instruments)
curl "https://api.bitwyre.com/private/account/fees/withdrawal?nonce=17081945&checksum=<payload_checksum>&payload={\"asset\":\"all\"}" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response (All Instruments)
{
"error": [],
"result": {
"btc": {
"global_fee": "0.0001",
"user_fee": "0.0001"
},
"eth": {
"global_fee": "0.001",
"user_fee": "0.001"
}
}
}
Request (One Instrument)
curl "https://api.bitwyre.com/private/account/fees/withdrawal?nonce=17081945&checksum=<payload_checksum>&payload={\"asset\":\"btc\"}" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response (One Instrument)
{
"error": [],
"result": {
"btc": {
"global_withdrawal_fee": "0.0001",
"user_withdrawal_fee": "0.0001"
}
}
}
Retrieve user's withdraw fees.
Endpoint
https://api.bitwyre.com/private/account/fees/withdrawal
Request Payload Fields
When no payload specified, it will return all statements
Payload Fields | Value | Required | Description |
---|---|---|---|
asset | string | true | Crypto asset, e.g btc , eth . |
Please refer to Authentication.
Response Base Structure
Dictionary of asset
and it's withdrawal fees data, withdrawal fees fields:
JSON Field | Data Type | Remark |
---|---|---|
global_withdrawal_fee | string | withdrawal fees data for specific asset |
user_withdrawal_fee | string | withdrawal fees data for specific user |
Getting Transaction Histories
Request
curl `https://api.bitwyre.com/private/account/transactions?nonce=17081945&checksum=<payload_checksum>&type=all&asset=all&page=1&per_page=50` \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"deposit": {
"idr": [
{
"account_balance_id": 1,
"address": "thisisaddress",
"amount": "100000000.0",
"asset": "idr",
"fee": "0.0",
"final_balance": "1100000000.0",
"notes": "",
"status": "Cancelled",
"time": 1618206392203845000,
"type": 1
}
],
"btc": [
{
"account_balance_id": 2,
"address": "thisisaddress",
"amount": "1.0",
"asset": "btc",
"fee": "0.0",
"final_balance": "10.0",
"notes": "",
"status": "Cancelled",
"time": 1618206125002066000,
"type": 1
}
]
// ... other coins
},
"withdrawal": {
"btc": [
{
"account_balance_id": 4,
"address": "thisisaddress",
"amount": "-1.0",
"asset": "btc",
"fee": "0.0",
"final_balance": "9.0",
"notes": "",
"status": "Pending",
"time": 1617974544507879000,
"type": 2
}
],
"idr": [
{
"account_balance_id": 3,
"address": "thisisaddress",
"amount": "-1000.0",
"asset": "idr",
"fee": "0.0",
"final_balance": "1099999000.0",
"notes": "",
"status": "Pending",
"time": 1618207558627212000,
"type": 2
}
]
// ... other coins
},
"clearing": {
"idr": [
{
"account_balance_id": 5,
"address": "thisisaddress",
"amount": "-1000.0",
"asset": "BTC IDR spot clearing",
"fee": "0.0",
"final_balance": "1099999000.0",
"notes": "",
"status": "Pending",
"time": 1618207558627212000,
"type": 3
}
],
"btc": [
{
"account_balance_id": 3,
"address": "thisisaddress",
"amount": "-1000.0",
"asset": "BTC IDR spot clearing",
"fee": "0.0",
"final_balance": "1099999000.0",
"notes": "",
"status": "Pending",
"time": 1618207558627212000,
"type": 3
}
]
// ... other coin clearing
}
},
"meta": {
"has_next": false,
"has_prev": false,
"next_page": 2,
"page": 1,
"pages": 1,
"prev_page": null,
"total_count": 6
}
}
Retrieve user's withdraw, deposit, and clearing history.
Endpoint
https://api.bitwyre.com/private/account/transactions
Request Fields/Parameters
Parameter | Value | Required | Description |
---|---|---|---|
type | string | false | Type of transaciton (all, deposit, withdrawal, clearing). Default all |
asset | string | false | Supported crypto/fiat asset. Default all |
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
Please refer to Authentication.
Response Base Structure
JSON Field | Data Type | Remark |
---|---|---|
withdrawal | asset-statement-object | historical withdrawal data for specific asset (array). |
deposit | asset-statement-object | historical deposit data for specific asset (array). |
clearing | asset-statement-object | historical clearging data for specific asset (array). |
Getting Order Quantity Percentage
Example
curl "https://api.bitwyre.com/private/orders/qty-percentage?order_type=2&order_side=1&price=20000&instrument=btc_usdt_spot" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X GET
Response
{
"error": [],
"result": {
"1%": "0.00002",
"2%": "0.00005",
"3%": "0.00008",
"4%": "0.00010",
"5%": "0.00012",
"6%": "0.00015",
"7%": "0.00018",
"8%": "0.00020",
"9%": "0.00022",
"10%": "0.00025",
"11%": "0.00028",
"12%": "0.00030",
"13%": "0.00032",
"14%": "0.00035",
"15%": "0.00038",
"16%": "0.00040",
"17%": "0.00042",
"18%": "0.00045",
"19%": "0.00048",
"20%": "0.00050",
"21%": "0.00052",
"22%": "0.00055",
"23%": "0.00058",
"24%": "0.00060",
"25%": "0.00062",
"26%": "0.00065",
"27%": "0.00068",
"28%": "0.00070",
"29%": "0.00072",
"30%": "0.00075",
"31%": "0.00078",
"32%": "0.00080",
"33%": "0.00082",
"34%": "0.00085",
"35%": "0.00088",
"36%": "0.00090",
"37%": "0.00092",
"38%": "0.00095",
"39%": "0.00098",
"40%": "0.00100",
"41%": "0.00102",
"42%": "0.00105",
"43%": "0.00108",
"44%": "0.00110",
"45%": "0.00112",
"46%": "0.00115",
"47%": "0.00118",
"48%": "0.00120",
"49%": "0.00122",
"50%": "0.00125",
"51%": "0.00128",
"52%": "0.00130",
"53%": "0.00132",
"54%": "0.00135",
"55%": "0.00138",
"56%": "0.00140",
"57%": "0.00142",
"58%": "0.00145",
"59%": "0.00148",
"60%": "0.00150",
"61%": "0.00152",
"62%": "0.00155",
"63%": "0.00158",
"64%": "0.00160",
"65%": "0.00162",
"66%": "0.00165",
"67%": "0.00168",
"68%": "0.00170",
"69%": "0.00172",
"70%": "0.00175",
"71%": "0.00178",
"72%": "0.00180",
"73%": "0.00182",
"74%": "0.00185",
"75%": "0.00188",
"76%": "0.00190",
"77%": "0.00192",
"78%": "0.00195",
"79%": "0.00198",
"80%": "0.00200",
"81%": "0.00202",
"82%": "0.00205",
"83%": "0.00208",
"84%": "0.00210",
"85%": "0.00212",
"86%": "0.00215",
"87%": "0.00218",
"88%": "0.00220",
"89%": "0.00222",
"90%": "0.00225",
"91%": "0.00228",
"92%": "0.00230",
"93%": "0.00232",
"94%": "0.00235",
"95%": "0.00238",
"96%": "0.00240",
"97%": "0.00242",
"98%": "0.00245",
"99%": "0.00248",
"100%": "0.00250"
},
}
Retrieve user's possible order amount/quantity from 1-100% based on price, order type and order side
Endpoint
https://api.bitwyre.com/private/orders/qty-percentage
Request Fields/Parameters
Parameter | Value | Required | Description |
---|---|---|---|
order_type | int | true | Order's Type. See Order Type |
order_side | int | true | Order's Side. See Order Size |
instrument | str | true | base asset, quote asset, product filter, delimited with an _ (underscore). |
price | str | false | Order's Price. Not required for Market-type orders |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
n-percentage | string | Order Quantity Amount at n% |
Opening a New Order
Example: New Market Order
curl "https://api.bitwyre.com/private/rust/order" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"instrument\": \"btc_usdt_spot\",\
\"side\": 2,\
\"ordtype\": 1,\
\"orderqty\": \"2.9301\",\
}\
}"
Response (Execution Report)
{
"error": [],
"result": {
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 0,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_usdt_spot",
"leavesqty": "2.9301",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "2.9301",
"ordrejreason": "",
"ordstatus": 0,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 1,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "10.0",
"side": 2,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
}
Example: New Limit Order
curl "https://api.bitwyre.com/private/rust/order" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"instrument\": \"btc_usdt_spot\",\
\"side\": 1,\
\"ordtype\": 2,\
\"price\": \"9800.5\",\
\"orderqty\": \"2.9301\",\
}\
}"
Response (Execution Report)
{
"error": [],
"result": {
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 0,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_usdt_spot",
"leavesqty": "2.9301",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "2.9301",
"ordrejreason": "",
"ordstatus": 0,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 2,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "9800.5",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
}
Example: New Stop Order
curl "https://api.bitwyre.com/private/rust/order" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"instrument\": \"btc_usdt_spot\",\
\"side\": 2,\
\"ordtype\": 3,\
\"stoppx\": \"9850.35\",\
\"orderqty\": \"2.9301\",\
}\
}"
Response (Execution Report)
{
"error": [],
"result": {
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 0,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_usdt_spot",
"leavesqty": "2.9301",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "2.9301",
"ordrejreason": "",
"ordstatus": 0,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 3,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "0",
"side": 2,
"stoppx": "9850.35",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
}
Example: New Stop-Limit Order
curl "https://api.bitwyre.com/private/rust/order" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"instrument\": \"btc_usdt_spot\",\
\"side\": 1,\
\"ordtype\": 4,\
\"price\": \"9800.5\",\
\"stoppx\": \"9750\",\
\"orderqty\": \"2.9301\",\
}\
}"
Response (Execution Report)
{
"error": [],
"result": {
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 0,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_usdt_spot",
"leavesqty": "2.9301",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "2.9301",
"ordrejreason": "",
"ordstatus": 0,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 4,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "9800.5",
"side": 1,
"stoppx": "9750",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
}
Create a new buy/sell order
Endpoint
https://api.bitwyre.com/private/rust/order
Create Order Payload
JSON Field | Value | Required | Description |
---|---|---|---|
clordid | uuid-string | false | client generated uuid string, no mandatory. |
instrument | string | true | base asset, quote asset, product filter, delimited with an _ (underscore). |
side | enum-number | true | side of order, currently only supports buy (1) or sell (2) . |
ordtype | enum-number | true | Supports market (1) , limit (2) , stop (3) , or stop_limit (4) order, post only (19), market IOC (20), limit IOC (21), and FOK (22) |
price | float-string | false | mandatory for limit and stop_limit order, for market order (using websocket) just provide the price with any number. |
stoppx | float-string | false | mandatory for stop and stop_limit order. |
orderqty | float-string | true | order quantity for the base asset. |
timeinforce | enum-number | false | order lifetime enforcement, see Time In Force. |
expiretime | big-integer | false | mandatory when "timeinforce" is set to gtd , unix time in nanoseconds. |
execinst | string | false | not-yet-supported, reserved for future. |
cancelondisconnect | bool | false | cancel order on disconnection, not supported in REST (yet). |
One must make sure that price, quantity and also value are in the the currency unit that are from the base and quote pairs. For example if the instrument is btc_usdt_spot
, the quantity is btc
and the price and value are in usdt
. Note that our clearing engine does clearing inside our database based on 64-bit integer computations. Thus, to reduce the amount of increment errors, we also highly suggest you to compute the quantity in the smallest unit of the base asset and the value in the smallest unit of the quote asset. For the previous example of btc_usdt_spot
the smallest unit of btc
is satoshi, 10^-8 of a btc
, and for usdt
it is 10^-6 of a usdt
. For a quantity of 1 btc
we will process in our backend in the integer 100,000,000
and for
1 usdtit will be
1,000,000`. This is the same for Monero (piconero) and ZCash (zatoshi), the exception is only for Ethereum, where we use GWei in our backend computations.
Getting Open Orders
Request
Getting specific open orders
curl 'https://api.bitwyre.com/private/rust/order/open?payload={"instrument": "btc_usdt_spot"}' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"btc_usdt_spot": [
{
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 1,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_usdt_spot",
"leavesqty": "1",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "1",
"ordrejreason": "",
"ordstatus": 0,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 1,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "10.0",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
]
},
"meta": {
"has_next": true,
"has_prev": false,
"next_page": 2,
"page": 1,
"pages": 5,
"prev_page": null,
"total_count": 5
}
}
Retrieves curent open orders.
Endpoint
https://api.bitwyre.com/private/orders/open
Request Payload Fields
To return all orders symbols that currently in open position, simply put all
as the value of the instrument field below.
Payload Fields | Value | Required | Description |
---|---|---|---|
instrument | string | false | base asset, quote asset, product filter, delimited with an _ (underscore). |
from_time | int | false | nanosecond timestamp for oldest order to be enumerated. |
to_time | int | false | nanosecond timestamp for newest order to be enumerated. |
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
Request Parameters
Response Data
A dictionary, where the keys are the symbols and the values are an array of currently open order(s), see Execution report Response.
Getting Closed Orders
Request
Getting specific closed order
curl 'https://api.bitwyre.com/private/orders/closed?nonce=17081945&checksum=<payload_checksum>&payload={"instrument":"btc_usdt_spot", "from_time": 1593487780108470000, "to_time": 1593487786824088000}?page=1&per_page=5' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Getting all closed order
curl 'https://api.bitwyre.com/private/orders/closed/all?nonce=17081945&checksum=<payload_checksum>&page=1&per_page=3' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"btc_idr_spot": [
{
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 1,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_idr_spot",
"leavesqty": "1",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "1",
"ordrejreason": "",
"ordstatus": 1,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 1,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "10.0",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
},
{
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 1,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_idr_spot",
"leavesqty": "1",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc1",
"orderqty": "1",
"ordrejreason": "",
"ordstatus": 1,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc1",
"ordtype": 1,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc1",
"price": "10.0",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 2345676543246,
"transacttime": 0,
"value": "100.0"
}
],
"btc_usd_spot": [
{
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 1,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_usd_spot",
"leavesqty": "1",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "1",
"ordrejreason": "",
"ordstatus": 1,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 1,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "0.1",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "1.0"
}
]
},
"meta": {
"has_next": true,
"has_prev": true,
"next_page": 2,
"page": 1,
"pages": 5,
"prev_page": null,
"total_count": 15
}
}
Retrieves currently closed orders. Similar to order history.
Endpoint
https://api.bitwyre.com/private/orders/closed
https://api.bitwyre.com/private/orders/closed/all
Request Payload Fields
For showing closed order based on parameters on /closed
. Otherwise on /closed/all
it automatically returns all closed order, no payload necessary
Payload Fields | Value | Required | Description |
---|---|---|---|
instrument | string | false | base asset, quote asset, product filter, delimited with an _ (underscore). |
from_time | int | false | nanosecond timestamp for oldest order to be enumerated. |
to_time | int | false | nanosecond timestamp for newest order to be enumerated. |
Request Parameters
Parameter | Value | Required | Description |
---|---|---|---|
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
Response Data
A dictionary, where the keys are the symbols and the values are an array of currently closed order(s), see Execution report Response.
Getting All Cancelled Orders
Request
curl 'https://api.bitwyre.com/private/orders/cancelled?nonce=17081945&checksum=<payload_checksum>&payload=' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"btc_idr_spot": [
{
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 1,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_idr_spot",
"leavesqty": "10",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "10",
"ordrejreason": "",
"ordstatus": 4,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 1,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "10.0",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
],
"btc_usd_spot": [
{
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 1,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_usd_spot",
"leavesqty": "10",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "10",
"ordrejreason": "",
"ordstatus": 4,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 1,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "0.1",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "1.0"
}
]
}
}
Retrieves all cancelled orders. Similar to order history.
Endpoint
https://api.bitwyre.com/private/orders/cancelled
Request Payload Fields
This API does not require request payload
Response Data
A dictionary, where the keys are the symbols and the values are an array of currently cancelled order(s), see Execution report Response.
Getting Order Info
Request
Getting one specific order detail
curl "https://api.bitwyre.com/private/orders/info/732f066e-feed-baad-beef-e000ed83243a?nonce=17081945&checksum=<payload_checksum>&payload=&page=1&per_page=1" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Getting all orders details
curl "https://api.bitwyre.com/private/orders/info/all?nonce=<nonce>&checksum=<checksum>&payload=&page=1&per_page=1" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
Getting orders details
{
"error": [],
"result": [
{
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "9927e7e9-c6d0-43ad-9443-8bb6b56ce1fb",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "1e-06",
"execid": "",
"exectype": 1,
"expiry": 0,
"fill_price": "5500.0",
"instrument": "btc_idr_spot",
"leavesqty": "9e-06",
"orderid": "9927e7e9-c6d0-43ad-9443-8bb6b56ce1fc",
"orderqty": "1e-05",
"ordrejreason": "",
"ordstatus": 1,
"ordstatusReqID": "9927e7e9-c6d0-43ad-9443-8bb6b56ce1fe",
"ordtype": 1,
"origclid": "9927e7e9-c6d0-43ad-9443-8bb6b56ce1fd",
"price": "5000.0",
"side": 1,
"stoppx": "6000.0",
"time_in_force": 0,
"timestamp": 1231123123,
"transacttime": 123123,
"value": "5000000.0"
}
],
"meta": {
"has_next": true,
"has_prev": false,
"next_page": 2,
"page": 1,
"pages": 5,
"prev_page": null,
"total_count": 5
}
}
Retrieves information on a specific order or all orders.
Endpoint
https://api.bitwyre.com/private/orders/info/:order_id
Request Fields/Parameters
Query Parameter | Value | Required | Description |
---|---|---|---|
order_id | uuid | True | specific order_id to get info from. When specified as all , the endpoint will return all orders (open and closed) |
Parameter | Value | Required | Description |
---|---|---|---|
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
Response Data
See Execution report Response.
Getting Order Histories
Request
curl 'https://api.bitwyre.com/private/rust/order/histories?payload={"instrument": "all","per_page": 30}' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"btc_usdt_futures": [
{
"cancel_order_id": "",
"filled": "1",
"instrument": "btc_usd_spot",
"order_id": 1,
"remaining": "1",
"fill_price": "1000",
"status": 1,
"time": 123123
}
]
},
"meta": {
"has_next": true,
"has_prev": false,
"next_page": 2,
"page": 1,
"pages": 5,
"prev_page": null,
"total_count": 5
}
}
Retrieves all order histories for current instrument.
Endpoint
https://api.bitwyre.com/private/rust/order/histories
Request Fields
Request Payload Fields
When no payload specified, it will return all order histories.
Payload Fields | Value | Required | Description |
---|---|---|---|
instrument | string | false | base asset, quote asset, product filter, delimited with an _ (underscore). |
from_time | int | false | nanosecond timestamp for oldest order to be enumerated. |
to_time | int | false | nanosecond timestamp for newest order to be enumerated. |
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
Getting Order Journey
Request
curl 'https://api.bitwyre.com/private/orders/journey?nonce=17081945&checksum=<payload_checksum>&payload={"order_id":"da5f12ea-8c7c-4cab-83a2-c21912aa51e9"}' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"da5f12ea-8c7c-4cab-83a2-c2191": [
{
"cancel_order_id": "",
"qty": "10000", // total number of order requested
"filled": "8500",
"instrument": "btc_usd_spot",
"order_id": "da5f12ea-8c7c-4cab-83a2-c2191",
"remaining": "1500",
"cancelled": "0",
"accumulated_percentage": "85%",
"incremental_percentage": "85%",
"status": 1,
"time": 1621570548809209000
},
{
"cancel_order_id": "",
"qty": "10000", // total number of order requested
"filled": "9000",
"instrument": "btc_usd_spot",
"order_id": "da5f12ea-8c7c-4cab-83a2-c2191",
"remaining": "1000",
"cancelled": "0",
"accumulated_percentage": "90%",
"incremental_percentage": "5%",
"status": 1,
"time": 1621570557593313000
}
]
}
}
Retrieves all order histories for current order_id
Endpoint
https://api.bitwyre.com/private/orders/journey
Request Payload Fields
When no payload specified, it will return all order histories.
Payload Fields | Value | Required | Description |
---|---|---|---|
order_id | string | true | Order UUID |
Cancelling an Open Order or All Open Orders
Request
curl "https://api.bitwyre.com/private/rust/order?nonce=17081945&checksum=<payload_checksum>&payload={'order_ids':['a9e3d010-3169-489d-9063-ced912b0fdc9', 'a9e3d010-3169-489d-9063-ced912b0fdc9'], 'qtys':[1, 3]}" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X DELETE
Response
{
"error": [],
"result": {
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 5,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_idr_spot",
"leavesqty": "10",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "10",
"ordrejreason": "",
"ordstatus": 6,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 3,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "10.0",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
}
Cancels a specific order.
Endpoint
https://api.bitwyre.com/private/rust/order
Request Fields/Parameters
Query Parameter | Value | Required | Description |
---|---|---|---|
order_ids | list | True | list of order_id s to cancel. When specified as an empty list, the endpoint will cancel all open orders |
qtys | list | True | list of qtys to cancel corresponding to the order_id s with the same list index |
When qtys
specified as an empty list, the endpoint will cancel max amount on every order_id
s , when only one is specified, endpoint will cancel every order_id
s to that amount, if -1
is specified, it cancels all amount
Response Data
See Execution report Response.
Cancelling an Open Order per Instrument
Request
curl "https://api.bitwyre.com/private/rust/order/btc_usdt_spot?nonce=17081945&checksum=<payload_checksum>&payload=" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X DELETE
Response
{
"error": [],
"result": {
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 5,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_usdt_spot",
"leavesqty": "10",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "10",
"ordrejreason": "",
"ordstatus": 6,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 3,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "10.0",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
}
Cancels all open orders for a specific instrument.
Endpoint
https://api.bitwyre.com/private/rust/order/<string:instrument>
Request Fields/Parameters
Query Parameter | Value | Required | Description |
---|---|---|---|
instrument | string | True | specific instrument |
Response Data
See Execution report Response.
Closing an Open Positions or All Open Positions
Request
curl "https://api.bitwyre.com/private/position/close?nonce=17081945&checksum=<payload_checksum>&payload={'position_ids':['a9e3d010-3169-489d-9063-ced912b0fdc9', 'a9e3d010-3169-489d-9063-ced912b0fdc9']}" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X DELETE
Response
{
"error": [],
"result": {
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 5,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_idr_spot",
"leavesqty": "10",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "10",
"ordrejreason": "",
"ordstatus": 6,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 3,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "10.0",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
}
Closing a specific position or all positions.
Endpoint
https://api.bitwyre.com/private/positions/close/
Request Fields/Parameters
Query Parameter | Value | Required | Description |
---|---|---|---|
position_ids | list | True | list of position_id s to close. When specified as an empty list, the endpoint will close all open positions |
Response Data
See Execution report Response.
Closing Open Positions per Instrument
Request
curl "https://api.bitwyre.com/private/positions/closed/instrument/btcusdx_perp_futures?nonce=17081945&checksum=<payload_checksum>&payload=" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X DELETE
Response
{
"error": [],
"result": {
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 5,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_usdt_spot",
"leavesqty": "10",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "10",
"ordrejreason": "",
"ordstatus": 6,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 3,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "10.0",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
}
Closes all open position for a specific instrument.
Endpoint
https://api.bitwyre.com/private/position/closed/instrument/<string:derivatives_instrument>
Request Fields/Parameters
Query Parameter | Value | Required | Description |
---|---|---|---|
instrument | string | True | specific instrument |
Response Data
See Execution report Response.
Getting Trade History
curl 'https://api.bitwyre.com/private/rust/trades?payload={"instrument": "btc_usdt_spot"}' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"btc_usd_spot": [
{
"exec_price": 20.0,
"exec_qty": 1.0,
"exec_type": 1,
"exec_value": 20000.0,
"fee_paid": 0.005, # if positive, it is rebate
"fee_rate": 0.0001,
"fee_type": 1,
"notes": "insert notes",
"order_price": 0,
"order_qty": 0,
"order_remaining": 0,
"order_type": 1,
"order_uuid": "9927e7e9-c6d0-43ad-9443-8bb6b56ce1fd",
"side": 1,
"status": 1,
"symbol": "btc_usd_spot",
"timestamp": 123123,
"user_uuid": "9927e7e9-c6d0-43ad-9443-8bb6b56ce1fb"
},
{
"exec_price": 20.0,
"exec_qty": 1.0,
"exec_type": 1,
"exec_value": 20000.0,
"fee_paid": 0.005, # if positive, it is rebate
"fee_rate": 0.0001,
"fee_type": 1,
"notes": "insert notes",
"order_price": 0,
"order_qty": 0,
"order_remaining": 0,
"order_type": 1,
"order_uuid": "9927e7e9-c6d0-43ad-9443-8bb6b56ce1fe",
"side": 1,
"status": 1,
"symbol": "btc_usd_spot",
"timestamp": 123123,
"user_uuid": "9927e7e9-c6d0-43ad-9443-8bb6b56ce1fb"
}
]
},
"meta": {
"has_next": true,
"has_prev": false,
"next_page": 2,
"page": 1,
"pages": 5,
"prev_page": null,
"total_count": 10
}
}
Retrieves some latest buying/selling transaction history.
Endpoint
https://api.bitwyre.com/private/rust/trades
Request Payload Fields
JSON Field | Data Type | Required | Remark |
---|---|---|---|
instrument | string | false | base asset, quote asset, product filter, delimited with an _ (underscore). |
from_time | big-integer | false | inclusive historical time offset, unixtime in nanoseconds. |
to_time | big-integer | false | exclusive historical time limit, unixtime in nanoseconds. |
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
Request Parameters
Response Types
Dictionary of instrument
and it's trades info, trade info fields:
JSON Field | Data Type | Remark |
---|---|---|
id | uuid-string | universal unique id of the trade. |
time | big-integer | Trade time, unixtime in nanoseconds. |
type | enum-string | "buy" for buy, "sell" for sell. |
price | float-string | quote price for the base asset of the trade. |
volume | float-string | base asset amount of the trade. |
total | float-string | total quote value of the trade. |
fee_percentage | float-string | percentage of the fee. |
fee | float-string | fee value. |
fee_currency | string | asset of the fee, in most case is the quote asset. |
Getting Trading Notifications
Example: Get All Notifications
curl "https://api.bitwyre.com/private/account/notifications/trading"
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
}"
-X GET
Response
{
"error": [],
"result": [
{
"OrderRejected": [
{
"notification_message": "Notification Message OrderRejected #2",
"timestamp": 1638408842500649920
},
{
"notification_message": "Notification Message OrderRejected #1",
"timestamp": 1638408841588082866
}
],
"OrderCancelled": [
{
"notification_message": "Notification Message OrderCancelled #3",
"timestamp": 1638408842505009193
},
{
"notification_message": "Notification Message OrderCancelled #2",
"timestamp": 1638408842409370461
},
{
"notification_message": "Notification Message OrderCancelled #1",
"timestamp": 1638408842315787091
}
],
"OrderFilled": [
{
"notification_message": "Notification Message OrderFilled #1",
"timestamp": 1638408841987827578
}
],
"Deposit": [
{
"notification_message": "Notification Message Deposit #1",
"timestamp": 1638408842290246580
}
],
"Withdrawal": [
{
"notification_message": "Notification Message Withdrawal #2",
"timestamp": 1638408842131569666
},
{
"notification_message": "Notification Message Withdrawal #1",
"timestamp": 1638408842048839032
}
],
"KYC": [
{
"notification_message": "Notification Message KYC #1",
"timestamp": 1638408842230728389
}
]
}
]
}
Example: Get Specific Notifications
curl "https://api.bitwyre.com/private/account/notifications/trading?trading_notification_type=0?limit=2"
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
}"
-X GET
Response
{
"error": [],
"result": [
{
"OrderRejected": [
{
"notification_message": "Notification Message OrderRejected #2",
"timestamp": 1638408842500649920
},
{
"notification_message": "Notification Message OrderRejected #1",
"timestamp": 1638408841588082866
}
]
}
]
}
Endpoint
https://api.bitwyre.com/private/account/notifications/trading
Request Fields/Parameters
Query Parameter | Value | Required | Description |
---|---|---|---|
trading_notification_type | integer | False | Type of notification. Default all . See Trading Notification Type |
limit | integer | False | No of notifications per type. Default `100 (max) |
Response Data (Array of JSON Object)
An array of JSON object, where the keys of the object are notification type names and the values are an array of object with the following specifications.
JSON Field | Data Type | Remark |
---|---|---|
notification_message | string | Content of notification message |
timestamp | integer | Unixtime nanosecond timestamp |
Search Favorites
Search ticker, trades, and depth data of pairs in one endpoint
Request
curl "https://api.bitwyre.com/private/favorites?instruments=['btc_usdt_spot']" -X GET
Response
{
"error": [],
"result": {
"favorites": [
{
"btc_usdt_spot": {
"askbook": [["400.0", "2.0"]],
"best_ask": "11000",
"best_bid": "10075",
"bidbook": [["310.0", "5.0"]],
"high": "11000",
"last": "10100",
"last_trade_price": "10000.0",
"last_trade_side": 1,
"last_trade_timestamp": 1571747594573320135,
"last_trade_uuid": "752837c7-aec6-41f8-bb07-286f859f2718",
"last_trade_value": "20000.0",
"last_trade_volume": "2.0",
"low": "10000",
"percent_change": "110.0",
"timestamp": 1571747594573320135,
"volume_base": "34",
"volume_quote": "267346.0"
}
}
]
}
}
Endpoint
https://api.bitwyre.com/private/favorites
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
instruments | list | false | Instruments of interest (eg ['btc_usdt_spot','eth_usdt_spot']) |
Notes: if no instrument is specified, endpoint will return all available instrument
Response Types (JSON Object)
Returns
JSON Field | Data Type | Remark |
---|---|---|
error | list | Error messages, if any |
result | dictionaries | contain list of dictionaries of the data, grouped by product, market, instrument |
Please check ticker, trades, and depth endpoint documentation for explanation of the dictionary members
Derivatives API Endpoints
Get Account Collaterals
Example:
curl "https://api.bitwyre.com/private/derivatives/account" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X GET
Response
{
"error" : [],
"result" :
{
"collateral": {"usd": "91275.565", "idr": "0"},
"free_collateral": {"usd": "91275.565", "idr": "0"},
"total_acount_value": {"usd": "91275.565", "idr": "0"},
"unrealized_pnl": {"usd": "0", "idr": "0"},
"maintenance_margin_requirements": "0.03",
"initial_margin_fraction": "1.0",
"margin_fraction": "nan",
"open_margin_fraction": "0",
"liquidating": 0,
"backstop_provider": 0,
}
}
Get Account Collateral Informations
Endpoint
https://api.bitwyre.com/private/derivatives/account
Get Leverage
Example:
curl "https://api.bitwyre.com/private/derivatives/leverage?instrumet=btc_usdx_futures_perp" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X GET
Response
{
"error" : [],
"result":
{ "current_leverage": 3, "instrument": "btc_usdx_futures_perp" }
}
Get Current Leverage
Endpoint
https://api.bitwyre.com/private/derivatives/leverage
Change Leverage
Example:
curl "https://api.bitwyre.com/private/derivatives/leverage?instrumet=btc_usdx_futures_perp" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"instrument\": \"btc_usdx_futures_perp\",\
\"leverage\": 4,\
}\
}"
Response
{
"error" : [],
"result":
{
"message": "Leverage has been set to 4x successfully",
"new_leverage": 4,
"old_leverage": 1,
"success": true
}
}
Change Current Leverage
Endpoint
https://api.bitwyre.com/private/derivatives/leverage
Get Open Positions
Example:
curl "https://api.bitwyre.com/private/derivatives/positions?instrumet=btc_usdx_futures_perp&page=1&per_page=50" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X GET
Response
{
"error" : [],
"meta": {
"has_next": false,
"has_prev": false,
"next_page": null,
"prev_page": null,
"page": 1,
"pages": 1,
"total_count": 1,
},
"result":
{
"btc_usdx_futures_perp": {
"instrument": "btc_usdx_futures_perp",
"position_uuid": "dfc8e496-30c8-49d4-9f41-8fbb8c549efe",
"index_name": "BTC-USD",
"side": 1,
"leverage": 10,
"derivatives_type": 1,
"next_funding": "0.481944",
"next_funding_datetime": "1685525465.481945",
"expiry": "0",
"margin_fraction": "0.29688",
"maintenance_margin_requirements": "0.03",
"size": "20",
"notional_size": "400000",
"average_price": "19000",
"bankruptcy_price": "13060",
"liquidation_price": "16872",
"collateral_used": "41000",
"expiry_price": "0",
"realized_pnl": "0",
"unrealized_pnl": "20000",
"status": 1,
}
}
}
Get Open Positions
Endpoint
https://api.bitwyre.com/private/derivatives/positions
Reduce Position SIze
Example:
curl "https://api.bitwyre.com/private/derivatives/reduce" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"position_uuid\": \"dfc8e496-30c8-49d4-9f41-8fbb8c549ef\",\
\"size\": \"1\",\
}\
}"
Response
{
"error" : [],
"result": {
"leverage": 1,
"refrreal_code": "xr8gjhq",
"last_price": "27000",
"entry_price": "26000",
"position": "LONG",
"roe": "0.001"
}
}
Reduce Positions Size
Endpoint
https://api.bitwyre.com/private/derivatives/reduce
Close Position
Example:
curl "https://api.bitwyre.com/private/derivatives/close" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"position_uuid\": \"dfc8e496-30c8-49d4-9f41-8fbb8c549ef\",\
}\
}"
Response
{
"error" : [],
"result": {
"leverage": 1,
"refrreal_code": "xr8gjhq",
"last_price": "27000",
"entry_price": "26000",
"position": "LONG",
"roe": "0.001"
}
}
Reduce Positions Size
Endpoint
https://api.bitwyre.com/private/derivatives/reduce
Opening a New Order
Example: New Market Order
curl "https://api.bitwyre.com/private/orders" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"instrument\": \"btc_usdx_futures_perp\",\
\"side\": 2,\
\"ordtype\": 1,\
\"orderqty\": \"2.9301\",\
}\
}"
Response (Execution Report)
{
"error": [],
"result": {
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 0,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_usdx_futures_perp",
"leavesqty": "2.9301",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "2.9301",
"ordrejreason": "",
"ordstatus": 0,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 1,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "10.0",
"side": 2,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
}
Example: New Limit Order
curl "https://api.bitwyre.com/private/orders" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"instrument\": \"btc_usdx_futures_perp\",\
\"side\": 1,\
\"ordtype\": 2,\
\"price\": \"9800.5\",\
\"orderqty\": \"2.9301\",\
}\
}"
Response (Execution Report)
{
"error": [],
"result": {
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 0,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_usdx_futures_perp",
"leavesqty": "2.9301",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "2.9301",
"ordrejreason": "",
"ordstatus": 0,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 2,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "9800.5",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
}
Example: New Stop Order
curl "https://api.bitwyre.com/private/orders" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"instrument\": \"btc_usdx_futures_perp\",\
\"side\": 2,\
\"ordtype\": 3,\
\"stoppx\": \"9850.35\",\
\"orderqty\": \"2.9301\",\
}\
}"
Response (Execution Report)
{
"error": [],
"result": {
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 0,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_usdx_futures_perp",
"leavesqty": "2.9301",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "2.9301",
"ordrejreason": "",
"ordstatus": 0,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 3,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "0",
"side": 2,
"stoppx": "9850.35",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
}
Example: New Stop-Limit Order
curl "https://api.bitwyre.com/private/orders" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"instrument\": \"btc_usdx_futures_perp\",\
\"side\": 1,\
\"ordtype\": 4,\
\"price\": \"9800.5\",\
\"stoppx\": \"9750\",\
\"orderqty\": \"2.9301\",\
}\
}"
Response (Execution Report)
{
"error": [],
"result": {
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 0,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_usdx_futures_perp",
"leavesqty": "2.9301",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "2.9301",
"ordrejreason": "",
"ordstatus": 0,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 4,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "9800.5",
"side": 1,
"stoppx": "9750",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
}
Create a new buy/sell order
Endpoint
https://api.bitwyre.com/private/orders
Create Order Payload
JSON Field | Value | Required | Description |
---|---|---|---|
clordid | uuid-string | false | client generated uuid string, no mandatory. |
instrument | string | true | base asset, quote asset, product filter, delimited with an _ (underscore). |
side | enum-number | true | side of order, currently only supports buy (1) or sell (2) . |
ordtype | enum-number | true | Supports market (1) , limit (2) , stop (3) , or stop_limit (4) order, post only (19), market IOC (20), limit IOC (21), and FOK (22) |
price | float-string | false | mandatory for limit and stop_limit order. |
stoppx | float-string | false | mandatory for stop and stop_limit order. |
orderqty | float-string | true | order quantity for the base asset. |
timeinforce | enum-number | false | order lifetime enforcement, see Time In Force. |
expiretime | big-integer | false | mandatory when "timeinforce" is set to gtd , unix time in nanoseconds. |
execinst | string | false | not-yet-supported, reserved for future. |
cancelondisconnect | bool | false | cancel order on disconnection, not supported in REST (yet). |
One must make sure that price, quantity and also value are in the the currency unit that are from the base and quote pairs. For example if the instrument is btc_usdt_spot
, the quantity is btc
and the price and value are in usdt
. Note that our clearing engine does clearing inside our database based on 64-bit integer computations. Thus, to reduce the amount of increment errors, we also highly suggest you to compute the quantity in the smallest unit of the base asset and the value in the smallest unit of the quote asset. For the previous example of btc_usdt_spot
the smallest unit of btc
is satoshi, 10^-8 of a btc
, and for usdt
it is 10^-6 of a usdt
. For a quantity of 1 btc
we will process in our backend in the integer 100,000,000
and for
1 usdtit will be
1,000,000`. This is the same for Monero (piconero) and ZCash (zatoshi), the exception is only for Ethereum, where we use GWei in our backend computations.
Getting Open Orders
Request
Getting specific open orders
curl 'https://api.bitwyre.com/private/orders/open?nonce=17081945&checksum=<payload_checksum>&payload={"instrument":"btc_usdx_futures_perp", "from_time": 1593487780108470000, "to_time": 1593487786824088000 }&page=1&per_page=1' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Getting all open orders
curl 'https://api.bitwyre.com/private/orders/open/all?nonce=17081945&checksum=<payload_checksum>&payload=&page=1&per_page=1' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"btc_usdt_spot": [
{
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 1,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_usdx_futures_perp",
"leavesqty": "1",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "1",
"ordrejreason": "",
"ordstatus": 0,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 1,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "10.0",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
]
},
"meta": {
"has_next": true,
"has_prev": false,
"next_page": 2,
"page": 1,
"pages": 5,
"prev_page": null,
"total_count": 5
}
}
Retrieves curent open orders.
Endpoint
https://api.bitwyre.com/private/orders/open
https://api.bitwyre.com/private/orders/open/all
Request Payload Fields
When no payload specified, it will return all orders symbols that currently in open position. Otherwise on /open/all
it automatically returns all open order, no payload necessary
Payload Fields | Value | Required | Description |
---|---|---|---|
instrument | string | false | base asset, quote asset, product filter, delimited with an _ (underscore). |
from_time | int | false | nanosecond timestamp for oldest order to be enumerated. |
to_time | int | false | nanosecond timestamp for newest order to be enumerated. |
Request Parameters
Parameter | Value | Required | Description |
---|---|---|---|
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
Response Data
A dictionary, where the keys are the symbols and the values are an array of currently open order(s), see Execution report Response.
Getting Closed Orders
Request
Getting specific closed order
curl 'https://api.bitwyre.com/private/orders/closed?nonce=17081945&checksum=<payload_checksum>&payload={"instrument":"btc_usdt_spot", "from_time": 1593487780108470000, "to_time": 1593487786824088000}?page=1&per_page=5' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Getting all closed order
curl 'https://api.bitwyre.com/private/orders/closed/all?nonce=17081945&checksum=<payload_checksum>&page=1&per_page=3' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"btc_idr_spot": [
{
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 1,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_idr_spot",
"leavesqty": "1",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "1",
"ordrejreason": "",
"ordstatus": 1,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 1,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "10.0",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
},
{
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 1,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_idr_spot",
"leavesqty": "1",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc1",
"orderqty": "1",
"ordrejreason": "",
"ordstatus": 1,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc1",
"ordtype": 1,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc1",
"price": "10.0",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 2345676543246,
"transacttime": 0,
"value": "100.0"
}
],
"btc_usd_spot": [
{
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 1,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_usd_spot",
"leavesqty": "1",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "1",
"ordrejreason": "",
"ordstatus": 1,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 1,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "0.1",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "1.0"
}
]
},
"meta": {
"has_next": true,
"has_prev": true,
"next_page": 2,
"page": 1,
"pages": 5,
"prev_page": null,
"total_count": 15
}
}
Retrieves currently closed orders. Similar to order history.
Endpoint
https://api.bitwyre.com/private/orders/closed
https://api.bitwyre.com/private/orders/closed/all
Request Payload Fields
For showing closed order based on parameters on /closed
. Otherwise on /closed/all
it automatically returns all closed order, no payload necessary
Payload Fields | Value | Required | Description |
---|---|---|---|
instrument | string | false | base asset, quote asset, product filter, delimited with an _ (underscore). |
from_time | int | false | nanosecond timestamp for oldest order to be enumerated. |
to_time | int | false | nanosecond timestamp for newest order to be enumerated. |
Request Parameters
Parameter | Value | Required | Description |
---|---|---|---|
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
Response Data
A dictionary, where the keys are the symbols and the values are an array of currently closed order(s), see Execution report Response.
Getting All Cancelled Orders
Request
curl 'https://api.bitwyre.com/private/orders/cancelled?nonce=17081945&checksum=<payload_checksum>&payload=' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"btc_idr_spot": [
{
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 1,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_idr_spot",
"leavesqty": "10",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "10",
"ordrejreason": "",
"ordstatus": 4,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 1,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "10.0",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
],
"btc_usd_spot": [
{
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 1,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_usd_spot",
"leavesqty": "10",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "10",
"ordrejreason": "",
"ordstatus": 4,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 1,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "0.1",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "1.0"
}
]
}
}
Retrieves all cancelled orders. Similar to order history.
Endpoint
https://api.bitwyre.com/private/orders/cancelled
Request Payload Fields
This API does not require request payload
Response Data
A dictionary, where the keys are the symbols and the values are an array of currently cancelled order(s), see Execution report Response.
Getting Open Derivatives Positions
Request
Getting all open derivatives positions in the time range 1593487780108470000 and 1593487786824088000
curl 'https://api.bitwyre.com/private/positions/open?nonce=17081945&checksum=<payload_checksum>&payload={"instrument":"btcusdx_perp_futures", "from_time": 1593487780108470000, "to_time": 1593487786824088000 }&page=1&per_page=1' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Getting all open derivatives positions
curl 'https://api.bitwyre.com/private/positions/open/all?nonce=17081945&checksum=<payload_checksum>&payload=&page=1&per_page=1' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"btcusdx_perp_futures": [
{
"open_timestamp": 1657440070843300000,
"closed_timestamp": 0,
"trade_id": "5e31da45-f0c9-430a-844c-38e001b84cee",
"instrument": "btcusdx_perp_futures",
"derivatives_type": "futures",
"derivatives_subtype": "perpetualswap",
"mark_price": 21000,
"est_liquidation_price": 11000,
"bankruptcy_price": 10500,
"avg_open_price": 20490,
"breakeven_price": 20500,
"position_size": 1,
"notional_size": 21000,
"index": "btcusdx",
"settlement_asset": "usd",
"time_to_expiry": "NA", // perpetuals have no expiry
"days_to_expiry": "NA", // perpetuals have no expiry
"strike_price": "NA", // perpetual futures have no strike price
"option_type": "NA", // can be CALL or PUT
"implied_volatility": "NA", // futures does not have implied volatility
"direction": 1, // 1 LONG and 2 SHORT
"pnl": 500, // in options this is true
}
]
},
"meta": {
"has_next": true,
"has_prev": false,
"next_page": 2,
"page": 1,
"pages": 5,
"prev_page": null,
"total_count": 5
}
}
Retrieves curent open derivatives positions.
Endpoint
https://api.bitwyre.com/private/positions/open
https://api.bitwyre.com/private/positions/open/all
Request Payload Fields
When no payload specified, it will return all position symbols that currently in open position inside the matching engine. Otherwise on /open/all
it automatically returns all open position, no payload necessary
Payload Fields | Value | Required | Description |
---|---|---|---|
instrument | string | false | base asset, quote asset, product filter, delimited with an _ (underscore). |
from_time | int | false | nanosecond timestamp for oldest position to be enumerated. |
to_time | int | false | nanosecond timestamp for newest position to be enumerated. |
Request Parameters
Parameter | Value | Required | Description |
---|---|---|---|
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
Response Data
A dictionary, where the keys are the symbols and the values are an array of currently open position(s), see Position report Response.
Getting Order Info
Request
Getting one specific order detail
curl "https://api.bitwyre.com/private/orders/info/732f066e-feed-baad-beef-e000ed83243a?nonce=17081945&checksum=<payload_checksum>&payload=&page=1&per_page=1" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Getting all orders details
curl "https://api.bitwyre.com/private/orders/info/all?nonce=<nonce>&checksum=<checksum>&payload=&page=1&per_page=1" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
Getting orders details
{
"error": [],
"result": [
{
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "9927e7e9-c6d0-43ad-9443-8bb6b56ce1fb",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "1e-06",
"execid": "",
"exectype": 1,
"expiry": 0,
"fill_price": "5500.0",
"instrument": "btc_idr_spot",
"leavesqty": "9e-06",
"orderid": "9927e7e9-c6d0-43ad-9443-8bb6b56ce1fc",
"orderqty": "1e-05",
"ordrejreason": "",
"ordstatus": 1,
"ordstatusReqID": "9927e7e9-c6d0-43ad-9443-8bb6b56ce1fe",
"ordtype": 1,
"origclid": "9927e7e9-c6d0-43ad-9443-8bb6b56ce1fd",
"price": "5000.0",
"side": 1,
"stoppx": "6000.0",
"time_in_force": 0,
"timestamp": 1231123123,
"transacttime": 123123,
"value": "5000000.0"
}
],
"meta": {
"has_next": true,
"has_prev": false,
"next_page": 2,
"page": 1,
"pages": 5,
"prev_page": null,
"total_count": 5
}
}
Retrieves information on a specific order or all orders.
Endpoint
https://api.bitwyre.com/private/orders/info/:order_id
Request Fields/Parameters
Query Parameter | Value | Required | Description |
---|---|---|---|
order_id | uuid | True | specific order_id to get info from. When specified as all , the endpoint will return all orders (open and closed) |
Parameter | Value | Required | Description |
---|---|---|---|
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
Response Data
See Execution report Response.
Getting Order Histories
Request
curl 'https://api.bitwyre.com/private/orders/histories?nonce=17081945&checksum=<payload_checksum>&payload={"instrument":"btc_usdt_futures", "from_time": 1593487780108470000, "to_time": 1593487786824088000}&page=1&per_page=1' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"btc_usdt_futures": [
{
"cancel_order_id": "",
"filled": "1",
"instrument": "btc_usd_spot",
"order_id": 1,
"remaining": "1",
"fill_price": "1000",
"status": 1,
"time": 123123
}
]
},
"meta": {
"has_next": true,
"has_prev": false,
"next_page": 2,
"page": 1,
"pages": 5,
"prev_page": null,
"total_count": 5
}
}
Retrieves all order histories for current instrument.
Endpoint
https://api.bitwyre.com/private/orders/histories
Request Fields
Parameter | Value | Required | Description |
---|---|---|---|
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
Request Payload Fields
When no payload specified, it will return all order histories.
Payload Fields | Value | Required | Description |
---|---|---|---|
instrument | string | false | base asset, quote asset, product filter, delimited with an _ (underscore). |
from_time | int | false | nanosecond timestamp for oldest order to be enumerated. |
to_time | int | false | nanosecond timestamp for newest order to be enumerated. |
Getting Order Journey
Request
curl 'https://api.bitwyre.com/private/orders/journey?nonce=17081945&checksum=<payload_checksum>&payload={"order_id":"da5f12ea-8c7c-4cab-83a2-c21912aa51e9"}' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"da5f12ea-8c7c-4cab-83a2-c2191": [
{
"cancel_order_id": "",
"qty": "10000", // total number of order requested
"filled": "8500",
"instrument": "btc_usd_spot",
"order_id": "da5f12ea-8c7c-4cab-83a2-c2191",
"remaining": "1500",
"cancelled": "0",
"accumulated_percentage": "85%",
"incremental_percentage": "85%",
"status": 1,
"time": 1621570548809209000
},
{
"cancel_order_id": "",
"qty": "10000", // total number of order requested
"filled": "9000",
"instrument": "btc_usd_spot",
"order_id": "da5f12ea-8c7c-4cab-83a2-c2191",
"remaining": "1000",
"cancelled": "0",
"accumulated_percentage": "90%",
"incremental_percentage": "5%",
"status": 1,
"time": 1621570557593313000
}
]
}
}
Retrieves all order histories for current order_id
Endpoint
https://api.bitwyre.com/private/orders/journey
Request Payload Fields
When no payload specified, it will return all order histories.
Payload Fields | Value | Required | Description |
---|---|---|---|
order_id | string | true | Order UUID |
Cancelling an Open Order or All Open Orders
Request
curl "https://api.bitwyre.com/private/orders/cancel?nonce=17081945&checksum=<payload_checksum>&payload={'order_ids':['a9e3d010-3169-489d-9063-ced912b0fdc9', 'a9e3d010-3169-489d-9063-ced912b0fdc9'], 'qtys':[1, 3]}" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X DELETE
Response
{
"error": [],
"result": {
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 5,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_idr_spot",
"leavesqty": "10",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "10",
"ordrejreason": "",
"ordstatus": 6,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 3,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "10.0",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
}
Cancels a specific order.
Endpoint
https://api.bitwyre.com/private/orders/cancel/
Request Fields/Parameters
Query Parameter | Value | Required | Description |
---|---|---|---|
order_ids | list | True | list of order_id s to cancel. When specified as an empty list, the endpoint will cancel all open orders |
qtys | list | True | list of qtys to cancel corresponding to the order_id s with the same list index |
When qtys
specified as an empty list, the endpoint will cancel max amount on every order_id
s , when only one is specified, endpoint will cancel every order_id
s to that amount, if -1
is specified, it cancels all amount
Response Data
See Execution report Response.
Cancelling an Open Order per Instrument
Request
curl "https://api.bitwyre.com/private/orders/cancel/instrument/btc_usdt_spot?nonce=17081945&checksum=<payload_checksum>&payload=" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X DELETE
Response
{
"error": [],
"result": {
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 5,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_usdt_spot",
"leavesqty": "10",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "10",
"ordrejreason": "",
"ordstatus": 6,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 3,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "10.0",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
}
Cancels all open orders for a specific instrument.
Endpoint
https://api.bitwyre.com/private/orders/cancel/instrument/<string:instrument>
Request Fields/Parameters
Query Parameter | Value | Required | Description |
---|---|---|---|
instrument | string | True | specific instrument |
Response Data
See Execution report Response.
Closing an Open Positions or All Open Positions
Request
curl "https://api.bitwyre.com/private/position/close?nonce=17081945&checksum=<payload_checksum>&payload={'position_ids':['a9e3d010-3169-489d-9063-ced912b0fdc9', 'a9e3d010-3169-489d-9063-ced912b0fdc9']}" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X DELETE
Response
{
"error": [],
"result": {
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 5,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_idr_spot",
"leavesqty": "10",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "10",
"ordrejreason": "",
"ordstatus": 6,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 3,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "10.0",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
}
Closing a specific position or all positions.
Endpoint
https://api.bitwyre.com/private/positions/close/
Request Fields/Parameters
Query Parameter | Value | Required | Description |
---|---|---|---|
position_ids | list | True | list of position_id s to close. When specified as an empty list, the endpoint will close all open positions |
Response Data
See Execution report Response.
Closing Open Positions per Instrument
Request
curl "https://api.bitwyre.com/private/positions/closed/instrument/btcusdx_perp_futures?nonce=17081945&checksum=<payload_checksum>&payload=" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X DELETE
Response
{
"error": [],
"result": {
"AvgPx": "0",
"LastLiquidityInd": "0",
"LastPx": "0",
"LastQty": "0",
"account": "a9e3d010-3169-489d-9063-ced912b0fdc8",
"cancelondisconnect": 0,
"clorderid": "",
"cumqty": "0",
"execid": "",
"exectype": 5,
"expiry": 0,
"fill_price": "0",
"instrument": "btc_usdt_spot",
"leavesqty": "10",
"orderid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"orderqty": "10",
"ordrejreason": "",
"ordstatus": 6,
"ordstatusReqID": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"ordtype": 3,
"origclid": "a9e3d010-3169-489d-9063-ced912b0fdc9",
"price": "10.0",
"side": 1,
"stoppx": "0",
"time_in_force": 0,
"timestamp": 123123132123,
"transacttime": 0,
"value": "100.0"
}
}
Closes all open position for a specific instrument.
Endpoint
https://api.bitwyre.com/private/position/closed/instrument/<string:derivatives_instrument>
Request Fields/Parameters
Query Parameter | Value | Required | Description |
---|---|---|---|
instrument | string | True | specific instrument |
Response Data
See Execution report Response.
Getting Trade History
curl 'https://api.bitwyre.com/private/trades?nonce=17081945&checksum=<payload_checksum>&payload={"count": 2, "from_time": 1509225871147236500, "to_time": 1709225871147236500, "instrument":"btc_usd_spot"}&page=1&per_page=2' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"btc_usd_spot": [
{
"exec_price": 20.0,
"exec_qty": 1.0,
"exec_type": 1,
"exec_value": 20000.0,
"fee_paid": 0.005, # if positive, it is rebate
"fee_rate": 0.0001,
"fee_type": 1,
"notes": "insert notes",
"order_price": 0,
"order_qty": 0,
"order_remaining": 0,
"order_type": 1,
"order_uuid": "9927e7e9-c6d0-43ad-9443-8bb6b56ce1fd",
"side": 1,
"status": 1,
"symbol": "btc_usd_spot",
"timestamp": 123123,
"user_uuid": "9927e7e9-c6d0-43ad-9443-8bb6b56ce1fb"
},
{
"exec_price": 20.0,
"exec_qty": 1.0,
"exec_type": 1,
"exec_value": 20000.0,
"fee_paid": 0.005, # if positive, it is rebate
"fee_rate": 0.0001,
"fee_type": 1,
"notes": "insert notes",
"order_price": 0,
"order_qty": 0,
"order_remaining": 0,
"order_type": 1,
"order_uuid": "9927e7e9-c6d0-43ad-9443-8bb6b56ce1fe",
"side": 1,
"status": 1,
"symbol": "btc_usd_spot",
"timestamp": 123123,
"user_uuid": "9927e7e9-c6d0-43ad-9443-8bb6b56ce1fb"
}
]
},
"meta": {
"has_next": true,
"has_prev": false,
"next_page": 2,
"page": 1,
"pages": 5,
"prev_page": null,
"total_count": 10
}
}
Retrieves some latest buying/selling transaction history.
Endpoint
https://api.bitwyre.com/private/trades
Request Payload Fields
JSON Field | Data Type | Required | Remark |
---|---|---|---|
instrument | string | false | base asset, quote asset, product filter, delimited with an _ (underscore). |
count | number | false | limit the latest historical trade data. |
from_time | big-integer | false | inclusive historical time offset, unixtime in nanoseconds. |
to_time | big-integer | false | exclusive historical time limit, unixtime in nanoseconds. |
Request Parameters
Parameter | Value | Required | Description |
---|---|---|---|
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
Response Types
Dictionary of instrument
and it's trades info, trade info fields:
JSON Field | Data Type | Remark |
---|---|---|
id | uuid-string | universal unique id of the trade. |
time | big-integer | Trade time, unixtime in nanoseconds. |
type | enum-string | "buy" for buy, "sell" for sell. |
price | float-string | quote price for the base asset of the trade. |
volume | float-string | base asset amount of the trade. |
total | float-string | total quote value of the trade. |
fee_percentage | float-string | percentage of the fee. |
fee | float-string | fee value. |
fee_currency | string | asset of the fee, in most case is the quote asset. |
Getting Trading Notifications
Example: Get All Notifications
curl "https://api.bitwyre.com/private/account/notifications/trading"
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
}"
-X GET
Response
{
"error": [],
"result": [
{
"OrderRejected": [
{
"notification_message": "Notification Message OrderRejected #2",
"timestamp": 1638408842500649920
},
{
"notification_message": "Notification Message OrderRejected #1",
"timestamp": 1638408841588082866
}
],
"OrderCancelled": [
{
"notification_message": "Notification Message OrderCancelled #3",
"timestamp": 1638408842505009193
},
{
"notification_message": "Notification Message OrderCancelled #2",
"timestamp": 1638408842409370461
},
{
"notification_message": "Notification Message OrderCancelled #1",
"timestamp": 1638408842315787091
}
],
"OrderFilled": [
{
"notification_message": "Notification Message OrderFilled #1",
"timestamp": 1638408841987827578
}
],
"Deposit": [
{
"notification_message": "Notification Message Deposit #1",
"timestamp": 1638408842290246580
}
],
"Withdrawal": [
{
"notification_message": "Notification Message Withdrawal #2",
"timestamp": 1638408842131569666
},
{
"notification_message": "Notification Message Withdrawal #1",
"timestamp": 1638408842048839032
}
],
"KYC": [
{
"notification_message": "Notification Message KYC #1",
"timestamp": 1638408842230728389
}
]
}
]
}
Example: Get Specific Notifications
curl "https://api.bitwyre.com/private/account/notifications/trading?trading_notification_type=0?limit=2"
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
}"
-X GET
Response
{
"error": [],
"result": [
{
"OrderRejected": [
{
"notification_message": "Notification Message OrderRejected #2",
"timestamp": 1638408842500649920
},
{
"notification_message": "Notification Message OrderRejected #1",
"timestamp": 1638408841588082866
}
]
}
]
}
Endpoint
https://api.bitwyre.com/private/account/notifications/trading
Request Fields/Parameters
Query Parameter | Value | Required | Description |
---|---|---|---|
trading_notification_type | integer | False | Type of notification. Default all . See Trading Notification Type |
limit | integer | False | No of notifications per type. Default `100 (max) |
Response Data (Array of JSON Object)
An array of JSON object, where the keys of the object are notification type names and the values are an array of object with the following specifications.
JSON Field | Data Type | Remark |
---|---|---|
notification_message | string | Content of notification message |
timestamp | integer | Unixtime nanosecond timestamp |
Search Favorites
Search ticker, trades, and depth data of pairs in one endpoint
Request
curl "https://api.bitwyre.com/private/favorites?instruments=['btc_usdt_spot']" -X GET
Response
{
"error": [],
"result": {
"favorites": [
{
"btc_usdt_spot": {
"askbook": [["400.0", "2.0"]],
"best_ask": "11000",
"best_bid": "10075",
"bidbook": [["310.0", "5.0"]],
"high": "11000",
"last": "10100",
"last_trade_price": "10000.0",
"last_trade_side": 1,
"last_trade_timestamp": 1571747594573320135,
"last_trade_uuid": "752837c7-aec6-41f8-bb07-286f859f2718",
"last_trade_value": "20000.0",
"last_trade_volume": "2.0",
"low": "10000",
"percent_change": "110.0",
"timestamp": 1571747594573320135,
"volume_base": "34",
"volume_quote": "267346.0"
}
}
]
}
}
Endpoint
https://api.bitwyre.com/private/favorites
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
"instruments" | list | false | Instruments of interest (eg ['btc_usdt_spot','eth_usdt_spot']) |
Notes: if no instrument is specified, endpoint will return all available instrument
Response Types (JSON Object)
Returns | JSON Field | Data Type | Remark | | ---------- | --------- | -------------------------- | | error | list | Error messages, if any | | result | dictionaries | contain list of dictionaries of the data, grouped by product, market, instrument |
Please check ticker, trades, and depth endpoint documentation for explanation of the dictionary members
Convert/Instant API Endpoints
Request Convert
Request
curl "https://api.bitwyre.com/private/convert" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"from_coin\": \"btc\",\
\"size\": \"2\",\
\"to_coin\": \"usdt\",\
\"convert_uuid\": \"78838a5a-c5bc-4317-a47f-2481a92558ca\",\
\"send_callback\": true,\
}\
}"
Response
{
"error": [],
"result": {
"timestamp": 1571744594571020435,
"message": "Convert Request Success",
"quote_asset": "btc",
"quote_quantity": "2",
"base_asset": "usdt",
"base_quantity": "60000",
"details": "2 btc to 60,000 usdt",
"implied_convert_price": "0.00003333333",
"instrument": "usdt_btc_spot",
"convert_uuid": "78838a5a-c5bc-4317-a47f-2481a92558ca",
}
}
Create a convert request. Once this convert request is complete, it will send a POST request to the URL set in the set URL callback method below. The body of the callback request will be in this format.
POST Callback
{
"error": [],
"result": {
"timestamp": 1571744594571020435,
"message": "Convert Request Success",
"quote_asset": "btc",
"quote_quantity": "2",
"base_asset": "usdt",
"base_quantity": "60000",
"details": "2 btc to 60,000 usdt",
"implied_convert_price": "0.00003333333",
"instrument": "usdt_btc_spot",
"convert_uuid": "78838a5a-c5bc-4317-a47f-2481a92558ca",
}
}
Endpoint
https://api.bitwyre.com/private/convert
Request Payload Fields
Payload Fields | Value | Required | Description |
---|---|---|---|
from_coin | string | true | eg. btc |
to_coin | string | true | eg. usdt |
size | string | true | convert size |
convert_uuid | string | false | convert id |
send_callback | string | false | true if want to send data to URL callback. Default true |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
timestamp | integer | timestamp in unix |
message | string | conversion message |
quote_asset | string | paid asset |
quote_quantity | string | paid asset quantity |
base_asset | bool | received asset |
base_quantity | string | received asset convert quantity |
details | string | conversion transctions details |
implied_convert_price | string | price conversion rate |
instrument | string | base asset, quote asset, product filter, delimited with an _ (underscore) |
convert_uuid | integer | convert id |
Convert Details
Request
curl 'https://api.bitwyre.com/private/convert?nonce=17081945&checksum=<payload_checksum>&convert_uuid=78838a5a-c5bc-4317-a47f-2481a92558ca' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": [{
"timestamp": 1571744594571020435,
"base_asset": "btc",
"convert_uuid": "78838a5a-c5bc-4317-a47f-2481a92558ca",
"quote_asset": "usdt",
"details": "2 btc to 60,000 usdt",
"expired": false,
"accepted": true,
"price": "7695.5",
"proceeds": "384.77",
"size": "0.05",
"side": 2,
"success_time": 1571744594571020435,
}]
}
Get Convert Status
Endpoint
https://api.bitwyre.com/private/convert
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
convert_uuid | string | true | Convert ID |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
base_coin | string | base asset |
quote_coin | string | quote asset |
from_coin | string | from coin |
to_coin | string | to_coint |
accepted | bool | accepted status |
price | string | price in units of quote_coint |
proceeds | string | proceeds of accepting the quote in units of to_coin |
size | string | balance in bitcoin |
side | string | "sell" if from_coin is base_coin, otherwise "buy" |
success_time | integer | success timestamp |
timestamp | integer | timestamp |
Convert Payment Methods
Request
curl 'https://api.bitwyre.com/private/convert/payment_methods?nonce=17081945&checksum=<payload_checksum>&type=all' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": [
{
"fiat": ["Credit Cards", "Banking", "Virtual Account"],
"crypto": ["Deposit", "Withdrawal"],
}
]
}
Get Convert Payment Method List
Endpoint
https://api.bitwyre.com/private/convert/payment_methods
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
type | string | false | Type of Asset fiat , crypto or all . Default all |
Response Types (JSON Array)
JSON Field | Data Type | Remark |
---|---|---|
JSON-array | string | Returns an an array filled with payment methods |
Get Asset Conversion Status
Request
curl 'https://api.bitwyre.com/private/convert/status?nonce=17081945&checksum=<payload_checksum>&convert_uuid={convert_uuid}' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"details": "1 btc to 30,000 usdt",
"status": "Success",
"convert_uuid": "8de70f37-c2b1-4d01-a6ba-bffc28391af4",
"quote_asset": "btc",
"quote_quantity": "2",
"base_asset": "usdt",
"base_quantity": "60000",
"details": "2 btc to 60,000 usdt",
"implied_convert_price": "0.00003333333",
"instrument": "usdt_btc_spot",
}
}
Get Convert Status Data
Endpoint
https://api.bitwyre.com/private/convert/status
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
convert_uuid | string | true | Convert ID |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
details | string | Amount details of asset conversion |
status | string | Asset convert status |
convert_uuid | string | Convert ID |
Create Vault Convert
Request
curl "https://api.bitwyre.com/private/convert/vault" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"asset\": \"btc\",\
\"network_id\": \"BTC\",\
\"convert_uuid\": \"78838a5a-c5bc-4317-a47f-2481a92558ca\",\
}\
}"
Response
{
"error": [],
"result": {
"asset": "btc",
"network_name": "Bitcoin",
"deposit_address": "3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5",
"address_tag": "",
"address_tag_name": "",
}
}
Create Vault Convert
Endpoint
https://api.bitwyre.com/private/convert/vault
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
asset | string | true | Asset name |
network_id | string | true | Asset network ID |
convert_uuid | string | true | Convert ID |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
asset | string | Asset name |
network_name | string | Asset network name |
deposit_address | string | Crypto deposit address |
address_tag | string | Address tag |
address_tag_name | string | Address tag name |
Set Deposit Callback
Request
curl "https://api.bitwyre.com/private/deposit/callback" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X PUT \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"callback_url\": \"https://api.garuda.to/wallet/deposit/callback\",\
}\
}"
Response
{
"error": [],
"result": {
"timestamp": 1571744594571020435,
"message": "Set Deposit Callback URL to https://api.garuda.to/wallet/deposit/callback success",
}
}
Set a convert URL callback to make sure after a deposit on a conversion request is successful, it will submit a POST request to hit this endpoint.
Endpoint
https://api.bitwyre.com/private/deposit/callback
Request Payload Fields
Payload Fields | Value | Required | Description |
---|---|---|---|
callback_url | string | true | https://api.garuda.to/wallet/deposit/callback |
Set Convert Callback
Request
curl "https://api.bitwyre.com/private/convert/callback" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X PUT \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"callback_url\": \"https://api.garuda.to/wallet/convert/callback\",\
}\
}"
Response
{
"error": [],
"result": {
"timestamp": 1571744594571020435,
"message": "Set Convert Callback URL to https://api.garuda.to/wallet/convert/callback success",
}
}
Set a convert URL callback to make sure after a conversion request successful, it will submit a POST request to hit this endpoint.
Endpoint
https://api.bitwyre.com/private/convert/callback
Request Payload Fields
Payload Fields | Value | Required | Description |
---|---|---|---|
callback_url | string | true | https://api.garuda.to/wallet/convert/callback |
Set Withdrawal Callback
Request
curl "https://api.bitwyre.com/private/withdrawal/callback" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X PUT \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"callback_url\": \"https://api.garuda.to/wallet/withdrawal/callback\",\
}\
}"
Response
{
"error": [],
"result": {
"timestamp": 1571744594571020435,
"message": "Set Withdrawal Callback URL to https://api.garuda.to/wallet/withdrawal/callback success",
}
}
Set a convert URL callback to make sure after a deposit on a conversion request is successful, it will submit a POST request to hit this endpoint.
Endpoint
https://api.bitwyre.com/private/withdrawal/callback
Request Payload Fields
Payload Fields | Value | Required | Description |
---|---|---|---|
callback_url | string | true | https://api.garuda.to/wallet/withdrawal/callback |
Get Convert Deposit Information
Request
curl 'https://api.bitwyre.com/private/convert/vault?asset=btc&nonce=17081945&checksum=<payload_checksum>' \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"meta": {
"has_next": true,
"has_prev": false,
"next_page": 2,
"page": 1,
"pages": 2,
"prev_page": null,
"total_count": 3
},
"result": [
{
"address": "tb1q8xylgnxwtj7gzsf2kd9tsxgrzkwpv4v4q0d3gw",
"amount": "0.0001",
"asset": "btc",
"network_id": "BTC_TEST",
"network_name": "Bitcoin Testnet",
"no_of_confirmations": 1,
"status": "Confirmed",
"timestamp": 1662628198005000000,
"tx_id": "afefcbcdf56dc24d71e44b716cbdc511e6a265b341c44d021d997cdf11627e70"
},
{
"address": "tb1q8xylgnxwtj7gzsf2kd9tsxgrzkwpv4v4q0d3gw",
"amount": "0.0001",
"asset": "btc",
"network_id": "BTC_TEST",
"network_name": "Bitcoin Testnet",
"no_of_confirmations": 1,
"status": "Confirmed",
"timestamp": 1662603131619000000,
"tx_id": "a8d8219490fe6a45bd8499084efc2e1b9ecc3380cabf04259d53b13119ebcd36"
}
]
}
Get Convert Deposit Info
Endpoint
https://api.bitwyre.com/private/convert/vault
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
asset | string | true | Asset crypto |
network_id | string | false | Asset crypto network ID. Default all |
convert_uuid | string | false | Convert ID. Default all |
address | string | false | Asset crypto address destination. Default all |
tx_id | string | false | Asset crypto transaction ID/hash. Default all |
page | int | false | Displayed result page number. Default 1 |
per_page | int | false | Number of displayed result per page. Default 50 |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
address | string | Asset crypto address |
amount | string | Amount of deposited asset |
asset | string | Asset crypto |
network_id | string | Asset crypto network ID |
network_name | string | Asset crypto network name |
no_of_confirmations | int | No of transaction network confirmations |
status | string | Status of asset transaction |
timestamp | int | Timestamp in unix |
tx_id | string | Asset crypto transaction ID/hash |
Custodian API Endpoints
Creating a New Crypto Withdrawal Request
curl "https://api.bitwyre.com/private/account/withdrawal/crypto" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"asset\": \"btc\",\
\"amount\": \"1\",\
\"address\": \"12dRugNcdxK39288NjcDV4GX7rMsKCGn6B\",\
\"network_id\": \"BTC\",\
\"notes\": \"Buying new shoes\"\
}\
}"
Response
{
"error": [],
"result": {
"withdrawal": {
"btc": [
{
"fee": "to-be-determined",
"gross_amount": "to-be-determined",
"id": "f98c7277-881a-46f8-a260-99c626619c2f",
"nett_amount": "1.0",
"network_confirmation": 0,
"network_id": "BTC",
"network_name": "Bitcoin",
"provider": "hot",
"status": "Pending",
"submit_time": 1617971125374549000,
"success_time": 0,
"tx_id": "",
"type": "crypto",
"verification_uuid": "db6547d6-dc9e-404f-982f-75cc2fa7b919"
}
]
}
}
}
Creates a new withdrawal request for a given asset with the given amount.
A confirmation email will be sent and contains instruction on how to confirm the withdrawal request.
The transaction will not be processed before a confirmation is conducted.
Endpoint
https://api.bitwyre.com/private/account/withdrawal/crypto
Request Fields/Parameters
JSON Field | Value | Required | Description |
---|---|---|---|
asset | string | true | Asset to withdraw. |
amount | string | true | Amount to withdraw. |
address | string | true | Destination address. |
network_id | string | true | Network of Destination address. |
notes | string | false | Optional annotation, e.g. "Buying new shoes". |
Response Data
See Response Asset Statement Object.
Verify Crypto Withdrawal Request
curl "https://api.bitwyre.com/private/account/withdrawal/crypto/verify/65792f1b-a4b5-4b41-befd-f1e5bb8815ef/4cd1ff2d-cda0-4e9f-b1d5-2b59f1b17154?nonce=17081945&checksum=<payload_checksum>&payload=" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"withdrawal_verified": [
{
"id": "65792f1b-a4b5-4b41-befd-f1e5bb8815ef",
"transaction_uuid": "4cd1ff2d-cda0-4e9f-b1d5-2b59f1b17154",
"is_verified": 1
}
]
}
}
Confirms that the crypto withdrawal requeset is verified.
Endpoint
https://api.bitwyre.com/private/account/withdrawal/crypto/verify/:withdrawal_id/:verification_uuid
Request Fields/Parameters
Path Parameter | Value | Required | Description |
---|---|---|---|
"withdrawal_id" | uuid-string | true | specific withdrawal_id to get info from. If specified as all it will return all crypto withdrawal request statuses |
"verification_uuid" | uuid-string | true | specific verification_uuid to verified withdrawal request |
Getting a Crypto Withdrawal Request Status
curl "https://api.bitwyre.com/private/account/withdrawal/crypto/btc/65792f1b-a4b5-4b41-befd-f1e5bb8815ef?nonce=17081945&checksum=<payload_checksum>&payload=&page=1&per_page=1" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"withdrawal": {
"btc": [
{
"asset": "btc",
"fee": "0",
"gross_amount": "1.0",
"id": "65792f1b-a4b5-4b41-befd-f1e5bb8815ef",
"is_verified": 0,
"nett_amount": "100000000",
"network_confirmation": 0,
"network_id": "BTC",
"network_name": "Bitcoin",
"provider": "",
"status": "Pending",
"submit_time": 1617974544503655000,
"success_time": 0,
"tx_id": "",
"tx_hash_url": "",
"verification_uuid": "3b577d3e-8e15-4ff9-aee6-4e95c3042a05",
"withdrawal_type": "crypto"
}
]
}
},
"meta": {
"has_next": true,
"has_prev": false,
"next_page": 2,
"page": 1,
"pages": 5,
"prev_page": null,
"total_count": 5
}
}
Retrieves a withdrawal request's details.
Endpoint
https://api.bitwyre.com/private/account/withdrawal/crypto/:asset/:withdrawal_id
Request Fields/Parameters
Path Parameter | Value | Required | Description |
---|---|---|---|
asset | string | true | Crypto asset, e.g btc , bch . |
withdrawal_id | uuid-string | true | specific withdrawal_id to get info from. If specified as all it will return all crypto withdrawal request statuses |
Parameter | Value | Required | Description |
---|---|---|---|
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
Creating a New Fiat Withdrawal Request
curl "https://api.bitwyre.com/private/account/withdrawal/fiat" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"asset\": \"usdt\",\
\"amount\": \"15000000\",\
\"notes\": \"Buying a new computer\"\
\"address\": \"An address\"\
}\
}"
Response
{
"error": [],
"result": {
"withdrawal": {
"idr": [
{
"centralized_confirmation": 0,
"fee": "to-be-determined",
"gross_amount": "1000.0",
"id": "9a149eae-be9e-49f4-b209-6b333a19659e",
"nett_amount": "to-be-determined",
"provider": "",
"status": "pending",
"submit_time": 1618207558621551000,
"success_time": 0,
"tx_id": "",
"type": "fiat",
"verification_uuid": "3af17d81-499d-496e-b2cf-8b061ad63735"
}
]
}
}
}
Creates a new withdrawal request for a given asset with the given amount.
A confirmation email will be sent and contains instruction on how to confirm the withdrawal request.
The transaction will not be processed before a confirmation is conducted.
Endpoint
https://api.bitwyre.com/private/account/withdrawal/fiat
Request Fields/Parameters
JSON Field | Value | Required | Description |
---|---|---|---|
asset | string | true | Asset to withdraw. |
amount | string | true | Amount to withdraw. |
address | string | true | Address to transfer. |
notes | string | false | Optional annotation, e.g. "Buying new shoes". |
Response Data
See Banking Details.
Verify Fiat Withdrawal Request
curl "https://api.bitwyre.com/private/account/withdrawal/fiat/verify/65792f1b-a4b5-4b41-befd-f1e5bb8815ef/4cd1ff2d-cda0-4e9f-b1d5-2b59f1b17154?nonce=17081945&checksum=<payload_checksum>&payload=" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"withdrawal_verified": [
{
"id": "65792f1b-a4b5-4b41-befd-f1e5bb8815ef",
"transaction_uuid": "4cd1ff2d-cda0-4e9f-b1d5-2b59f1b17154",
"is_verified": 1
}
]
}
}
Confirms that the fiat withdrawal requeset is verified.
Endpoint
https://api.bitwyre.com/private/account/withdrawal/fiat/verify/:withdrawal_id/:verification_uuid
Request Fields/Parameters
Path Parameter | Value | Required | Description |
---|---|---|---|
"withdrawal_id" | uuid-string | true | specific withdrawal_id to get info from. If specified as all it will return all crypto withdrawal request statuses |
"verification_uuid" | uuid-string | true | specific verification_uuid to verified withdrawal request |
Getting a Fiat Withdrawal Request Status
curl "https://api.bitwyre.com/private/account/withdrawal/fiat/idr/65792f1b-a4b5-4b41-befd-f1e5bb8815ef?nonce=17081945&checksum=<payload_checksum>&payload=?age=1&per_page=1" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"withdrawal": {
"idr": [
{
"id": "073ba6e5-24d2-4532-8b02-58c1d7a104be",
"tx_id": "f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16",
"status": "pending",
"type": "fiat",
"provider": "bitwyre_bank",
"gross_amount": "15000000",
"fee": "0.001",
"nett_amount": "14990000",
"centralized_confirmation": true,
"submit_time": 1571747594573320135,
"success_time": null
}
]
}
},
"meta": {
"has_next": true,
"has_prev": false,
"next_page": 2,
"page": 1,
"pages": 5,
"prev_page": null,
"total_count": 5
}
}
Retrieves a withdrawal request's details.
Endpoint
https://api.bitwyre.com/private/account/withdrawal/fiat/:asset/:withdrawal_id
Request Fields/Parameters
Path Parameter | Value | Required | Description |
---|---|---|---|
"asset" | string | true | Fiat asset, e.g idr , usdt . |
"withdrawal_id" | uuid-string | true | specific withdrawal_id to get info from. If specified as all it will return all fiat withdrawal requests |
Parameter | Value | Required | Description |
---|---|---|---|
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
Response Data
See Response Asset Statement Object.
Getting a New Crypto Deposit Address
curl "https://api.bitwyre.com/private/account/deposit/crypto" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"asset\": \"xlm\",\
\"network_id\": \"XLM\"\
}\
}"
Response
{
"error": [],
"result": {
"deposit": {
"xlm": [
{
"address": "GDRL4HRBJDRHDIJCKX6FB5UNB4KAQINZAJR7L6R3UFKM45BT5KKJ7NCI",
"address_tag": "3267106239",
"address_tag_name": "Memo",
}
]
}
}
}
Gets a new deposit address for a given asset.
Endpoint
https://api.bitwyre.com/private/account/deposit/crypto
Request Fields/Parameters
JSON Field | Value | Required | Description |
---|---|---|---|
asset | string | true | Asset to get a deposit deposit address for. |
network_id | string | false | Asset network to get a deposit deposit address for. Default main |
Getting a Crypto Deposit Address' History
curl "https://api.bitwyre.com/private/account/deposit/crypto/btc/3MzqqLdsYA7mL7re49JMLHJUjbFQ5RHHc6?nonce=17081945&checksum=<payload_checksum>&payload=&page=1&per_page=1" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"deposit": {
"3MzqqLdsYA7mL7re49JMLHJUjbFQ5RHHc6": [
{
"id": "4b6dc35a-ab03-4f55-bb81-8efb5a8569e0",
"tx_id": "f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16",
"status": "success",
"type": "crypto",
"provider": "warm",
"gross_amount": "150.00",
"fee": "0.1",
"nett_amount": "149.9",
"network_id": "BTC",
"network_name": "Bitcoin",
"network_confirmation": 4,
"submit_time": 1571747594573320135,
"success_time": 1571747594573320135,
"url": "https://live.blockcypher.com/btc-testnet/tx/f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16/"
}
]
}
},
"meta": {
"has_next": true,
"has_prev": false,
"next_page": 2,
"page": 1,
"pages": 5,
"prev_page": null,
"total_count": 5
}
}
Gets a crypto deposit address' transaction history.
Basically this is a subset operation of Getting Account Statement.
Endpoint
https://api.bitwyre.com/private/account/deposit/crypto/:asset/:address
Request Fields/Parameters
Path Parameter | Value | Required | Description |
---|---|---|---|
asset | string | true | Crypto asset, e.g btc . |
address | string | true | Crypto deposit address. If specified as all it will return all crypto deposit history |
Parameter | Value | Required | Description |
---|---|---|---|
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
Getting a New Fiat Deposit Address
curl "https://api.bitwyre.com/private/account/deposit/fiat/all" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X GET
Response
{
"error": [],
"result": {
"idr": {
"Bank Transfer": [
{
"account": "1079026031",
"bank": "PT Artha Graha International Tbk",
"bank_address": "Kawasan Niaga Terpadu Sudirman (SCBD) Jl. Jend. Sudirman Kav. 52 - 53 Jakarta Selatan 12190, Indonesia",
"city": "Jakarta",
"country": "Republic of Indonesia",
"currency": "idr",
"is_enabled": 1,
"is_gateway": 0,
"name": "Artha Graha International",
"notes": "US Citizens are prohibited from sending wires in USD for trading. If we find out have the right to return the money and cancel all trades.",
"provider": "Bitwyre",
"routing_number": "",
"swift_code": "ARTGIDJAXXX"
},
{
"currency": "idr",
"is_enabled": true,
"is_gateway": true,
"minimum_deposit_amount": "0",
"payment_category": "Credit Card",
"payment_merchant": "",
"provider": "MKP"
},
{
"currency": "idr",
"is_enabled": false,
"is_gateway": true,
"minimum_deposit_amount": "10000",
"payment_category": "Virtual Account",
"payment_merchant": "BNI",
"provider": "MKP"
},
{
"currency": "idr",
"is_enabled": false,
"is_gateway": true,
"minimum_deposit_amount": "10000",
"payment_category": "Virtual Account",
"payment_merchant": "Mandiri",
"provider": "MKP"
},
{
"currency": "idr",
"is_enabled": false,
"is_gateway": true,
"minimum_deposit_amount": "10000",
"payment_category": "Virtual Account",
"payment_merchant": "Permata",
"provider": "MKP"
},
{
"currency": "idr",
"is_enabled": false,
"is_gateway": true,
"minimum_deposit_amount": "10000",
"payment_category": "Virtual Account",
"payment_merchant": "CIMB",
"provider": "MKP"
},
{
"currency": "idr",
"is_enabled": false,
"is_gateway": true,
"minimum_deposit_amount": "10000",
"payment_category": "Virtual Account",
"payment_merchant": "BRI",
"provider": "MKP"
},
{
"currency": "idr",
"is_enabled": false,
"is_gateway": true,
"minimum_deposit_amount": "10000",
"payment_category": "Virtual Account",
"payment_merchant": "Finpay",
"provider": "MKP"
},
],
"E-Money": [
{
"account": "",
"bank": "PT Espay Debit Indonesia Koe",
"bank_address": "",
"city": "Jakarta",
"country": "Republic of Indonesia",
"currency": "idr",
"is_enabled": 0,
"is_gateway": 1,
"name": "Dana Indonesia",
"notes": "US Citizens are prohibited from sending wires in USD for trading. If we find out have the right to return the money and cancel all trades.",
"payment_gateway_address": "Capital Place fl.18, Jl. Gatot Subroto, RT.6/RW.1, Kuningan Bar., Kec. Mampang Prpt., Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12790",
"provider": "DANA",
"routing_number": "",
"swift_code": ""
},
],
"QRIS": [
{
"currency": "idr",
"is_enabled": false,
"is_gateway": true,
"minimum_deposit_amount": "0",
"payment_category": "QRIS",
"payment_merchant": "",
"provider": "MKP"
},
],
},
}
}
Gets a new deposit address for a given asset
Endpoint
https://api.bitwyre.com/private/account/deposit/fiat/<asset>
Request Fields/Parameters
JSON Field | Value | Required | Description |
---|---|---|---|
asset | string | true | Asset to get a deposit address for e.g. USD, IDR, if ALL then return every deposit address |
Creating a New Fiat Deposit Request
Request (MKP VA)
curl "https://api.bitwyre.com/private/account/deposit/fiat/request" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"asset\": \"idr\",\
\"amount\": \"100000\",\
\"provider\": \"MKP\",\
\"data\": {\
\"payment_category\": \"Virtual Account\",\
\"payment_merchant\": \"CIMB\",\
}\
}\
}"
Response (MKP VA)
{
"error": [],
"result": {
"data": {
"asset": "idr",
"confirmed_status": "Unconfirmed",
"created_at": "2022-11-11 11:24:24",
"expired_at": "2022-11-12 11:24:24",
"fee": 0,
"gross_amount": 10000,
"nett_amount": 10000,
"status": "Pending",
"submit_time": 1668140665352539000,
"time_limit": "1440",
"transaction_id": "352139ea-434b-473d-872c-eb72e343dcb7",
"va_code": "5489079498487726"
},
"message": "Successfully created a deposit transaction via Credit Card",
"success": true,
"timestamp": "2022-11-11T11:24:25+00:00"
}
}
Request (MKP CC)
curl "https://api.bitwyre.com/private/account/deposit/fiat/request" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"asset\": \"idr\",\
\"amount\": \"100000\",\
\"provider\": \"MKP\",\
\"data\": {\
\"payment_category\": \"Credit Card\",\
}\
}\
}"
Response (MKP CC)
{
"error": [],
"result": {
"data": {
"asset": "idr",
"confirmed_status": "Unconfirmed",
"created_at": "2022-11-11 11:16:26",
"expired_at": "2022-11-12 11:16:26",
"fee": 0,
"gross_amount": 10000,
"nett_amount": 10000,
"payment_url": "https://tokenize-staging.mcpayment.id/?eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyZWdpc3Rlcl9pZCI6IkEyUC1DQzIwMjIxMTExMTExNjI3LTA5MzciLCJjYWxsYmFja191cmwiOiJodHRwOi8vMTQ5LjEyOS4yNDguMjUyOjE4MDAxL3B1cmNoYXNlL2NjL2NhbGxiYWNrcGF5bWVudCIsIm1lcmNoYW50X2lkIjoibWtwbW9iaWxlIiwidG9rZW5pemUiOnRydWUsInRyYW5zYWN0aW9uIjp7ImFtb3VudCI6MTAwMDAsImRlc2NyaXB0aW9uIjoiTUFOVUFMIElOUVVJUlkgT1RFIC0gQ0MifSwiaXNfdG9rZW5pemUiOnRydWUsInJldHVybl91cmwiOiJodHRwczovL2FwaS5iaXR3eXJlLmlkL21rcC9jYWxsYmFjay90cmFuc2FjdGlvbi11cGRhdGUvT1RFXzIwMjItMTEtMTFUMTE6MTY6MjZfQ0NfMTAwMDBfMzUyMTM5ZWEtNDM0Yi00NzNkLTg3MmMtZWI3MmUzNDNkY2I3IiwiaWF0IjoxNjY4MTQwMTg3LCJleHAiOjE2NjgxNDM3ODd9.IjacOqy5ZMm3nO26c6X8XbuX2AKhYJu1XbH_3z5Bhnw",
"status": "Pending",
"submit_time": 1668140187648069000,
"time_limit": "1440",
"transaction_id": "352139ea-434b-473d-872c-eb72e343dcb7"
},
"message": "Successfully created a deposit transaction via Credit Card",
"success": true,
"timestamp": "2022-11-11T11:16:27+00:00"
}
}
Request (MKP QRIS)
curl "https://api.bitwyre.com/private/account/deposit/fiat/request" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"asset\": \"idr\",\
\"amount\": \"100000\",\
\"provider\": \"MKP\",\
\"data\": {\
\"payment_category\": \"QRIS\",\
}\
}\
}"
Response (MKP QRIS)
{
"error": [],
"result": {
"data": {
"asset": "idr",
"confirmed_status": "Unconfirmed",
"created_at": "2022-11-11 10:59:19",
"expired_at": "",
"fee": 0,
"gross_amount": 10000,
"nett_amount": 10000,
"qr_code": "00020101021226530012COM.DOKU.WWW0118936008990000003163020431630303UBE51440014ID.CO.QRIS.WWW0215ID20210591722820303UBE520465335303360540810000.005802ID5908Apps2Pay6008SEMARANG61055012662470703A015036MKP-mkpapps2pay-202211111059000000066304DFBB",
"status": "Pending",
"submit_time": 1668139161566157000,
"time_limit": "",
"transaction_id": "3c2e68ee-2be9-4d56-8b5a-04d01bbe87ca"
},
"message": "Successfully created a deposit transaction via QRIS",
"success": true,
"timestamp": "2022-11-11T10:59:21+00:00"
}
}
Creates a new deposit request for a given fiat asset with the given amount.
Endpoint
https://api.bitwyre.com/private/account/deposit/fiat/request
Request Fields/Parameters
JSON Field | Value | Required | Description |
---|---|---|---|
asset | string | true | Fiat Asset to deposit. |
amount | string | true | Amount to deposit. |
provider | string | true | Service Provider. |
data | object | false | Payment method data |
Response Data
JSON Field | Data Type | Remark |
---|---|---|
message | string | Request success message |
success | boolean | true if request is success |
timestamp | string | Request timestamp |
data | object | Deposit transaction details data |
Getting a Fiat Deposit Address' History
curl "https://api.bitwyre.com/private/account/deposit/fiat/idr/address?nonce=17081945&checksum=<payload_checksum>&payload=&page=1&per_page=1" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"deposit": {
"address": [
{
"centralized_confirmation": 0,
"fee": "0",
"gross_amount": "0",
"id": "9927e7e9-c6d0-43ad-9443-8bb6b56ce1fb",
"nett_amount": "0",
"provider": "",
"status": "pending",
"submit_time": 0,
"success_time": 0,
"tx_id": "9927e7e9-c6d0-43ad-9443-8bb6b56ce1fb",
"type": "fiat"
}
]
}
},
"meta": {
"has_next": true,
"has_prev": false,
"next_page": 2,
"page": 1,
"pages": 5,
"prev_page": null,
"total_count": 5
}
}
Gets a fiat deposit address' transaction history.
Basically this is a subset operation of Getting Account Statement.
Endpoint
https://api.bitwyre.com/private/account/deposit/fiat/:asset/:address
Request Fields/Parameters
Path Parameter | Value | Required | Description |
---|---|---|---|
asset | string | true | Fiat asset, e.g idr . |
address | string | true | Fiat deposit address. If specified as `all it will return all fiat deposit history |
Parameter | Value | Required | Description |
---|---|---|---|
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
Cancel Pending Crypto Withdrawal
curl "https://api.bitwyre.com/private/account/withdrawal/crypto/btc/fd15191a-7fe5-406d-91e8-fdfcb9476234?nonce=17081945&checksum=<payload_checksum>&payload="
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X DELETE
Response
{
"error": [],
"result": {
"withdrawal": {
"btc": [
{
"id": "073ba6e5-24d2-4532-8b02-58c1d7a104be",
"status": "Cancelled",
"submit_time": 1571747594573320135,
"success_time": 1571747594573321111
}
]
}
}
}
We conduct crypto withdrawal transfers 4 times a day 6:00 Jakarta/WIB, 12:00 Jakarta/WIB, 18:00 Jakarta/WIB, 00:00 Jakarta/WIB. A cancel pending withdrawal for crypto operation can only be done 1 hour before those designated withdrawal times.
For example, for the withdrawal batch of 6:00 Jakarta/WIB, the cancel time window closes on 5:00 Jakarta/WIB.
Any attempt to cancel a withdrawal after the cancel time window is rejected and will be returned a status of "cancel rejected" and be automatically processed on the next batch.
Endpoint
https://api.bitwyre.com/private/account/withdrawal/crypto/:crypto/:withdrawal_id
Request Fields/Parameters
Path Parameter | Value | Required | Description |
---|---|---|---|
withdrawal_id | String | True | Withdrawal pending UUID. If specified as `all it cancel all pending withdrawals |
Response Data
JSON Field | Data Type | Remark |
---|---|---|
id | string | UUID of pending request |
status | string | Cancel Success/Cancel Rejected |
submit_time | integer-timestamp | Nanosecond timestamp of submit time |
success_time | integer-timestamp | Nanosecond timesamp of success time, null on cancel rejecteed |
Cancel Pending Fiat Withdrawal
curl "https://api.bitwyre.com/private/account/withdrawal/fiat/usdt/fd15191a-7fe5-406d-91e8-fdfcb9476234?nonce=17081945&checksum=<payload_checksum>&payload="
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X DELETE
Response
{
"error": [],
"result": {
"withdrawal": {
"usdt": [
{
"id": "073ba6e5-24d2-4532-8b02-58c1d7a104be",
"status": "Cancelled",
"submit_time": 1571747594573320135,
"success_time": 1571747594573321111
}
]
}
}
}
We conduct fiat withdrawal transfers 1 time a day 9:00 Jakarta/WIB. A cancel pending withdrawal for fiat operation can only be done 24 hours before those designated withdrawal times.
For example, for the withdrawal batch of 9:00 Jakarta/WIB, the cancel time window closes on 8:59 Jakarta/WIB the previous day
Any attempt to cancel a withdrawal after the cancel time window is rejected and will be returned a status of "cancel rejected" and be automatically processed on the next batch.
Endpoint
https://api.bitwyre.com/private/account/withdrawal/fiat/:fiat/:withdrawal_id
Request Fields/Parameters
Path Parameter | Value | Required | Description |
---|---|---|---|
withdrawal_id | String | True | Withdrawal pending UUID. If specified as `all it cancel all pending withdrawals |
Response Data
JSON Field | Data Type | Remark |
---|---|---|
id | string | UUID of pending request |
status | string | Cancel Success/Cancel Rejected |
submit_time | integer-timestamp | Nanosecond timestamp of submit time |
success_time | integer-timestamp | Nanosecond timesamp of success time, null on Cancel rejecteed |
Getting Crypto Withdrawal Addresses
curl "https://api.bitwyre.com/private/account/withdrawal/crypto/address"
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X GET
Response
{
"error": [],
"result": {
"btc": [
{
"address": "3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5",
"address_name": "mybtcaddress1",
"address_tag": "",
"created_at": "30/07/2021, 00:00:00"
}
],
"eth": [
{
"address": "0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7",
"address_name": "myethaddress1",
"address_tag": "",
"created_at": "30/07/2021, 00:00:00"
}
]
}
}
Response If User have no existing addresses
{
"error": ["No addresses found yet. Please insert and confirm to list one."],
"result": []
}
Return all user's existing and verified crypto withdrawal addresses
Endpoint
https://api.bitwyre.com/private/account/withdrawal/crypto/address
Request Fields/Parameters
Because this is a GET endpoint, nonce
& checksum
are query parameters, also payload
should be always an empty string.
The SHA256
steps for this endpoint's payload:
- jsonify an empty string.
- then SHA256 from above result.
Please refer to Authentication.
Response Data
JSON Field | Data Type | Remark |
---|---|---|
asset | string | Crypto asset |
address | string | Crypto address |
address_name | string | Address name |
address_tag | string | Address tag |
created_at | string | Datetime of address creation |
Add Crypto Withdrawal Address
curl "https://api.bitwyre.com/private/account/withdrawal/crypto/address"
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"asset\": \"btc\",\
\"address\": \"3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5\",\
\"address_name\": \"mybtcaddress1\",\
\"address_tag\": \"tagaddress\",\
\"network_id\": \"BTC\",\
}"
-X PUT
Response if Success
{
"error": [],
"result": {
"message": "Successfully add network BTC withdrawal address 3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5",
"success": 1,
"timestamp": 1627473142470220000
}
}
Response if a duplicate address was inserted
{
"error": ["You are inserting a duplicate address that has been confirmed"],
"result": {}
}
Add a crypto withdrawal address for the user
Endpoint
https://api.bitwyre.com/private/account/withdrawal/crypto/address
Request Fields/Parameters
JSON Field | Value | Required | Description |
---|---|---|---|
asset | string | True | crypto asset |
address | string | True | crypto address |
address_name | string | True | address name |
address_tag | string | False | address tag |
network_id | string | False | crypto network |
Response Data
JSON Field | Data Type | Remark |
---|---|---|
message | string | response message |
success | integer | return 1 if the operation success |
timestamp | integer | Nanosecond timestamp |
Remove Crypto Withdrawal Address
curl "https://api.bitwyre.com/private/account/withdrawal/crypto/address"
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"asset\": \"btc\",\
\"address\": \"3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5\",\
\"network_id\": \"BTC\",\
}"
-X DELETE
Response if Success
{
"error": [],
"result": {
"message": "Successfully remove network BTC withdrawal address 3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5",
"success": 1,
"timestamp": 1627473142470220000
}
}
Response if the address was already deleted
{
"error": ["You have deleted your address, you cannot use it anymore"],
"result": {}
}
Remove a crypto withdrawal address for the user
Endpoint
https://api.bitwyre.com/private/account/withdrawal/crypto/address
Request Fields/Parameters
JSON Field | Value | Required | Description |
---|---|---|---|
asset | string | True | crypto asset |
address | string | True | crypto address |
network_id | string | False | crypto network |
Response Data
JSON Field | Data Type | Remark |
---|---|---|
message | string | response message |
success | integer | return 1 if the operation success |
timestamp | integer | Nanosecond timestamp |
Verify Crypto Withdrawal Address
curl "https://api.bitwyre.com/private/account/withdrawal/crypto/address"
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"asset\": \"btc\",\
\"address\": \"3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5\",\
\"withdrawal_confirmation_uuid\": \"c2025d42-e0c6-47a4-9f0f-bdc627983163\",\
\"network_id\": \"BTC\",\
}"
-X POST
Response if Success
{
"error": [],
"result": {
"message": "Successfully verify network BTC withdrawal address 3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5",
"success": 1,
"timestamp": 1627473142470220000
}
}
Response if the address was already verified
{
"error": ["You have already confirmed the address"],
"result": {}
}
Response if wrong withdrawal confirmation uuid was inserted.
{
"error": ["Wrong withdrawal confirmation code"],
"result": {}
}
Verify a crypto withdrawal address for the user
Endpoint
https://api.bitwyre.com/private/account/withdrawal/crypto/address
Request Fields/Parameters
JSON Field | Value | Required | Description |
---|---|---|---|
asset | string | True | crypto asset |
address | string | True | crypto address |
withdrawal_confirmation_uuid | string | True | withdrawal address confirmation uuid |
network_id | string | False | crypto network |
Response Data
JSON Field | Data Type | Remark |
---|---|---|
message | string | response message |
success | integer | return 1 if the operation success |
timestamp | integer | Nanosecond timestamp |
Resend Verification Crypto Withdrawal Address
curl "https://api.bitwyre.com/private/account/withdrawal/crypto/address"
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"asset\": \"btc\",\
\"address\": \"3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5\",\
}"
-X PATCH
Response if Success
{
"error": [],
"result": {
"message": "Successfully resend verification code for btc withdrawal address 3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5",
"success": 1,
"timestamp": 1627473142470220000
}
}
Response if the address was already verified
{
"error": ["You have already confirmed the address"],
"result": {}
}
Response if wrong address was inserted.
{
"error": ["Address is not found. Please add the address first."],
"result": {}
}
Resend the verification code for a crypto withdrawal address to the user via e-mail.
Endpoint
https://api.bitwyre.com/private/account/withdrawal/crypto/address
Request Fields/Parameters
JSON Field | Value | Required | Description |
---|---|---|---|
asset | string | True | crypto asset |
address | string | True | crypto address |
Response Data
JSON Field | Data Type | Remark |
---|---|---|
message | string | response message |
success | integer | return 1 if the operation success |
timestamp | integer | Nanosecond timestamp |
Getting Banking Details
curl "https://api.bitwyre.com/private/account/banking/get/<asset>?nonce=17081945&checksum=<payload_checksum>&payload="
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"account_nickname": "Nakamoto Chase Account",
"asset": "idr",
"bank_account": 123456,
"bank_account_name": "Satoshi Nakamoto",
"bank_name": "JP Morgan Chase",
"details": "routing code XXXXX",
"id": "1d987421-e850-4efe-85a8-30efb9665c2f",
"swift_code": "CHASUSXX"
}
}
Endpoint
https://api.bitwyre.com/private/account/banking/get
Request Fields/Parameters
Parameter asset
to get its associated bank detail, use all
to query all asset bank detail
Because this is a GET endpoint, nonce
& checksum
are query parameters, also payload
should be always an empty string.
The SHA256
steps for this endpoint's payload:
- jsonify an empty string.
- then SHA256 from above result.
Please refer to Authentication.
Setting Banking Details
curl "https://api.bitwyre.com/private/account/banking/post"
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"bank_name\": \"JP Morgan Chase\",\
\"swift_code\": \"CHASUSXX\",\
\"bank_account\": \"xxxxxxxxxxx\",\
\"bank_account_name\": \"Satoshi Nakamoto\",\
\"address\": \"23 Embarcadero Road, California, USA\",
\"details\": \"routing code XXXXX\"\
\"account_nickname\": \"Nakamoto Chase Account\",
\"asset\": \"idr\",
}\
}"
Response
{
"error": [],
"result": {
"result": true
}
}
Endpoint
https://api.bitwyre.com/private/account/banking
Request Fields/Parameters
JSON Field | Value | Required | Description |
---|---|---|---|
bank_name | The bank name | True | The bank name designated for deposit/withdrawal |
swift_code | The bank SWIFT code | True | The bank's SWIFT code |
bank_account | The bank account number or IBAN | True | The designated deposit/withdrawal bank account number or IBAN |
bank_account_name | The bank account owner's name | True | The customer's name according to KYC/AML details |
address | The address of the customer | True | The customer's address according to KYC/AML details |
details | Other details to ease the process of transfer | True | The banking specific details needed to conduct the transfer that are country specific |
account_nickname | The nickname for this banking account | False | The customer's preference nickname for the account |
asset | Asset name | True | The Asset to be associated with the bank account |
Response Data
JSON Field | Data Type | Remark |
---|---|---|
id | string-uuid | the UUID of the insertion |
Getting List of Deposit Payment Gateways
curl "https://api.bitwyre.com/private/account/deposit/gateway?nonce=17081945&checksum=<payload_checksum>&payload={\"asset\": \"usdt\"}"
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"payment_gateway_name": "IDR Dana",
"url_payment": "https://dana.id/payment/id=xxxxxxxxx",
"url_callback": "https://api.bitwyre.com/private/account/gateway/callback"
}
}
Endpoint
https://api.bitwyre.com/private/account/deposit/gateway
Request Fields/Parameters
JSON Field | Value | Required | Description |
---|---|---|---|
"asset" | string | true | Fiat asset for e.g. USD, IDR |
Response Data
JSON Field | Data Type | Remark |
---|---|---|
payment_gateway_name | string | payment gateway name |
url_payment | string-url | URL to be redirected for payment gateway |
url_callback | string-url | URL to get callback after payment gateway operation finished |
Getting List of Withdrawal Payment Gateways
curl "https://api.bitwyre.com/private/account/withdrawal/gateway?nonce=17081945&checksum=<payload_checksum>&payload={\"asset\": \"idr\"}"
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"payment_gateway_name": "IDR Duitku",
"url_payment": "https://dana.id/payment/id=xxxxxxxxx",
"url_callback": "https://api.bitwyre.com/private/account/withdrawal/callback"
}
}
Endpoint
https://api.bitwyre.com/private/account/withdrawal/gateway
Request Fields/Parameters
JSON Field | Value | Required | Description |
---|---|---|---|
"asset" | string | true | Fiat asset for e.g. USD, IDR |
Response Data
JSON Field | Data Type | Remark |
---|---|---|
payment_gateway_name | string | payment gateway name |
url_payment | string-url | URL to be redirected for payment gateway |
url_callback | string-url | URL to get callback after payment gateway operation finished |
Know Your Customer (KYC)/Anti-Money Laundering (AML) API Endpoints
Get KYC Data Status
Request
curl "https://api.bitwyre.com/private/account/kyc-data/status" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X GET \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
}"
Response
{
"error": [],
"result": {
"identity_card_back_scan_uuid": "",
"identity_card_front_scan_uuid": "4f55ab02-a3a6-40cb-8f9c-35761fd4506a",
"rejection_reason": "",
"selfie_photo_uuid": "b2b92db4-31ec-4e5e-944a-2e6b7f6aeef8",
"status": "Pending"
}
}
Get user KYC Data status.
Endpoint
https://api.bitwyre.com/private/account/kyc-data/status
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
identity_card_back_scan_uuid | string | uuid of user id card scan (back side) |
identity_card_front_scan_uuid | string | uuid of user id card scan (front side) |
rejection_reason | string | reason of rejection if status is Rejected |
selfie_photo_uuid | string | uuid of user selfie photo |
status | string | user kyc data status |
Submit KYC Data
Request
curl "https://api.bitwyre.com/private/account/kyc-data" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"name\": \"Test User\",\
\"address\": \"Jalan Pegangsaan Timur Nomor 56\",\
\"id_card_type\": 0,\
\"id_card_number\": \"AB12345\",\
\"id_card_country_code\": \"id\",\
},\
}"
Response
{
"error": [],
"result": {
"success": true,
"message": "Successfully insert kyc data for user be327dcb-c21b-4d4f-944d-3cf1bf297222"
}
}
Submit User KYC Data by user.
Endpoint
https://api.bitwyre.com/private/account/kyc-data
Request Fields/Parameters
Payload Fields | Value | Required | Description |
---|---|---|---|
name | string | true | full name of user (as written in id card) |
address | string | true | current address of user (as written in id card) |
id_card_type | int | true | type of ID Card (0 - National ID, 1 - Driving License, 2 - Passport, 99 - Others) |
id_card_number | string | true | identification number (as written in id card) |
id_card_country_code | string | true | code name of the country where the id card is authorized (ISO 3166-1 alpha-2) |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
success | bool | Acknoledgement that the data has been submitted |
message | string | post success message |
Update Rejected KYC Data
Request
curl "https://api.bitwyre.com/private/account/kyc-data" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X PUT \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"rejection_reason\": 6,\
\"payload\": {\
\"name\": \"Test User\",\
\"address\": \"Jalan Pegangsaan Timur Nomor 56\",\
\"id_card_type\": 0,\
\"id_card_number\": \"AB12345\",\
\"id_card_country_code\": \"id\",\
},\
}"
Response
{
"error": [],
"result": {
"success": true,
"message": "Successfully update kyc data for user be327dcb-c21b-4d4f-944d-3cf1bf297222"
}
}
Update rejected user KYC data.
Endpoint
https://api.bitwyre.com/private/account/kyc-data
Request Fields/Parameters
Query Parameter | Value | Required | Description |
---|---|---|---|
rejection_reason | int | True | Reason of rejection. See KYC Rejection Reason |
Optional Fields/Parameters
These payload is required if rejected_reason contains InvalidData
or InvalidAll
Payload Fields | Value | Required | Description |
---|---|---|---|
name | string | true | full name of user (as written in id card) |
address | string | true | current address of user (as written in id card) |
id_card_type | int | true | type of ID Card (0 - National ID, 1 - Driving License, 2 - Passport, 99 - Others) |
id_card_number | string | true | identification number (as written in id card) |
id_card_country_code | string | true | code name of the country where the id card is authorized (ISO 3166-1 alpha-2) |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
success | bool | Acknoledgement that the data has been updated |
message | string | update success message |
Uploading KYC Files
Request
curl "https://api.bitwyre.com/private/uploadkycfiles" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: multipart/form-data" \
-X POST \
-F "payload={\"type\":1}" \
-F "nonce=17081945"\
-F "checksum=somechecksum"\
-F "file=file.jpg"
Response
{
"error": [],
"result": {
"success": true,
"message": "Image uploaded"
}
}
Endpoint for user to upload Identities.
Endpoint
https://api.bitwyre.com/private/uploadkycfiles
Request Fields/Parameters
JSON Field | Value | Required | Description |
---|---|---|---|
type | enum-number | true | 0- NationalIdentity; 1 - DrivingLicense; 2 - Passport ; 3 - Selfie ; 99 - Others |
file | .png, .jpg, .pdf | true | the image file |
Uploading Fiat Deposit Proof
Request
curl "https://api.bitwyre.com/private/account/deposit/fiat/uploadproof" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: multipart/form-data" \
-X POST \
-F "payload={"transction_id":"b9443247-eb59-47ad-a9f4-f479d6b92111"}" \
-F "checksum=somechecksum"\
-F "file=file.jpg"
Response
{
"error": [],
"result": {
"message": "Image uploaded"
}
}
Endpoint for user to upload fiat transfer proof to be checked.
Endpoint
https://api.bitwyre.com/private/account/deposit/fiat/uploadproof
Request Fields/Parameters
JSON Field | Value | Required | Description |
---|---|---|---|
transaction_id | string | true | Transaction ID. |
file | .png or .jpg | true | the image file |
Uploading KYC Files Mobile
Request
curl "https://api.bitwyre.com/private/uploadkycfiles-mobile" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: multipart/form-data" \
-X POST \
-F "payload={\"type\":1}" \
-F "nonce=17081945"\
-F "checksum=somechecksum"\
-F "file=file.jpg"
Response
{
"error": [],
"result": {
"success": true,
"message": "Successfully Upload Image"
}
}
Endpoint for user to upload Identities.
Endpoint
https://api.bitwyre.com/private/uploadkycfiles-mobile
Request Fields/Parameters
JSON Field | Value | Required | Description |
---|---|---|---|
type | enum-number | true | 0- NationalIdentity; 1 - DrivingLicense; 2 - Passport ; 3 - Selfie ; 99 - Others |
file | .png, .jpg, .pdf | true | the image file |
Uploading Fiat Deposit Proof Mobile
Request
curl "https://api.bitwyre.com/private/account/deposit/fiat/uploadproof-mobile" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: multipart/form-data" \
-X POST \
-F "payload={"transction_id":"b9443247-eb59-47ad-a9f4-f479d6b92111"}" \
-F "checksum=somechecksum"\
-F "file=file.jpg"
Response
{
"error": [],
"result": {
"message": "Successfully Upload Image"
}
}
Endpoint for user to upload fiat transfer proof to be checked.
Endpoint
https://api.bitwyre.com/private/account/withdrawal/fiat/uploadproof-mobile
Request Fields/Parameters
JSON Field | Value | Required | Description |
---|---|---|---|
transaction_id | string | true | Transaction ID. |
file | .png or .jpg | true | the image file |
Getting Support Tickets
Request
curl "https://api.bitwyre.com/private/support/ticket?page=1&per_page=3" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": [
{
"id": 3,
"priority": "Medium",
"closed_at": null,
"resolved_at": null,
"status": "Open",
"subject": "Test Ticket 3",
"type": "Incident"
},
{
"id": 2,
"priority": "Low",
"closed_at": "2021-01-12T09:18:23Z",
"resolved_at": "2021-01-12T09:18:23Z",
"status": "Closed",
"subject": "Test Ticket 2",
"type": "Problem"
},
{
"id": 1,
"priority": "Urgent",
"closed_at": "2021-01-07T13:22:08Z",
"resolved_at": "2021-01-07T13:22:08Z",
"status": "Closed",
"subject": "Test Ticket 1",
"type": "Refund"
}
]
}
Retrieve user's support tickets data.
Endpoint
https://api.bitwyre.com/private/support/ticket
Request Fields/Parameters
Parameter | Value | Required | Description |
---|---|---|---|
page | int | false | Page number |
per_page | int | false | Number result to show. Default 50 result per page |
Response Types
Returns a JSON array of support ticket details with following fields
JSON Field | Data Type | Remark |
---|---|---|
id | int | Freshdesk ticket ID |
priority | string | Ticket priority |
closed_at | string | Datetime of ticket closure |
resolved_at | string | Datetime of ticket settlement |
status | string | Current status of ticket |
subject | string | Subject of ticket |
type | string | Ticket type |
Create a Support Ticket
Request
curl "https://api.bitwyre.com/private/support/ticket" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X POST
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\
\"issue_type\": 1,\
\"priority\": 1,\
\"subject\": \"Test Subject\",\
\"description\": \"Test Description\",\
}\
}"
-F "file=file.jpg"
Response
{
"error": [],
"result": {
"message": "Successfully sent support ticket.",
"success": true
}
}
Retrieve user's support tickets data.
Endpoint
https://api.bitwyre.com/private/support/ticket
Request Fields/Parameters
JSON Field | Value | Required | Description |
---|---|---|---|
issue_type | int | true | Ticket type. See Issue Type Freshdesk |
priority | int | true | Ticket priority. See Priority Freshdesk |
subject | string | true | Subject of ticket. |
description | string | true | Description of ticket. |
file | binary | false | the image attachment file (in .png or .jpg or .jpeg or .pdf) |
Response Types
Returns a JSON array of support ticket details with following fields
JSON Field | Data Type | Remark |
---|---|---|
id | int | Freshdesk ticket ID |
priority | string | Ticket priority |
closed_at | string | Datetime of ticket closure |
resolved_at | string | Datetime of ticket settlement |
status | string | Current status of ticket |
subject | string | Subject of Ticket |
type | string | Ticket type |
Chat and Escrow API Endpoints
Get Chat Message
Request
curl "https://api.bitwyre.com/private/chat?nonce=17081945&checksum=<payload_checksum>&payload={\"counterparty\": <counterparty_username>}" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"Counterparty": [
{
"from": "Active User",
"message": "Say Hi",
"timestamp": 1617946673962115000,
"to": "Counterparty"
},
{
"from": "Counterparty",
"message": "Say Hi Back",
"timestamp": 1617946673962115002,
"to": "Active User"
},
{
"from": "Active User",
"message": "Ask Question",
"timestamp": 1617946673962115004,
"to": "Counterparty"
},
{
"from": "Counterparty",
"message": "Answer Question",
"timestamp": 1617946673962115002,
"to": "Active User"
}
],
"Counterparty2": [
{
"from": "Active User",
"message": "Say Hi 2",
"timestamp": 1617946673962115000,
"to": "Counterparty2"
}
]
}
}
Retrieve user's chat message encrypted in Elliptic Curve Integrated Encryption Scheme (ECIES).
Endpoint
https://api.bitwyre.com/private/chat
Request Fields/Parameters
For showing chats on another username. Otherwise on if payload is not specified it automatically returns all valid chat
Payload Fields | Value | Required | Description |
---|---|---|---|
counterparty | string | false | the other user username chat to retrieve |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
chat counter party | string | the person who you are chatting with |
list of timestamp, encrypted messages | string | timestamp and encrypted messages |
... | ... | ... |
Send Chat Message
Request
curl "https://api.bitwyre.com/private/chat?nonce=17081945&checksum=<payload_checksum>&payload=" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": \"I really like that painting\",\
}"
Response
{
"error": [],
"result": {
"timestamp": 1590654854095640000,
"message_id": "3e00e9f4-fe7a-45c9-9ed7-456d9e6518b3"
}
}
In the event that sending the chat is not successful
{
"error": ["Internal server error"],
"result": {}
}
Send a chat message.
Endpoint
https://api.bitwyre.com/private/chat
Request Fields/Parameters
Please refer to Authentication.
JSON Field | Value | Required | Description |
---|---|---|---|
"Payload" | string | True | Chat message |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
timestamp | Integer | Nanosecond timestamp |
message_id | UUID-String | The message ID |
Get Chat Message with Limit
Request
curl "https://api.bitwyre.com/private/chat/list?nonce=17081945&checksum=<payload_checksum>&payload={\"counterparty\": <counterparty_username>, limit: 5}" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"Counterparty": [
{
"from": "Active User",
"message": "Say Hi",
"timestamp": 1617946673962115000,
"to": "Counterparty"
},
{
"from": "Counterparty",
"message": "Say Hi Back",
"timestamp": 1617946673962115002,
"to": "Active User"
},
{
"from": "Active User",
"message": "Ask Question",
"timestamp": 1617946673962115004,
"to": "Counterparty"
},
{
"from": "Counterparty",
"message": "Answer Question",
"timestamp": 1617946673962115002,
"to": "Active User"
}
],
"Counterparty2": [
{
"from": "Active User",
"message": "Say Hi 2",
"timestamp": 1617946673962115000,
"to": "Counterparty2"
}
]
}
}
Retrieve user's chat message encrypted in Elliptic Curve Integrated Encryption Scheme (ECIES) with limit data.
Endpoint
https://api.bitwyre.com/private/chat/list
Request Fields/Parameters
For showing chats on another username. Otherwise on if payload is not specified it automatically returns all valid chat
Payload Fields | Value | Required | Description |
---|---|---|---|
counterparty | string | false | the other user username chat to retrieve |
limit | int | false | number of retrieved chat data |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
chat counter party | string | the person who you are chatting with |
list of timestamp, encrypted messages | string | timestamp and encrypted messages |
... | ... | ... |
Search Chat Message
Request
curl "https://api.bitwyre.com/private/chat/search?nonce=17081945&checksum=<payload_checksum>&payload={\"keyword\":\"Hello\"}" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X GET
Response
{
"error": [],
"result": {
"Counterparty": [
{
"from": "Active User",
"message": "Hello whats good?",
"timestamp": 1617946673962115000,
"to": "Counterparty"
},
{
"from": "Counterparty",
"message": "Hello, BTC is to the moon",
"timestamp": 1617946673962115002,
"to": "Active User"
}
]
}
}
In the event that searching the chat is not successful
{
"error": ["Internal server error"],
"result": {}
}
Search inside historial chats.
Endpoint
https://api.bitwyre.com/private/chat/search
Request Fields/Parameters
Payload Fields | Value | Required | Description |
---|---|---|---|
keyword | string | True | Chat message to be search |
counterparty | string | False | The other user username chat to retrieve |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
chat counter party | string | the person who you are chatting with |
list of timestamp, encrypted messages | string | timestamp and encrypted messages |
... | ... | ... |
Send Escrow Request
Request
curl "https://api.bitwyre.com/private/escrow" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {
\"base_asset\": \"btc\",\
\"base_asset_amount\":\"1000\",\
\"quote_asset\": \"eth\",\
\"quote_asset_amount\":\"3000\",\
\"counterparty\": \"counterparty\"}\
}"
Response
{
"error": [],
"result": {
"status": "pending",
"escrow_id": "76f7704b-85c7-4cb8-9a71-e48293616705",
"implied_price": "0.00000001 BTC/IDR",
"instrument": "btc_idr_spot",
"action": "Exchange 1 BTC for 100000000 IDR",
"counterparty": "John",
"fee_percentage": "0.01%",
"fee_amount": "0.01 BTC",
"order_time": 1495324800000000001,
"order_expiry_time": 1495424800000000001
}
}
Send an OTC escrow request
Endpoint
https://api.bitwyre.com/private/escrow
Request Fields/Parameters
Please refer to Authentication.
JSON Field | Value | Required | Description |
---|---|---|---|
"Payload" | string | True | base_asset, base_asset_amount, quote_asset, quote_asset_amount, counterparty |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
status | String | Acknoledgement that the post has been sent |
escrow_id | UUID-String | Unique ID for the escrow request |
implied_price | Float-String | Base Amount/Quote Amount |
instrument | String | Instrument Base/Quote |
action | String | A simple message about the trade |
counterparty | String | The counterparty username |
fee_percentage | Float-String | Amount of fee in percentage |
fee | Float-String | Amount of fee in quote asset |
order_time | Float-String | Nanosecond timestamp when order is specified |
order_expiry_time | Integer | Nanosecond timestamp when order would be expired |
Accepting An Escrow Request
Request
curl "https://api.bitwyre.com/private/escrow" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X PUT \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\"escrow_id\": \"9fa11e7f-afdf-4e89-a8a7-5a2d95a34026\"}
}"
Response
{
"error": [],
"result": {
"status": "processing",
"escrow_id": "9fa11e7f-afdf-4e89-a8a7-5a2d95a34026"
}
}
Accepting a OTC escrow request
Endpoint
https://api.bitwyre.com/private/escrow
Request Fields/Parameters
Please refer to Authentication.
JSON Field | Value | Required | Description |
---|---|---|---|
"Payload" | string | True | escrow_id |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
status | string | Current status of the trade |
escrow_id | UUID-String | Unique ID for the escrow request |
Declining An Escrow Request
Request
curl "https://api.bitwyre.com/private/escrow" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X DELETE \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\"escrow_id\": \"9fa11e7f-afdf-4e89-a8a7-5a2d95a34026\"}"
Response
{
"error": [],
"result": {
"status": "rejected",
"escrow_uuid": "76f7704b-85c7-4cb8-9a71-e48293616701",
"status_reason": "counterparty_reject"
}
}
Declining a OTC escrow request
Endpoint
https://api.bitwyre.com/private/escrow
Request Fields/Parameters
Please refer to Authentication.
JSON Field | Value | Required | Description |
---|---|---|---|
"Payload" | string | True | escrow_id |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
status | string | Current status of the trade |
escrow_id | UUID-String | Unique ID for the escrow request |
status_reason | Stringtring | Reason of the current status |
Escrow History
Request
curl "https://api.bitwyre.com/private/escrow/history/<escrow_uuid>" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X GET
Response
{
"error": [],
"result": [
{
"base_amount": 1.0,
"escrow_uuid": "cb60899c-7fd2-47b7-9de3-55d2f65e8855",
"counterparty": "John",
"counterparty_id": "0950831861a05539f5ec74f8d5faafddad70fdf385804955532beb91052e458a",
"fee_amount": "0.01 BTC",
"fee_percentage": "0.01%",
"implied_price": "0.00000001 BTC/IDR",
"instrument": "btc_idr_spot",
"message": "Lee asks John to exchange 1.0 BTC for 100000000.0 IDR",
"order_expiry_time": 1618825892598826000,
"order_time": 1618822292598826000,
"quote_amount": 100000000.0,
"requester": "Lee",
"requester_id": "127e50eb9a6646e2833fee8d69477c7371e2cbc5fbb0a37b7f83b58f02f512d9",
"status": "processing",
"status_reason": ""
},
{
"base_amount": 1.0,
"escrow_uuid": "cb60899c-7fd2-47b7-9de3-55d2f65e8857",
"counterparty": "John",
"counterparty_id": "0950831861a05539f5ec74f8d5faafddad70fdf385804955532beb91052e458a",
"fee_amount": "0.01 BTC",
"fee_percentage": "0.01%",
"implied_price": "0.00000001 BTC/IDR",
"instrument": "btc_idr_spot",
"message": "Lee asks John to exchange 1.0 BTC for 100000000.0 IDR",
"order_expiry_time": 1618825892598826000,
"order_time": 1618822292598826000,
"quote_amount": 100000000.0,
"requester": "Lee",
"requester_id": "127e50eb9a6646e2833fee8d69477c7371e2cbc5fbb0a37b7f83b58f02f512d9",
"status": "rejected",
"status_reason": "counterparty_reject"
}
]
}
History of a user's OTC escrow trades
Endpoint
https://api.bitwyre.com/private/escrow
Request Fields/Parameters
Please refer to Authentication.
Payload Fields | Value | Required | Description |
---|---|---|---|
escrow_uuid | string | false | the unique escrow identifier, when speficied "all" will return every escrow transaction |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
status | string | The current status of the trade |
status_reason | string | Reason for the status |
requester | string | The username who initiated the trade |
requester_id | Hash-string | The hashed uuid who initiated the trade |
counterparty | string | The counterparty username |
counterparty_id | Hash-string | The counterparty hashed uuid |
escrow_id | UUID-String | Unique ID for the escrow request |
implied_price | Float-String | Base Amount/Quote Amount |
instrument | String | Instrument Base/Quote |
base_amount | String | The base amount to be traded |
quote_amount | String | The quote amount to be traded |
message | String | A simple message explaining the trade |
fee_percentage | Float-String | Amount of fee in percentage |
fee | Float-String | Amount of fee in quote asset |
timestamp | Integer | Nanosecond timestamp when order was specified |
order_expiry_time | Integer | Nanosecond timestamp when order would be expired |
Escrow History Pending
Request
curl "https://api.bitwyre.com/private/escrow/pending" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X GET
Response
{
"error": [],
"result": [
{
"base_amount": 1.0,
"escrow_uuid": "cb60899c-7fd2-47b7-9de3-55d2f65e8855",
"counterparty": "John",
"counterparty_id": "0950831861a05539f5ec74f8d5faafddad70fdf385804955532beb91052e458a",
"fee_amount": "0.01 BTC",
"fee_percentage": "0.01%",
"implied_price": "0.00000001 BTC/IDR",
"instrument": "btc_idr_spot",
"message": "Lee asks John to exchange 1.0 BTC for 100000000.0 IDR",
"order_expiry_time": 1618825892598826000,
"order_time": 1618822292598826000,
"quote_amount": 100000000.0,
"requester": "Lee",
"requester_id": "127e50eb9a6646e2833fee8d69477c7371e2cbc5fbb0a37b7f83b58f02f512d9",
"status": "processing",
"status_reason": ""
},
{
"base_amount": 1.0,
"escrow_uuid": "cb60899c-7fd2-47b7-9de3-55d2f65e8857",
"counterparty": "John",
"counterparty_id": "0950831861a05539f5ec74f8d5faafddad70fdf385804955532beb91052e458a",
"fee_amount": "0.01 BTC",
"fee_percentage": "0.01%",
"implied_price": "0.00000001 BTC/IDR",
"instrument": "btc_idr_spot",
"message": "Lee asks John to exchange 1.0 BTC for 100000000.0 IDR",
"order_expiry_time": 1618825892598826000,
"order_time": 1618822292598826000,
"quote_amount": 100000000.0,
"requester": "Lee",
"requester_id": "127e50eb9a6646e2833fee8d69477c7371e2cbc5fbb0a37b7f83b58f02f512d9",
"status": "processing",
"status_reason": ""
}
]
}
Return all still pending escrow request for the current user only
Endpoint
https://api.bitwyre.com/private/escrow
Request Fields/Parameters
Please refer to Authentication.
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
status | string | The current status of the trade |
status_reason | string | Reason for the status |
requester | string | The username who initiated the trade |
requester_id | Hash-string | The hashed uuid who initiated the trade |
escrow_id | UUID-String | Unique ID for the escrow request |
implied_price | Float-String | Base Amount/Quote Amount |
instrument | String | Instrument Base/Quote |
base_amount | String | The base amount to be traded |
quote_amount | String | The quote amount to be traded |
message | String | A simple message explaining the trade |
fee_percentage | Float-String | Amount of fee in percentage |
fee | Float-String | Amount of fee in quote asset |
timestamp | Integer | Nanosecond timestamp when order was specified |
order_expiry_time | Integer | Nanosecond timestamp when order would be expired |
Send Forum Posts
Request
curl "https://api.bitwyre.com/private/forum?nonce=17081945&checksum=<payload_checksum>&payload=" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X POST \
-d "{\
\"nonce\": 17081945,\
\"checksum\": \"somechecksum\",\
\"payload\": {\"post\": \"this be posts\",\"tagged\":\"john\"}\
}"
Response
{
"error": [],
"result": {
"success": true,
"timestamp": 1590654854095640000
}
}
Send a forum post
Endpoint
https://api.bitwyre.com/private/forum
Request Fields/Parameters
Please refer to Authentication.
JSON Field | Value | Required | Description |
---|---|---|---|
"Payload" | string | True | Post message |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
success | Bool | Acknoledgement that the post has been sent |
timestamp | Integer | Nanosecond timestamp |
Get Forum Posts
Request
curl "https://api.bitwyre.com/private/forum?nonce=17081945&checksum=<payload_checksum>&payload={\"tagged\":\"John\",\"poster\":\"Jane\",\"from_time\":\"123123\",\"to_time\":\"123123123\"}" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-H "Content-Type: application/json" \
-X GET \
Response
{
"error": [],
"result": [
{
"post": "ola",
"poster": "Jane",
"tagged": "John",
"timestamp": 1618212090462703000
}
]
}
Send a forum post
Endpoint
https://api.bitwyre.com/private/forum
Request Fields/Parameters
Please refer to Authentication.
JSON Field | Value | Required | Description |
---|---|---|---|
"Payload" | string | True | Tagged user, time range |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
success | Bool | Acknoledgement that the post has been sent |
timestamp | Integer | Nanosecond timestamp |
Posts | String | Received posts |
Getting Referrals Info
Request
curl "https://api.bitwyre.com/private/referrals?nonce=17081945&checksum=<payload_checksum>&payload=" \
-H "API-Key: someapikey" \
-H "API-Sign: somesignature" \
-X GET
Response
{
"error": [],
"result": {
"total_invited": 1,
"total_earned": { "btc": "0.001", "idr": "1000" }
}
}
Retrieve referrals info.
Endpoint
https://api.bitwyre.com/private/referrals
Request Fields/Parameters
Because this is a GET endpoint, nonce
& checksum
are query parameters, also payload
should be always an empty string.
The SHA256
steps for this endpoint's payload:
- jsonify an empty string.
- then SHA256 from above result.
Please refer to Authentication.
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
total_invited | int | People you invite |
total_earned | int | Total earned group by asset |
OTC
Get Crypto Networks
curl "https://api.bitwyre.com/app/otc/wallet/network" \
-H "Authorization: Bearer <access_token>" \
-X GET
Response
{
"error": [],
"result": [
{
"deposit_wallet_id": 13689,
"withdrawal_wallet_id": 13688,
"coin": "btc"
},
{
"deposit_wallet_id": 13687,
"withdrawal_wallet_id": 13686,
"coin": "eth"
},
{
"deposit_wallet_id": 13694,
"withdrawal_wallet_id": 13693,
"coin": "sol"
}
]
}
Retrieve list of available crypto networks
Endpoint
https://api.bitwyre.com/app/otc/wallet/network
Request Fields/Parameters
None
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
deposit_wallet_id | int | ID for Wallet Deposit |
withdrawal_wallet_id | int | ID for Wallet Withdrawal |
coin | string | Crypto Asset |
Get Crypto Wallet Balances
curl "https://api.bitwyre.com/app/otc/wallet/balance" \
-H "Authorization: Bearer <access_token>" \
-X GET
Response
{
"error": [],
"result": {
"data": [
{
"asset": "eth",
"icon_url": "https://robin.bitwyre.id/app/Raster/ETH_125px.png",
"asset_name": "Ethereum",
"total_balance": "2.34360451",
"type": "crypto",
"available_balance": "2.33076451",
"locked_balance": "0.01284"
},
{
"asset": "btc",
"icon_url": "https://robin.bitwyre.id/app/Raster/BTC_125px.png",
"asset_name": "Bitcoin",
"total_balance": "0.01291978",
"type": "crypto",
"available_balance": "0.01291978",
"locked_balance": "0"
},
],
"metadata": {
"page": 1,
"has_next": true
}
}
}
Retrieve list of user's available crypto wallet
Endpoint
https://api.bitwyre.com/app/otc/wallet/balance
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
type | string | true | Asset Type. Possible values are crypto |
page | string | true | Number of page of data that will be returned |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
asset | string | Asset |
icon_url | int | Asset icon URL |
asset_name | string | Asset name |
total_balance | string | User total balance |
type | string | Asset type |
available_balance | string | User available balance |
locked_balance | string | User locked balance |
Get Crypto Asset Lists
curl "https://api.bitwyre.com/app/otc/assets" \
-H "Authorization: Bearer <access_token>" \
-X GET
Response
{
"errors": [],
"result": [
{
"asset": "audf",
"name": "Australian Dollar Forte",
"icon_url": "https://robin.bitwyre.id/app/Raster/AUDF_125px.png"
},
{
"asset": "bidr",
"name": "Binance IDR Token",
"icon_url": "https://robin.bitwyre.id/app/Raster/BIDR_64px.png"
},
]
}
Retrieve list of available assets
Endpoint
https://api.bitwyre.com/app/otc/assets
Request Fields/Parameters
None
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
asset | string | Asset |
name | string | Asset name |
icon_url | int | Asset icon URL |
Generate Deposit Address
curl "https://api.bitwyre.com/app/otc/wallet/deposit?asset=eth&wallet_id={wallet_id}" \
-H "Authorization: Bearer <access_token>" \
-X GET
Response
{
"errors": [],
"result": {
"address": "0x1E210A64a7Bf01A4d6a021013A048F51dc0eDDE4",
"asset": "eth"
}
}
Generate Deposit Address For Wallet Balance OTC
Endpoint
https://api.bitwyre.com/app/otc/wallet/deposit?asset=eth&wallet_id={wallet_id}
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
asset | string | true | Asset Name. Possible values are in asset list |
wallet_id | int | true | Deposit Wallet ID from list networks |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
address | string | Address to deposit |
asset | string | Asset name |
Get Deposit Histories
curl "https://api.bitwyre.com/app/otc/wallet/deposit/histories?asset=btc" \
-H "Authorization: Bearer <access_token>" \
-X GET
Response
{
"errors": [],
"result": {
"data": [
{
"asset": "btc",
"date": "2023-12-20T05:45:11Z",
"gross_amount": "0.0001",
"nett_amount": "0.0001",
"fees": "0.00000416",
"txn": "https://blockstream.info/testnet/tx/d71767937f6a9486a6d70c524a081d70edc185c33585062f965ae417473b766b",
"status": "success"
},
{
"asset": "btc",
"date": "2023-12-20T05:44:39Z",
"gross_amount": "0.001",
"nett_amount": "0.001",
"fees": "0.00000143",
"txn": "https://blockstream.info/testnet/tx/b01850726154ef2ba586981eeabd69ac3fb778ae642cd8214c1af779580aa1d9",
"status": "success"
},
]
}
}
Get User Deposit Histories
Endpoint
https://api.bitwyre.com/app/otc/wallet/deposit/histories?asset={asset}
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
asset | string | true | Asset Name. Possible values are in asset list |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
asset | string | Asset name |
date | string | Deposit datetime |
gross_amount | string | Gross amount of deposit value |
nett_amount | string | Nett amount of deposit value |
fees | string | Deposit fee amount |
txn | string | Detail transaction URL |
status | string | Deposit status |
Get Withdrawal Histories
curl "https://api.bitwyre.com/app/otc/wallet/withdraw/histories?asset=eth" \
-H "Authorization: Bearer <access_token>" \
-X GET
Response
{
"errors": [],
"result": {
"data": [
{
"asset": "eth",
"date": "2023-12-20T09:39:12Z",
"gross_amount": "0.0012",
"nett_amount": "0.0012",
"fees": "0.000126",
"requested_amount": "0.0012",
"txn": "https://goerli.etherscan.io/tx/0x2016da3735503b8e2acbe3f3a76add7a7016988e5a333c6c9000135eac7c3a60",
"status": "confirmed"
},
{
"asset": "eth",
"date": "2023-12-19T21:54:24Z",
"gross_amount": "0.00329",
"nett_amount": "0.00329",
"fees": "0.000126",
"requested_amount": "0.00329",
"txn": "https://goerli.etherscan.io/tx/0x9951abfee7f69ae9bad086eabb5db04af4f9ad5c7fcb79548bd79902ec8fe73e",
"status": "confirmed"
},
]
}
}
Get User Withdrawal Histories
Endpoint
https://api.bitwyre.com/app/otc/wallet/withdraw/histories?asset={asset}
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
asset | string | true | Asset Name. Possible values are in asset list |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
asset | string | Asset name |
date | string | Withdrawal datetime |
gross_amount | string | Gross amount of withdrawal |
nett_amount | string | Nett amount of withdrawal |
fees | string | Withdrawal fee amount |
requested_amount | string | Total amount requested |
txn | string | Detail Withdrawal transaction URL |
status | string | Withdrawal status |
List Orders
curl "https://api.bitwyre.com/app/otc/orders?page=1" \
-H "Authorization: Bearer <access_token>" \
-X GET
Response
{
"errors": [],
"result": {
"data": [
{
"order_uuid": "163790b7-ee29-4688-80e7-7c28b761b312",
"instrument": "usdt_btc",
"side": "buy",
"rate_offers": "42433.39",
"qty": "10000.00",
"fee": "848.6677810308",
"total_received": "41584.7222189692",
"fee_percentage": 0.02,
"order_status": "need_confirmation",
"settlement_date": "2023-12-16T15:46:19Z",
"canceled_reason": null,
"created_at": "2023-12-14T15:46:19Z",
"updated_at": "2023-12-14T15:46:19Z",
"base_asset": {
"asset": "usdt",
"name": "USD Tether Stablecoin",
"icon_url": "https://robin.bitwyre.id/app/Raster/USDT_125px.png"
},
"quote_asset": {
"asset": "btc",
"name": "Bitcoin",
"icon_url": "https://robin.bitwyre.id/app/Raster/BTC_125px.png"
}
},
]
}
}
List of quote orders
Endpoint
https://api.bitwyre.com/app/otc/orders?page=1
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
page | int | false | page number for pagination |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
order_uuid | string | Order identifiers |
instrument | string | Order pairs information, example: eth_btc |
side | string | Order Side (deprecated soon) |
rate_offers | string | Rate for target assets |
qty | string | Order qty amount |
fee | string | Order fee amount |
total_received | string | Total amount that client will be received |
order_status | string | Current order status |
settlement_date | string | User settlement date that client requested |
canceled_reason | string | Reason if order got cancelled |
created_at | string | Order creation date |
updated_at | string | Order updated date |
base_asset | object | From asset information |
quote_asset | object | Target asset information |
Create Order
curl "https://api.bitwyre.com/app/otc/orders" \
-H "Authorization: Bearer <access_token>" \
-X POST \
--header 'Content-Type: application/json' \
--data '{
"instrument": "eth_btc",
"qty": "100",
"fee_percentage": 0.2,
"settlement_date": "2023-12-30"
}'
Response
{
"errors": [],
"result": {
"order_uuid": "4bf1fc83-5092-4c59-8247-3cc8cf2c3b3c"
}
}
Order Creation (Order Quotes)
Endpoint
https://api.bitwyre.com/app/otc/orders
Request Fields/Parameters
Body Parameter | Data Type | Required | Remark |
---|---|---|---|
instrument | string | true | Pairs information in FROM_TARGET format |
qty | string | true | Order quantity of FROM asset |
fee_percentage | float | true | Total fee of the order |
settlement_date | stringdate | true | Client settlement date request |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
order_uuid | string | Order created identifiers |
Update Order Status
curl "https://api.bitwyre.com/app/otc/orders/{order_uuid}" \
-H "Authorization: Bearer <access_token>" \
-X PUT \
--header 'Content-Type: application/json' \
--data '{
"status": "accepted",
"reason": ""
}'
Response
{
"errors": [],
"result": {
"success": true
}
}
Order Update (Quotes Confirmation)
Endpoint
https://api.bitwyre.com/app/otc/orders/{order_uuid}
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
order_uuid | string | true | Order identifiers to confirm |
Body Parameter | Data Type | Required | Remark |
---|---|---|---|
status | string | true | Status of orders confirmation, available values: accepted , rejected , cancelled |
reason | string | false | Cancellation reason (if applicable) |
Response Types (JSON Object as Key-Value Pair)
JSON Field | Data Type | Remark |
---|---|---|
success | bool | Result of operation |
Update Order Payment Data
Bank Payment
shell curl "https://api.bitwyre.com/app/otc/orders/{order_uuid}/payment" \ -H "Authorization: Bearer <access_token>" \ -X PUT \ --header 'Content-Type: application/json' \ --data '{ "type": "balance", "bank": { { "bank": "BCA", "bank_account_name": "bitwyre", "bank_account_number": "08123481313", "bank_swiftcode": "", "bank_country": "idr", } } }'
Crypto
shell curl "https://api.bitwyre.com/app/otc/orders/{order_uuid}/payment" \ -H "Authorization: Bearer <access_token>" \ -X PUT \ --header 'Content-Type: application/json' \ --data '{ "type": "crypto", "crypto": { "crypto_asset": "btc", "crypto_address": "1badadaajfafafkaafa" } }'
Response
{
"errors": [],
"result": {
"success": true
}
}
Endpoint
https://api.bitwyre.com/app/otc/orders/{order_uuid}/payment
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
order_uuid | string | true | Order identifiers to confirm |
Body Parameter | Data Type | Required | Remark |
---|---|---|---|
type | string | true | type of payment. available types : balance and crypto |
crypto | object | false | {"crypto_asset": "btc", "crypto_address": "1badadadaddad"} |
balance | object | false | {"bank": "BCA", "bank_account": "1badadadaddad", "banck_account_number": "13145225252", "bank_swiftcode": "DDJIA", "bank_country": "idr"} |
For update payment all address is internal address from bitwyre (generated by user via our platform)
Update Order Settlement Data
Bank Payment
shell curl "https://api.bitwyre.com/app/otc/orders/{order_uuid}/settlement" \ -H "Authorization: Bearer <access_token>" \ -X PUT \ --header 'Content-Type: application/json' \ --data '{ "type": "balance", "bank": { { "bank": "BCA", "bank_account_name": "bitwyre", "bank_account_number": "08123481313", "bank_swiftcode": "", "bank_country": "idr", } } }'
Crypto
shell curl "https://api.bitwyre.com/app/otc/orders/{order_uuid}/settlement" \ -H "Authorization: Bearer <access_token>" \ -X PUT \ --header 'Content-Type: application/json' \ --data '{ "type": "crypto", "crypto": { "crypto_asset": "btc", "crypto_address": "1badadaajfafafkaafa" } }'
Response
{
"errors": [],
"result": {
"success": true
}
}
Endpoint
https://api.bitwyre.com/app/otc/orders/{order_uuid}/settlement
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
order_uuid | string | true | Order identifiers to confirm |
Body Parameter | Data Type | Required | Remark |
---|---|---|---|
type | string | true | type of payment. available types : balance and crypto |
crypto | object | false | {"crypto_asset": "btc", "crypto_address": "1badadadaddad"} |
balance | object | false | {"bank": "BCA", "bank_account": "1badadadaddad", "banck_account_number": "13145225252", "bank_swiftcode": "DDJIA", "bank_country": "idr"} |
For update payment all address is external address (user personal wallet)
Withdrawal Request
Request
shell curl "https://api.bitwyre.com/app/otc/wallet/withdrawl" \ -H "Authorization: Bearer <access_token>" \ -X POST \ --header 'Content-Type: application/json' \ --data '{ "target_address": "bc1q8cgmzxm5yp3e452jnzw2k6ad530uujl6ekvpcv", "asset": "btc", "amount": "0.0000341" }'
Response
{
"errors": [],
"result": {
"success": true
}
}
Endpoint
https://api.bitwyre.com/app/otc/wallet/withdraw
Request Fields/Parameters
Body Parameter | Data Type | Required | Remark |
---|---|---|---|
target_address | string | true | user personal destination address |
asset | string | true | asset |
amount | string | true | amount to deduct |
List Transaction OTC
Request
shell curl "https://api.bitwyre.com/app/otc/transaction?page=1" \ -H "Authorization: Bearer <access_token>" \ -X POST \ --header 'Content-Type: application/json'
Response
shell { "errors": [], "result": { "data": [ { "tx_uuid": "b67d4f7c-7f41-48f4-95ae-af972b66d100", "instrument": "eth_btc", "order_uuid": "4bf1fc83-5092-4c59-8247-3cc8cf2c3b3c", "order_status": 2, "order_side": 1, "order_qty": "100.00", "order_total_received": "5.1589505409", "tx_status": 1, "tx_type": "crypto/crypto", "payment_type": null, "payment_status": null, "payment_complete_date": null, "payment_bank": null, "payment_bank_account_name": null, "payment_bank_account_number": null, "payment_bank_swiftcode": null, "payment_bank_country": null, "payment_crypto_asset": null, "payment_crypto_address": null, "settlement_type": null, "settlement_status": null, "settlement_complete_date": null, "settlement_bank": null, "settlement_bank_account_name": null, "settlement_bank_account_number": null, "settlement_bank_swiftcode": null, "settlement_bank_country": null, "settlement_crypto_asset": null, "settlement_crypto_address": null, "created_at": "2023-12-20T12:10:28Z", "updated_at": "2023-12-20T12:10:28Z", "base_asset": { "asset": "eth", "name": "Ethereum", "icon_url": "https://robin.bitwyre.id/app/Raster/ETH_125px.png" }, "quote_asset": { "asset": "btc", "name": "Bitcoin", "icon_url": "https://robin.bitwyre.id/app/Raster/BTC_125px.png" } }, { "tx_uuid": "b45a660a-f182-40c3-a2d8-8bc357e3b507", "instrument": "eth_btc", "order_uuid": "5f11c4f2-302f-48ef-88a4-27b8112fc65c", "order_status": 2, "order_side": 1, "order_qty": "0.0090", "order_total_received": "0.0009", "tx_status": 3, "tx_type": "crypto/crypto", "payment_type": 3, "payment_status": "completed", "payment_complete_date": "2023-12-14T15:03:40Z", "payment_bank": "", "payment_bank_account_name": "", "payment_bank_account_number": "", "payment_bank_swiftcode": null, "payment_bank_country": null, "payment_crypto_asset": "", "payment_crypto_address": "", "settlement_type": 3, "settlement_status": null, "settlement_complete_date": "2023-12-14T15:13:12Z", "settlement_bank": "", "settlement_bank_account_name": "", "settlement_bank_account_number": "", "settlement_bank_swiftcode": null, "settlement_bank_country": null, "settlement_crypto_asset": "", "settlement_crypto_address": "", "created_at": "2023-12-14T14:51:39Z", "updated_at": "2023-12-14T15:13:12Z", "base_asset": { "asset": "eth", "name": "Ethereum", "icon_url": "https://robin.bitwyre.id/app/Raster/ETH_125px.png" }, "quote_asset": { "asset": "btc", "name": "Bitcoin", "icon_url": "https://robin.bitwyre.id/app/Raster/BTC_125px.png" } } ], "metadata": { "page": 1, "has_next": false } } }
Endpoint
https://api.bitwyre.com/app/otc/transaction?page=1
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
page | string | true | page |
Websocket Public API Endpoints
WS Server Time
Connecting
websocat -E "wss://api.bitwyre.com/ws/public/time"
Streaming Responses (1 Hz)
{"unixtime":1571744594571020435}
{"unixtime":1571744595571648685}
{"unixtime":1571744596571345719}
{"unixtime":1571744597571387480}
...
Streams server's time every second.
This helps in approximating the time difference between the server and client.
WS Endpoint
wss://api.bitwyre.com/ws/public/time
WS Request Fields/Parameters
WS Streaming Data Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
"unixtime" | big-number/i64 | unix time in nanoseconds |
Websocket Stream
Connecting
websocat -E "wss://api.bitwyre.com/ws/stream"
Bitwyre allows subscribing to real-time data. This access is not rate-limited once connected and is the best way to get the most up-to-date data to your programs.
To subscribe to topics, send them as a comma-separated list in your connection string. For example:
websocat -E wss://api.bitwyre.com/ws/stream
If you are already connected and wish to subscribe to a new topic, send a message with the following format:
{"op": "subscribe", "args": [<SubscriptionTopic1>, <SubscriptionTopic2>, ...]}
You may subscribe to multiple topics at a time by sending an array of subscription topics.
The following subscription topics are available without authentication:
Topic Subscription | Data Description |
---|---|
announcement | Site announcements |
markets | The markets supported by Bitwyre e.g crypto, equities, commodities, fixed_income |
products | The products supported by Bitwyre |
assets | The assets supported by Bitwyre |
instruments:market_product_country | The instrument supported by Bitwyre in the format ex. btc_usdt_spot for jurisdictions |
contract | The contract details for a derivative instrument/asset pair traded at Bitwyre |
ticker:instrument | The ticker stream supported for instruments at Bitwyre |
trades:instrument | The trades stream supported for instruments at Bitwyre |
depthl2:instrument | The L2 (full snapshot) depth stream supported for instruments at Bitwyre |
depthl2_10:instrument | The L2 (full snapshot) top 10 depth stream supported for instruments at Bitwyre |
depthl2_25:instrument | The L2 (full snapshot) top 25 depth stream supported for instruments at Bitwyre |
depthl2_incr:instrument | The L2 (incremental/changes) only stream supported for instruments at Bitwyre |
depthl3:instrument | The L3 market data stream supported for instruments at Bitwyre |
If you wish to get real-time order book data, we recommend you use the depthl2_25 subscription. depth10 pushes the top 10 levels on every tick, but transmits much more data. depthl2 pushes the full L2 order book, but the payload can get very large. orderbookL2_25 provides a subset of the full L2 orderbook, but is throttled. In the future, depth10 may be throttled, so use depthl2 in any latency-sensitive application. For those curious, the id on an depthl2_25 or depthl2 entry is a composite of price and symbol, and is always unique for any given price level. It should be used to apply update and delete actions.
When applicable, subjects may be filtered to a given instrument by appending a colon and instrument name. For example, trade:btc_usdt_spot will subscribe you to messages only for the btc_usdt_spot instrument.
Example traffic data would be
> {"op": "subscribe", "args": ["depthl2:btc_usdt_spot"]}
< {"success":true,"subscribe":"depthl2:btc_usdt_spot","request":{"op":"subscribe","args":["depthl2:btc_usdt_spot"]}}
< {
"table": "depthl2",
"action": "snapshot",
"data": {
"instrument": "btc_usdt_spot",
"bids": [
{
"price": "41787.99",
"qty": "0.00019"
},
{
"price": "41786.99",
"qty": "0.00019"
},
{
"price": "41785.99",
"qty": "0.00019"
},
],
"asks": [
{
"price": "41893.88",
"qty": "0.00025"
},
{
"price": "41894.88",
"qty": "0.00025"
},
{
"price": "41895.88",
"qty": "0.00025"
},
]
}
}
...
Upon subscription, you will receive an image of the existing data, so you can get started. This comes through as a snapshot action.
You may receive other messages before the snapshot comes through. In that case, drop any messages received until you have received the snapshot.
Some notes on this response:
- After the subscription acknowledgement, you will receive a message with "action": "snapshot". This is an image of the table, after which you can apply incremental changes.
- If you receive any messages before the snapshot, ignore them.
- The partial also contains some table information, like keys, types. Depending on your application, this data may be useful.
- Columns listed in keys always come back on an insert, delete, or update. Use them to look up which items to modify in your storage.
You may unsubscribe using the 'unsubscribe' operation. The formatting is identical to 'subscribe'. Several stream channels are described below.
WS Instruments
Connecting and Query/Request
websocat -E "wss://api.bitwyre.com/ws/stream"
Query Response
> {"op": "subscribe", "args": ["instruments:crypto_spot_ID"]}
< {"success":true,"subscribe":"instruments:crypto_spot_ID","request":{"op":"subscribe","args":["instruments:crypto_spot_ID"]}}
< {
"table":"instruments:crypto_spot_ID",
"keys":["instrument", "symbol"],
"types": {"str", "str"}
"action": "snapshot",
"data": [
{"instrument": "btc_idr_spot", "symbol" : "BTC/IDR"},
{"instrument": "bch_idr_spot", "symbol": "BCH/IDR"},
{"instrument": "eth_idr_spot", "symbol": "ETH/IDR"},
...
]
}
...
Returns an underscore _
delimited tradable asset instruments array.
A sample response for a futures market in crypto:
Request
websocat -E "wss://api.bitwyre.com/ws/stream"
Response
> {"op": "subscribe", "args": ["instruments:crypto_futures_PA"]}
< {"success":true,"subscribe":"instruments:crypto_futures_PA","request":{"op":"subscribe","args":["instruments:crypto_futures_PA"]}}
< {
"table":"instruments:crypto_futures_PA",
"keys":["instrument", "symbol"],
"types": {"str", "str"}
"action": "snapshot",
"data": [
{"instrument": "btcusdtx_usdt_200607F1000000", "symbol" : "BTCM0"}, # BTC USD Index, futures contract, settled in USD, delivery on June 7th 2020, strike price of 10000 USD
{"instrument": "bchusdtx_usdt_200607F30000", "symbol": "BCHM0"}, # BCH USD Index, futures contract, settled in USD, delivery on June 7th 2020, strike price of 300 USD
{"instrument": "ethusdtx_usdt_200607F50000", "symbol": "ETHM0"}, # ETH USD Index, futures contract, settled in USD, delivery on June 7th 2020, strike price of 300 USD
...
]
}
...
We are using an _
(underscore) delimited convention to refer our futures and options product: underlying_settlementcurrency_productdetails
.
- Underlying financial instrument price.
btcusdtx
here is the Bitcoin to USD index on Bitwyre's exchange; a weighted average of worldwide Bitcoin spot market index price. - Settlement currency,
USD
. - Product details:
- Expiration date: 6 digits in the
YYMMDD
format. - Products:
F
for Futures.- For Options, either
P
forput
orC
forcall
. S
for Swaps.
- Strike price: settlement currency in cents (For this
USD
example,10000
here means100
dollars).
- Expiration date: 6 digits in the
A sample response for an options market in crypto:
Request
websocat -E "wss://api.bitwyre.com/ws/stream"
Response
> {"op": "subscribe", "args": ["instruments:crypto_futures_PA"]}
< {"success":true,"subscribe":"instruments:crypto_futures_PA","request":{"op":"subscribe","args":["instruments:crypto_futures_PA"]}}
< {
"table":"instruments:crypto_futures_PA",
"keys":["instrument", "symbol"],
"types": {"str", "str"}
"action": "snapshot",
"data": [
{"instrument": "btcusdtx_usdt_200607C1000000", "symbol" : "BTCM0"}, # BTC USD Index, call options, settled in USD, delivery on June 7th 2020, strike price of 10000 USD
{"instrument": "bchusdtx_usdt_200607C30000", "symbol" : "BCHM0"}, # BCH USD Index, call options, settled in USD, delivery on June 7th 2020, strike price of 300 USD
{"instrument": "ethusdtx_usdt_200607C50000", "symbol" : "ETHM0"}, # ETH USD Index, call options, settled in USD, delivery on June 7th 2020, strike price of 300 USD
{"instrument": "btcusdtx_usdt_200607P500000", "symbol" : "BTCM0"}, # BTC USD Index, put options, settled in USD, delivery on June 7th 2020, strike price of 5000 USD
{"instrument": "bchusdtx_usdt_200607P10000", "symbol" : "BCHM0"}, # BCH USD Index, put options, settled in USD, delivery on June 7th 2020, strike price of 100 USD
{"instrument": "ethusdtx_usdt_200607P10000", "symbol" : "ETHM0"}, # ETH USD Index, put options, settled in USD, delivery on June 7th 2020, strike price of 100 USD
...
]
}
...
The product btcusdtx_usdt_200607C1000000
means a call contract
with delivery on June 7th, 2020
, at the strike price of 10,000
of the underlying financial instrument BTCUSDX
). btcusdtx_usdt_200607P200000
means a put contract
with delivery on June 7th, 2020
, at the strike price of 2,000
of the underlying financial instrument BTCUSDX
).
Returns a comma delimited tradable asset instruments array.
WS Endpoint
wss://api.bitwyre.com/ws/public/instruments
WS Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
"market" | string | true | crypto , equities , fixed_income , or commodities |
"product" | string | true | spot , futures , options , or swaps |
"country" | string | true | ISO 3166-2 Country Code. Only ID or PA for now |
WS Response Types (JSON Array)
JSON Field | Data Type | Remark |
---|---|---|
JSON-array | string | base asset, quote asset, product filter, delimited with an _ (underscore). |
WS Ticker
Connecting
websocat -E "wss://api.bitwyre.com/ws/stream"
Streaming Responses (on new ticker)
> {"op": "subscribe", "args": ["ticker:btc_usdt_spot"]}
< {"success":true,"subscribe":"ticker:btc_usdt_spot","request":{"op":"subscribe","args":["ticker:btc_usdt_spot"]}}
< {
"table":"ticker:btc_usdt_spot",
"keys":["instrument", "asset_base", "asset_quote", "high", "low", "percent_change", "vol_base", "vol_quote", "percent_change", "vol_base", "vol_quote", "last", "best_bid", "best_ask", "timestamp", "market", "product", "is_frozen"],
"types": {"str", "str", "str", "str", "str", "str", "str", "str", "str", "str", "str", "str", "str", "str", "bool"}
"action": "insert",
"data": {
"instrument": "btc_usdt_spot",
"asset_base": "btc",
"asset_quote": "usdt",
"high": "126989000",
"low": "115201000",
"percent_change": "-2.123",
"vol_base": "611.66499447",
"vol_quote": "7434324.9431",
"last": "124783000",
"best_bid": "124761000",
"best_ask": "124777000",
"timestamp": 1571744594571020435,
"market": "crypto",
"product": "spot",
"is_frozen": false
}
}
...
...
Streams new ticker information for an asset pair, if no asset pair specified the websocket service will stream all instruments ticker.
WS Endpoint
wss://api.bitwyre.com/ws/stream
WS Request Fields/Parameters (during handshake)
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
"instrument" | string | false | base asset, quote asset, product filter, delimited with an _ (underscore). |
If the instrument
paremeter is empty or omitted, will return the ticker data of all available asset instruments.
WS Streaming Data Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
"instrument" | string | base asset, quote asset, product filter, delimited with an _ (underscore). |
"asset_base" | string | base asset in the trade pair |
"asset_quote" | string | quote asset in the trade pair |
"high" | float-string | highest market price in the last 24 hours |
"low" | float-string | lowest market price in the last 24 hours |
"percent_change" | float-string | market price change percentage in the last 24 hours (up to 8 precision). |
"vol_base" | float-string | total market volume of the base asset in the last 24 hours |
"vol_quote" | float-string | total market volume of the quote asset in the last 24 hours |
"last" | float-string | last market price for the base asset |
"best_bid" | float-string | current highest bid price |
"best_ask" | float-string | current lowest ask price |
"timestamp" | big-integer | ticker timestamp, unixtime in nanoseconds |
"market" | enum-string | "spot", "futures", "perpetual_swap", "options" |
"is_frozen" | boolean | market frozen status |
WS Trades
Connecting
websocat -E "wss://api.bitwyre.com/ws/stream"
Streaming Responses (on new trade)
> {"op": "subscribe", "args": ["trades:btc_usdt_options"]}
< {"success":true,"subscribe":"trades:btc_usdt_options","request":{"op":"subscribe","args":["trades:btc_usdt_options"]}}
< {
"table":"trades:btc_usdt_options",
"keys":["instrument", "price", "volume", "value", "side". "id", "timestamp"],
"types": {"str", "str", "str", "str", "str", "str", "int"}
"action": "insert",
"data": {
"instrument": "btc_usdt_options",
"price": "9000",
"volume": "2",
"value": "18000",
"side": 1,
"id": "a911b7c0-e431-424f-9f05-49a8ef0c7d93",
"timestamp": 1571744594571020435
}
}
...
Streams new trade information for an asset pair, if no asset pair specified the websocket service will stream all instruments new trade.
WS Endpoint
wss://api.bitwyre.com/ws/stream
WS Request Fields/Parameters (during handshake)
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
"instrument" | string | false | base asset, quote asset, product filter, delimited with an _ (underscore). |
WS Streaming Data Types (Array of JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
"instrument" | string | base asset, quote asset, product filter, delimited with an _ (underscore). |
"price" | float-string | price/quote asset of the traded base asset |
"volume" | float-string | volume of the traded base asset |
"value" | float-string | quote value (price x volume) |
"side" | enum-number | trade type ( 1 - buy; 2 - sell ) |
"id" | uuid-string | universal unique id of the trade |
"timestamp" | big-integer | trade timestamp, unixtime in nanoseconds |
WS Depth L2
Connecting
websocat -E "wss://api.bitwyre.com/ws/stream"
Streaming Responses (on orderbook change)
> {"op": "subscribe", "args": ["depthl2:btc_usdt_spot"]}
< {"success":true,"subscribe":"depthl2:btc_usdt_spot","request":{"op":"subscribe","args":["depthl2:btc_usdt_spot"]}}
< {
"table": "depthl2",
"action": "snapshot",
"data": {
"instrument": "btc_usdt_spot",
"bids": [
{
"price": "41787.99",
"qty": "0.00019"
},
{
"price": "41786.99",
"qty": "0.00019"
},
{
"price": "41785.99",
"qty": "0.00019"
},
],
"asks": [
{
"price": "41893.88",
"qty": "0.00025"
},
{
"price": "41894.88",
"qty": "0.00025"
},
{
"price": "41895.88",
"qty": "0.00025"
},
]
}
}
...
...
Streams full L2 orderbook data.
WS Endpoint
wss://api.bitwyre.com/ws/stream
WS Request Fields/Parameters (during handshake)
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
"instrument" | string | false | base asset, quote asset, product filter, delimited with an _ (underscore). |
WS Streaming Data Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
"bids" | array-of-float-string-tuple | current bid orders in the orderbook |
"asks" | array-of-float-string-tuple | current ask orders in the orderbook |
"is_frozen" | boolean | market frozen status |
WS Depth L2 Top 25 Snapshot
Connecting
websocat -E "wss://api.bitwyre.com/ws/stream"
Streaming Responses
> {"op": "subscribe", "args": ["depthl2_25:btcusdtx_usdt_200607F1000000"]}
< {"success":true,"subscribe":"depthl2_25:btcusdtx_usdt_200607F1000000","request":{"op":"subscribe","args":["depthl2_25:btcusdtx_usdt_200607F1000000"]}}
< {
"table":"depthl2_25",
"keys":["instrument", "sequence_number", "bids", "asks", "is_frozen"],
"types": {"str", "int", "list", "list", "bool"}
"action": "snapshot",
"data":{
"instrument": "btcusdtx_usdt_200607F1000000",
"sequence_number": 100000,
"bids": [["124112000", "0.18154050"], ["124110000", "0.47319750"]] ..., # length 25
"asks": [["124130000", "0.03701609"], ["124251000", "0.03223585"]] ..., # length 25
"is_frozen": false
}
}
< {
"table":"depthl2_25",
"action":"update",
"data":{
"instrument": "btc_usdt_spot",
"sequence_number": 100001,
"timestamp": 1591592172780386000,
"price": 9000,
"qty": 2,
}
}
< {
"table":"depthl2_25",
"action":"insert",
"data":{
"instrument": "btc_usdt_spot",
"sequence_number": 100002,
"timestamp": 1591592172780386000,
"price": -9000, # could be negative for asks
"qty": 2, # positive for insertion
}
}
< {
"table":"depthl2_25",
"action": "delete",
"data":{
"instrument": "btc_usdt_spot",
"sequence_number": 100003,
"timestamp": 1591592172780386000,
"price": 9000, # positive for bids
"qty": -2, # negative for removal of liquidity
}
}
...
Streams orderbook depthL2 top 25 levels for bids and asks.
WS Endpoint
wss://api.bitwyre.com/ws/stream?=depthl2_25:<instrument>
WS Request Fields/Parameters (during handshake)
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
"instrument" | string | false | base asset, quote asset, product filter, delimited with an _ (underscore). |
WS Streaming Data Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
"bids" | array-of-float-string-tuple | current bid orders in the orderbook |
"asks" | array-of-float-string-tuple | current ask orders in the orderbook |
"is_frozen" | boolean | market frozen status |
WS Announcement
Connecting
websocat -E "wss://api.bitwyre.com/ws/stream"
Streaming Responses (1 Hz)
> {"op": "subscribe", "args": ["announcement"]}
< {"success":true,"subscribe":"announcement","request":{"op":"subscribe","args":["announcement"]}}
< {
"table":"announcement",
"keys":["unixtime", "announcement"],
"types": {"str", "str"}
"action": "snapshot",
"data":{
{"unixtime":1571744594571020435, "announcement": "halting btc_usdt_spot trading"},
{"unixtime":1571744594571020435, "announcement": "restoring btc_usdt_spot trading"},
}
}
< {
"table":"announcement",
"keys":["unixtime", "announcement"],
"types": {"str", "str"}
"action": "incremental",
"data":{
{"unixtime":1571744594571020435, "announcement": "halting eth_usdt_spot trading"},
}
}
Streams server's time every second an announcement for at least 1 minute full for an announcement of event
WS Endpoint
wss://api.bitwyre.com/ws/stream
WS Request Fields/Parameters
WS Streaming Data Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
"unixtime" | big-integer | unix time in nanoseconds |
"announcement" | string | announcement |
WS Contract
Connecting
websocat -E "wss://api.bitwyre.com/ws/stream"
Streaming Responses (1 Hz)
> {"op": "subscribe", "args": ["contract:btcusdtx_usdt_200607F1000000"]}
< {"success":true,"subscribe":"contract:btcusdtx_usdt_200607F1000000","request":{"op":"subscribe","args":["contract:btcusdtx_usdt_200607F1000000"]}}
< {
"table":"contract:btcusdtx_usdt_200607F1000000",
"keys":["instrument", "details", "pricing_source", "bitwyre_index_price", "bitwyre_index_price_currency", "24h_volume", "24h_volume_currency", "open_interest", "interest_rate", "contract_value", "contract_value", "initial_margin_base_value", "maintenance_margin_base_value"],
"types": {"str", "str", "str", "str", "str", "str", "str", "str", "str", "str", "str", "str", "str"}
"action": "snapshot",
"data":{}
"instrument": "btcusdtx_usdt_200607F1000000",
"details": "contract for cash delivery of BTC/USD index settled for July 6th, 2020 for the strike price of 10,000 USD",
"pricing_source": "CME Bitcoin Real Time Index",
"bitwyre_index_price": "11500.00",
"bitwyre_index_price_currency": "USD",
"24h_volume": "800,000,000.00",
"24h_volume_currency": "USD",
"open_interest": "600,000,000.00",
"interest_rate": "0.001%",
"contract_value": "1 USD",
"initial_margin_base_value": "1%",
"maintenance_margin_base_value": "0.5%"
}
}
...
Streams server's time every second the contract details for a derivative instrument/asset pair.
WS Endpoint
wss://api.bitwyre.com/ws/stream?subscribe=contract
WS Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
"instrument" | string | true | base asset, quote asset, product filter, delimited with an _ (underscore). |
WS Streaming Data Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
"instrument" | string | base asset, quote asset, product filter, delimited with an _ (underscore). |
"details" | string | detail of financial contract |
"pricing_source" | string | source of index pricing |
"bitwyre_index_price" | float-string | price of index |
"bitwyre_index_price_currency" | string | currency of price index |
"24h_volume" | string | 24 hour traded volume of instrument |
"24h_volume_currency" | string | currency reference for 24 hour traded volume |
"open_interest" | string | the number of contracts or commitments outstanding in futures and options that are trading on an official exchange at any one time. |
"interest_rate" | percentage-string | interest rate reference for valuation reference |
"contract_value" | string | 1 contract value equivalent in USD |
"initial_margin_base_value" | string | initial margin percentage |
"maintenance_margin_base_value" | string | maintenance margin percentage |
Websocket Private API Endpoints
WS Account Balance
Example Connection With JWT Token
websocat -E "wss://api.bitwyre.com/ws/private/account/balance" -H "Authorization: Bearer <token>"
> {
"command": "get",
"payload": ""
}
Connecting and Query/Request (Note: minify the json request for websocat)
Example Connection With API-Key
websocat -E "wss://api.bitwyre.com/ws/private/account/balance" -H "API-Data:{\"api_key\": \"someapikey\", \"api_sign\": \"somesignature\"}"
> {
"command": "get",
"payload": ""
}
Query Response (on message event)
{
"eur": {
"locked_balance": "0",
"available_balance": "92233720368.54776",
"total_balance": "92233720368.54776"
},
"usdc": {
"locked_balance": "0",
"available_balance": "0.23901208",
"total_balance": "0.23901208"
},
... #and all other coin balances
}
Retrieve all user's fiat and crypto balance.
WS Endpoint
wss://api.bitwyre.com/ws/private/account/balance
WS Request Base Structure
JSON Field | Data Type | Required | Remark |
---|---|---|---|
"command" | string | true | always get . |
"api_key" | string | true | see API Key. |
"api_sign" | string | true | see API Sign. |
"payload" | json-object/array | true | although required, the value must be "" (empty string). |
WS Account Balance Response Types
JSON Object inside asset_name
as key
JSON Field | Data Type | Remark |
---|---|---|
locked_balance | float-string | amount of locked balance. |
available_balance | float-string | available asset balance. |
total_balance | float-string | amount of total balance. |
WS Orders Creation
Authentication
A private websocket channel is opened only after sending the right authentication response to the server. This is also similar to FIX order entry.
Handshake
Using a JWT
websocat -E "wss://api.bitwyre.com/ws/private/orders/control/v2" -H "Authorization: Bearer <token>"
> {
"command": "create",
"payload": "{
\"instrument\": \"btc_usdt_spot\",
\"ordtype\": 2,
\"side\": 2,
\"price\": \"62500\",
\"orderqty\": \"2.9301\" }",
"request_id": "60c204b0-43e6-407e-8227-aba8eae9cf5c"
}
Or using API Key and API Signatures
websocat -E "wss://api.bitwyre.com/ws/private/orders/control/v2" -H "API-Data:{\"api_key\": \"someapikey\", \"api_sign\": \"somesignature\"}"
> {
"command": "create",
"payload": "{
\"instrument\": \"btc_usdt_spot\",
\"ordtype\": 2,
\"side\": 2,
\"price\": \"62500\",
\"orderqty\": \"2.9301\" }",
"request_id": "60c204b0-43e6-407e-8227-aba8eae9cf5c"
}
Connecting and New Market Order request (for market order just provide the
price
with any number)Now since the channel is open, the client can ask a series of commands to the server without conducting authentication anymore, this can be done as fast as possible with rate-limits of 15000 requests per minute.
websocat -E "wss://api.bitwyre.com/ws/private/orders/control/v2"
> {
"command": "create",
"payload": "{
\"instrument\": \"btc_usdt_spot\",
\"ordtype\": 1,
\"side\": 2,
\"price\": \"62500\",
\"orderqty\": \"2.9301\" }",
"request_id": "60c204b0-43e6-407e-8227-aba8eae9cf5c"
}
Query Response
{
"request_id": "60c204b0-43e6-407e-8227-aba8eae9cf5c",
"code": "200"
}
Create a new trade order.
WS Endpoint
wss://api.bitwyre.com/ws/private/orders/control/v2
WS Request Base Structure
JSON Field | Data Type | Required | Remark |
---|---|---|---|
"command" | string | true | always create . |
"api_key" | string | true | see API Key. |
"api_sign" | string | true | see API Sign. |
"payload" | json-object | true | see Create Order Payload. |
"request_id" | uuid-string | true | randomly |
generated uuid string. |
WS Response Type
A json object of request_id
and code
.
WS Orders Cancellation
Connecting and Cancelling an order (Note: minify the json request for websocat)
Same as creating the order, the client also needs to open a channel first like above and then send a cancellation order by specifying the command as cancel.
Handshake
Using a JWT
websocat -E "wss://api.bitwyre.com/ws/private/orders/control/v2" -H "Authorization: Bearer <token>"
> {
"command": "cancel",
"payload": "{\"order_id\": [\"31911e87-b547-480f-b8d1-4515529ca2fd\"], \"qtys\": [-1.0]}",
"request_id": "c13c7105-0692-4667-893b-4ae299f72e29"
}
Or using API Key and API Signatures
websocat -E "wss://api.bitwyre.com/ws/private/orders/control/v2" -H "API-Data:{\"api_key\": \"someapikey\", \"api_sign\": \"somesignature\"}"
> {
"command": "cancel",
"payload": "{\"order_id\": [\"31911e87-b547-480f-b8d1-4515529ca2fd\"], \"qtys\": [-1.0]}",
"request_id": "c13c7105-0692-4667-893b-4ae299f72e29"
}
Query Response
{
"request_id": "c13c7105-0692-4667-893b-4ae299f72e29",
"code": "200"
}
Cancels open orders by its ID, can be bulk.
WS Endpoint
wss://api.bitwyre.com/ws/private/orders/control/v2
WS Request Base Structure
JSON Field | Data Type | Required | Remark |
---|---|---|---|
"command" | string | true | always cancel . |
"api_key" | string | true | see API Key. |
"api_sign" | string | true | see API Sign. |
"payload" | json-array | true | json array of open order's ID and its respective quantities. |
"request_id" | uuid-string | true | randomly |
generated uuid string. |
WS Response Type
A json object of request_id
and code
.
WS Orders Status
Connecting and Status Query of an order (Note: minify the json request for websocat)
websocat -E "wss://api.bitwyre.com/ws/private/orders/status" -H "API-Data:{\"api_key\": \"someapikey\", \"api_sign\": \"somesignature\"}"
> {
"command": "get",
"payload": "{\"orderid\": \"732f066e-feed-baad-beef-e000ed83243a\", \"instrument\": \"btc_usdt_spot\"}"
}
Connecting and get all open orders of an instrument
websocat -E "wss://api.bitwyre.com/ws/private/orders/status" -H "API-Data:{\"api_key\": \"someapikey\", \"api_sign\": \"somesignature\"}"
> {
"command": "get",
"payload": "{\"orderid\": \"all\", \"instrument\": \"btc_usdt_spot\"}"
}
Query Response (on message event)
{
"orderid": "732f066e-feed-baad-beef-e000ed83243a",
"origclid": "732f066e-feed-baad-beef-e000ed83243a",
"execid": "71605de8-efa4-4e20-bcfb-5f23d90f26c2",
"ordstatusReqID": "3064760e-a92d-4b60-bf9c-a241b36c134a",
"exectype": 10,
"ordstatus": 10,
"account": "redacted",
"instrument": "btc_usdt_spot",
"side": 1,
"transacttime": 1574232727730188710,
"orderqty": "2.9301",
"timestamp": 1574174854272003795,
"ordtype": 2,
"price": "9800.5",
"leavesqty": "2.9301",
"cumqty": "0"
}
Retrieves information on a specific order.
WS Endpoint
wss://api.bitwyre.com/ws/private/orders/status
WS Request Base Structure
JSON Field | Data Type | Required | Remark |
---|---|---|---|
"command" | string | true | always get . |
"api_key" | string | true | see API Key. |
"api_sign" | string | true | see API Sign. |
"payload" | json-object | true | json object containing an orderid and instrument . |
WS Response Type
See Execution Report Response.
WS Orders Events
Connecting and Subscribing to Orders Events (Note: minify the json request for websocat)
websocat -E "wss://api.bitwyre.com/ws/private/orders/events" -H "API-Data:{\"api_key\": \"someapikey\", \"api_sign\": \"somesignature\"}"
> {
"command": "subscribe",
"payload": "{\"instrument\": \"btc_usdt_spot\"}"
}
Streaming Execution Report (on message event)
{
"orderid": "97a2387d-5eed-4001-a5eb-67e0e0671645",
"origclid": "97a2387d-5eed-4001-a5eb-67e0e0671645",
"execid": "ef799ba7-755f-45fb-8a12-6812489869b3",
"exectype": 15,
"ordstatus": 1,
"account": "redacted",
"instrument": "btc_usdt_options",
"side": 1,
"transacttime": 1574230320958860499,
"orderqty": "2.9301",
"timestamp": 1574174854272296196,
"ordtype": 4,
"price": "9800.5",
"stoppx": "9750",
"leavesqty": "1.9301",
"cumqty": "1",
"lastliquidityind": "0.871",
"lastpx": "9765",
"lastqty": "1",
"avgpx": "9765"
}
Subscribe to eventual broadcasts on order status changes, can only be filtered by instrument/Asset Pair symbol.
WS Endpoint
wss://api.bitwyre.com/ws/private/orders/events
WS Request Base Structure
JSON Field | Data Type | Required | Remark |
---|---|---|---|
"command" | string | true | always subscribe . |
"api_key" | string | true | see API Key. |
"api_sign" | string | true | see API Sign. |
"payload" | json-object | true | "" for no filter, json object containing an instrument to filter. |
WS Response Type
See Execution Report Response.
WS Trade History
Connecting and Historical Query (Note: minify the json request for websocat)
websocat -E "wss://api.bitwyre.com/ws/private/trades/history" -H "API-Data:{\"api_key\": \"someapikey\", \"api_sign\": \"somesignature\"}"
> {
"command": "get",
"payload": "{
\"instrument\": \"btc_usdt_spot\",
\"from_time\": 1537913405774945493 }"
}
Query Response (on message event)
{
"btc_usdt_spot": [
{
"id": "f3086a0e-6d25-4590-b47e-a5917816281b",
"time": 1571747594573320135,
"type": "buy",
"price": "10590",
"volume": "0.45",
"total": "4765.50",
"fee_percentage": "0.1",
"fee": "4.7655",
"fee_currency": "usdt"
}
]
}
Retrieves some or all latest buying/selling transaction histories.
WS Endpoint
wss://api.bitwyre.com/ws/private/trades/history
WS Request Base Structure
JSON Field | Data Type | Required | Remark |
---|---|---|---|
"command" | string | true | always get . |
"api_key" | string | true | see API Key. |
"api_sign" | string | true | see API Sign. |
"payload" | json-object | true | "" means no filter, see WS Trades History Request. |
WS Trades History Request
JSON Field | Data Type | Required | Remark |
---|---|---|---|
"instrument" | string | false | base asset, quote asset, product filter, delimited with an _ (underscore). |
"count" | number | false | limit the latest historical trade data. |
"from_time" | big-integer | false | inclusive historical time offset, unixtime in nanoseconds. |
"to_time" | big-integer | false | exclusive historical time limit, unixtime in nanoseconds. |
WS Trades History Response Type
Key-Value of instrument
and it's historical trades (array). The historical trade field data:
JSON Field | Data Type | Remark |
---|---|---|
"id" | uuid-string | universal unique id of the trade. |
"time" | big-integer | trade timestamp, unixtime in nanoseconds. |
"type" | enum-string | "buy" for buy, "sell" for sell. |
"price" | float-string | quote price for the base asset of the trade. |
"volume" | float-string | base asset amount of the trade. |
"total" | float-string | total quote value of the trade. |
"fee_percentage" | float-string | percentage of the fee. |
"fee" | float-string | fee value. |
"fee_currency" | string | asset of the fee, in most case is the quote asset |
UDF/Trading View Specific API Endpoints
Chart Config
Request
curl "https://api.bitwyre.com/udf/config" -X GET
Response
{
"exchanges": [
{
"desc": "Bitwyre Exchange",
"name": "Bitwyre",
"value": "BITWYRE"
}
],
"supported_resolutions": ["1", "3", "5", "15", "30", "60", "120", "240", "360", "480", "720", "1D", "3D", "1W", "1M"],
"supports_group_request": false,
"supports_marks": false,
"supports_search": true,
"supports_time": true,
"supports_timescale_marks": false,
"symbols_types": [
{
"name": "Bitcoin",
"value": "bitcoin"
}
]
}
Returns chart configuration.
Endpoint
https://api.bitwyre.com/udf/config
Request Fields/Parameters
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
exchanges | array-of-json | exchanges info |
supported_resolutions | array-of-string | |
supports_group_request | boolean | |
supports_marks | boolean | |
supports_search | boolean | |
supports_time | boolean | |
supports_timescale_marks | boolean | |
symbols_types | array-of-json |
Symbols
Request
curl "https://api.bitwyre.com/udf/symbols?symbol=btc_usdt_spot" -X GET
Response
{
"currency_code": "USD",
"data_status": "streaming",
"description": "BTC/USDT: Bitcoin / USD Tether spot",
"exchange": "BITWYRE",
"has_daily": true,
"has_empty_bars": true,
"has_intraday": true,
"has_weekly_and_monthly": true,
"intraday_multipliers": [
"1",
"5",
"60"
],
"listed_exchange": "BITWYRE",
"minmov": 1,
"name": "BTC/USDT",
"pricescale": 100,
"session": "24x7",
"supported_resolutions": [
"1",
"3",
"5",
"15",
"30",
"60",
"120",
"240",
"360",
"480",
"720",
"1D",
"3D",
"1W",
"1M"
],
"symbol": "BTCUSDT",
"ticker": "btc_usdt_spot",
"timezone": "Etc/UTC",
"type": "bitcoin",
"volume_precision": 2
}
Returns udf info.
Endpoint
https://api.bitwyre.com/udf/symbol
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
symbol | string | true | base asset, quote asset, product filter, delimited with an _ (underscore). |
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
currency_code | string | |
data_status | string | |
description | string | |
has_daily | boolean | |
has_empty_bars | boolean | |
has_intraday | boolean | |
has_weekly_and_monthly | boolean | |
intraday_multipliers | array-of-string | |
listed_exchange | string | |
minmov | int | |
name | string | |
pricescale | int | |
session | string | |
listed_exchange | string | |
supported_resolutions | array-of-string | supported timeframe resolution |
symbol | string | |
ticker | string | |
timezone | string | |
type | string | |
volume_precision | int |
Symbol Info
Request
curl "https://api.bitwyre.com/udf/symbols?symbol=btc_usdt_spot" -X GET
Response
{
"currency_code": "USD",
"data_status": "streaming",
"description": "BTC/USDT: Bitcoin / USD Tether spot",
"exchange": "BITWYRE",
"has_daily": true,
"has_empty_bars": true,
"has_intraday": true,
"has_weekly_and_monthly": true,
"intraday_multipliers": [
"1",
"5",
"60"
],
"listed_exchange": "BITWYRE",
"minmov": 1,
"name": "BTC/USDT",
"pricescale": 100,
"session": "24x7",
"supported_resolutions": [
"1",
"3",
"5",
"15",
"30",
"60",
"120",
"240",
"360",
"480",
"720",
"1D",
"3D",
"1W",
"1M"
],
"symbol": "BTCUSDT",
"ticker": "btc_usdt_spot",
"timezone": "Etc/UTC",
"type": "bitcoin",
"volume_precision": 2
}
Returns udf info.
Endpoint
https://api.bitwyre.com/udf/symbol_info
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
"symbol" | string | true | base asset, quote asset, product filter, delimited with an _ (underscore). |
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
currency_code | string | |
data_status | string | |
description | string | |
has_daily | boolean | |
has_empty_bars | boolean | |
has_intraday | boolean | |
has_weekly_and_monthly | boolean | |
intraday_multipliers | array-of-string | |
listed_exchange | string | |
minmov | int | |
name | string | |
pricescale | int | |
session | string | |
listed_exchange | string | |
supported_resolutions | array-of-string | |
symbol | string | |
ticker | string | |
timezone | string | |
type | string | |
volume_precision | int |
Search
Request
curl "https://api.bitwyre.com/udf/search?symbol=BTCUSDT&name=BTC/USDT&ticker=btc_usdt_spot¤cy_type=bitcoin¤cy_code=USD&exchange_traded=BITWYRE&exchange_listed=BITWYRE&limit=1" -X GET
Response
{
"currency_code": "USD",
"data_status": "streaming",
"description": "BTC/USDT: Bitcoin / USD Tether spot",
"exchange": "BITWYRE",
"has_daily": true,
"has_empty_bars": true,
"has_intraday": true,
"has_weekly_and_monthly": true,
"intraday_multipliers": [
"1",
"5",
"60"
],
"listed_exchange": "BITWYRE",
"minmov": 1,
"name": "BTC/USDT",
"pricescale": 100,
"session": "24x7",
"supported_resolutions": [
"1",
"3",
"5",
"15",
"30",
"60",
"120",
"240",
"360",
"480",
"720",
"1D",
"3D",
"1W",
"1M"
],
"symbol": "BTCUSDT",
"ticker": "btc_usdt_spot",
"timezone": "Etc/UTC",
"type": "bitcoin",
"volume_precision": 2
}
Returns udf info with specific parameters.
Endpoint
https://api.bitwyre.com/udf/search
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
symbol | string | false | base asset, quote asset, product filter, delimited with an _ (underscore). |
name | string | false | |
ticker | string | false | |
currency_type | string | false | |
currency_code | string | false | |
exchange_traded | string | false | |
exchange_listed | string | false | |
limit | int | false |
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
currency_code | string | |
data_status | string | |
description | string | |
has_daily | boolean | |
has_empty_bars | boolean | |
has_intraday | boolean | |
has_weekly_and_monthly | boolean | |
intraday_multipliers | array-of-string | |
listed_exchange | string | |
minmov | int | |
name | string | |
pricescale | int | |
session | string | |
listed_exchange | string | |
supported_resolutions | array-of-string | |
symbol | string | |
ticker | string | |
timezone | string | |
type | string | |
volume_precision | int |
History
Request
curl "https://api.bitwyre.com/udf/history?symbol=btc_usdt_spot&from=1606083060&to=1626083060&resolution=1" -X GET
Response
{
"c": [
33285.0,
33287.0,
33287.0,
34838.0
],
"h": [
33285.0,
33287.0,
33287.0,
34838.0
],
"l": [
33284.0,
33285.0,
33287.0,
33292.0
],
"o": [
33284.0,
33285.0,
33287.0,
33292.0
],
"s": "ok",
"t": [
1626056880,
1626056940,
1626060120,
1626080640
],
"v": [
9.0,
18.0,
0.1,
2.54916871
]
}
Returns status, volume, open/close/high/low prices and timetamp data from timestamp from
until to
.
Endpoint
https://api.bitwyre.com/udf/history
Request Fields/Parameters
Query Parameter | Data Type | Required | Remark |
---|---|---|---|
symbol | string | true | base asset, quote asset, product filter, delimited with an _ (underscore). |
from | big-integer | true | unix time in seconds |
to | big-integer | true | unix time in seconds |
resolution | string | true | time frame resolution |
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
c | array-of-float | close price data |
h | array-of-float | high price data |
l | array-of-float | low price data |
o | array-of-float | open price data |
s | str | status data request |
t | array-of-bigint | timestamp data |
v | array-of-float | volume data |
Time
Request
curl "https://api.bitwyre.com/udf/time" -X GET
Response
1626236213
Returns server's unix time in seconds.
Endpoint
https://api.bitwyre.com/udf/time
Request Fields/Parameters
Response Types (JSON Object)
JSON Field | Data Type | Remark |
---|---|---|
- | big-integer | unix time in seconds |
FIX API
FIX (Financial Information eXchange) is an electronic messaging protocol widely adopted by financial institutions to transmit trading activity such as submitting or canceling orders and receiving execution information. Bitwyre's FIX API is based on FIX 4.4 and modeled after common forex FIX implementations. Users who are not familiar with FIX should first consider using the REST API.
Getting started
In order to interact with our FIX endpoints, you'll need to contact [email protected] for information regarding fix connectivity. Before an initial FIX connection, Bitwyre will reach out with information about setting up your account via email. It will also contain instructions on creating a staging account.
Connectivity
Before logging in to a FIX session, clients must establish a secure connection to the FIX gateway. We expect an SSL connection over TCP to the host and port you are assigned with.
Standard Header
Each administrative or application message is preceded by a standard header. The header identifies the message type, length, destination, sequence number, origination point and time.
Tag | Field Name | Required | Description |
---|---|---|---|
6 | BeginString | true | |
9 | BodyLength | true | Message length, in bytes, forward to the CheckSum field. Always unencrypted, must be second field in message. |
35 | MsgType | true | Defines message type. Always the third tag in the message. |
49 | SenderCompID | true | Assigned value used to identify the firm sending the message. |
56 | TargetCompID | true | Assigned value used to identify the firm receiving the message. |
34 | MsgSeqNum | true | Integer message sequence number. |
52 | SendingTime | true | Time of message transmission (always expressed in UTC). |
122 | OrigSendingTime | false* | Original time of message transmission (always expressed in UTC) when transmitting orders as the result of a resend request.*Required for a re-transmitted message. |
43 | PossDupFlag | false* | Indicates possible retransmission of message with this sequence number. Valid values: - true = Possible duplicate - false = Original transmission *Required for a re-transmitted message. |
Standard Trailer
Each message, administrative or application, is terminated by a standard trailer. The trailer is used to segregate messages and contains the three-digit character representation of the Checksum value.
Tag | Field Name | Required | Description |
---|---|---|---|
10 | CheckSum | true | Three byte, simple checksum. Always unencrypted, always last field in message. |
Supported Symbols
The following symbols are valid values for a Symbol <55>
field.
Symbols are formatted as ccy1_ccy2
where prices are in ccy1
(price currency) and quantities are in ccy2
(quantity currency), as this table makes explicit:
Symbol | Price Currency | Quantity Currency | Min Order Size |
---|---|---|---|
btc_usdt_spot | usdt | btc | < A_VALUE_HERE > |
eth_usdt_spot | usdt | eth | < A_VALUE_HERE > |
eth_btc_spot | btc | eth | < A_VALUE_HERE > |
btc_idr_spot | idr | btc | < A_VALUE_HERE > |
bch_idr_spot | idr | bch | < A_VALUE_HERE > |
eth_btc_spot | btc | eth | < A_VALUE_HERE > |
On a market data channel, Bitwyre will respond to a Symbol List Request <x>
with a Symbol List <y>
containing all the supported symbols on the exchange.
FIX Order Entry
The following list of messages are supported for Administrative and Application level messages
Administrative or Session Level Messages
The following Administrative message types will be supported under MsgType (35)
Logon <A>
Logon request
8=FIX.4.4|9=78|35=A|49=MYID|56=Bitwyre|34=1|52=20200114-15:14:22.487|369=0|98=0|108=30|141=Y|10=087|
Parsed message
HEADER
8 BeginString: FIX.4.4
9 BodyLength: 78
35 MsgType: LOGON (A)
49 SenderCompID: MYID
56 TargetCompID: Bitwyre
34 MsgSeqNum: 1
52 SendingTime: 20200114-15:14:22.487
369 LastMsgSeqNumProcessed: 0
BODY
98 EncryptMethod: NONE (0)
108 HeartBtInt: 30
141 ResetSeqNumFlag: YES (Y)
TRAILER
10 CheckSum: 087
The Logon <A>
message is used by a market participant to establish a FIX session with Bitwyre, and by Bitwyre as an acknowledgement. Only one session may exist per connection. If any validation fails during the process, the connection will be dropped without a Reject <2>
.
Tag | Field Name | Required | Description |
---|---|---|---|
Standard Header | true | ||
98 | EncryptMethod | true | Must be 0 (None) |
108 | HeartBtInt | true | Must be 30 (Seconds) or less. Values greater than 30 will be capped at 30. Server will send Test Request if no client messages received in approximately (HeartBtInt x 1.5) seconds. Server will terminate session if no client messages received in approximately (HeartBtInt x 2 seconds). |
96 | RawData | true | Client message signature |
554 | Password | true | Client API passphrase |
49 | SenderCompID | true | Assigned value used to identify the firm sending the message. |
8013 | CancelOrdersOnDisconnect | true | S: Batch cancel all open orders placed during session; Y: Batch cancel all open orders for the current profile. The former is more performant and recommended. |
Standard Trailer | true |
HeartBeat<0>
The Heartbeat <0>
monitors the status of the communication link and identifies when the last of a string of messages was not received. The duration of the inactive period is determined by the field HeartBtInt <108>
in Logon<A>
message.
Tag | Field Name | Required | Description |
---|---|---|---|
Standard Header | true | ||
58 | TestReqID | false* | Required if the heartbeat message is generated in response to a TestRequest <1> message. |
Standard Trailer | true |
TestRequest<1>
Heartbeat <0>
and TestRequest <1>
messages are used by Bitwyre to monitor the live status of a FIX Session.
In the event of no response within the agreed upon heartbeat interval, HeartBtInt<108>
, in Logon<A>
message, a TestRequest <1>
message will be sent. The client must respond immediately to the TestRequest <1>
message.
If we do not receive a response to the TestRequest <1>
message within the heartbeat interval, it will terminate the FIX session to the counterparty.
Tag | Field Name | Required | Description |
---|---|---|---|
Standard Header | true | ||
58 | TestReqID | true | Identifier included in Test Request <1> message to be returned in resulting Heartbeat <0> |
Standard Trailer | true |
ResendRequest<2>
The resend request is sent by the receiving application to initiate the retransmission of messages. This function is utilized if a sequence number gap is detected, if the receiving application lost a message, or as a function of the initialization process. It can be used to request a single message, a range of messages or all messages subsequent to a particular message.
Tag | Field Name | Required | Description |
---|---|---|---|
Standard Header | true | ||
7 | BeginSeqNo | true | Message sequence number of first message in range to be resent. Valid sequence number for session. |
16 | EndSeqNo | true | Message sequence number of last message in range to be resent. Specify 0 for all the messages subsequent to a particular message. |
Standard Trailer | true |
Reject<3>
The Reject <3>
message will be sent when a message is received but cannot be properly processed due to session-level rule violation
Tag | Field Name | Required | Description |
---|---|---|---|
Standard Header | true | ||
45 | RefSeqNum | true | MsgSeqNum <34> of the rejected message. |
58 | Text | false | The reason of the rejection |
371 | RefTagID | false | The tag number of the FIX field being referenced. |
372 | RefMsgType | false | The MsgType <35> of the rejected message. |
373 | SessionRejectReason | false | Code to identify the reason for the Reject <3> message. Valid values: * 0 = Invalid tag number * 1 = Required tag missing * 2 = Tag not defined for this message type * 3 = Undefined Tag * 4 = Tag specified without a value * 5 = Value is incorrect (out of range) for this tag * 6 = Incorrect data format for value * 10 = SendingTime <52> accuracy problem * 11 = Invalid MsgType <35> |
Standard Trailer | true |
SequenceReset<4>
The Sequence Reset message is used in response to a Resend Request <2>
message when one or more messages must be skipped over for the following reasons:
During normal resend processing, the sending application may choose not to send a message (e.g. an aged order).
During normal resend processing, a number of administrative messages are skipped and not resent (such as
Heartbeat <0>
and TestRequest <1>
).
Tag | Field Name | Required | Description |
---|---|---|---|
Standard Header | true | ||
36 | NewSeqNo | true | New sequence number. The number cannot be lower than the expected sequence number of either side of the connection. |
123 | GapFillFlag | true | Indicates that the sender is skipping messages rather than resending them. Valid value: Y = Gap Fill message N = Sequence Reset, ignore MsgSeqNum <34> |
Standard Trailer | true |
Logout<5>
The Logout<5>
message initiates or confirms the termination of a FIX session.
Tag | Field Name | Required | Description |
---|---|---|---|
Standard Header | true | ||
58 | Text | false | Logging out reason |
Standard Trailer | true |
Application Level Messages
The following Applications message types are supported under MsgType (35)
:
Inbound Messages (From Client to Bitwyre)
NewOrderSingle <D>
NewOrderSingle request
8=FIX.4.4|9=132|35=D|34=2|49=USERNAME|52=20200125-17:56:41.000|56=Bitwyre|11=uuid-uuid|38=1|40=2|44=10000|54=1|55=btc_usdt|59=1|60=20200125-18:56:41|10=028|
Parsed message
HEADER
8 BeginString: FIX.4.4
9 BodyLength: 132
35 MsgType: ORDER_SINGLE (D)
34 MsgSeqNum: 2
49 SenderCompID: USERNAME
52 SendingTime: 20200125-17:56:41.000
56 TargetCompID: Bitwyre
BODY
11 ClOrdID: uuid-uuid
38 OrderQty: 1
40 OrdType: LIMIT (2)
44 Price: 10000
54 Side: BUY (1)
55 Symbol: btc_usdt
59 TimeInForce: GOOD_TILL_CANCEL (1)
60 TransactTime: 20200125-18:56:41
TRAILER
10 CheckSum: 028
To submit a new market order, send a New Order Single <D>
message with OrdType Market.
We will respond to a New Order Single <D>
message with an Execution Report <8>
.
Tag | Field Name | Required | Description |
---|---|---|---|
Standard Header | true | ||
11 | ClOrdID | true | Unique identifier (UUID) of the order as assigned by the institution. Uniqueness must be guaranteed by the institution for the duration of the connection to the order entry channel. |
38 | OrderQty | false* | Required when Side is equals to SELL. Represents the quantity ordered. |
40 | OrdType | true | Order type. Supported values are : 1 = Market 2 = Limit |
54 | Side | true | Side of the order. Valid values are: 1 = Buy 2 = Sell |
55 | Symbol | true | Ticker symbol of the order |
60 | TransactTime | true | Time of the order creation expressed in UTC |
152 | CashOrderQty | false* | * Required when Side is BUY. Amount in price currency to use in the market order |
Standard Trailer | true |
OrderCancelRequest <F>
OrderCancelRequest
8=FIX.4.4|9=215|35=F|49=UUID-ORDER|56=Bitwyre|34=30|50=UUID-MMZZ7YAV|142=US,IL|57=SCXM|52=20201001-15:18:18.339|369=29|41=Order48988|37=319500000000000016|11=Cancel48989|1=UUID-1FBD|55=btc_usdt|54=1|60=20181001-15:18:18|528=A|582=1|10=059|
Parsed message
HEADER
8 BeginString: FIX.4.4
9 BodyLength: 215
35 MsgType: ORDER_CANCEL_REQUEST (F)
49 SenderCompID: UUID-ORDER
56 TargetCompID: Bitwyre
34 MsgSeqNum: 30
50 SenderSubID: UUID-MMZZ7YAV
142 SenderLocationID: US,IL
57 TargetSubID: SCXM
52 SendingTime: 20201001-15:18:18.339
369 LastMsgSeqNumProcessed: 29
BODY
41 OrigClOrdID: Order48988
37 OrderID: 319500000000000016
11 ClOrdID: Cancel48989
1 Account: UUID-1FBD
55 Symbol: btc_usdt
54 Side: BUY (1)
60 TransactTime: 20181001-15:18:18
528 OrderCapacity: AGENCY (A)
582 CustOrderCapacity: MEMBER_TRADING_FOR_THEIR_OWN_ACCOUNT (1)
TRAILER
10 CheckSum: 059
The Order Cancel Request <F>
message requests the cancellation of all of the remaining quantity of an existing order. An order is cancelled on the basis of the value in the OrigClOrdID <41>
field. All other fields are required in the FIX specs but are ignored.
Tag | Field Name | Required | Description |
---|---|---|---|
Standard Header | true | ||
41 | OrigClOrdID | true | ClOrdID <11> of the previous non-rejected order. |
11 | ClOrdID | true | Unique identifier of the cancel request as assigned by the institution. Uniqueness must be guaranteed by the institution for the duration of the connection to the order entry channel. |
38 | OrderQty | true | Quantity in the order referred to by OrigClOrdID <41>. |
54 | Side | true | Side of the order to cancel: Valid values: 1 = Buy 2 = Sell |
55 | Symbol | true | Ticker symbol of the order. |
60 | TransactTime | true | Time of the order creation expressed in UTC. |
Standard Trailer | true |
Outbound Messages (From Bitwyre to Client)
ExecutionReport <8>
The ExecutionReport<8>
message is used to acknowledge/reject orders, cancel and amend requests. The message will also be used to relay trade information and end of day cancellations.
We use the Execution Report <8>
message to:
- confirm the receipt of an order
- confirm a stop order has triggered
- confirm the successful cancellation of an order
- relay fill information on orders
- reject orders
Execution report for a Buy order
8=FIX.4.4|9=163|35=8|34=2|49=Bitwyre|52=20200120-10:50:51.943|56=DEVELOPER|6=0|11=uuid-uuid|14=0|17=43|37=42|39=0|54=1|55=btc_usdt|60=202020-10:50:52.042|150=0|151=500.0|152=500.0|10=138|
Parsed Message
HEADER
8 BeginString: FIX.4.4
9 BodyLength: 163
35 MsgType: EXECUTION_REPORT (8)
34 MsgSeqNum: 2
49 SenderCompID: Bitwyre
52 SendingTime: 20200120-10:50:51.943
56 TargetCompID: DEVELOPER
BODY
6 AvgPx: 0
11 ClOrdID: uuid-uuid
14 CumQty: 0
17 ExecID: 43
37 OrderID: 42
39 OrdStatus: NEW (0)
54 Side: BUY (1)
55 Symbol: btc_usdt
60 TransactTime: 202020-10:50:52.042
150 ExecType: NEW (0)
151 LeavesQty: 500.0
152 CashOrderQty: 500.0
TRAILER
10 CheckSum: 138
Tag | Field Name | Required | Description |
---|---|---|---|
Standard Header | true | ||
37 | OrderID | true | Unique order identifier assigned by Bitwyre |
41 | OrigClOrdID | false* | ClOrdID <11> of the order to cancel. Needs to correspond to a current outstanding order submitted during this trading session. * Required for a response to an Order Cancel Request |
17 | ExecID | true | Unique event ID |
150 | ExecType | true | Describes the purpose of the Execution Report Valid values: * 0 = New * F = Trade * 4 = Cancelled * 8 = Rejected |
18 | ExecInst | false | Execution instructions. |
39 | OrdStatus | true | Describes the current order status Valid values: * 0 = New * 1 = Partially filled * 2 = Filled * 4 = Cancelled * 8 = Rejected |
55 | Symbol | true | Ticker symbol of the order. |
54 | Side | true | Side of the order. Valid values: * 1 = Buy * 2 = Sell |
44 | Price | false* | Required for limit orders. |
99 | StopPx | false* | Stop price of the order. * Required if ExecType <150> is not 8 = Rejected and responding to a OrdType <40> is 4 = Stop Limit order entry. |
6 | AvgPx | true | Calculated average price of fills on this order. Zero for order with no fills. |
31 | LastPx | false* | Price of the fill. This field is only present when the order is updated due to a match on the exchange. *Required if ExecType <150> is F = Trade. |
14 | CumQty | true | Total quantity of the order that is filled. |
38 | OrderQty | false* | Decimal amount of BTC to purchase. The general rule is: OrderQty <38> = CumQty <14> + LeavesQty <151>. * Required if ExecType <150> is not 8 = Rejected. |
151 | LeavesQty | true | Quantity <53> open for further execution. If the OrdStatus <39> is 4 = Cancelled or 8 = Rejected (in which case the order is no longer active) then LeavesQty <151> could be 0, otherwise LeavesQty <151> = OrderQty <38> - CumQty <14>. |
32 | LastQty | false* | Quantity of the fill. This field is only present when the order is updated due to a match on the exchange. * Required if ExecType <150> is F = Trade. |
12 | Commission | false* | Fee charged for trade. Negative for rebates. * Required if ExecType <150> is F = Trade. |
479 | CommCurrency | false* | Currency code of the currency that the fee is denominated in. * Required if ExecType <150> is F = Trade. |
13 | CommType | false* | Commission type. Valid value: 3 = absolute (total monetary amount) * Required if ExecType <150> is F = Trade. |
851 | LastLiquidityInd | false* | Whether this order added liquidity ("maker") or removed liquidity ("taker"). Valid values: 1 = Added Liquidity 2 = Removed Liquidity * Required if ExecType <150> is F = Trade. |
103 | OrdRejReason | false* | Reason the order was rejected. Valid values: 1 = Unknown symbol 2 = Exchange closed for scheduled maintenance 3 = Order exceeds limit 13 = Incorrect quantity 99 = Other |
58 | Text | false* | Reason the order was rejected or cancelled. * Required if OrdRejReason <103> is 99 = Other, or if OrdStatus <39> is 4 = Cancelled and ExecType <150> is 4 = Cancelled. |
59 | TimeInForce | true* | Specifies how long the order remains in effect. Absence of this field would be interpreted as a day order, which we do not currently support. Valid value: 1 = Good Till Cancel (GTC) 3 = Immediate Or Cancel (IOC) 4 = Fill Or Kill (FOK) 7 = At the Close - Indicates this is an order for an upcoming Auction |
60 | TransactTime | true | Time the transaction represented by this ExecutionReport <8> occurred (expressed in UTC). |
Standard Trailer | true |
OrderCancelReject <9>
We send an Order Cancel Reject <9>
message when the exchange receives an Order Cancel Request <F>
message which cannot be honored because:
Order Cancel Request <F>
message has an unknownOrigClOrdID <41>
- the order referred to by
OrigClOrdID <41>
exists, but cannot be cancelled because it is not currently active:- rejected
- already filled
- already canceled
Tag | Field Name | Required | Description |
---|---|---|---|
Standard Header | true | ||
37 | OrderID | true | Unique order identifier assigned by Bitwyre |
11 | ClOrdID | false* | Unique identifier for order as assigned by the institution. |
39 | OrdStatus | true | Identifies the current status of order. The status is 8 = Rejected if the order is unknown. Valid values: 0 = New 1 = Partially filled 2 = Filled 4 = Canceled 8 = Rejected |
150 | ExecType | true | Describes the purpose of the Execution Report Valid values: * 0 = New * F = Trade * 4 = Cancelled * 8 = Rejected |
18 | ExecInst | false | Execution instructions. |
39 | OrdStatus | true | Describes the current order status Valid values: * 0 = New * 1 = Partially filled * 2 = Filled * 4 = Cancelled * 8 = Rejected |
102 | CxlRejReason | true | Code to identify reason for cancel rejection. Valid values: 0 = Too late to cancel 1 = Unknown order 3 = Order already in Pending Cancel or Pending Replace status 4 = Unable to process Order Mass Cancel Request
|
434 | CxlRejResponseTo | true | Indicates the type of request that the message is in response to. Valid values: 1 = Order Cancel Request |
60 | TransactTime | true | Time the transaction represented by this ExecutionReport <8> occurred (expressed in UTC). |
Standard Trailer | true |
FIX Drop Copy
In the drop copy channel, Bitwyre only support the Trade Capture Report <AE>
.
We will send this message to user in the following cases:
- To report trades
- To report trades to our trade matching system.
- Sent as a reply to a Trade Capture Report Request.
- To report unmatched and matched trades.
Tag | Field Name | Description |
---|---|---|
Standard Header | ||
571 | TradeReportID | The TradeID. This is compatible with the trade ids returned through the REST API as well as the ExecID returned in the ExecutionReports in the Order FIX channel. |
570 | PreviouslyReported | Will always be "N".Client should use the MsgSeqNum, which will be globally unique. |
75 | TradeDate | Required by the FIX spec; will be the date associated with the TransactTime below |
60 | TransactTime | The time that the trade was executed |
552 | NoSides | The number of sides, always 1 |
32 | LastQty | The quantity executed |
31 | LastPx | The price of the execution |
11 | CliOrdID | The client-assigned order ID. |
37 | OrderID | The order ID assigned by Bitwyre to the order |
54 | Side | The side of the order * 1 = Buy * 2 = Sell |
58 | Text | Used to store the liquidity code. Will be the literal string * MAKER = Added Liquidity * TAKER = Removed Liquidity * AUCTION = Auction Order |
12 | Commission | Fee charged for trade. Negative for rebates. |
13 | CommType | Type of commission. Allowed values: 3 = absolute (total monetary amount) |
479 | CommCurrency | The currency of the fee |
Standard Trailer |
FIX Market Data
In the market data channel, Bitwyre support this set of messages:
From Client to Bitwyre
Symbol List Request <x>
Symbol List request
8=FIX.4.4|9=73|35=x|34=2|49=BITWYREUSER|52=20200120-14:51:20.000|56=Bitwyre|320=1|559=0|10=099|
Parsed message
HEADER
8 BeginString: FIX.4.4
9 BodyLength: 73
35 MsgType: SECURITY_LIST_REQUEST (x)
34 MsgSeqNum: 2
49 SenderCompID: BITWYREUSER
52 SendingTime: 20200120-14:51:20.000
56 TargetCompID: Bitwyre
BODY
320 SecurityReqID: 1
559 SecurityListRequestType: SYMBOL (0)
TRAILER
10 CheckSum: 099
A Symbol List Request <x>
returns a Symbol List <y>
response containing the symbols traded on the exchange.
Tag | Field Name | Required | Description |
---|---|---|---|
Standard Header | true | ||
320 | SecurityReqID | true | Unique identifier of the request |
559 | SecurityListRequestType | true | The type/criteria of the request Valid Value: * 0 = Symbol |
Standard Trailer | true |
Market Data Request <V>
Market Data Request
8=FIX.4.4|9=114|35=V|34=2|49=BITWYREUSER|52=20200120-11:51:40.000|56=Bitwyre|262=2|263=1|264=1|265=0|146=1|55=btc_usdt|267=1|269=0|10=052|
Parsed Message
HEADER
8 BeginString: FIX.4.4
9 BodyLength: 114
35 MsgType: MARKET_DATA_REQUEST (V)
34 MsgSeqNum: 2
49 SenderCompID: BITWYREUSER
52 SendingTime: 20200120-11:51:40.000
56 TargetCompID: Bitwyre
BODY
262 MDReqID: 2
263 SubscriptionRequestType: SNAPSHOT_PLUS_UPDATES (1)
264 MarketDepth: 1
265 MDUpdateType: FULL_REFRESH (0)
146 NoRelatedSym: 1
55 Symbol: btc_usdt
267 NoMDEntryTypes: 1
269 MDEntryType: BID (0)
TRAILER
10 CheckSum: 052
This will subscribe the session to Market Data Snapshot and Full Refresh <W>
, as a response the sender will receive zero or more Market Data - Incremental Refresh <X>
messages.
Tag | Field Name | Required | Description |
---|---|---|---|
Standard Header | true | ||
262 | MDReqID | true | Unique identifier of the market data request |
263 | SubscriptionRequestType | true | Indicates what type of response is expected Valid value: * 1 = Snapshot and Updates (subscribe) |
264 | MarketDepth | true | Depth of the book to receive snapshot and updates for. Valid values: * 0 = Full Book * 1 = Top of Book |
267 | NoMDEntryTypes | true | Number of MDEntryType<269> fields requested |
269 | MDEntryType | true | Type of market data entry to receive snapshots and updates for. Valid values include: * 0 = Bid * 1 = Offer * 2 = Trade |
146 | NoRelatedSym | true | Number of Symbols Requested |
55 | Symbol | true | Market data symbol requested. |
Standard Trailer | true |
From Bitwyre to Client
Symbol List <y>
Response to the previous
Symbol List Request<x>
8=FIX.4.4|9=151|35=y|34=2|49=Bitwyre|52=20180425-17:51:27.544|56=BITWYREUSER|320=1|322=1|560=0|146=6|55=btc_usdt|55=eth_usdt|55=idr_usdt|55=btc_idr|55=idr_btc|55=bch_btc|10=225|
Parsed message
HEADER
9 BodyLength: 151
8 BeginString: FIX.4.4
35 MsgType: SECURITY_LIST (y)
34 MsgSeqNum: 2
49 SenderCompID: Bitwyre
52 SendingTime: 20180425-17:51:27.544
56 TargetCompID: BITWYREUSER
BODY
320 SecurityReqID: 1
322 SecurityResponseID: 1
560 SecurityRequestResult: VALID_REQUEST (0)
146 NoRelatedSym: 6
55 Symbol: btc_usdt
55 Symbol: eth_usdt
55 Symbol: idr_usdt
55 Symbol: btc_idr
55 Symbol: idr_btc
55 Symbol: bch_btc
TRAILER
10 CheckSum: 225
A Symbol List <y>
is the response containing the list of symbols specified in a Symbol List Request <x>
.
Tag | Field Name | Required | Description |
---|---|---|---|
Standard Header | Y | ||
320 | SecurityReqID | Y | Unique identifier of the Symbol List Request that solicited this response. |
322 | SecurityResponseID | Y | Identifier for this message. |
560 | SecurityRequestResult | Y | The result of this request. Valid values:* 0 = Valid Request * 1 = Invalid Request |
146 | NoRelatedSym | Y | Specifies the number of returned symbols |
55 | Symbol | Y | Symbol of the exchange-traded order book pair |
Standard Trailer | Y |
Market Data - Snapshot / Full Refresh <W>
This message is a response to a Market Data Request <V>
. We first send snapshot of the current state
followed by multiple Market Data - Incremental Refresh <X>
messages.
Tag | Field Name | Required | Description |
---|---|---|---|
Standard Header | |||
262 | MDReqID | true | Unique identifier of the Market Data Request |
55 | Symbol | true | Symbol of market data entry. |
268 | NoMDEntries | true | Number of entries in this message |
269 | MDEntryType | true | Type of market data update. Valid values: * 0 = Bid * 1 = Offer * 2 = Trade |
270 | MDEntryPx | true | Price of market data entry. |
271 | MDEntrySize | true | Quantity of market data entry. |
11 | CliOrdID | The client-assigned order ID. | |
37 | OrderID | The order ID assigned by Bitwyre to the order | |
54 | Side | The side of the order * 1 = Buy* 2 = Sell |
|
58 | Text | Used to store the liquidity code. Will be the literal string * MAKER = Added Liquidity * TAKER = Removed Liquidity * AUCTION = Auction Order |
|
12 | Commission | Fee charged for trade. Negative for rebates. | |
Standard Trailer |
Market Data Request Reject <Y>
Tag | Field Name | Required | Description |
---|---|---|---|
Standard Header | |||
262 | MDReqID | true | Unique identifier of the Market Data Request |
281 | MDReqRejReason | false | Reason why Market Data Request Valid values: * 0 = Unknown Symbol* 1 = Duplicate MDReqID <262> * 4 = Unsupported SubscriptionRequestType <263> * 5 = Unsupported MarketDepth <264> * 8 = Unsupported MDEntryType <269> |
Standard Trailer |
Response Objects
Asset Statement
Asset, e.g "btc", statements, containing an array of json object:
JSON Field | Data Type | Remark |
---|---|---|
"id" | uuid-string | universal unique id of the transaction. |
"tx_id" | string | crypto transaction id (crypto only). Can be checked using any block explorer. |
"status" | enum-string | transaction status: "waiting" for waiting for authorization, pending" for pending and "success" for settled. |
"type" | enum-string | asset type, "fiat" for fiat and "crypto" for crypto. |
"provider" | enum-string | transaction provider. |
"gross_amount" | float-string | gross amount of the transaction before the fee. |
"fee" | float-string | transaction fee. |
"nett_amount" | float-string | nett amount of the transaction after the fee. |
"network_confirmation" | number | confirmation needed to settle the transaction (crypto only). |
"submit_time" | big-integer | unix time in nanoseconds |
"success_time" | big-integer | unix time in nanoseconds |
Execution Report
This is a general response for all private/orders
endpoint.
JSON Field | Data Type | Remark |
---|---|---|
"OrderID" | uuid-string | server generated order id. |
"ClOrdID" | uuid-string | client generated order id, if supplied. |
"OrigClID" | uuid-string | original order id, will be different when a order cancellation occured. |
"OrdStatusReqID" | uuid-string | an echo of order status request/query id. |
"ExecID" | uuid-string | this report id. |
"ExecType" | enum-number | execution report type, see Execution Type. |
"OrdStatus" | enum-number | order status of this report, see Order Status. |
"OrdRejReason" | enum-number | order reject reason, see Order Reject Reason. |
"Account" | uuid-string | account uniqute id of the current API Key. |
"Instrument" | string | asset pair symbol. |
"Side" | enum-number | order side, "buy" or "sell". |
"TransactTime" | big-integer | execution report timestamp, unix time in nanoseconds |
"OrderQty" | float-string | base asset quantity, in float string. |
"Timestamp" | big-integer | order timestamp, when accepted by server, unix time in nanoseconds |
"OrdType" | enum-number | market (1) , limit (2) , stop (3) , and stop_limit (4) . |
"Price" | float-string | "limit" or "stop_limit" price of the order. |
"StopPx" | float-string | stop price for "stop" and "stop_limit". |
"TimeInForce" | enum-number | order lifetime enforcement, see Time In Force. |
"ExpireTime" | big-integer | order expire time, mandatory for Good-Till-Date, unixtime in nanoseconds. |
"ExecInst" | string | not yet supported. |
"CancelOnDisconnect" | bool | cancel on disconnection, currently only supported by Websocket API. |
"LastQty" | float-string | last executed quantity in a trade-match. |
"LastPx" | float-string | last executed price in a trade-match. |
"LastLiquidityInd" | float-string | last executed liquidity index. |
"LeavesQty" | float-string | remaining quantity of the order. |
"CumQty" | float-string | total executed quantity. |
"AvgPx" | float-string | average price of executed order. |
Execution Type
Enum Name (FIX 4.4) | Representation |
---|---|
New | 0 |
Trade | 2 |
DoneForToday | 3 |
Canceled | 4 |
Replace | 5 |
PendingCancel | 6 |
Stopped | 7 |
Rejected | 8 |
Suspended | 9 |
PendingNew | 10 |
Calculated | 11 |
Expired | 12 |
Restated | 13 |
PendingReplace | 14 |
TradeCorrect | 16 |
TradeCancel | 17 |
OrderStatus | 18 |
Order Side
Enum Name (FIX 4.4) | Representation |
---|---|
Buy | 1 |
Sell | 2 |
Order Type
Enum Name (FIX 4.4) | Representation |
---|---|
Market | 1 |
Limit | 2 |
Stop | 3 |
Stop Limit | 4 |
Order Status
Enum Name (FIX 4.4) | Representation |
---|---|
New | 0 |
PartiallyFilled | 1 |
Filled | 2 |
DoneForToday | 3 |
Canceled | 4 |
Replaced | 5 |
PendingCancel | 6 |
Stopped | 7 |
Rejected | 8 |
Suspended | 9 |
PendingNew | 10 |
Calculated | 11 |
Expired | 12 |
AcceptedForBidding | 13 |
PendingReplace | 14 |
PendingExpire | 15 |
PartialCancel | 16 |
PartialCancelTooBig | 17 |
PendingPartialCancel | 18 |
PendingSuspend | 19 |
Order Reject Reason
Enum Name (FIX 4.4) | Representation |
---|---|
BrokerExchangeOption | 0 |
UnknownSymbol | 1 |
ExchangeClosed | 2 |
OrderExceedsLimit | 3 |
TooLateToEnter | 4 |
UnknownOrder | 5 |
DuplicateOrder | 6 |
DuplicateVerballyCommunicatedOrder | 7 |
StaleOrder | 8 |
TradeAlongRequired | 9 |
InvalidInvestorID | 10 |
UnsupportedOrderCharacteristic | 11 |
SurveillanceOption | 12 |
IncorrectQuantity | 13 |
IncorrectAllocatedQuantity | 14 |
UnknownAccounts | 15 |
PriceExceedsCurrentPriceBand | 16 |
InvalidPriceIncrement | 18 |
ReferencePriceNotAvailable | 19 |
NotionalValueExceedsThreshold | 20 |
AlgorithmRiskThresholdBreached | 21 |
ShortSellNotPermitted | 22 |
ShortSellRejectedSecurityPreBorrowRestrictions | 23 |
ShortSellRejectedAccountPreBorrowRestrictions | 24 |
InsufficientCreditLimit | 25 |
ExceededClipSizeLimit | 26 |
ExceededMaxNotionalOrderAmount | 27 |
ExceededDV01Limit | 28 |
ExceededCS01Limit | 29 |
SelfMatch | 30 |
NegativeBalance | 31 |
Mallicious | 32 |
Other | 99 |
Time In Force
Enum Name (FIX 4.4) | Representation |
---|---|
Day | 0 |
GoodTillCancel | 1 |
AtTheOpening | 2 |
ImmediateOrCancel | 3 |
FillOrKill | 4 |
GoodTillCrossing | 5 |
GoodTillDate | 6 |
AtTheClose | 7 |
Banking Details
Fields | Description |
---|---|
SWIFT Code | specific banking institution code https://en.wikipedia.org/wiki/ISO_9362 |
ID Card Type
Enum Name | Representation |
---|---|
NationalIdentity | 0 |
DrivingLicense | 1 |
Passport | 2 |
Others | 99 |
KYC File Class
Enum Name | Representation |
---|---|
NationalIdentity | 0 |
DrivingLicense | 1 |
Passport | 2 |
Selfie | 3 |
Others | 99 |
KYC Data Status
Enum Name | Representation |
---|---|
NotSubmitted | 0 |
Pending | 1 |
Accepted | 2 |
Rejected | 3 |
KYC Data Rejection Reason
Enum Name | Representation |
---|---|
InvalidID | 0 |
InvalidSelfie | 1 |
InvalidData | 2 |
InvalidIDAndSelfie | 3 |
InvalidIDAndData | 4 |
InvalidSelfieAndData | 5 |
InvalidAll | 6 |
Trading Notification Type
Enum Name | Representation |
---|---|
OrderRejected | 0 |
OrderCancelled | 1 |
OrderFilled | 2 |
Deposit | 3 |
Withdrawal | 4 |
KYC | 5 |
Priority Freshdesk
Enum Name | Representation |
---|---|
Low | 1 |
Medium | 2 |
High | 3 |
Urgent | 4 |
Issue Type Freshdesk
Enum Name | Representation |
---|---|
Question | 1 |
Incident | 2 |
Problem | 3 |
Feature_Request | 4 |
Refund | 5 |
HTTP Errors
The Bitwyre API uses the following HTTP error codes:
Code | Meaning | Description |
---|---|---|
400 | Bad Request | Your request is invalid. |
401 | Unauthorized | Your API key is wrong. |
403 | Forbidden | Oops. You're not allowed to access that. |
404 | Not Found | Whatever you're looking for could not be found. |
405 | Method Not Allowed | You tried to access stuffs with an invalid method. |
406 | Not Acceptable | You requested a format that isn't processable. |
410 | Gone | The things you requested has been removed from our servers. |
418 | I'm a teapot. | We refuse to brew your coffee because you've been banned. |
422 | Unprocessable Entity | Something (parameters, values, etc.) is missing from your request, hence we are unable to process it. |
429 | Too Many Requests | You're calling in too fast! Slow down! |
500 | Internal Server Error | We had a problem on our side. Try again later. Sorry! |
503 | Service Unavailable | We're temporarily offline for maintenance. Please try again later. |