Back to Blog

Developer / C01

MERX REST API: 46 конечных точек для торговли TRON energy

MERX REST API предоставляет 46 конечных точек, которые охватывают полный цикл торговли TRON energy и bandwidth — от открытия цен в реальном времени у восьми поставщиков до исполнения ордеров, управления аккаунтом, запросов в блокчейне и автоматизированных постоянных ордеров. Эта статья описывает архитектуру API, модель аутентификации, группы конечных точек, ограничения частоты запросов, обработку ошибок и практические примеры кода на curl, JavaScript и Python.

Почему единый API имеет значение

Рынок TRON energy разделён между несколькими поставщиками, каждый из которых имеет собственный формат API, схему аутентификации и модель ценообразования. Разработчик, который хочет получить лучшую цену на трансфер USDT, должен интегрироваться с каждым поставщиком отдельно, обрабатывать логику отказоустойчивости и постоянно отслеживать цены.

MERX объединяет всё это в единый REST API. Один API ключ, один заголовок аутентификации, один формат ошибок, один набор SDK. Платформа опрашивает всех подключённых поставщиков каждые 30 секунд, маршрутизирует ордеры к самому дешёвому доступному источнику и проверяет делегирования в блокчейне.

API имеет версию /api/v1/ и будет поддерживать обратную совместимость. Все конечные точки возвращают JSON в едином формате конверта.

Аутентификация

MERX использует аутентификацию по API ключу. Каждый аутентифицированный запрос должен включать заголовок X-API-Key.

API ключи создаются на панели управления MERX на сайте merx.exchange или программно через конечную точку /api/v1/keys. Каждый ключ имеет набор прав доступа, которые контролируют, какие операции он может выполнять.

curl -H "X-API-Key: sk_live_your_key_here" \
  https://merx.exchange/api/v1/balance

Ключи имеют формат sk_live_ с последующими 64 шестнадцатеричными символами. Сырой ключ отображается ровно один раз при создании. MERX хранит только хеш bcrypt, поэтому потерянные ключи невозможно восстановить — они должны быть отозваны и заменены.

Права доступа ключей

При создании API ключа вы присваиваете одно или несколько прав доступа:

Data table
Право доступаПредоставляет доступ к
create_ordersPOST /orders, POST /ensure
view_ordersGET /orders, GET /orders/:id
view_balanceGET /balance, GET /history
broadcastPOST /chain/broadcast

Это позволяет вам создавать ключи только для чтения для мониторинга панелей управления и ограниченные ключи для автоматизированных торговых систем.

Конверт ответа

Каждый ответ следует одной и той же структуре:

{
  "data": { ... }
}

При ошибке:

{
  "error": {
    "code": "INSUFFICIENT_FUNDS",
    "message": "Account balance too low for the requested operation",
    "details": { "required": 150000000, "available": 42000000 }
  }
}

Коды ошибок — это строки, читаемые машиной. Поле details опционально и предоставляет контекст для отладки.

Группы конечных точек

46 конечных точек организованы в девять групп. Вот полная карта.

Цены (6 конечных точек)

Эти конечные точки являются общедоступными — API ключ не требуется.

Data table
МетодПутьОписание
GET/api/v1/pricesТекущие цены от всех поставщиков
GET/api/v1/prices/bestСамый дешёвый поставщик для типа ресурса
GET/api/v1/prices/historyИсторические данные цен
GET/api/v1/prices/statsСтатистика совокупного рынка
GET/api/v1/prices/analysisАнализ тренда и рекомендация покупки
GET/api/v1/orders/previewПредпросмотр стоимости перед размещением ордера

Ордеры (3 конечные точки)

Data table
МетодПутьОписание
POST/api/v1/ordersСоздать новый ордер energy или bandwidth
GET/api/v1/ordersСписок ордеров с пагинацией и фильтрами
GET/api/v1/orders/:idПолучить детали ордера с разбором заполнений

Аккаунт (7 конечных точек)

Data table
МетодПутьОписание
GET/api/v1/balanceТекущие балансы TRX и USDT
GET/api/v1/deposit/infoАдрес депозита и мемо
POST/api/v1/deposit/prepareПодготовить транзакцию депозита
POST/api/v1/deposit/submitОтправить доказательство депозита
POST/api/v1/withdrawВывести TRX или USDT
GET/api/v1/historyИстория исполнения ордеров
GET/api/v1/history/summaryСтатистика совокупного аккаунта

API ключи (3 конечные точки)

Data table
МетодПутьОписание
GET/api/v1/keysСписок всех API ключей
POST/api/v1/keysСоздать новый API ключ
DELETE/api/v1/keys/:idОтозвать API ключ

Аутентификация (2 конечные точки)

Data table
МетодПутьОписание
POST/api/v1/auth/registerСоздать новый аккаунт
POST/api/v1/auth/loginАутентифицироваться и получить JWT токен

Оценка (2 конечные точки)

Data table
МетодПутьОписание
POST/api/v1/estimateОценить energy и стоимость для транзакции
POST/api/v1/ensureГарантировать минимальные ресурсы на адресе

Вебхуки (3 конечные точки)

Data table
МетодПутьОписание
POST/api/v1/webhooksСоздать подписку на вебхук
GET/api/v1/webhooksСписок подписок на вебхуки
DELETE/api/v1/webhooks/:idУдалить вебхук

Постоянные ордеры и мониторы (7 конечных точек)

Data table
МетодПутьОписание
POST/api/v1/standing-ordersСоздать постоянный ордер
GET/api/v1/standing-ordersСписок постоянных ордеров
GET/api/v1/standing-orders/:idПолучить детали постоянного ордера
DELETE/api/v1/standing-orders/:idОтменить постоянный ордер
POST/api/v1/monitorsСоздать монитор ресурсов
GET/api/v1/monitorsСписок активных мониторов
DELETE/api/v1/monitors/:idОтменить монитор

Прокси цепи (10 конечных точек)

Эти конечные точки проксируют запросы сети TRON через MERX, устраняя необходимость для клиентов вызывать TronGrid напрямую.

Data table
МетодПутьОписание
GET/api/v1/chain/account/:addressИнформация аккаунта и ресурсы
GET/api/v1/chain/balance/:addressБаланс TRX
GET/api/v1/chain/resources/:addressРазбор energy и bandwidth
GET/api/v1/chain/transaction/:txidДетали транзакции
GET/api/v1/chain/block/:numberБлок по номеру (или последний)
GET/api/v1/chain/parametersПараметры цепи
GET/api/v1/chain/history/:addressИстория транзакций адреса
POST/api/v1/chain/read-contractВызвать постоянную функцию контракта
POST/api/v1/chain/broadcastТранслировать подписанную транзакцию
GET/api/v1/address/:addr/resourcesСводка ресурсов адреса

x402 Pay-Per-Use (3 конечные точки)

Data table
МетодПутьОписание
POST/api/v1/x402/invoiceСоздать счёт платежа
GET/api/v1/x402/invoice/:idПроверить статус счёта
POST/api/v1/x402/verifyПроверить платёж и исполнить ордер

Ключевые конечные точки в деталях

GET /api/v1/prices

Возвращает текущие цены от всех активных поставщиков. Аутентификация не требуется. Это конечная точка, которую вы вызываете, чтобы увидеть полный рынок с одного взгляда.

curl https://merx.exchange/api/v1/prices

Ответ (сокращённо):

{
  "data": [
    {
      "provider": "sohu",
      "is_market": false,
      "energy_prices": [
        { "duration_sec": 3600, "price_sun": 24 },
        { "duration_sec": 86400, "price_sun": 30 }
      ],
      "bandwidth_prices": [],
      "available_energy": 5000000,
      "available_bandwidth": 0,
      "fetched_at": 1743292800
    }
  ]
}

Каждая запись поставщика включает ценовые уровни (по продолжительности), доступную ёмкость и временную метку последнего успешного опроса.

POST /api/v1/orders

Создаёт ордер energy или bandwidth. Платформа сопоставляет ордер с доступными поставщиками и маршрутизирует к самому дешёвому, который может его исполнить.

curl -X POST https://merx.exchange/api/v1/orders \
  -H "X-API-Key: sk_live_your_key_here" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: unique-request-id-123" \
  -d '{
    "resource_type": "ENERGY",
    "order_type": "MARKET",
    "amount": 65000,
    "target_address": "TJYpFDq5cVnRJey8Xt8HfaRtNkqFTZwBb",
    "duration_sec": 3600
  }'

Ответ:

{
  "data": {
    "id": "ord_a1b2c3d4",
    "status": "PENDING",
    "created_at": "2026-03-30T12:00:00.000Z"
  }
}

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

Типы ордеров:

GET /api/v1/orders/:id

Возвращает ордер с его деталями заполнения — какие поставщики исполнили ордер, по какой цене и какие ID транзакций в блокчейне.

curl -H "X-API-Key: sk_live_your_key_here" \
  https://merx.exchange/api/v1/orders/ord_a1b2c3d4
{
  "data": {
    "id": "ord_a1b2c3d4",
    "resource_type": "ENERGY",
    "order_type": "MARKET",
    "status": "FILLED",
    "amount": 65000,
    "target_address": "TJYpFDq5cVnRJey8Xt8HfaRtNkqFTZwBb",
    "duration_sec": 3600,
    "total_cost_sun": 1560000,
    "fills": [
      {
        "provider": "sohu",
        "amount": 65000,
        "price_sun": 24,
        "cost_sun": 1560000,
        "delegation_tx": "abc123def456...",
        "verified": true,
        "tronscan_url": "https://tronscan.org/#/transaction/abc123def456..."
      }
    ]
  }
}

POST /api/v1/estimate

Оценивает energy и bandwidth, необходимые для операции TRON, затем сравнивает стоимость аренды со стоимостью сжигания TRX.

curl -X POST https://merx.exchange/api/v1/estimate \
  -H "Content-Type: application/json" \
  -d '{
    "operation": "trc20_transfer",
    "to_address": "TJYpFDq5cVnRJey8Xt8HfaRtNkqFTZwBb",
    "amount": "1000000"
  }'
{
  "data": {
    "energy_required": 65000,
    "bandwidth_required": 345,
    "rental_cost": {
      "energy": {
        "best_price_sun": 24,
        "best_provider": "sohu",
        "cost_trx": "1.560"
      }
    },
    "total_rental_trx": "1.905",
    "total_burn_trx": "27.645",
    "savings_percent": 93.1
  }
}

Эта конечная точка полезна для того, чтобы показать пользователям ровно, сколько они экономят, арендуя energy через MERX вместо сжигания TRX.

Ограничения частоты запросов

Ограничения частоты запросов применяются по IP адресу, используя скользящие временные окна.

Data table
Группа конечных точекЛимитОкно
Цены (общедоступные)300 запросов1 мин
По умолчанию (общее)100 запросов1 мин
Баланс60 запросов1 мин
История60 запросов1 мин
Ордеры10 запросов1 мин
Выводы5 запросов1 мин
Трансляция20 запросов1 мин
Регистрация5 запросов1 час

Когда ограничение частоты запросов превышено, API возвращает HTTP 429 в стандартном формате ошибки:

{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Rate limit exceeded"
  }
}

Заголовки ограничения частоты запросов (RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset) включены во все ответы в соответствии со стандартом черновика IETF.

Коды ошибок

Data table
КодHTTPОписание
UNAUTHORIZED401Неверный или отсутствующий API ключ
RATE_LIMITED429Слишком много запросов
VALIDATION_ERROR400Тело запроса или параметры не прошли валидацию
INVALID_ADDRESS400Не является действительным адресом TRON
INSUFFICIENT_FUNDS400Баланс аккаунта слишком низкий
BELOW_MINIMUM_ORDER400Размер ордера ниже минимума поставщика
DUPLICATE_REQUEST409Ключ идемпотентности уже использован
ORDER_NOT_FOUND404Ордер или ресурс не найдены
PROVIDER_UNAVAILABLE404Ни один поставщик не может исполнить запрос
INTERNAL_ERROR500Ошибка на стороне сервера

Быстрый старт с SDK

Хотя REST API можно вызывать напрямую с любым HTTP клиентом, MERX предоставляет официальные SDK для JavaScript и Python, которые обрабатывают аутентификацию, парсинг ошибок и безопасность типов.

JavaScript / TypeScript

npm install merx-sdk
import { MerxClient } from 'merx-sdk'

const merx = new MerxClient({ apiKey: 'sk_live_your_key_here' })

// Получить все цены
const prices = await merx.prices.list()

// Создать ордер
const order = await merx.orders.create({
  resource_type: 'ENERGY',
  amount: 65000,
  target_address: 'TJYpFDq5cVnRJey8Xt8HfaRtNkqFTZwBb',
  duration_sec: 3600,
})

// Проверить статус ордера
const details = await merx.orders.get(order.id)

Python

pip install merx-sdk
from merx import MerxClient

client = MerxClient(api_key="sk_live_your_key_here")

# Получить все цены
prices = client.prices.list()

# Создать ордер
order = client.orders.create(
    resource_type="ENERGY",
    amount=65000,
    target_address="TJYpFDq5cVnRJey8Xt8HfaRtNkqFTZwBb",
    duration_sec=3600,
)

# Проверить статус ордера
details = client.orders.get(order.id)

WebSocket для данных в реальном времени

В дополнение к REST API, MERX предоставляет конечную точку WebSocket на wss://merx.exchange/ws для обновлений цен в реальном времени. Изменения цен транслируются подключённым клиентам по мере их возникновения, с обновлениями, приходящими каждые 30 секунд от каждого поставщика.

Соединение WebSocket поддерживает фильтрацию поставщиков — подписывайтесь только на интересующих вас поставщиков и игнорируйте остальных.

Постоянные ордеры

Постоянные ордеры автоматизируют покупку energy на основе триггеров. Вы можете установить порог цены, расписание или условие баланса, и платформа автоматически исполняет ордеры в пределах вашего указанного бюджета.

Типы триггеров включают price_below, price_above, schedule, balance_below и provider_available. Типы действий включают buy_resource, ensure_resources, deposit_trx и notify_only.

Это делает MERX подходящей для полностью автоматизированного управления инфраструктурой — установите ваши правила один раз, и платформа обрабатывает исполнение.

Что дальше

API MERX разработан для разработчиков и компаний, которым требуется надёжный и экономичный доступ к ресурсам сети TRON. Независимо от того, разрабатываете ли вы процессор платежей, приложение DeFi или биржу, API предоставляет строительные блоки для программного управления energy и bandwidth.

Полная документация API доступна на merx.exchange/docs. JavaScript SDK находится на GitHub и npm. Python SDK находится на PyPI.


Ссылки:

Попробуйте сейчас с ИИ

Добавьте MERX в Claude Desktop или любой совместимый с MCP клиент — без установки, без API ключа для инструментов только для чтения:

{
  "mcpServers": {
    "merx": {
      "url": "https://merx.exchange/mcp/sse"
    }
  }
}

Спросите у вашего ИИ агента: "Какой самый дешёвый TRON energy прямо сейчас?" и получите живые цены от всех подключённых поставщиков.

Полная документация MCP: merx.exchange/docs/tools/mcp-server


All Articles