STEX (former Stocks.Exchange) (Node JS API client)
STEX (former Stocks.Exchange) provides all the core exchange functionality, and additional merchant tools available via the HTTP API where all returned messages are in JSON. It's much easier to work with the API by using one of the clients provided by STEX, so while this page describes the API in case you want or need to build your own client, the examples use the Node JS client.
Requirements
- Node.js
- npm (Node.js package manager)
Dependent Libraries
- "crypto-js": "^3.1.9-1",
- "fs": "0.0.1-security",
- "http-build-query": "^0.7.0",
- "jsonfile": "^5.0.0",
- "pkg": "^4.3.3",
- "request": "^2.87.0"
General
The base URL for all the requests other than public methods is
https://app.stex.com/api2
https://api3.stex.com
Getting started
To get started with the Node JS API client, here's a snippet for creating a client with existing credentials:
In order to use the API functions, you must have an API key and API secret, which is generated in the user profile.
Usage
npm install stocks-exchange-client --save
After install use for example this code!
Example API V2
const stocks = require('stocks-exchange-client').client,
option = {
api_key:'123456789',
api_secret:'123456789'
},
se = new stocks(option, 'https://app.stex.com/api2', 2);
se.userInfo(function (res) {
console.log(res);
});
se.ticker(function (res) {
console.log(res);
});
se.currencies(function (res) {
console.log(res);
});
se.markets(function (res) {
console.log(res);
});
se.marketSummary('BTC', 'USDT', function (res) {
console.log(res);
});
se.prices(function (res) {
console.log(res);
});
se.tradeHistoryPub('BTC_USDT', function (res) {
console.log(res);
});
se.orderbook('BTC_USDT', function (res) {
console.log(res);
});
se.graficPublic({}, function (res) {
console.log(res);
});
se.userInfo(function (res) {
console.log(res);
});
se.activeOrders({}, function (res) {
console.log(res);
});
se.trade({}, function (res) {
console.log(res);
});
se.cancelOrder(7610075, function (res) {
console.log(res);
});
se.tradeHistory({}, function (res) {
console.log(res);
});
se.tradeRegisterHistory({}, function (res) {
console.log(res);
});
se.userHistory({}, function (res) {
console.log(res);
});
se.transHistory({}, function (res) {
console.log(res);
});
se.grafic({}, function (res) {
console.log(res);
});
se.generateWallets('ONION', function (res) {
console.log(res);
});
se.deposit('ONION', function (res) {
console.log(res);
});
se.withdraw('ONION', '123456890', '1.0', function (res) {
console.log(res);
});
se.remindPassword('test@gmail.com', function (res) {
console.log(res);
});
Example WebSocket API V3
const StocksExchange = require('stocks-exchange-client').client;
const option = {
client: {
id: '',
secret: ''
},
tokenObject: {
'access_token': '',
'refresh_token': '',
},
accessTokenUrl: 'https://api3.stex.com/oauth/token',
scope: 'trade profile reports withdrawal',
};
const se = new StocksExchange(option, null, 3);
se.subscribeOrderFillCreated(702,function (res) {
console.log('subscribeOrderFillCreated', res);
});
se.subscribeGlassTotalChanged(702, 'buy', function (res) {
console.log('subscribeGlassTotalChanged', res);
});
se.subscribeGlassRowChanged(702, 'sell', function (res) {
console.log('subscribeGlassRowChanged', res);
});
se.subscribeBestPriceChanged(702, 'ask', function (res) {
console.log('subscribeBestPriceChanged', res);
});
se.subscribeCandleChanged(702, '1', function (res) {
console.log('subscribeCandleChanged', res);
});
se.subscribeBalanceChanged(1, function (res) {
console.log('subscribeBalanceChanged', res);
});
se.subscribeUserOrder(0, 702, 'sell', function (res) {
console.log('subscribeUserOrder', res);
});
se.subscribeUserOrderDeleted(0, 702, function (res) {
console.log('subscribeUserOrderDeleted', res);
});
se.subscribeUserOrderFillCreated(0, 702, function (res) {
console.log('subscribeUserOrderFillCreated', res);
});
Example API V3
const StocksExchange = require('stocks-exchange-client').client;
const option = {
client: {
id: '',
secret: ''
},
tokenObject: {
'access_token': '',
'refresh_token': '',
},
accessTokenUrl: 'https://api3.stex.com/oauth/token',
scope: 'push',
};
const se = new StocksExchange(option, null, 3);
se.profileInfo(function (res) {
console.log(res);
});
se.profileWallets({
sort:'DESC',
sortBy: 'BALANCE'
}, function (res) {
console.log(res);
});
se.profileWalletsById(0, function (res) {
console.log(res);
});
se.newProfileWalletsByCurrencyId(0, function (res) {
console.log(res);
});
se.profileWalletsAddressById(0, function (res) {
console.log(res);
});
se.newProfileWalletsAddressById(0, function (res) {
console.log(res);
});
se.profileDeposits({
sort:'DESC',
limit: 100
}, function (res) {
console.log(res);
});
se.profileDepositsById(0, function (res) {
console.log(res);
});
se.profileWithdrawals({
sort:'DESC',
limit: 100
}, function (res) {
console.log(res);
});
se.profileWithdrawalsById(0, function (res) {
console.log(res);
});
se.createProfileWithdrawals(0, 1, 'test', null,function (res) {
console.log(res);
});
se.profileWithdrawalCancelById(0, function (res) {
console.log(res);
});
se.reportsOrders({
orderStatus:'ALL',
limit: 100
}, function (res) {
console.log(res);
});
se.reportsOrdersById(0, function (res) {
console.log(res);
});
se.tradingOrders(function (res) {
console.log(res);
});
se.deleteAllTradingOrders(function (res) {
console.log(res);
});
se.tradingOrdersById(756, function (res) {
console.log(res);
});
se.deleteTradingOrdersById(756, function (res) {
console.log(res);
});
se.createTradingOrdersById(0, {
type: 'SELL',
amount: 1,
price: 1
}, function (res) {
console.log(res);
});
se.tradingOrderByOrderId(53518170, function (res) {
console.log(res);
});
se.cancelTradingOrderByOrderId(0, function (res) {
console.log(res);
});
se.publicPing(function (res) {
console.log(res);
});
se.publicChart(756, '1D', {
limit: 100,
timeStart: 1514805801,
timeEnd: new Date().getTime()
}, function (res) {
console.log(res);
});
se.publicOrderbook(756, {
limit_bids: 100,
limit_asks: 100
}, function (res) {
console.log(res);
});
se.publicTrades(756, {
sort: 'DESC',
from: 1514805801,
till: new Date().getTime(),
limit: 100
}, function (res) {
console.log(res);
});
se.publicTicker(756 , function (res) {
console.log(res);
});
se.allPublicTicker( function (res) {
console.log(res);
});
se.publicCurrencyPairsById(756, function (res) {
console.log(res);
});
se.publicCurrencyPairsListByCode('BTC', function (res) {
console.log(res);
});
se.publicMarkets(function (res) {
console.log(res);
});
se.publicCurrencyById(1, function (res) {
console.log(res);
});
se.publicCurrency(function (res) {
console.log(res);
});
Common Errors
Here is a list with common errors and their descriptions:
- Invalid Key - not generated key or the key does not correspond to the a user
- Invalid Sign - bad hash-code
- Invalid Nonce - wrong or empty parameter Nonce
- Duplicate Request - parameter Nonce is not unique
- Invalid Method - this method is wrong or missing
- The credentials are invalid - not valid Api Key or Sign