Загальна інформація про REST API

  • Основна URL-адреса: https://api-adapter.backend.currency.com
  • Базовий URL, демо-рахунок: https://demo-api-adapter.backend.currency.com
  • Всі кінцеві точки повертають або об'єкт JSON, або масив.
  • Дані повертаються у порядку зростання. Спочатку найстаріші, потім найновіші.
  • Усі поля, пов’язані з часом і міткою часу, вказані в мілісекундах.
  • Усі токенізовані активи, крім токенів компаній, токенізованих облігацій, токенів «KARMA.cx» та токенізованих активів з ринків Гонконгу, доступні в першій версії (v1) нашого API. У другій версії API (v2) також стали доступні ринки Гонконгу.
  • Зі списком активів, доступних для торгівлі з використанням кредитного плеча в API, можна ознайомитися тут.
  • При встановленні ринкових, лімітних або стоп-ордерів та вказівці більшої кількості точних чисел, ніж потрібно для конкретного токена, працює логіка round_down. Допустиму точність можна знайти у відповіді запиту exchangeInfo, параметр quotePrecision.
  • При згадці більшої кількості точних чисел для параметра ціни використовується логіка округлення. Дозволену точність можна знайти у відповіді на запит ExchangeInfo, параметр quotePrecision.

Ознайомтеся з частиною REST API у Swagger щоб отримати необхідну інформацію.

Troubleshooting

Коди повернення HTTP

  • Коди повернення HTTP 4XX використовуються для неправильних запитів; проблема на стороні відправника.
  • Код повернення HTTP 403 використовується при порушенні ліміту WAF (Web Application Firewall).
  • Код повернення HTTP 429 використовується під час порушення обмеження швидкості запитів.
  • Код повернення HTTP 418 використовується, коли IP-адресу було автоматично заборонено для продовження надсилання запитів після отримання кодів 429.
  • Коди повернення HTTP 5XX використовуються для внутрішніх помилок; проблема на стороні Currency.com. Важливо не розглядати це як невдалу операцію; статус виконання - UNKNOWN і міг бути успішним.

Коди помилок

  • Будь-яка кінцева точка може повернути ERROR.

Зразок корисного навантаження нижче:

Відповідь:
{ "code": -1121, "msg": "Invalid symbol." }
  • Конкретні коди помилок і повідомлення визначаються в Кодах помилок.

Загальна інформація про кінцеві точки

  • Для кінцевих точок GET параметри повинні бути надіслані у вигляді query string.
  • Для кінцевих точок POST, PUT, та DELETE параметри можуть бути надіслані у вигляді рядка запиту або в тілі запиту з типом вмісту application/x-www-form-urlencoded. При бажанні можна змішувати параметри в рядку запиту і в тілі запиту. Параметри можуть бути надіслані у будь-якому порядку.
  • Параметри можна надсилати в будь-якому порядку.
  • Якщо параметр надіслано як у рядку запиту, так і в тілі запиту, буде використаний параметр рядка запиту.

Тип безпеки кінцевої точки

  • Кожна кінцева точка має тип безпеки, який визначає спосіб взаємодії з нею. Це вказано поруч із НАЗВОЮ кінцевої точки.
  • Якщо тип безпеки не вказано, вважайте, що тип безпеки - NONE.
  • API-ключі передаються в REST API через заголовок X-MBX-APIKEY.
  • API-ключі та секретні ключі чутливі до регістру.
  • AAPI-ключі можуть бути налаштовані на доступ лише до певних типів безпечних кінцевих точок. Наприклад, один API-ключ може використовуватися тільки для TRADE, тоді як інший API-ключ може отримати доступ до всіх маршрутів, крім TRADE.
  • За замовчуванням API-ключі мають доступ до всіх безпечних маршрутів.
Тип безпекиОпис
NONEДо кінцевої точки можна отримати вільний доступ
TRADEКінцева точка вимагає надіслати дійсний ключ API і підпис
USER_DATAКінцева точка вимагає відправлення дійсного API-ключа та підпису
USER_STREAMКінцева точка вимагає надсилання дійсного ключа API
MARKET_DATAКінцева точка вимагає надсилання дійсного ключа API
  • Кінцеві точки TRADE та USER_DATA є SIGNED кінцевими точками.

Безпека SIGNED (TRADE, USER_DATA, AND MARGIN) кінцевої точки

  • SIGNED кінцеві точки вимагають надсилання додаткового параметра, підпису в query string або request body.
  • Кінцеві точки використовують підписи HMAC SHA256. Підпис HMAC SHA256 це операція з ключем HMAC SHA256. Використовуйте свій secretKey як ключ і totalParams як значення для операції HMAC.
  • signature не чутливий до регістру.
  • totalParams визначається як query string, об'єднаний з request body.

Безпека в часі

  • Кінцева точка SIGNEDтакож вимагає надсилання параметра, timestamp , який має бути мілісекундною міткою часу створення та надсилання запиту.
  • Можна надіслати додатковий параметр recvWindow, щоб указати кількість мілісекунд після timestamp для якого запит дійсний. Якщо recvWindow § не надсилається, значення за замовчуванням становить 5000.

Логіка така:

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

Серйозна торгівля – це питання часу. Мережі можуть бути нестабільними та ненадійними, що може призвести до того, що запити надходитимуть на сервери протягом різного часу. За допомогою recvWindow , ви можете вказати, що запит має бути оброблений протягом певної кількості мілісекунд або відхилений сервером.

Рекомендується використовувати невелике вікно recvWindow 5000 або менше! Максимальна кількість не може перевищувати 60 000!

Приклади кінцевої точки SIGNED для POST /api/v1/order

Ось покроковий приклад того, як надіслати дійсне підписане корисне навантаження з командного рядка Linux за допомогою echo, openssl і curl.

КлючЗначення
apiKeyvmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A
secretKeyNhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j
ПараметрЗначення
symbolLTC/BTC
sideBUY
typeLIMIT
timeInforceGTC
quantity1
price0,1
recvWindow5000
timestamp1499827319559

Зверніть увагу, що деякі символи, як-от '/', мають бути закодовані URL-адресою та перетворені в таку комбінацію '%2F'.

Приклад 1: Як тіло запиту

requestBody:

symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559

HMAC SHA256 signature

[linux]$ echo -n
"symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559" | openssl dgst -sha256 -hmac
"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= ebec6528b2beb508b2417fa33453a4ad28c1aae8097bb243caa60d0524036f50

curl command:

(HMAC SHA256)
[linux]$ curl -H "X-MBX-APIKEY:
vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api-adapter.backend.currency.com/api/v1/order' -d
'symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559&signature=ebec6528b2beb508b2417fa33453a4ad28c1aae8097bb243caa60d0524036f50'

Приклад 2: Як рядок запиту

queryString:

symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559

HMAC SHA256 signature:

[linux]$ echo -n
"symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559" | openssl dgst -sha256 -hmac
"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= ebec6528b2beb508b2417fa33453a4ad28c1aae8097bb243caa60d0524036f50

curl command:

(HMAC SHA256)
[linux]$ curl -H "X-MBX-APIKEY:
vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api-adapter.backend.currency.com/api/v1/order?symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559&signature=ebec6528b2beb508b2417fa33453a4ad28c1aae8097bb243caa60d0524036f50'

Приклади кінцевої точки SIGNED для POST /api/v1/order
(режим торгівлі з кредитним плечем)

Ось покроковий приклад того, як надіслати дійсне підписане корисне навантаження з командного рядка Linux за допомогою echo, openssl і curl.

КлючЗначення
apiKeyvmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A
secretKeyNhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j
ПараметрЗначення
symbolBTC/USD_LEVERAGE
sideBUY
typeMARKET
timeInforceGTC
quantity0.01
quantity2
accountId2376109060084932
takeProfit8000
stopLoss6000
recvWindow60000
timestamp1586942164000

Зверніть увагу, що деякі символи, як-от "/", мають бути закодовані URL-адресою та перетворені в таку комбінацію "%2F".

Приклад 1: Як тіло запиту

requestBody:

symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000&timestamp=1586942164000

HMAC SHA256 signature

[linux]$ echo -n
"symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000&timestamp=1586942164000" | openssl dgst -sha256 -hmac
"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= 05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b

curl command:

(HMAC SHA256)
[linux]$ curl -H "X-MBX-APIKEY:
vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api-adapter.backend.currency.com/api/v1/order' -d
'symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000&timestamp=1586942164000&signature=05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b'

Приклад 2: Як рядок запиту

queryString:

symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000&timestamp=1586942164000

HMAC SHA256 signature:

[linux]$ echo -n
"symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000&timestamp=1586942164000" | openssl dgst -sha256 -hmac
"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= 05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b

curl command:

(HMAC SHA256)
[linux]$ curl -H "X-MBX-APIKEY:
vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api-adapter.backend.currency.com/api/v1/order?symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000&timestamp=1586942164000&signature=05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b

Термінологія

  • base asset відноситься до активу, який є quantity символу.
  • quote asset відноситься до активу, який є price символу.

ENUM визначення

Статус ордера (статус):

  • NEW
  • FILLED
  • CANCELED
  • REJECTED

Типи ордерів (orderTypes, тип):

  • LIMIT
  • MARKET
  • STOP

Сторона ордера (сторона):

  • BUY
  • SELL

Час чинності (timeInForce):

  • GTC
  • IOC
  • FOK

Інтервали графіка Kline/Candlestick:
m -> хвилини; h -> години; d -> дні; w -> тижні

  • 1m
  • 5m
  • 15m
  • 30m
  • 1h
  • 4h
  • 1d
  • 1w

/klines 'type' параметр:

  • heiken-ashi