Getting Started with bitxchange REST API¶
This guide will cover the use of the Spot Market API’s, parameter options and their expected results, for more information about the specific methods and behaviors can be found in the code documentation in the git repo.
Installation¶
Install via package name
pip install bitxchange-py-api
Alternatively, install with git repository path
python -m pip install git+https://github.com/Wozinga/bitxchange_python_api.git
API Endpoint Connection¶
Spot(base_url=<api_url>, key=<api_key>, secret=<api_secret>)
To successfully authenticate with the API endpoint Spot() requires a a valid API & secret key to be passed in at time of instanciation.
If no base url is provided it will revert to Bitxchnage default
from bitxchange.spot import Spot client = Spot( base_url='https://exchangeapi.bit-xchange.co', key='12345678-1234-1234-1234-1234567890123', secret='asdfghj-asdfghjh-asdfghj' )
Spot Market Data Endpoints¶
Available Trading pairs¶
- bitxchange.spot.market.Market.available_trading_pairs(self)¶
Description: Returns a list of all active trading pairs currently support by the exchange
GET /api/available_pairs
Args: None
KWargs: None
Request:
from bitxchange.spot import Spot exchange = Spot() print(exchange.available_trading_pairs())
Response:
{ 'status': 1, 'message': 'Success', 'combinations': [ 'ETH_BTC', 'BTC_ETH', 'USDX_BTC', 'USDX_ETH', 'XBTC2_USDX' ] }
All Market tickers¶
- bitxchange.spot.market.Market.all_market_tickers(self)¶
Description: Returns current spot tickers for all active pairs on the exchange
GET /api/tickers
Args: None
KWargs: None
Request:
from bitxchange.spot import Spot exchange = Spot() print(exchange.all_market_ticker())
Response:
{ 'status': 1, 'message': 'Success', 'combinations': { 'BTC_ETH': { 'pair': 'BTC_ETH', 'last': 13.66910445, 'lowestAsk': 13.66910445, 'highestBid': 14.53241631, 'percentChange': 0, 'base24hrVolume': 0, 'quote24hrVolume': 0, 'low24hr': '0.00', 'high24hr': '0.00' }, 'XBTC2_USDX': { 'pair': 'XBTC2_USDX', 'last': 0.38805, 'lowestAsk': 0.38805, 'highestBid': 0.38805, 'percentChange': 0, 'base24hrVolume': 0, 'quote24hrVolume': 0, 'low24hr': '0.00', 'high24hr': '0.00' }, 'USDX_BTC': { 'pair': 'USDX_BTC', 'last': 2.1018099999999998, 'lowestAsk': 2.1018099999999998, 'highestBid': 2.1018099999999998, 'percentChange': 0, 'base24hrVolume': 0, 'quote24hrVolume': 0, 'low24hr': '0.00', 'high24hr': '0.00' }, 'USDX_ETH': { 'pair': 'USDX_ETH', 'last': 0.0003025253, 'lowestAsk': 0.0003025253, 'highestBid': 0.0003025253, 'percentChange': 0, 'base24hrVolume': 0, 'quote24hrVolume': 0, 'low24hr': '0.00', 'high24hr': '0.00' }, 'ETH_BTC': { 'pair': 'ETH_BTC', 'last': '0.06511605', 'lowestAsk': 0.065959507, 'highestBid': 0.0701253706, 'percentChange': '100.00', 'base24hrVolume': 0, 'quote24hrVolume': 0, 'low24hr': '0.00', 'high24hr': '0.00' } } }
24 Hour volume¶
- bitxchange.spot.market.Market.volume_24h(self)¶
Description: Returns the current 24 hour trade volume of each active trade pair available on the exchange.
GET /api/volume24
Args: None
KWargs: None
Request:
from bitxchange.spot import Spot exchange = Spot() print(exchange.volume_24h())
Response:
{ 'status': 1, 'message': 'Success', 'combinations': { 'ETH_BTC': { 'ETH': 0, 'BTC': 0 }, 'USDX_BTC': { 'USDX': 0, 'BTC': 0 }, 'USDX_ETH': { 'USDX': 0, 'ETH': 0 }, 'BTC_ETH': { 'BTC': 0, 'ETH': 0 }, 'XBTC2_USDX': { 'XBTC2': 0, 'USDX': 0 } } }
Specific Market ticker¶
- bitxchange.spot.market.Market.specific_market_ticker(self, target_pair)¶
Description: Returns the latest ticker for the target pair provided.
GET /api/ticker/<target_pair>
- Parameters
<str> (- target_pair) –
KWargs: None
Request:
from bitxchange.spot import Spot exchange = Spot() print(exchange.specific_market_ticker('ETH_BTC'))
Response:
{ 'status': 1, 'message': 'Success', 'combinations': { 'pair': 'BTC_ETH', 'last': 13.66709995, 'lowestAsk': 13.66709995, 'highestBid': 14.53028521, 'percentChange': 0, 'base24hrVolume': 0, 'quote24hrVolume': 0, 'low24hr': '0.00', 'high24hr': '0.00' } }
Expected Error Responses:
ERROR: 'BTC_ET' is not a valid target pair or format
Order order_book¶
- bitxchange.spot.market.Market.order_book(self, target_pair)¶
Description: Returns current orderbook for the target pair.
GET /api/order_book/<target_pair>
- Parameters
<str> (- target_pair) –
KWargs: None
Request:
from bitxchange.spot import Spot exchange = Spot() print(exchange.order_book('ETH_BTC'))
Response:
{ 'status': 1, 'message': 'Success', 'bids': [ ], 'asks': [ [ '1.00000000', '0.05917959' ] ] }
Expected Error Responses:
ERROR: 'BTC_EH' is not a valid target pair or format
Trade History¶
- bitxchange.spot.market.Market.trade_history(self, target_pair)¶
Description: displays the trade history of the target pair
GET /api/trade_history/<target_pair>
- Parameters
<str> (- target_pair) –
KWargs: None
Request:
from bitxchange.spot import Spot exchange = Spot() print(exchange.trade_history('ETH_BC'))
Response:
{ 'status': 1, 'message': 'Success', 'trade_history': [ { 'date': '2021-08-10T10:04:03.546Z', 'type': 'Sell', 'rate': '0.06511605', 'amount': '1.00000000', 'total': '0.06511605' }, { 'date': '2021-08-10T09:59:56.020Z', 'type': 'Sell', 'rate': '0.06511605', 'amount': '1.00000000', 'total': '0.06511605' }, { 'date': '2021-08-10T09:46:02.707Z', 'type': 'Buy', 'rate': '0.06923458', 'amount': '1.00000000', 'total': '0.06923458' }, { 'date': '2021-08-10T09:43:50.563Z', 'type': 'Sell', 'rate': '0.06509066', 'amount': '1.00000000', 'total': '0.06509066' }, { 'date': '2021-08-10T08:57:20.138Z', 'type': 'Sell', 'rate': '0.06503080', 'amount': '1.00000000', 'total': '0.06503080' }, { 'date': '2021-08-06T07:16:31.622Z', 'type': 'Sell', 'rate': '0.06459963', 'amount': '3.00000000', 'total': '0.19379889' }, { 'date': '2021-08-06T07:15:53.359Z', 'type': 'Sell', 'rate': '0.06461662', 'amount': '1.00000000', 'total': '0.06461662' } ] }
Expected Error Responses:
ERROR: 'BTC_EH' is not a valid target pair or format
Account Order Endpoints¶
All API’s that interact with a users account require the API call to be authenticated
exchange = Spot(
key='12345678-1234-1234-1234-123456789012',
secret='abcdefg-abcdefg-abcdefg'
)
Create New Account Order¶
- bitxchange.spot.account.Account.create_order(self, **kwargs)¶
Description: Creates a new order under the authed account, user has the ability to create a market price buy/sell order OR can post a fixed price buy/sell order.
POST /trade/placeOrder
args: None
- kwargs:
amount <int> - amount of token to buy or sell.
price <int> - price to pay or be paid for amount.
pair <str> - trading target pair.
order_type <int> - 1=market_price, 2=fixed_price.
type <str> - ‘buy’ or ‘sell’.
Request:
from bitxchange.spot import Spot exchange = Spot( key='12345678-1234-1234-1234-123456789012', secret='abcdefg-abcdefg-abcdefg' ) params = { "amount": 1, "price": 0.05917959, "pair": "BTC/ETH", "order_type": 2, "type": "sell" } x = client.create_order(**params) print(x)
Response:
{ 'status': 200, 'message': 'Successfully placed your order', 'data': { 'userId': 'F3Ry+a4de+vJsydbGpB5rpC+llY/+8tqQZCmCVqO+Q0=', 'firstCurrency': '5df20c3fb6e5c35860023dd3', 'secondCurrency': '5df20c3fb6e5c35860023dd4', 'Amount': 1, 'Price': 0.05917959, 'Type': 'Sell', 'Process': 'Pending', 'Fee': 0.0005918, 'Total': 0.05917959, 'wallet': '', 'ordertype': '2', 'pair': '60a6c1719f97153d6d65ead0', 'status': 'active', 'fee_per': 1, 'stopprice': 0, 'partial': False, 'trade_his': '', 'tradetime': '', 'order_no': '', 'incre_order': '', 'user_type': 'user', 'filledAmount': 0, 'orderDate': '2021-08-13T18:31:22.266Z', 'orderTime': '2021-08-13T18:31:22.266Z', 'datetime': '2021-08-13T18:31:22.266Z', 'updated_at': '2021-08-13T18:31:22.266Z', '__v': 0, 'orderId': 'sYqFgOK1Q9TV5LAJvxtmiSajirIWPphSWWeXcfGuBQ4=' } }
Expected Error Responses
{ 'status': 412, 'message': 'Amount and Price decimal should not be greater than eight digits.' } { 'status': 412, 'message': 'Insufficient Balance' }
Check Statis of Active Order¶
- bitxchange.spot.account.Account.check_order_status(self, **kwargs)¶
Description: Check the current status of a given live order belonging to the authed account.
POST /trade/orderstatus
args: None
- kwargs:
orderId <str> - trade order ID
Request:
from bitxchange.spot import Spot exchange = Spot( key='12345678-1234-1234-1234-123456789012', secret='abcdefg-abcdefg-abcdefg' ) params = { "orderId": 'sYqFgOK1Q9TV5LAJvxtmiSajirIWPphSWWeXcfGuBQ4=' } x = client.check_order_status(**params) print(x)
Response:
{ 'status': 200, 'message': 'success', 'data': { 'userId': 'F3345gfdfdfgfhjklB5rpC+llY/+4567890+Q0=', 'firstCurrency': '5df20c3fb6e5c35860023dd3', 'secondCurrency': '5df20c3fb6e5c35860023dd4', 'Amount': 1, 'Price': 0.05917959, 'Type': 'Sell', 'Process': 'Pending', 'Fee': 0.0005918, 'Total': 0.05917959, 'wallet': '', 'ordertype': '2', 'pair': '60a6c1719f97153d6d65ead0', 'status': 'active', 'fee_per': 1, 'stopprice': 0, 'partial': False, 'trade_his': '', 'tradetime': '', 'order_no': '', 'incre_order': '', 'user_type': 'user', 'filledAmount': 0, 'orderDate': '2021-08-13T18:31:22.266Z', 'orderTime': '2021-08-13T18:31:22.266Z', 'datetime': '2021-08-13T18:31:22.266Z', 'updated_at': '2021-08-13T18:31:22.266Z', '__v': 0, 'orderId': 'sYqFgOK1Q9TV5LAJvxtmiSajirIWPphSWWeXcfGuBQ4=' } }
Expected Error Responses
'>>'
Cancel Active Order¶
- bitxchange.spot.account.Account.cancel_order(self, **kwargs)¶
Description: Cancel a given live order belonging to the authed account.
POST /trade/cancelOrder
args: None
- kwargs:
orderId (str) - trade order ID
Request:
from bitxchange.spot import Spot exchange = Spot( key='12345678-1234-1234-1234-123456789012', secret='abcdefg-abcdefg-abcdefg' ) params = { 'orderId': 'sYqFgOK1Q9TV5LAJvxtmiSajirIWPphSWWeXcfGuBQ4=' } x = client.cancel_order(**params) print(x)
Response:
{ 'status': 200, 'message': 'Order cancelled successfully', 'currency': 'firstCurrency', 'balance': 10 }
Expected Error Responses
{ 'status': 412, 'message': "Order doesn't exists" }