bittrexjs v0.0.4
BittrexJS
A 'strong typed' Bittrex API client written in typescript.
Typed
All methods have typed request parameters and typed responses using interfaces. Even when using the library in javascript, modern IDE's should be able to provide hints and warnings using the accompanied type files.
How to use
Install
npm install bittrexjsExample
let BittrexClient = require('bittrexjs').Client;
let bittrex = new BittrexClient();
// using promises
bittrex.getLatestCandle('BTC-ETH').then((response) => {
console.log(response);
});
// using await
(async () => {
let response = await client.getLatestCandle('BTC-ETH');
console.log(response);
})()Result:
{ success: true,
message: '',
result:
[ { O: 0.07079,
H: 0.07079,
L: 0.07079,
C: 0.07079,
V: 49.016782,
T: '2017-09-11T19:20:00',
BV: 3.46989793 } ] }Methods
Client.authenticate(apiCredentials: ApiCredentials)
This method authenticates your client so you can reach account specific endpoints.
Store your api keys wisely!
Example
let client = new BittrexClient();
client.authenticate({
apikey: '',
apisecret: ''
});Request Methods
All request methods return a promise with a BittrexResponse.
interface BittrexResponse<T> {
result: T,
success: boolean,
message: string
}BittrexResponse.result contains the actual payload.
Client.getMarkets()
Retrieve all markets.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| none |
Returns
Promise<BittrexResponse<Market[]>>
Example
client.getMarkets().then((response) => {
let markets = response.result;
console.log(markets);
});Result:
[{ MarketCurrency: 'RADS',
BaseCurrency: 'BTC',
MarketCurrencyLong: 'Radium',
BaseCurrencyLong: 'Bitcoin',
MinTradeSize: 1e-8,
MarketName: 'BTC-RADS',
IsActive: true,
Created: '2016-01-26T23:22:16.193',
Notice: null,
IsSponsored: null,
LogoUrl: 'https://bittrexblobstorage.blob.core.windows.net/public/259f6efd-9b21-43cf-9c6b-8f67b94ca092.png' },
... ]Client.getCurrencies()
Retrieve all currencies.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| none |
Returns
Promise<BittrexResponse<Currency[]>>
Example
client.getCurrencies().then((response) => {
let currencies = response.result;
console.log(currencies);
});Result:
[{ Currency: 'XRP',
CurrencyLong: 'Ripple',
MinConfirmation: 10,
TxFee: 0.02,
IsActive: true,
CoinType: 'RIPPLE',
BaseAddress: 'rPVMhWBsfF9iMXYj3aAzJVkPDTFNSyWdKy',
Notice: null },
... ]Client.getMarketTicker(market: string)
Retrieve Highest Bid, Lowest Ask and Price of Latest Trade
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| market | string | yes | e.g. BTC-ETH |
Returns
Promise<BittrexResponse<MarketTick>>
Example
let response = await client.getMarketTicker('BTC-ETH');
let marketTick = response.result;
console.log(marketTick);Result:
{
Bid: 0.0707,
Ask: 0.0709,
Last: 0.0707
}Client.getMarketCandles(market: string, tickInterval: TickInterval = 'FiveMin')
Retrieve OHLCV and BV (Open, High, Low, Close, Volume, Base Volume)
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| market | string | yes | e.g. BTC-ETH |
| tickInterval | string (TickInterval) | no (defaults to FiveMin) | options: OneMin, FiveMin, ThirtyMin, hour, day |
Returns
Promise<BittrexResponse<Candle[]>
Example
let response = await client.getMarketCandles('BTC-ETH', 'OneMin');
let marketCandles = response.result;
console.log(marketCandles);Result:
[{ O: 0.0799,
H: 0.08,
L: 0.07988,
C: 0.08,
V: 148.09106807,
T: '2017-09-01T20:08:00',
BV: 11.83406577 },
... ]Client.getLatestCandle(market: string, tickInterval: TickInterval = 'FiveMin')
Retrieve latest OHLCV and BV (Open, High, Low, Close, Volume, Base Volume)
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| market | string | yes | e.g. BTC-ETH |
| tickInterval | string (TickInterval) | no (defaults to FiveMin) | options: OneMin, FiveMin, ThirtyMin, hour, day |
Returns
Promise<BittrexResponse<Candle[]>
Example
let response = await client.getLatestCandle('BTC-ETH', 'OneMin');
let marketCandles = response.result;
console.log(marketCandles);Result:
[ { O: 0.070555,
H: 0.07094,
L: 0.07055001,
C: 0.07094,
V: 12.22247964,
T: '2017-09-11T18:30:00',
BV: 0.86240266 } ]Client.getMarketSummaries()
Retrieve a summary for each market
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| none |
Returns
Promise<BittrexResponse<MarketSummary[]>>
Example
let response = await client.getMarketSummaries();
let marketSummaries = response.result;
console.log(marketSummaries);Result:
[ { MarketName: 'BTC-MCO',
High: 0.00223017,
Low: 0.00205001,
Volume: 196683.6355223,
Last: 0.00213,
BaseVolume: 416.9640078,
TimeStamp: '2017-09-11T18:37:28.14',
Bid: 0.00213001,
Ask: 0.00214227,
OpenBuyOrders: 1025,
OpenSellOrders: 11446,
PrevDay: 0.0020872,
Created: '2017-07-02T00:37:16.957' },
... ]Client.getMarketSummary(market: string)
Retrieve a summary for each market
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| market | string | yes | e.g. BTC-ETH |
Returns
Promise<BittrexResponse<MarketSummary[]>>
Example
let response = await client.getMarketSummary('BTC-ETH');
let marketSummaries = response.result;
console.log(marketSummaries);Result:
[ { MarketName: 'BTC-ETH',
High: 0.07115187,
Low: 0.06982622,
Volume: 43389.09963617,
Last: 0.070699,
BaseVolume: 3056.27414511,
TimeStamp: '2017-09-11T18:39:54.32',
Bid: 0.07059785,
Ask: 0.070699,
OpenBuyOrders: 3569,
OpenSellOrders: 13823,
PrevDay: 0.07028021,
Created: '2015-08-14T09:02:24.817' } ]Client.getOrderbook(market: string, orderBookType: OrderBookType = 'both')
Retrieve a summary for each market
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| market | string | yes | e.g. BTC-ETH |
| orderBookType | string (OrderBookType) | no (defaults to both) | options: buy, sell, both |
Returns
Promise<BittrexResponse<OrderbookEntry[] | Orderbook>>
'both' returns an orderbook, 'sell' and 'buy' return only a list of quantity-rate pairs.
Example (complete Orderbook)
let response = await client.getOrderbook('BTC-ETH');
let orderbook = response.result;
console.log(orderbook);Result:
{ buy:
[ { Quantity: 0.1, Rate: 0.07059785 },
... ],
sell:
[ { Quantity: 1.9251093, Rate: 0.07068 },
... ]
}Example ('buy' orders)
let response = await client.getOrderbook('BTC-ETH', 'buy');
let orderbookentries = response.result;
console.log(orderbookentries);Result:
[ { Quantity: 0.21277316, Rate: 0.06993263 },
... ]Client.getMarketHistory(market: string)
Retrieve the latest ??? orders for a market
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| market | string | yes | e.g. BTC-ETH |
Returns
Promise<BittrexResponse<Trade[]>>
Example
let response = await client.getMarketHistory('BTC-ETH');
let marketHistory = response.result;
console.log(marketHistory);Result:
[ { Id: 110938880,
TimeStamp: '2017-09-11T18:43:29.427',
Quantity: 1.45871041,
Price: 0.07068,
Total: 0.10310165,
FillType: 'PARTIAL_FILL',
OrderType: 'BUY' },
{ Id: 110938789,
TimeStamp: '2017-09-11T18:43:10.893',
Quantity: 0.5179118,
Price: 0.07050705,
Total: 0.03651643,
FillType: 'FILL',
OrderType: 'SELL' },
... ]Account methods
For the following methods the client needs to be authenticated using client.authenticate(apiCredentials)
Client.buyLimit(market: string, quantity: number, rate: number)
Place limit buy order
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| market | string | yes | e.g. BTC-ETH |
| quantity | number | yes | e.g. 0.01 |
| rate | number | yes | e.g. 0.07050705 |
Returns
Promise<BittrexResponse<OrderReference[]>>
Client.sellLimit(market: string, quantity: number, rate: number)
Place limit sell order
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| market | string | yes | e.g. BTC-ETH |
| quantity | number | yes | e.g. 0.01 |
| rate | number | yes | e.g. 0.07050705 |
Returns
Promise<BittrexResponse<OrderReference[]>>
Client.cancel(orderId: string)
Cancel an order
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderId | number | yes | e.g. 110938880 |
Returns
Promise<BittrexResponse<OrderReference[]>>
Client.getOpenOrders(market?: string)
Get all open orders for all markets, or for a single market
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| market | string | no | e.g. BTC-ETH |
Returns
Promise<BittrexResponse<OpenOrder[]>>
Client.getBalances()
Get all your balances
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| none |
Returns
Promise<BittrexResponse<Balance[]>>
Client.getBalance(currency: string)
Get your balance for a single currency
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| currency | string | yes | e.g. BTC |
Returns
Promise<BittrexResponse<Balance>>
Client.getWithdrawalHistory(currency?: string)
Get all withdrawals or all withdrawals for a single currency
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| currency | string | no | e.g. BTC |
Returns
Promise<BittrexResponse<Withdrawal[]>>
Client.getWithdrawalHistory(currency?: string)
Get all withdrawals or all withdrawals for a single currency
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| currency | string | no | e.g. BTC |
Returns
Promise<BittrexResponse<Withdrawal[]>>
Client.getDepositAddress(currency: string)
Get a deposit address for a currency
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| currency | string | yes | e.g. BTC |
Returns
Promise<BittrexResponse<DepositAddress>>
Client.getDepositHistory(currency?: string)
Get your deposit history for all currencies or for one currency
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| currency | string | no | e.g. BTC |
Returns
Promise<BittrexResponse<Deposit[]>>
Client.getOrderHistory(market?: string)
Get your order history for all markets or for one market
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| market | string | no | e.g. BTC-ETH |
Returns
Promise<BittrexResponse<Order[]>>
Client.getOrder(orderId: string)
Get an order by id
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderId | string | yes | e.g. 12412412 |
Returns
Promise<BittrexResponse<OrderSingle[]>>
Client.withdraw(currency: string, quantity: number, address: string, paymentid?: string)
Withdraw
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| currency | string | yes | e.g. BTC |
| quantity | number | yes | e.g. 0.5 |
| address | string | yes | |
| paymentid | string | no | An optional description to identify your payment |
Returns
Promise<BittrexResponse<OrderSingle[]>>
Contributing:
git clone https://github.com/stijnbuurman/BittrexJS.git
cd BittrexJS
git checkout -b myfeature master
npm install
gulpRoadmap
- Implement Bittrex WebSockets API
- Implement Bittrex API v2
- Finalize documentation - add examples for authenticated methods
- Finalize documentation - add examples for error catching
- Add 'live build' tool
- Remove inconsistencies
- Split client in 'simple' and 'raw'
- Add tests