Обновлено 31.05.2016

EXMO предоставляет доступ к API с помощью четырех способов.

Не требует использования методов авторизации и доступен с помощью GET или POST запросов.
Требует использования авторизации и доступен только с использованием POST запросов.
Приватные функции доступные только с авторизацией. Для предоставления доступа к этим функциям необходимо обратиться в техподдержку.
Требует использования авторизации и доступен только с использованием POST запросов.

Public API

Этот API не требует использования авторизации и доступен с помощью GET или POST запроса.

В общем виде URL для доступа к API выглядит следующим образом https://api.exmo.com/v1/{api_name}?{api_params} где api_name - это название API к которому происходит обращение, а api_params - входящие параметры запроса (если они необходимы)

Описание методов:
Список сделок по валютной паре
Наименование метода: trades
Тип запроса: POST или GET
Входящие параметры: pair - одна или несколько валютных пар разделенных запятой (пример BTC_USD,BTC_EUR)
Пример использования: https://api.exmo.com/v1/trades/?pair=BTC_USD
Возращаемое значение:
{
  "BTC_USD": [
    {
      "trade_id": 3,
      "type": "sell",
      "price": "100",
      "quantity": "1",
      "amount": "100",
      "date": 1435488248
    }
  ]
}
Описание полей:
trade_id - идентификатор сделки
type - тип сделки
price - цена сделки
quantity - кол-во по сделке
amount - сумма сделки
date - дата и время сделки в формате Unix
Книга ордеров по валютной паре
Наименование метода: order_book
Тип запроса: POST или GET
Входящие параметры:
pair - одна или несколько валютных пар разделенных запятой (пример BTC_USD,BTC_EUR)
limit - кол-во отображаемых позиций (по умолчанию 100, максимум 1000)
Пример использования: https://api.exmo.com/v1/order_book/?pair=BTC_USD
Возращаемое значение:
{
  "BTC_USD": {
    "ask_quantity": "3",
    "ask_amount": "500",
    "ask_top": "100",
    "bid_quantity": "1",
    "bid_amount": "99",
    "bid_top": "99",
    "ask": [[100,1,100],[200,2,400]],
    "bid": [[99,1,99]]
  }
}
Описание полей:
ask_quantity - объем всех ордеров на продажу
ask_amount - сумма всех ордеров на продажу
ask_top - минимальная цена продажи
bid_quantity - объем всех ордеров на покупку
bid_amount - сумма всех ордеров на покупку
bid_top - максимальная цена покупки
bid - список ордеров на покупку, где каждая строка это цена, количество и сумма
ask - список ордеров на продажу, где каждая строка это цена, количество и сумма
Cтатистика цен и объемов торгов по валютным парам
Наименование метода: ticker
Тип запроса: POST или GET
Входящие параметры: Отсутствуют
Пример использования: https://api.exmo.com/v1/ticker/
Возращаемое значение:
{
  "BTC_USD": {
    "buy_price": "589.06",
    "sell_price": "592",
    "last_trade": "591.221",
    "high": "602.082",
    "low": "584.51011695",
    "avg": "591.14698808",
    "vol": "167.59763535",
    "vol_curr": "99095.17162071",
    "updated": 1470250973
  }
}
Описание полей:
high - максимальная цена сделки за 24 часа
low - минимальная цена сделки за 24 часа
avg - средняя цена сделки за 24 часа
vol - объем всех сделок за 24 часа
vol_curr - сумма всех сделок за 24 часа
last_trade - цена последней сделки
buy_price - текущая максимальная цена покупки
sell_price - текущая минимальная цена продажи
updated - дата и время обновления данных
Настройки валютных пар
Наименование метода: pair_settings
Тип запроса: POST или GET
Входящие параметры: Отсутствуют
Пример использования: https://api.exmo.com/v1/pair_settings/
Возращаемое значение:
{
  "BTC_USD": {
    "min_quantity": "0.001",
    "max_quantity": "100",
    "min_price": "1",
    "max_price": "10000",
    "max_amount": "30000",
    "min_amount": "1"
  }
}
Описание полей:
min_quantity - минимальное кол-во по ордеру
max_quantity - максимальное кол-во по ордеру
min_price - минимальная цена по ордеру
max_price - максимальная цена по ордеру
min_amount - минимальная сумма по ордеру
max_amount - максимальная сумма по ордеру
Cписок валют биржи
Наименование метода: currency
Тип запроса: POST или GET
Входящие параметры: Отсутствуют
Пример использования: https://api.exmo.com/v1/currency/
Возращаемое значение:
["USD","EUR","RUB","BTC","DOGE","LTC"]


Authenticated API

Для доступа к данному API требуется авторизация и необходимо использовать POST метод.

URL — необходимо использовать следующий адрес https://api.exmo.com/v1/{api_name} где api_name - это наименование API метода

Авторизация осуществляется с помощью отправки на сервер следующих заголовков:

Key — Публичный ключ, его нужно взять настройках профиля пользователя
(пример: K-7cc97c89aed2a2fd9ed7792d48d63f65800c447b)

Sign — POST данные (param=val&param1=val1), подписанные секретным ключом методом HMAC-SHA512, секретный ключ также нужно брать в настройках профиля пользователя

Существует возможность привязать несколько ключей к одному аккаунту для доступа к API. Для этого обращайтесь в техподдержку.

Дополнительно во всех запросах должен находиться обязательный POST-параметр nonce с инкрементным числовым значением (>0). Это значение не должно повторяться или уменьшаться.

Для доступа к API можно использовать готовый программный код на следующих языках:

PHP github.com/exmo-dev/exmo_api_lib/tree/master/php или composer require exmo/api
Javascript github.com/exmo-dev/exmo_api_lib/tree/master/js
Nodejs github.com/exmo-dev/exmo_api_lib/tree/master/nodejs или npm install exmo-api
C# github.com/exmo-dev/exmo_api_lib/tree/master/c#
C++ github.com/exmo-dev/exmo_api_lib/tree/master/с++
Python github.com/exmo-dev/exmo_api_lib/tree/master/python
Objective C github.com/exmo-dev/exmo_api_lib/tree/master/objectivec
Swift github.com/exmo-dev/exmo_api_lib/tree/master/swift
Java github.com/exmo-dev/exmo_api_lib/tree/master/java
Ruby github.com/exmo-dev/exmo_api_lib/tree/master/ruby
Golang github.com/exmo-dev/exmo_api_lib/tree/master/golang
Описание методов:

Получение информации об аккаунте пользователя

Наименование метода: user_info
Тип запроса: POST
Входящие параметры: Отсутствуют
Пример использования: api_query("user_info", Array());
Возращаемое значение:
{
  "uid": 10542,
  "server_date": 1435518576,
  "balances": {
    "BTC": "970.994",
    "USD": "949.47"
  },
  "reserved": {
    "BTC": "3",
    "USD": "0.5"
  }
}
Описание полей:

uid - идентификатор пользоватля

server_date - дата и время сервера

balances - доступный баланс пользователя

reserved - баланс пользователя в ордерах

Создание ордера

Наименование метода: order_create
Тип запроса: POST
Входящие параметры:

pair - валютная пара

quantity - кол-во по ордеру

price - цена по ордеру

type - тип ордера, может принимать следующие значения:

  • buy - ордер на покупку
  • sell - ордер на продажу
  • market_buy - ордера на покупку по рынку
  • market_sell - ордер на продажу по рынку
  • market_buy_total - ордер на покупку по рынку на определенную сумму
  • market_sell_total - ордер на продажу по рынку на определенную сумму
Возращаемое значение:
{
  "result": true,
  "error": "",
  "order_id": 123456
}
Описание полей:

result - true в случае успешного создания и false в случае ошибки

error - содержит текст ошибки

order_id - идентификатор ордера

Примеры создания ордеров на PHP:

Создание ордера на покупку 3 BTC по цене 100 USD

api_query("order_create", Array(
    "pair"=>"BTC_USD",
    "quantity"=>3,
    "price"=>100,
    "type"=>"buy"
));

Создание ордера на продажу 3 BTC по цене 100 USD

api_query("order_create", Array(
    "pair"=>"BTC_USD",
    "quantity"=>3,
    "price"=>100,
    "type"=>"sell"
));

Создание ордера на покупку по рынку 3 BTC

api_query("order_create", Array(
    "pair"=>"BTC_USD",
    "quantity"=>3,
    "price"=>0,
    "type"=>"market_buy"
));
    

Создание ордера на продажу по рынку 3 BTC

api_query("order_create", Array(
    "pair"=>"BTC_USD",
    "quantity"=>3,
    "price"=>0,
    "type"=>"market_sell"
));

Создание ордера на покупку BTC по рынку на сумму 100 USD

api_query("order_create", Array(
    "pair"=>"BTC_USD",
    "quantity"=>100,
    "price"=>0,
    "type"=>"market_buy_total"
));

Создание ордера на продажу BTC по рынку на сумму 100 USD

api_query("order_create", Array(
    "pair"=>"BTC_USD",
    "quantity"=>100,
    "price"=>0,
    "type"=>"market_sell_total"
));

Отмена ордера

Наименование метода: order_cancel
Тип запроса: POST
Входящие параметры: order_id - идентификатор ордера
Пример использования:
api_query("order_cancel", Array(
    "order_id"=>104235
));
Возращаемое значение:

{
  "result": true,
  "error": ""
}
    
Описание полей:

result - true в случае успешного создания задачи на отмену ордера и false в случае ошибки

error - содержит текст ошибки

Получение списока открытых ордеров пользователя

Наименование метода: user_open_orders
Тип запроса: POST
Входящие параметры: отсутствуют
Пример использования:
api_query("user_open_orders", Array());
Возращаемое значение:

{
  "BTC_USD": [
    {
      "order_id": "14",
      "created": "1435517311",
      "type": "buy",
      "pair": "BTC_USD",
      "price": "100",
      "quantity": "1",
      "amount": "100"
    }
  ]
}
Описание полей:

order_id - идентификатор ордера

created - дата и время создания ордера

type - тип ордера

pair - валютная пара

price - цена по ордеру

quantity - кол-во по ордеру

amount - сумма по ордеру

Получение сделок пользователя

Наименование метода: user_trades
Тип запроса: POST
Входящие параметры:

pair - одна или несколько валютных пар разделенных запятой (пример BTC_USD,BTC_EUR)

offset - смещение от последней сделки (по умолчанию 0)

limit - кол-во возвращаемых сделок (по умолчанию 100, максимум 10 000)

Пример использования:
api_query("user_trades", Array(
    "pair"=>"BTC_USD",
    "limit"=>100,
    "offset"=>0
));
    
Возращаемое значение:

{
  "BTC_USD": [
    {
      "trade_id": 3,
      "date": 1435488248,
      "type": "buy",
      "pair": "BTC_USD",
      "order_id": 7,
      "quantity": 1,
      "price": 100,
      "amount": 100
    }
  ]
}
    
Описание полей:

trade_id - идентификатор сделки

date - дата и время сделки

type - тип сделки

pair - валютная пара

order_id - идентификатор ордера пользователя

quantity - кол-во по сделке

price - цена сделки

amount - сумма сделки

Получение отмененных ордеров пользователя

Наименование метода: user_cancelled_orders
Тип запроса: POST
Входящие параметры:

offset - смещение от последней сделки (по умолчанию 0)

limit - кол-во возвращаемых сделок (по умолчанию 100, максимум 10 000)

Пример использования:
api_query("user_cancelled_orders", Array(
    "limit"=>100,
    "offset"=>0
));
    
Возращаемое значение:
[
  {
    "date": 1435519742,
    "order_id": 15,
    "order_type": "sell",
    "pair": "BTC_USD",
    "price": 100,
    "quantity": 3,
    "amount": 300
  }
]
    
Описание полей:

date - дата и время отмены ордера

order_id - идентификатор ордера

order_type - тип ордера

pair - валютная пара

price - цена по ордеру

quantity - кол-во по ордеру

amount - сумма по ордеру

Получение истории сделок ордера

Наименование метода: order_trades
Тип запроса: POST
Входящие параметры:
order_id - идентификатор ордера
Пример использования:
api_query("order_trades", Array(
    "order_id"=>12345
));
Возращаемое значение:
{
  "type": "buy",
  "in_currency": "BTC",
  "in_amount": "1",
  "out_currency": "USD",
  "out_amount": "100",
  "trades": [
    {
      "trade_id": 3,
      "date": 1435488248,
      "type": "buy",
      "pair": "BTC_USD",
      "order_id": 12345,
      "quantity": 1,
      "price": 100,
      "amount": 100
    }
  ]
}
Описание полей:

type - тип ордера

in_currency - валюта входящая

in_amount - кол-во входящей валюты

out_currency - валюта исходящая

out_amount - кол-во исходящей валюты

trades - массив сделок, где:

  • trade_id - идентификатор сделки
  • date - дата сделки
  • type - тип сделки
  • pair - валютная пара
  • order_id - идентификатор ордера
  • quantity - кол-во по сделке
  • price - цена по сделке
  • amount - сумма по сделке

Подсчет в какую сумму обойдется покупка определенного кол-ва валюты по конкретной валютной паре

Наименование метода: required_amount
Тип запроса: POST
Входящие параметры:

pair - валютная пара

quantity - кол-во которое необходимо купить

Пример использования:
api_query("required_amount", Array(
    "pair"=>"BTC_USD",
    "quantity"=>"11"
));
Возращаемое значение:
{
  "quantity": 3,
  "amount": 5,
  "avg_price": 3.66666666
}
Описание полей:

quantity - кол-во которое вы сможете купить

amount - сумма на которую вы потратите на покупку

avg_price - средняя цена покупки

Получнение списка адресов для депозита криптовалют

Наименование метода: deposit_address
Тип запроса: POST
Входящие параметры: отсутствуют
Пример использования:
api_query("deposit_address", Array());
Возращаемое значение:
{
  "BTC": "16UM5DoeHkV7Eb7tMfXSuQ2ueir1yj4P7d",
  "DOGE": "DEVfhgKErG5Nzas2FZJJH8Y8pjoLfVfWq4",
  "LTC": "LSJFhsVJM6GCFtSgRj5hHuK9gReLhNuKFb"
}

Создание задачи на вывод криптовалют. ВНИМАНИЕ!!! Эта API функция включается пользователю после запроса в техподдержку

Наименование метода: withdraw_crypt
Тип запроса: POST
Входящие параметры:

amount - кол-во выводимой валюты

currency - наименование выводимой валюты

address - адрес вывода

Пример использования:
api_query("withdraw_crypt", Array(
    "amount"=>10,
    "currency"=>"BTC",
    "address"=>"16UM5DoeHkV7Eb7tMfXSu..."
));
    
Возращаемое значение:
{
  "result": true,
  "error": "",
  "task_id": "467756"
}
    
Описание полей:

result - true в случае успешного создания задачи на вывод, и false в случае ошибки

error - содержит описание ошибки

task_id - идентификатор задачи на вывод

Получение ИД транзакции криптовалюты для отслеживания на blockchain

Наименование метода: withdraw_get_txid
Тип запроса: POST
Входящие параметры:
task_id - идентификатор задания на вывод
Пример использования:
api_query("withdraw_get_txid", Array(
    "task_id"=>467756
));
    
Возращаемое значение:
{
  "result": true,
  "error": "",
  "status": true,
  "txid": "ec46f784ad976fd7f7539089d1a129fe46..."
}
    
Описание полей:

result - true в случае успешного создания задачи на вывод, и false в случае ошибки

error - содержит описание ошибки

status - true если вывод уже осуществлен

txid - идентификатор транзакции по которому можно её найти в blockchain

EXCODE API

Используя EXCODE API можно создавать и загружать купоны EXCODE. Доступ предоставляется после обращения в техподдержку.

Создание купона EXCODE
Наименование метода: excode_create
Тип запроса: POST
Входящие параметры: currency - наименование валюты купона
amount - сумма на которую создается купон
Пример использования
api_query("excode_create", Array(
    "currency"=>"BTC",
    "amount"=>10
));
    
Пример ответа:
{
  "result": true,
  "error": "",
  "task_id": "467757",
  "code": "EX-CODE_9004_BTC7c3f8adc0b158658....",
  "amount": "10",
  "currency": "BTC",
  "balances": {
    "BTC": 940.994,
    "USD": 949.472
  }
}
    
Описание полей:

result - true в случае успешного создания купона, и false в случае ошибки

error - содержит описание ошибки

task_id - идентификатор купона

code - код EXCODE

amount - сумма купона

currency - валюта купона

balances - баланс пользователя после создания купона

Загрузка купона EXCODE

Наименование метода: excode_load
Входящие параметры: code - код купона EXCODE
Пример использования
api_query("excode_load", Array(
    "code"=>"EX-CODE_9004_BTC7c3f8adc0b158658...."
));
    
Возращаемое значение:
{
  "result": true,
  "error": "",
  "task_id": "467757",
  "amount": "10",
  "currency": "BTC",
  "balances": {
    "BTC": 950.994,
    "USD": 949.472
  }
}
    
Описание полей:

result - true в случае успешной загрузки купона, и false в случае ошибки

error - содержит описание ошибки

task_id - идентификатор купона

amount - сумма купона

currency - валюта купона

balances - баланс пользователя после загрузки купона

WALLET API

Этот API вызывается аналогично Authenticated API.

Количество API вызовов ограничено 10 запросами в минуту с одного IP адреса.

Получение истории wallet
Наименование метода: wallet_history
Тип запроса: POST
Входящие параметры: date - дата timestamp за которую нужно получить историю (если не указан берется текущий день)
Пример использования
api_query("wallet_history", Array(
    "date"=>1493998000
));
    
Пример ответа:
{
  "result": true,
  "error": "",
  "begin": "1493942400",
  "end": "1494028800",
  "history": [{
       "dt": 1461841192,
       "type": "deposit",
       "curr": "RUB",
       "status": "processing",
       "provider": "Qiwi (LA) [12345]",
       "amount": "1",
       "account": "",
     },
     {
       "dt": 1463414785,
       "type": "withdrawal",
       "curr": "USD",
       "status": "paid",
       "provider": "EXCODE",
       "amount": "-1",
       "account": "EX-CODE_19371_USDda...",
     }
  ]
}
    
Описание полей:

result - true в случае успешного получения истории, и false в случае ошибки

error - содержит описание ошибки

begin - начало периода

end - конец периода

history - массив операций пользователя (история кошелька), где

dt - дата операции

type - тип

curr - валюта

status - статус

provider - провайдер

amount - сумма

account - счет

Ограничение количества запросов

Количество API вызовов ограничено 180 запросами в минуту с одного IP адреса либо от одного пользователя.

Если обнаружите ошибку в API или вам нужна помощь по его использованию или же есть идеи как его улучшить, вы можете обратиться в службу поддержки.