Справочник API

Справочник следует маршрутам, подключённым в текущем production-приложении. Пути и формы ниже — реализованный контракт, а не план развития.

Правила запросов

Авторизация API-ключом

Authorization: Bearer <YOUR_API_KEY>

Передавайте полный ключ как Bearer-токен. Параметр api_key в строке запроса отклоняется. У ключей есть явные области read, buy и sell.

Изменения через браузерную сессию

X-CSRF-Token: <SESSION_CSRF>

Изменения заказов, продлений аренды, правил автопополнения и настроек продавца из браузерной сессии требуют этот заголовок. API-ключам CSRF не нужен.

Идемпотентные изменения

Idempotency-Key: <UNIQUE_VALUE>

Для создания одиночного или оптового заказа, сессии мультиподписи и подготовки реинвестирования обязателен непустой Idempotency-Key длиной до 128 символов. Продление аренды также использует ключ идемпотентности. Повторяйте значение только для идентичного действия.

JSON-тела

Content-Type: application/json

Передавайте этот тип для запросов с JSON-телом. Успешный ответ — сразу описанный объект, без дополнительной оболочки успеха.

Курсорная пагинация

{ "items": [], "next_cursor": null, "has_more": false }

Списки возвращают items, next_cursor и has_more. Считайте курсор непрозрачным и передавайте его без изменений в следующий запрос; не стройте из него offset.

Стандартная оболочка ошибки

{ "error": { "code": "invalid_request", "message": "...", "request_id": "..." } }

Все ошибки используют одну оболочку. Коды: invalid_request, unauthorized, forbidden, not_found, conflict, rate_limited, unavailable, insufficient_balance и internal. Детали валидации появляются только в ответах 422.

Публичный рынок

Этим маршрутам не нужны учётные данные. Используйте указанные ниже query-параметры; маршруты со строгой проверкой отклоняют неизвестные имена, а не игнорируют их.

GET /v1/price Публично

Возвращает последнюю цену закрытой сделки, диапазон и объём за 24 часа и живые сетевые коэффициенты для цены и APY.

Ключевые поля
query: resource
Ответ
PriceResponse { resource, last_price_sun, change_24h_pct, high_24h_sun, low_24h_sun, volume_24h, network_ratio, burn_fee_sun_per_unit, trx_usd, updated_at }
GET /v1/market/depth Публично

Возвращает агрегированные уровни ask и bid для ресурса, срока аренды и минимального лота.

Ключевые поля
query: resource, duration, min_lot
Ответ
DepthResponse { resource, duration_sec, min_lot, asks[], bids[], spread_sun, updated_at }
GET /v1/market/trades Публично

Возвращает только закрытые сделки от новых к старым, с продавцом и доступными блокчейн-доказательствами.

Ключевые поля
query: resource, limit, cursor
Ответ
Page<TradeItem> { items[], next_cursor, has_more }
GET /v1/market/orders Публично

Возвращает доступный для исполнения публичный спрос: остаток, выплату продавцу, минимальное заполнение и срок.

Ключевые поля
query: resource, duration_sec, min_amount, limit, cursor
Ответ
Page<MarketOrderItem> { items[], next_cursor, has_more }
GET /v1/market/stats Публично

Возвращает основные показатели активности и доступной мощности для ресурса.

Ключевые поля
query: resource
Ответ
MarketStats { resource, open_orders, available_amount, volume_24h, fills_24h, active_sellers, avg_seller_apy_percent, network_ratio, updated_at }
GET /v1/market/ohlcv Публично

Возвращает ограниченное окно свечей от старых к новым. tf принимает 1m, 5m, 15m, 1h, 4h или 1d.

Ключевые поля
query: resource, tf, limit
Ответ
Page<OhlcvBar> { items[{ t, o, h, l, c, v }], next_cursor: null, has_more: false }
GET /v1/sellers Публично

Возвращает допущенных сейчас продавцов в рейтинге измеренного исполнения по выбранному ресурсу.

Ключевые поля
query: resource, limit, cursor
Ответ
Page<SellerPublic> { items[], next_cursor, has_more }
GET /v1/sellers/{address} Публично

Возвращает публичную историю исполнения для одного корректного TRON-адреса продавца.

Ключевые поля
path: address; query: resource
Ответ
SellerPublic { address, resource, fills_total, fill_rate_pct, rating, typical_delivery_ms, volume_trx, active_since }
WS /v1/stream Публичные каналы; cookie сессии для канала пользователя

Передаёт публичные события цены, глубины, сделок и заказов. Сессия может подписаться и на собственный пользовательский канал.

Ключевые поля
frame: { op, channels[] }; public prefixes: price:, depth:, trades:, orders:
Ответ
welcome | subscribed | unsubscribed | event | pong | error

Авторизованный покупатель

Чтение требует область read. Заказы, продления аренды и изменения автопополнения требуют buy; браузерная сессия также передаёт CSRF-токен.

POST /v1/orders область buy; изменения из сессии также требуют CSRF

Резервирует баланс покупателя, сопоставляет доступное предложение и публикует остаток одной транзакцией. Резервное исполнение провайдером недоступно: опустите allow_provider_fallback или передайте false; true отклоняется с HTTP 422.

Ключевые поля
body: resource, amount, duration_sec, price_sun, receiver_address, allow_partial, extension_required, smart_matching (optional; prefers a previously successful seller only within the same price level), allow_provider_fallback (optional; omit or false only while provider fallback is unavailable; true returns 422), slippage_pct, min_fill_amount, ttl_sec, scheduled_at (optional ISO-8601; naive=UTC, offset-aware normalized to UTC; for a new request, strictly future and no more than 7 days ahead); header: Idempotency-Key
Ответ
OrderResponse { id, status, extension_required, smart_matching, cost_trx, price_improvement_trx, fills[], scheduled_at, expires_at, created_at, ... }
POST /v1/orders/batch область buy; изменения из сессии также требуют CSRF

Атомарно создаёт от 1 до 25 заказов с общими условиями для уникальных активированных TRON-адресов. Получатели проверяются до резервирования эскроу, идентичный повтор возвращает существующий batch.

Ключевые поля
body: the same shared order terms plus receiver_addresses (1–25 unique activated TRON addresses); header: Idempotency-Key. The basket is atomic and a changed retry body returns 409.
Ответ
OrderBatchResponse { id, target_count, orders: OrderResponse[] }
POST /v1/multisig/sessions область buy; изменения из сессии также требуют CSRF

Готовит неподписанный перевод на депозитный адрес пользователя в платформе. Сервер не подписывает и не отправляет транзакцию; владелец подписывает её в TronLink. Статус pending действует до достижения требуемого веса подписей, ready — после достижения, expired — после срока транзакции.

Ключевые поля
body: owner_address, amount_trx, permission_id; header: Idempotency-Key
Ответ
MultisigSessionResponse { id, owner_address, destination_address, amount_trx, permission_id, tx_id, transaction, signatures_collected, required_weight, current_weight, status: pending | ready | expired, expires_at, created_at }
POST /v1/multisig/sessions/{session_id}/signatures область buy; изменения из сессии также требуют CSRF

Добавляет пользовательскую подпись, проверяет её на подготовленной транзакции и пересчитывает вес по on-chain permission. Сервер по-прежнему не отправляет транзакцию.

Ключевые поля
path: session_id; body: signature (130 hexadecimal characters)
Ответ
MultisigSessionResponse
GET /v1/multisig/sessions/{session_id} область read: сессия или API-ключ

Возвращает текущую сессию подписи пользователя, собранные подписи и проверенный вес, не раскрывая чужие сессии.

Ключевые поля
path: session_id
Ответ
MultisigSessionResponse
GET /v1/orders область read: сессия или API-ключ

Возвращает собственные заказы вызывающего от новых к старым, при необходимости только активные.

Ключевые поля
query: limit, cursor, active_only
Ответ
Page<OrderResponse> { items[], next_cursor, has_more }
GET /v1/rentals область read: сессия или API-ключ

Возвращает принадлежащие вызывающему как покупателю подтверждённые P2P-аренды, которые остаются активными, включая проверенный в сети объём и время разблокировки. Получателем может быть другой кошелёк. Исполнения провайдеров остаются в истории заказов, пока нет доказательства срока их аренды.

Ключевые поля
query: limit, cursor
Ответ
Page<RentalItem> { items[{ id, order_id, resource, receiver_address, amount, delivered_amount, duration_sec, delegated_at, expires_at, status, cost_trx, can_extend, extension_order_id, extension_scheduled_at, extension_status }], next_cursor, has_more }
GET /v1/rentals/incoming область read: сессия или API-ключ

Возвращает активные TET P2P-делегирования с завершённым расчётом, полученные основным подтверждённым кошельком вызывающего, с проверенным в сети объёмом и временем разблокировки. Сервер определяет кошелёк; поля заказа покупателя и коммерческие данные исключены.

Ключевые поля
query: limit, cursor
Ответ
Page<IncomingDelegationItem> { items[{ id, resource, receiver_address, delivered_amount, delegated_at, expires_at, status }], next_cursor, has_more }
POST /v1/rentals/{rental_id}/extend область buy; изменения из сессии также требуют CSRF

Сразу резервирует внутренний баланс покупателя и планирует один дочерний P2P-ордер к моменту разблокировки аренды, сохраняя доставленный объём, адрес и срок.

Ключевые поля
path: rental_id; optional header: Idempotency-Key; no body
Ответ
RentalExtensionRequestResponse { id, rental_id, status, order_id, created_at, executed_at }; 202 accepted, 200 replay
GET /v1/mandates область read: сессия или API-ключ

Возвращает правила автопополнения вызывающего с текущим статусом, измеренным объёмом ресурса, расходом бюджета и последним дочерним ордером.

Ключевые поля
query: limit, cursor
Ответ
Page<MandateResponse> { items[], next_cursor, has_more }
POST /v1/mandates область buy; изменения из сессии также требуют CSRF

Создаёт правило автопополнения из внутреннего баланса с явными порогом, целью, ценой, сроком аренды, бюджетом и дедлайном.

Ключевые поля
body: resource, target_address, trigger_level, target_level, duration_sec, max_price_sun, budget_trx, deadline, enabled
Ответ
MandateResponse { id, status, budget_used_trx, budget_remaining_trx, last_observed_available, last_order_id, ... }
PATCH /v1/mandates/{mandate_id} область buy; изменения из сессии также требуют CSRF

Изменяет лимиты или состояние собственного правила автопополнения, не меняя его ресурс и целевой адрес.

Ключевые поля
path: mandate_id; body: trigger_level, target_level, duration_sec, max_price_sun, budget_trx, deadline, enabled
Ответ
MandateResponse
GET /v1/orders/{order_id} область read: сессия или API-ключ

Возвращает принадлежащий вызывающему заказ; чужой заказ неотличим от отсутствующего.

Ключевые поля
path: order_id
Ответ
OrderResponse
PATCH /v1/orders/{order_id} область buy; изменения из сессии также требуют CSRF

Изменяет абсолютные условия заказа в окне редактирования и сообщает изменение резерва.

Ключевые поля
path: order_id; body: price_sun, amount, receiver_address
Ответ
OrderResponse { ..., escrow_delta_trx }
DELETE /v1/orders/{order_id} область buy; изменения из сессии также требуют CSRF

Отменяет допустимый заказ и возвращает две отдельные точные суммы TRX: освобождённый эскроу/возврат в refunded_trx и условную комиссию в cancellation_fee_trx. Нулевая комиссия означает, что она не взималась.

Ключевые поля
path: order_id
Ответ
OrderResponse { ..., refunded_trx, cancellation_fee_trx }

Авторизованный продавец

Отчёты продавца используют область read. Синхронизация и изменение пула автопродажи требуют sell.

GET /v1/seller/pool область read: сессия или API-ключ

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

Ключевые поля
нет
Ответ
SellerPoolResponse { status, permissions, stake and capacity, pending_payout_trx, smart_reuse, auto_extend, reinvest, settings }
POST /v1/seller/pool/sync область sell; изменения из сессии также требуют CSRF

Сверяет подтверждённый кошелёк с живыми разрешениями, стейком и bandwidth в сети и при необходимости создаёт продавца.

Ключевые поля
нет
Ответ
SellerPoolResponse
PATCH /v1/seller/pool область sell; изменения из сессии также требуют CSRF

Сохраняет условия автопродажи и политики продавца. smart_reuse повышает приоритет ранее использованного для того же получателя продавца только внутри одной цены; auto_extend разрешает запрошенное покупателем продление на тот же срок; reinvest включает подготовку некастодиального реинвестирования.

Ключевые поля
body: auto_sell_enabled, bandwidth_auto_sell_enabled, smart_reuse, auto_extend, reinvest, min_price_sun, bandwidth_min_price_sun, allowed_durations_sec, min_order_amount, max_order_amount, min_delegation
Ответ
SellerPoolResponse
GET /v1/seller/delegations область read: сессия или API-ключ

Возвращает исходящие делегирования вызывающего и записанные доказательства доставки и выплаты.

Ключевые поля
query: resource, active_only, limit, cursor
Ответ
Page<DelegationItem> { items[], next_cursor, has_more }
GET /v1/seller/earnings область read: сессия или API-ключ

Возвращает ожидающий, выплаченный и сегодняшний доход продавца, следующую границу политики выплаты, когда сумма уже подлежит выплате, и дневную историю за 30 дней.

Ключевые поля
нет
Ответ
EarningsResponse { pending_trx, paid_total_trx, today_trx, apy_30d_percent, next_payout_at, history[] }
POST /v1/seller/reinvestment/sessions область sell; изменения из сессии также требуют CSRF

Готовит unsigned FreezeBalanceV2 для одной завершённой выплаты продавцу. Сервер никогда не подписывает и не отправляет её; продавец подписывает и отправляет через TronLink. Одна выплата может использоваться только одной сессией.

Ключевые поля
header: Idempotency-Key; no body
Ответ
SellerReinvestmentSessionResponse { id, payout_entry_id, amount_trx, tx_id, transaction, status: pending | signed | expired, expires_at, signed_at, created_at }
POST /v1/seller/reinvestment/sessions/{session_id}/confirmation область sell; изменения из сессии также требуют CSRF

Проверяет, что подписана именно подготовленная FreezeBalanceV2, проверяет вес подписи и фиксирует состояние signed без отправки транзакции.

Ключевые поля
path: session_id; body: signed_transaction
Ответ
SellerReinvestmentSessionResponse
GET /v1/seller/reinvestment/sessions/{session_id} область read: сессия или API-ключ

Возвращает принадлежащую пользователю сессию реинвестирования в состоянии pending, signed или expired.

Ключевые поля
path: session_id
Ответ
SellerReinvestmentSessionResponse

Авторизация и аккаунт

Вход через кошелёк создаёт браузерную сессию. Изменение API-ключей остаётся доступно только сессии, чтобы украденный ключ не мог выпускать или заменять учётные данные.

POST /v1/auth/nonce Публично

Возвращает точное привязанное к сайту сообщение, которое должен подписать кошелёк.

Ключевые поля
body: address
Ответ
NonceResponse { nonce, message, expires_at }
POST /v1/auth/verify Публично

Проверяет nonce-сообщение и подпись TIP-191, затем создаёт браузерную сессию. Необязательный реферальный код применяется только при создании нового аккаунта кошелька.

Ключевые поля
body: address, message, signature, ref? (6–32 URL-safe characters)
Ответ
SessionResponse { user_id, address, role, csrf, expires_at, created } + session cookie
POST /v1/auth/logout Браузерная сессия

Отзывает и очищает текущую браузерную сессию.

Ключевые поля
нет
Ответ
{ ok: true }
GET /v1/auth/me Сессия или API-ключ

Возвращает текущего принципала, способ авторизации и действующие области.

Ключевые поля
нет
Ответ
MeResponse { user_id, role, method, scopes[], preferred_lang }
GET /v1/balance область read: сессия или API-ключ

Возвращает точные балансы строками десятичных чисел, допускающие null deposit_address и deposit_minimum_trx и обязательный массив recent_deposits. Когда депозиты настроены, а сканер и распределение адресов готовы, адрес — стабильный личный адрес вызывающего для пополнения платформы, а минимум — точная строковая сумма TRX для автоматического зачисления; при отключённых или недоступных депозитах оба поля равны null. Без deposit_txid recent_deposits содержит не более пяти новейших депозитов вызывающего с txid, amount_trx, status, confirmations_required, observed_at и credited_at. При deposit_txid ровно из 64 шестнадцатеричных символов массив содержит ноль или одно точное совпадение среди депозитов вызывающего, даже если оно старше. seen ожидает подтверждений; confirmed подтверждён, но не зачислен, поскольку сумма ниже текущего минимума; credited зачислен на доступный баланс; orphaned выпал из канонической цепи, и любое зачисление отменено.

Ключевые поля
query: deposit_txid (optional; exactly 64 hexadecimal characters)
Ответ
BalanceResponse { user_id, available_trx, escrow_held_trx, seller_pending_trx, deposit_address, deposit_minimum_trx, recent_deposits[{ txid, amount_trx, status, confirmations_required, observed_at, credited_at }] }
GET /v1/referrals область read: сессия или API-ключ

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

Ключевые поля
нет
Ответ
ReferralsResponse { code, link, pending_trx, earned_total_trx, active_count, awaiting_first_order, next_payout_at, referred[], payouts[] }
POST /v1/keys Браузерная сессия + CSRF

Создаёт API-ключ с областями. Полный секрет возвращается один раз и позже не восстанавливается.

Ключевые поля
body: name, can_read, can_buy, can_sell
Ответ
ApiKeyResponse { id, name, key_prefix, secret, can_read, can_buy, can_sell, last_used_at, created_at, revoked_at }; secret appears once
GET /v1/keys Браузерная сессия

Возвращает полную историю собственных ключей, включая отозванные.

Ключевые поля
нет
Ответ
Page<ApiKeyResponse> { items[], has_more: false }
DELETE /v1/keys/{key_id} Браузерная сессия + CSRF

Отзывает собственный API-ключ, не раскрывая существование чужого.

Ключевые поля
path: key_id
Ответ
ApiKeyResponse { ..., revoked_at }