Peatio REST API
Peatio REST API allows to access market data and manage trades using the custom-written software. The end goal is to allow users to create trading platforms on their own to create highly customised and advanced trading strategies.
General API INFO
HTTPHTTP Return Codes
HTTP 4XX return codes are used for malformed requests; the issue is on the sender`s side.
HTTP 403 return code is used when the WAF Limit (Web Application Firewall) has been violated.
HTTP 429 return code is used when breaking a request rate limit.
HTTP 5XX return codes are used for internal errors; the issue is on deployment side. It is important to NOT treat this as a failure operation; the execution status is UNKNOWN and could have been a success.
HTTP 403 return code is used when the WAF Limit (Web Application Firewall) has been violated.
HTTP 429 return code is used when breaking a request rate limit.
HTTP 5XX return codes are used for internal errors; the issue is on deployment side. It is important to NOT treat this as a failure operation; the execution status is UNKNOWN and could have been a success.
Endpoints
All endpoints return either a JSON object or array.
All time and timestamp related fields are in seconds.
All time and timestamp related fields are in seconds.
REST endpoints fall into two types the difference between the two being if the request is public, or requires authentication. In order to access the parts of the API which require authentication, you can use cookies or generate an API key and an API secret.
List of all user API endpoints
you can find here (user_api_docs)
install httpie
install curl
install curl
Public Endpoints Examples
Public Endpoints Examples
Example with HTTPIE:
Example with HTTPIE:
http GET https://exchange.intercore.trade/api/v2/peatio/public/markets
Expected response:
[
{
"amount_precision": 5,
"base_unit": "eth",
"id": "ethusdt",
"max_price": "1000.0",
"min_amount": "0.00001",
"min_price": "0.01",
"name": "ETH/USDT",
"price_precision": 2,
"quote_unit": "usdt",
"state": "enabled"
},
{
"amount_precision": 6,
"base_unit": "btc",
"id": "btcusdt",
"max_price": "12000.0",
"min_amount": "0.0001",
"min_price": "5000.0",
"name": "BTC/USDT",
"price_precision": 4,
"quote_unit": "usdt",
"state": "enabled"
},
]
{
"amount_precision": 5,
"base_unit": "eth",
"id": "ethusdt",
"max_price": "1000.0",
"min_amount": "0.00001",
"min_price": "0.01",
"name": "ETH/USDT",
"price_precision": 2,
"quote_unit": "usdt",
"state": "enabled"
},
{
"amount_precision": 6,
"base_unit": "btc",
"id": "btcusdt",
"max_price": "12000.0",
"min_amount": "0.0001",
"min_price": "5000.0",
"name": "BTC/USDT",
"price_precision": 4,
"quote_unit": "usdt",
"state": "enabled"
},
]
Example with curl:
curl -X GET https://exchange.intercore.trade/api/v2/peatio/public/markets
Expected response:
[
{
"amount_precision": 5,
"base_unit": "eth",
"id": "ethusdt",
"max_price": "1000.0",
"min_amount": "0.00001",
"min_price": "0.01",
"name": "ETH/USDT",
"price_precision": 2,
"quote_unit": "usdt",
"state": "enabled"
},
{
"amount_precision": 6,
"base_unit": "btc",
"id": "btcusdt",
"max_price": "12000.0",
"min_amount": "0.0001",
"min_price": "5000.0",
"name": "BTC/USDT",
"price_precision": 4,
"quote_unit": "usdt",
"state": "enabled"
},
]
{
"amount_precision": 5,
"base_unit": "eth",
"id": "ethusdt",
"max_price": "1000.0",
"min_amount": "0.00001",
"min_price": "0.01",
"name": "ETH/USDT",
"price_precision": 2,
"quote_unit": "usdt",
"state": "enabled"
},
{
"amount_precision": 6,
"base_unit": "btc",
"id": "btcusdt",
"max_price": "12000.0",
"min_amount": "0.0001",
"min_price": "5000.0",
"name": "BTC/USDT",
"price_precision": 4,
"quote_unit": "usdt",
"state": "enabled"
},
]
Authentication
For get access to private endpoints you can use cookies or generate API keys via UI (highly recommended) or API.
Authentication with cookies (more for test purposes)
1. Create and save session cookies using httpie
http --session barong_session https://exchange.intercore.trade/api/v2/barong/identit
/sessions \[email protected] password=changeme
/sessions \[email protected] password=changeme
1. Call private endpoint with created session
http --session barong_session https://exchange.intercore.trade/api/v2/peati
/account/balances
/account/balances
Expected response:
[
{
balance": "1.4995",
"currency": "eth",
"locked": "0.0"
},
{
"balance": "99.0",
"currency": "usd",
"locked": "0.0"
},
]
{
balance": "1.4995",
"currency": "eth",
"locked": "0.0"
},
{
"balance": "99.0",
"currency": "usd",
"locked": "0.0"
},
]
Authentication with API keys
How to create API key?
Using UI
1. Enable 2FA
2. Find API keys section (often located on profile page).
3. Create your API key and securely save API Key and Secret
Using API
1. Login into your account using httpie
http --session barong_session https://exchange.intercore.trade/api/v2/barong/identit
/sessions \ [email protected] password=changeme otp_code=000000
/sessions \ [email protected] password=changeme otp_code=000000
2. Create your API key
http --session barong_session https://exchange.intercore.trade/api/v2/barong/resource
/api_keys \ algorithm=HS256 totp_code=681757
/api_keys \ algorithm=HS256 totp_code=681757
Expected response:
[
{
"algorithm": "HS256",
"created_at": "2019-12-23T12:22:15Z",
"kid": "61d025b8573501c2", # API Key
"scope": [],
"secret": {
"auth": null,
"data": {
"value": "2d0b4979c7fe6986daa8e21d1dc0644f" # Secret
},
{
"lease_duration": 2764800,
"lease_id": "",
"metadata": null,
"renewable": false,
"warnings": null,
"wrap_info": null
},
"state": "active",
"updated_at": "2019-12-23T12:22:15Z"
]
{
"algorithm": "HS256",
"created_at": "2019-12-23T12:22:15Z",
"kid": "61d025b8573501c2", # API Key
"scope": [],
"secret": {
"auth": null,
"data": {
"value": "2d0b4979c7fe6986daa8e21d1dc0644f" # Secret
},
{
"lease_duration": 2764800,
"lease_id": "",
"metadata": null,
"renewable": false,
"warnings": null,
"wrap_info": null
},
"state": "active",
"updated_at": "2019-12-23T12:22:15Z"
]
3. Securely save API Key and Secret
How to use API key?
Before calling private endpoint you will need to generate three headers: X-Auth-Apikey - API key (from previous step)
X-Auth-Nonce - A nonce is an arbitrary number that can be used just once. In our environment you MUST use a millisecond timestamp in UTC time.
date +%s%3N
1584087661035
1584087661035
X-Auth-Signature - HMAC-SHA256 signature calculated using concatenation of X-Auth-Nonce and X-Auth-Apikey
require 'openssl'
nonce = '1584087661035'
api_key = 'changeme' # API Key from 'How to create API key section ?'
secret = 'changeme' # Secret from 'How to create API key section ?'
OpenSSL::HMAC.hexdigest("SHA256", secret, nonce + api_key)
# => "6cc108cb3427b655ccf0870fc7fa807ef3756506d4db3f3c93f8d4cd8ef0e611"
nonce = '1584087661035'
api_key = 'changeme' # API Key from 'How to create API key section ?'
secret = 'changeme' # Secret from 'How to create API key section ?'
OpenSSL::HMAC.hexdigest("SHA256", secret, nonce + api_key)
# => "6cc108cb3427b655ccf0870fc7fa807ef3756506d4db3f3c93f8d4cd8ef0e611"
curl -X GET https://exchange.intercore.trade/api/v2/peatio/account/balances \
-H "X-Auth-Apikey: changeme" \
-H "X-Auth-Nonce: changeme" \
-H "X-Auth-Signature: changeme"
-H "X-Auth-Apikey: changeme" \
-H "X-Auth-Nonce: changeme" \
-H "X-Auth-Signature: changeme"
Expected response:
[
{
"balance": "1.4995",
"currency": "eth",
"locked": "0.0"
},
]
{
"balance": "1.4995",
"currency": "eth",
"locked": "0.0"
},
]
Expected response:
curl -X GET https://exchange.intercore.trade/api/v2/peatio/market/orders \
-H "X-Auth-Apikey: changeme" \
-H "X-Auth-Nonce: changeme" \
-H "X-Auth-Signature: changeme"
-H "X-Auth-Apikey: changeme" \
-H "X-Auth-Nonce: changeme" \
-H "X-Auth-Signature: changeme"
[
{
"avg_price": "168.0",
"created_at": "2020-01-28T15:14:02+01:00",
"executed_volume": "0.1",
"id": 6291918,
"market": "ethusd",
"ord_type": "limit",
"origin_volume": "0.1",
"price": "168.0",
"remaining_volume": "0.0",
"side": "buy",
"state": "done",
"trades_count": 1,
"updated_at": "2020-03-12T09:17:32+01:00"
}
]
{
"avg_price": "168.0",
"created_at": "2020-01-28T15:14:02+01:00",
"executed_volume": "0.1",
"id": 6291918,
"market": "ethusd",
"ord_type": "limit",
"origin_volume": "0.1",
"price": "168.0",
"remaining_volume": "0.0",
"side": "buy",
"state": "done",
"trades_count": 1,
"updated_at": "2020-03-12T09:17:32+01:00"
}
]
Step By step guide from authentication to create | cancel order with API keys
Generate API keys (see Authentication with API keys section)
1. Create order
http POST https://exchange.intercore.trade/api/v2/peatio/market/orders \
"X-Auth-Apikey: changeme" \
"X-Auth-Nonce: changeme" \
"X-Auth-Signature: changeme" \
market=ethusd side=buy volume=31 ord_type=limit price=160.82
"X-Auth-Apikey: changeme" \
"X-Auth-Nonce: changeme" \
"X-Auth-Signature: changeme" \
market=ethusd side=buy volume=31 ord_type=limit price=160.82
Expected response:
[
{
"avg_price": "0.0",
"created_at": "2020-03-12T17:01:56+01:00",
"executed_volume": "0.0",
"id": 10440269,
"market": "ethusd",
"ord_type": "limit",
"origin_volume": "31.0",
"price": "160.82",
"remaining_volume": "31.0",
"side": "buy",
"state": "pending",
"trades_count": 0,
"updated_at": "2020-03-12T17:01:56+01:00"
}
]
{
"avg_price": "0.0",
"created_at": "2020-03-12T17:01:56+01:00",
"executed_volume": "0.0",
"id": 10440269,
"market": "ethusd",
"ord_type": "limit",
"origin_volume": "31.0",
"price": "160.82",
"remaining_volume": "31.0",
"side": "buy",
"state": "pending",
"trades_count": 0,
"updated_at": "2020-03-12T17:01:56+01:00"
}
]
Check trade history
http POST https://exchange.intercore.trade/api/v2/peatio/market/trades \
"X-Auth-Apikey: changeme" \
"X-Auth-Nonce: changeme" \
"X-Auth-Signature: changeme" \
"X-Auth-Apikey: changeme" \
"X-Auth-Nonce: changeme" \
"X-Auth-Signature: changeme" \
Expected response:
{
"amount": "5.0",
"created_at": "2020-03-12T17:01:56+01:00",
"fee": "0.002",
"fee_amount": "0.01",
"fee_currency": "eth",
"id": 1834499,
"market": "ethusd",
"order_id": 10440269,
"price": "160.82",
"side": "buy",
"taker_type": "buy",
"total": "804.1"
}
"amount": "5.0",
"created_at": "2020-03-12T17:01:56+01:00",
"fee": "0.002",
"fee_amount": "0.01",
"fee_currency": "eth",
"id": 1834499,
"market": "ethusd",
"order_id": 10440269,
"price": "160.82",
"side": "buy",
"taker_type": "buy",
"total": "804.1"
}
Check active orders
curl -X GET https://exchange.intercore.trade/api/v2/peatio/market/orders\?state\=wait \
-H "X-Auth-Apikey: changeme" \
-H "X-Auth-Nonce: changeme" \
-H "X-Auth-Signature: changeme"
-H "X-Auth-Apikey: changeme" \
-H "X-Auth-Nonce: changeme" \
-H "X-Auth-Signature: changeme"
Expected response:
{
"avg_price": "160.82",
"created_at": "2020-03-12T17:01:56+01:00",
"executed_volume": "26.35649",
"id": 10440269,
"market": "ethusd",
"ord_type": "limit",
"origin_volume": "31.0",
"price": "160.82",
"remaining_volume": "4.64351",
"side": "buy",
"state": "wait",
"trades_count": 6,
"updated_at": "2020-03-12T17:01:56+01:00"
}
"avg_price": "160.82",
"created_at": "2020-03-12T17:01:56+01:00",
"executed_volume": "26.35649",
"id": 10440269,
"market": "ethusd",
"ord_type": "limit",
"origin_volume": "31.0",
"price": "160.82",
"remaining_volume": "4.64351",
"side": "buy",
"state": "wait",
"trades_count": 6,
"updated_at": "2020-03-12T17:01:56+01:00"
}
Cancel active order
curl -X GET https://exchange.intercore.trade/api/v2/peatio/market/orders/10440269/cancel \
-H "X-Auth-Apikey: changeme" \
-H "X-Auth-Nonce: changeme" \
-H "X-Auth-Signature: changeme"
-H "X-Auth-Apikey: changeme" \
-H "X-Auth-Nonce: changeme" \
-H "X-Auth-Signature: changeme"
Expected response:
{
avg_price": "160.82",
"created_at": "2020-03-12T17:01:56+01:00",
"executed_volume": "26.35649",
"id": 10440269,
"market": "ethusd",
"ord_type": "limit",
"origin_volume": "31.0",
"price": "160.82",
"remaining_volume": "4.64351",
"side": "buy",
"state": "wait",
"trades_count": 6,
"updated_at": "2020-03-12T17:01:56+01:00"
}
avg_price": "160.82",
"created_at": "2020-03-12T17:01:56+01:00",
"executed_volume": "26.35649",
"id": 10440269,
"market": "ethusd",
"ord_type": "limit",
"origin_volume": "31.0",
"price": "160.82",
"remaining_volume": "4.64351",
"side": "buy",
"state": "wait",
"trades_count": 6,
"updated_at": "2020-03-12T17:01:56+01:00"
}