Справочник 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 }