Для разработчиков

API RExchange

Методы каталога, курсов, резервов и заявок. Обмен поддерживает BTC и USDT TRC20. TRX используется для комиссии сети TRON; банковские направления не подключены.

Примеры используют стандартный прокси сайта /api. Базовый адрес зависит от установки. Каталог и гостевые заявки доступны без API-ключа. Для привязки заявки к аккаунту нужна пользовательская сессия. Выдача интеграционных API-ключей и исходящие вебхуки не реализованы.

Котировки /v1/rates справочные: наличие монеты в рыночном ответе не означает поддержку обмена. Для расчёта используйте rate из /v1/pairs; null означает недоступный курс.

Методы API

  • GET/v1/currencies

    Включённые валюты, сети и идентификаторы

  • GET/v1/pairs

    Направления, лимиты и курс с учётом комиссии и спреда

  • GET/v1/rates

    Рыночные котировки Rapira в USDT, без комиссии обмена

  • GET/v1/reserves

    Доступные резервы; null, если свежих данных нет

  • POST/v1/orders

    Создание заявки на обмен

  • GET/v1/orders/:id

    Реквизиты, суммы и статус заявки

Получение направлений
const response = await fetch('/api/v1/pairs');
if (!response.ok) throw new Error('Pairs unavailable');
const pairs = await response.json();
Шаблон создания заявки
const response = await fetch('/api/v1/orders', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Idempotency-Key': savedRequestKey
  },
  body: JSON.stringify({
    fromCurrencyId,
    toCurrencyId,
    fromAmount,
    recipientAddress
  })
});
const result = await response.json();
if (!response.ok) throw new Error(result.error?.message);
const order = result;

Поля заявки

fromCurrencyId и toCurrencyId берутся из /v1/currencies и должны соответствовать доступному направлению /v1/pairs. fromAmount передаётся десятичной строкой, recipientAddress — адресом в сети получения. email необязателен. Итоговые суммы из ответа имеют приоритет над предварительным расчётом.

Повтор запроса

До отправки создайте savedRequestKey через crypto.randomUUID() и сохраните вместе с телом заявки. При сетевом сбое повторяйте тот же запрос с тем же Idempotency-Key. Не меняйте тело или ключ, пока результат первой попытки не выяснен: новый ключ может создать вторую заявку.

Ответ и статус

Ответ содержит id, status, depositAddress, environment, fromAmountExact, toAmountExact и rateExact. Точные суммы возвращаются строками; expiresAt — время в миллисекундах Unix. Статус проверяется через GET /v1/orders/:id. Ссылка и id открывают реквизиты заявки, храните их приватно.

Доступность обмена

Сервер проверяет направление, лимиты, адрес, актуальность курса и резерв. При недоступности обмена заявка не создаётся. Ошибка возвращается в error.code и error.message. Перед переводом проверьте environment: testnet не принимает реальные средства. На создание заявки действует лимит 5 запросов в минуту с одного IP.