- General API Information
- General API Information on Endpoints
- Limits
- Endpoint security type
- Signed Endpoint Security
- Timing Security
- Http Status Codes
- Error Messages
- Permission Scopes
- Base endpoint is :
https://api.sistemkoin.com/api/
- All endpoints return either a JSON object or Array
- All time and timestamp related fields are in millisecond
- All endpoints contain the status field. This will tell you the success of your request, whether
success
orfailure
. - As a result of all successful requests, endpoints respond in a fixed structure.
Sample successful request payload:
{
"status": "success",
"data": {...}
}
Sample failure request payload:
{
"status": "failure",
"message": "{ERROR_MESSAGE_KEY}"
}
- For
GET
endpoints, parameters must be send as aquery string
- For
POST
,DELETE
,PATCH
,PUT
endpoints, the parameters may be send as aquery string
or in therequest body
. You may mix parameters between both therequest body
andquery string
- Parameter orders is unimportant in unsigned endpoints
- Currently request limit is :
2 Request per second
- When server returns
Http 429 [Too many request]
, it's your obligation as an API to back off and not spam the API - Repeatedly violating rate limits and/or failing to back off after receiving 429s will result in an automated API Key ban (
HTTP 418 [I'm a Teapot]
) - API Key bans are tracked and scale in duration for repeat offenders, from 3 minutes to 3 days
- A
Retry-After
header is sent with a 418 responses and will give the number of seconds required to wait. - The limits on the API are based on the API-KEY, not the IP addresses
- API Keys & Secrets are case-sensitive
- Each endpoint requires API Key via
X-STK-ApiKey
- API Keys require
scope permission
for some endpoints
SIGNED
endpoints require an additional parameter,signature
, to be sent in thequery string
orrequest body
- Endpoints use
HMAC SHA256
signatures. TheHMAC SHA256
signature is a keyedHMAC SHA256
operation. Use yourapiSecret
as the key and totalParams as the value for the HMAC operation
- A
SIGNED
endpoint also requires a parameter,timestamp
, to be sent which should be the millisecond timestamp of when the request was created and sent. - An additional parameter,
recvWindow
, may be sent to specify the number of milliseconds aftertimestamp
the request is valid for. IfrecvWindow
is not sent, it defaults to 5000
- HTTP
4XX
return codes are used for malformed requests; the issue is on the sender's side - HTTP
401
return code is used when wrong api key - HTTP
418
return code is when breaking a request rate limit - HTTP
429
return code is used when an API Key has been auto-banned for continuing to send requests after receiving 429 codes. - HTTP
5XX
return codes are used for internal errors; the issue is on Sistemkoin's side
request_timeout
- This message is given when time security could not be passedincorrect_data_format
- This message is given whentestSignature
endpoint failsthis_area_not_allowed
- This message is given when API Key does not have required scope permissionmarket_not_found
- This message is given when market not foundcant_receive_fee_information
- This error is given if an unexpected error is encountered during the calculation of user fee ratessocket_is_busy
- This error is given when the service is too busy when going through the validation check to join the socket connectionamount_must_be_above_zero
- This error is given when the trade amount is equal to or below zerosocket_is_busy
- This error is given when the service is too busy when going through the validation check to join the socket connectionthere_is_no_pair_value
- This error is given when given tade pair not foundyou_can_not_trade_below_minimum_trade_amount
- This error is given when trade amount is minimum permitted trade amounttransaction_is_not_available_right_now_for_this_coin
- This error is given when one of the coins is not available for tradingtrade_limits_exceeded
- This error is given when trade price is above or below current ratetransaction_is_not_available_right_now_for_this_coin
- This error is given when one of the coins is not available for tradingdo_not_have_currency
- This error is given when user does not have the coin to be solddo_not_have_enough_balance
- This error is given when user does not have enough balance for the coin to be solddo_not_have_currency
- This error is given when user does not have the coin to be soldtrade_failed
- This error is given when trade failed due to an error on the api side
trade
- Required scope to create, delete ordershow_balances
- Required scope to get user balancesshow_account_info
- Required scope to get user & profile informationshow_history
- Required scope to get order history & trade history
Here is a step-by-step example of how to send a valid signed payload from the Linux command line using echo, openssl, and curl.
This is also the example ofg making an order
POST /api/v1/market
Parameter | Value |
---|---|
symbol | BTCTRY |
type | BUY |
amount | 1 |
price | 0.1 |
recvWindow | 5000 |
timestamp | 1499827319559 |
symbol=BTCTRY&type=BUY&amount=1&price=0.1&recvWindow=5000×tamp=1499827319559
[linux]$ echo -n "symbol=BTCTRY&type=SELL&amount=1&price=49000&recvWindow=5000×tamp=2573117658 | openssl dgst -sha256 -hmac "9d3fcd92dfc8590773cb38ade681f8ec9cfe1b511f6508c49681da88167df422"
(stdin)= 6616471dd1bd11caa6363fbc52efc1d37e82ce7fa678328d3c7168e5c6a7ace8
(HMAC SHA256)
[linux]$ curl -H "X-STK-ApiKey: [API_KEY]" -X POST 'https://api.sistemkoin.com/api/v1/market' -d 'symbol=BTCTRY&type=SELL&amount=1&price=49000&recvWindow=5000×tamp=2573117658&signature=6616471dd1bd11caa6363fbc52efc1d37e82ce7fa678328d3c7168e5c6a7ace8'
symbol=BTCTRY&type=SELL&amount=1&price=49000&recvWindow=5000×tamp=2573117658&signature=6616471dd1bd11caa6363fbc52efc1d37e82ce7fa678328d3c7168e5c6a7ace8
[linux]$ echo -n "symbol=BTCTRY&type=SELL&amount=1&price=49000&recvWindow=5000×tamp=2573117658" | openssl dgst -sha256 -hmac "9d3fcd92dfc8590773cb38ade681f8ec9cfe1b511f6508c49681da88167df422"
(stdin)= 6616471dd1bd11caa6363fbc52efc1d37e82ce7fa678328d3c7168e5c6a7ace8
(HMAC SHA256)
[linux]$ curl -H "X-STK-ApiKey: [API_KEY]" -X POST 'https://api.sistemkoin.com/api/v1/market?symbol=BTCTRY&type=SELL&amount=1&price=49000&recvWindow=5000×tamp=2573117658&signature=6616471dd1bd11caa6363fbc52efc1d37e82ce7fa678328d3c7168e5c6a7ace8'
- Terminology base asset refers to the asset that is the quantity of a symbol. quote asset refers to the asset that is the price of a symbol. ENUM definitions Symbol status (status):
- PARTIALLY_FILLED
- FILLED
- CANCELED
- BUY
- SELL
DELETE /api/v1/market
- Users can delete their orders from delete endpoint.
Parameter | Value |
---|---|
orderID | {order_id} |
signature | [SIGNATURE] |
{
"orderID": "{order_id}",
"signature": "{SIGNATURE}"
}
{
"status": "success|failure"
}
GET /api/v1/account/orders
Request filters;
symbol : STRING : Pair symbol
status : ENUM : PENDING, PARTIALLY_FILLED, FILLED
side : ENUM : asks, bids
- Endpoint will give user's order history
Name | Type | Description |
---|---|---|
id | INT | ID of the trade |
coin | INT | Traded Coin |
pairCoin | INT | Traded Pair Coin |
pair | INT | Symbol |
amount | FLOAT | Traded Amount |
price | INT | Traded Price |
coinPrecision | INT | Traded Coin's Decimal Number |
pairCoinPrecision | INT | Traded Pair Coin's Decimal Number |
isActive | INT | Pair's status |
{
"status": "success",
"data" : [
{
"id": 10000
"coin": "BTC"
"pairCoin": "TRY"
"pair": "BTCTRY"
"average": "70010.00000000"
"triggerPrice": "70010.00000000"
"remainingAmount": "0.24583160"
"amount": "1.00000000"
"orderStatus": "PENDING"
"coinPrecision": 8
"pairCoinPrecision": 2
"isActive": true
},
{
"id": 10001
"coin": "BTC"
"pairCoin": "TRY"
"pair": "BTCTRY"
"average": "70010.00000000"
"triggerPrice": "70010.00000000"
"remainingAmount": "0.1"
"amount": "1.00000000"
"orderStatus": "FILLED"
"coinPrecision": 8
"pairCoinPrecision": 2
"isActive": true
}
]
}
GET /api/v1/account/trades
- Endpoint will give user's trade history
Name | Type | Description |
---|---|---|
id | INT | ID of the trade |
coin | INT | Traded Coin |
pairCoin | INT | Traded Pair Coin |
pair | INT | Symbol |
amount | INT | Traded Amount |
price | INT | Traded Price |
coinPrecision | INT | Traded Coin's Decimal Number |
pairCoinPrecision | INT | Traded Pair Coin's Decimal Number |
isActive | INT | Pair's status |
{
"status": "success",
"data": [
{
"id": 2627
"coin": "XVG"
"pairCoin": "EUR"
"pair": "XVGEUR"
"amount": "1000.00000000"
"price": "0.12300000"
"coinPrecision": 2
"pairCoinPrecision": 6
"isActive": true
},
{
"id": 2628
"coin": "XVG"
"pairCoin": "EUR"
"pair": "XVGEUR"
"amount": "1000.00000000"
"price": "0.12300000"
"coinPrecision": 2
"pairCoinPrecision": 6
"isActive": true
}
]
}
GET /api/v1/account/balance
Parameter | Value |
---|---|
symbol | BTC |
- Endpoint will give user's wallet balances
Request
{
"symbol": "BTC"
}
{
"status": "success",
"data": [
{
"symbol": "BTC",
"amount": "2116.28330195",
"reservedAmount": "2.89975867",
"lendingAmount": "0.00000000",
}
]
}
GET /api/v1/market
- Get open Market Orders by pair and limit
Name | Type | Mandator | Description |
---|---|---|---|
symbol | STRING | YES | SYMBOL OF THE PAIR |
limit | INT | YES | LIMIT OF THE ORDERS API |
- You can get symbols from .... endpoint
- Limits are 10, 25, 50
Name | Type | Description |
---|---|---|
AMOUNT | STRING | Pair's status |
PRICE | STRING | Pair's status |
{
"status": "success",
"timestamp": 1576506570,
"bids": [
{
"price": "72010.00000000",
"amount": "2.42000000"
},
{
"price": "71010.00000000",
"amount": "0.24583160"
},
{
"price": "70010.00000000",
"amount": "0.24583160"
}
],
"asks": [
{
"price": "77000.00000000",
"amount": "3.10000000"
},
{
"price": "78000.00000000",
"amount": "9.80000000"
},
{
"price": "79000.00000000",
"amount": "4.90000000"
},
{
"price": "80000.00000000",
"amount": "4.90000000"
}
]
}
GET /api/v1/trade
- Endpoint gives pair's trade history
Name | Type | Mandator | Description |
---|---|---|---|
symbol | STRING | YES | SYMBOL OF THE PAIR |
limit | INT | YES | LIMIT OF THE ORDERS API |
- You can get symbols from .... endpoint
- Limits are 10, 25, 50
Name | Type | Description |
---|---|---|
PRICE | STRING | Price of Trade |
VOLUME | STRING | Amount of the traded coin |
FUNDS | STRING | Total amount of Pair Coin's Trade |
SIDE | STRING | BID OR ASK |
TIMESTAMP | INTEGER | Time of the Trade |
{
"status": "success",
{
"data": [
{
"price": "49000.00000000",
"volume": "1.00000000",
"funds": "49000.00000000",
"side": "bid",
"timestamp": 1577099182
},
{
"price": "48000.00000000",
"volume": "2.00000000",
"funds": "96000.00000000",
"side": "bid",
"timestamp": 1577099181
},
]
POST /api/broadcast/channel
User can get open orders, trades and wallet balance updates from socket connection.
To get an authentication for the socket connection you must send a post request to the above endpoint to get your keys
{
"status":"success",
"data":{
"auth":"{SOCKET_AUTH}",
"channel":"{CHANNEL}",
"key":"{SOCKET_AUTH_KEY}"
}
}
With key and auth you can subscribe to the channel.
- Domain : services.sistemkoin.com
- Port : 17032
User can join public channel whenever he/she wants.
POST /api/testSignature
Endpoint is for checking the validation of signature.
{
"name": "Foo",
"surname": "Bar",
"location": "Milkyway Galaxy, Planet Earth"
}
{
"status": "success"
"data": {
"payload": {
"name": "Foo",
"surname": "Bar",
"location": "Milkyway Galaxy, Planet Earth",
"timestamp": "1576500171",
"recvWindow": "5000",
"signature": "db9b4ab53f23d8559675f478b3ff5ad84ac4dea9961ac577d96c90b310e0433a"
},
"payloadString": "name=Foo&surname=Bar&location=Milkyway+Galaxy%2C+Planet+Earth×tamp=1576500171&recvWindow=5000&signature=db9b4ab53f23d8559675f478b3ff5ad84ac4dea9961ac577d96c90b310e0433a",
"isAccepted": true
}
}
GET /api/ping
Endpoint is for checking the if the user can communicate with the api.
{
"status": "success"
"data": {
"message": "pong"
}
}
GET /api/systime
Endpoint is for checking the if the user can communicate with the api.
{
"status": "success"
"data": {
'timestamp' : 1573397426,
'dateTimeString' => 2019-10-11 14:51:42,
}
}
GET /api/v1/market/pairs
- This endpoint returns pair infos
{
"status": "success"
"data": {
'id' : 1,
'change' : 2,
'changeDirection' : 1,
'changeValue' : "1000",
'coinName' : "Bitcoin",
'coinSymbol' : "BTC",
'numberOfDigitsCoin' : 8,
'numberOfDigitsPairCoin' : 2,
'pairCoinSymbol' : "TRY",
}
}
GET /api/v1/market/ticker
- This endpoint returns pairs' market data
{
"status": "success"
"data": {
"TRY": {
"DEEX": {
"symbol": "DEEX",
"high": "0.076173",
"low": "0.070125",
"askPrice": "0.09000000",
"bidPrice": "0.08100000",
"current": "0.076173",
"volume": "4097.997093",
"changeAmount": "0.00531600",
"changePercentage": "7.50"
},
"IGG": {
"symbol": "IGG",
"high": "0.000503",
"low": "0.000500",
"askPrice": "0.00060000",
"bidPrice": "0.00022600",
"current": "0.000503",
"volume": "8361.999966",
"changeAmount": "0.00000200",
"changePercentage": "0.40"
}
}
}
GET /api/v1/account/details
- This endpoint returns profile info
{
"status": "success"
"data": {
email : "fo@bar.com"
name : "Foo"
surname : "Bar"
locale : "{LOCALE}"
refCode : "3432432"
phone : "+905*********"
verified : 1
usePinCode : 1
lastSessionIP : "170.**.***.**"
useStkCoinForPayFees : 1
}
}
GET /api/v1/coins/fee
- This endpoint returns user's fee details for specific coin in percentage
{
"status": "success"
"data": {
buyFee : 1
sellFee : 1
}
}