General API Information

The base endpoint is: https://api.ttnex.io All endpoints return either a JSON object or array. All time and timestamp related fields are in milliseconds. Requested URL needs to be determined by BASE and specific endpoint combination.

Endpoint

Each interface has its own endpoint, described by field HTTP REQUEST in the docs.

Request & Response

All requests and responses are application/json content type.

All response from api are in JSON format.

Response return error. the response will be of the following format:

    {
        "status": false,
        "errors": [
           "error message", 
            ...
        ]
    }

Response return successful. results of api in data. the response will be of the following format:

    {
        "status": true,
        "data": { ... }
    }

Endpoint security

Each endpoint has a security type that determines the how you will interact with it. API-keys are passed into the Rest API via the API_KEY header. API-keys and secret-keys are case sensitive. For User data => Endpoint requires sending a valid API-Key and signature. For User stream => Endpoint requires sending a valid API-Key. TRADE and USER_DATA endpoints are SIGNED endpoints.

SIGNED (TRADE and USER DATA) Endpoint security

SIGNED endpoints require an additional parameter, signature, to be sent in the query string or request body. Endpoints use HMAC SHA256 signatures. The HMAC SHA256 signature is a keyed HMAC SHA256 operation. Use your secretKey as the key and totalParams as the value for the HMAC operation. The signature is not case sensitive.

Timing security

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 after timestamp the request is valid for. If recvWindow is not sent, it defaults to 5000. The logic is as follows:

if (timestamp < (serverTime + 1000) && (serverTime - timestamp) <= recvWindow) {
   // process request
} else {
   // reject request

Serious trading is about timing. Networks can be unstable and unreliable, which can lead to requests taking varying amounts of time to reach the servers. With recvWindow, you can specify that the request must be processed within a certain number of milliseconds or be rejected by the server. It's recommended to use a small recvWindow of 5000 or less!

SIGNED Endpoint Examples for POST /api/v1/trade

coin : BTC

apiKey : FcJXEbiSbFBOIJKVEMcdICdaRTiGHeNYhYc

secretKey : iPBUpOwOPrSmokZbnJpXxDfnMXZUHOFbTQwjejeVbhVujbliYo

queryString:

coin=BTC&recvWindow=5000&timestamp=1558088640489

HMAC SHA256 signature:

bf04aa37e7073ae88e6132bb41401811e55736d3191ae4a94e932968140f7a3f

signed querystring:

coin=BTC&recvWindow=5000&timestamp=1558088640489&signature=bf04aa37e7073ae88e6132bb41401811e55736d3191ae4a94e932968140f7a3f

General endpoints

Test connectivity

HTTP Request

GET /api/v1/ping

Response
{
    "status": true,
    "data": {}
}

Check server time

HTTP Request

GET /api/v1/time

Response
{
    "status": true,
    "data": 1613642958000
}

Market data

Order Book

Get a list of open orders for a symbol.

HTTP Request

GET /api/v1/depth

Request Parameter

pair : LTCBTC

count : 100 (Optional)

 
Response
{
    "status": true,
    "data": {
        "bids": [
            {
                "price": 0.018,
                "volume": 3,
                "total": 0.05399999
            },
            {
                "price": 0.017,
                "volume": 3.4,
                "total": 0.0578
            }
        ],
        "asks": [
            {
                "price": 0.027,
                "volume": 9,
                "total": 0.243
            },
            {
                "price": 0.026,
                "volume": 5,
                "total": 0.13
            }
        ]
    }
}

Trade History

HTTP Request

GET /api/v1/tradehistory

Request Parameter

pair : LTCBTC

count : 100 (Optional)

  
Response
{
    "status": true,
    "data": [
        {
            "price": 0.022,
            "volume": 0.3,
            "timestamp": 1611404481550,
            "side": "buy"
        },
        {
            "price": 0.023,
            "volume": 0.1,
            "timestamp": 1611404472280,
            "side": "sell"
        }        
    ]
}

Kline/Candlesticks data

HTTP Request

GET /api/v1/kline

Request Parameter

pair : LTCBTC

period : 1m (1m,5m,15m,30m,1h,8h,1d,1w)

Response
{
    "status": true,
    "data": [
        {
        "o": 0.02500000,
        "h": 0.02500000,
        "l": 0.02500000,
        "c": 0.02500000,
        "v": 0.02680000,
        "t": 1562758980
        },
        {
        "o": 0.02500000,
        "h": 0.02680000,
        "l": 0.02500000,
        "c": 0.02680000,
        "v": 25.00000000,
        "t": 1562759100
        },
        {
        "o": 0.02680000,
        "h": 0.02750000,
        "l": 0.02680000,
        "c": 0.02750000,
        "v": 24.97320000,
        "t": 1562760900
        },
    ]
}

Last 24 hours DATA

HTTP Request

GET /api/v1/market

Request Parameter

pair : LTCBTC (optional)

Response
{
    "status": true,
    "data": {
        "market": [
            {
                "TwentyHRVol": 0,
                "TwentHRHigh": 0,
                "TwentHRLow": 0,
                "Pair": "LTCBTC",
                "Coin": "LTC",
                "Currency": "BTC",
                "Price": 0.022,
                "Volume": 0.3,
                "ChangePer": 46.66666,
                "ChangePrice": 0.007
            }
        ]
    }
}

Account

Get Balance

HTTP Request

POST /api/v1/balance

Request Parameters

coin : BTC

Response
{
    "status": true,
    "data": [
        {
        "coin": "BTC",
        "balance": 90.77753529,
        "onorders": 5.47373137,
        "pendingWithdraw": 0,
        "available": 85.30380392
        }
    ]
}

Trading

Trade

HTTP Request

POST /api/v1/trade

Request Parameters

pair : LTCBTC

side : buy (sell)

size : 1

type : market (limit)

price : 0.03140000 (if order type is limit)

 
Response
{
    "status": true,
    "data": {
        "Isvalid": true,
        "Errors": [],
        "Successes": [
            "orderId:86C27D3B-90C8-4F84-98FC-219FDD295319"
        ],
        "Model": null
    }
}