Skip to content
Translated page. The English version is the source of truth.

POST /apiv2/order5m

Створення замовлення на оренду Energy на 5 хвилин через внутрішні пули energy Netts.

URL ендпоінта

POST https://netts.io/apiv2/order5m

Заголовки запиту

ЗаголовокОбов'язковийОпис
Content-TypeТакapplication/json
X-API-KEYТакВаш API-ключ із панелі керування Netts
X-Real-IPТакIP-адреса з вашого білого списку

Тіло запиту

json
{
    "amount": 65000,
    "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE"
}

Параметри

ПараметрТипОбов'язковийОпис
amountintegerТакКількість Energy для оренди (мінімум: 61 000, максимум: 650 000)
receiveAddressstringТакTRON-адреса, яка отримає energy (формат TRC-20)

Ліміти Energy

Кінцева точка для 5-хвилинної оренди приймає обсяги energy від 61 000 до 650 000 одиниць на одне замовлення. Запити поза цим діапазоном буде відхилено з помилкою HTTP 400.

Інформація про постачальника

5-хвилинні замовлення energy виконуються виключно через внутрішні пули energy Netts. На відміну від 1-годинної кінцевої точки, зовнішні постачальники не використовуються.

Доступність і стратегія повторних спроб

Оскільки делегування надходять лише з внутрішніх пулів, у періоди високого попиту можлива тимчасова недоступність. Якщо ви отримуєте помилку 503, повторіть запит після невеликої затримки або перейдіть на 1-годинну кінцеву точку, яка має доступ до кількох зовнішніх постачальників.

Приклади запитів

cURL

bash
curl -X POST https://netts.io/apiv2/order5m \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip" \
  -d '{
    "amount": 65000,
    "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE"
  }'

Python

python
import requests

url = "https://netts.io/apiv2/order5m"
headers = {
    "Content-Type": "application/json",
    "X-API-KEY": "your_api_key",
    "X-Real-IP": "your_whitelisted_ip"
}

payload = {
    "amount": 65000,
    "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE"
}

response = requests.post(url, headers=headers, json=payload)
data = response.json()

if response.status_code == 200:
    detail = data.get('detail', {})
    order_data = detail.get('data', {})
    print(f"Order ID: {order_data.get('orderId')}")
    print(f"Transaction Hash: {order_data.get('hash')}")
    print(f"Energy Delivered: {order_data.get('energy')}")
    print(f"Cost: {order_data.get('paidTRX')} TRX")
    print(f"Delegate Address: {order_data.get('delegateAddress')}")
elif response.status_code == 503:
    # Pool temporarily unavailable - retry or fallback to 1h
    print("Pool busy, retrying in 2 seconds...")
else:
    error_detail = data.get('detail', data)
    print(f"Error Code: {error_detail.get('code', 'N/A')}")
    print(f"Error Message: {error_detail.get('msg', error_detail)}")

Відповідь

Успішна відповідь (200 OK)

json
{
    "detail": {
        "code": 10000,
        "msg": "Successful, 1.430 TRX deducted",
        "data": {
            "orderId": "5Mb4ee11ef86",
            "paidTRX": 1.43,
            "hash": "3636f97dde244fca17cdc0b2cf7fd157...",
            "delegateAddress": "TNp5gsJhBmZFXgCdgjMgr8pEZ8fHgXUHDq",
            "energy": 65050
        }
    }
}

Успіх з активацією адреси (200 OK)

Якщо адресу одержувача ще не було активовано в мережі TRON, Netts активує її автоматично. Вартість активації додається до загальної суми:

json
{
    "detail": {
        "code": 10000,
        "msg": "Successful, 1.430 TRX for energy + 1.100 TRX for address activation",
        "data": {
            "orderId": "5Mb4ee11ef86",
            "paidTRX": 2.53,
            "hash": "3636f97dde244fca17cdc0b2cf7fd157...",
            "delegateAddress": "TNp5gsJhBmZFXgCdgjMgr8pEZ8fHgXUHDq",
            "energy": 65050,
            "activationHash": "bab38070a64b237acc9110ecf5135acc..."
        }
    }
}

Поля відповіді

ПолеТипОпис
detail.codeintegerЗавжди 10000 для успішних замовлень
detail.msgstringПовідомлення про успіх зі списаною сумою
detail.data.orderIdstringУніфікований ID замовлення (формат: 5M{id})
detail.data.paidTRXnumberЗагальна вартість у TRX (включає плату за активацію, якщо застосовно)
detail.data.hashstringХеш транзакції делегування
detail.data.delegateAddressstringАдреса пулу, яка делегувала energy
detail.data.energyintegerКількість Energy + буфер (зазвичай +50)
detail.data.activationHashstringПрисутнє лише в разі виконання активації адреси

Відповіді з помилками

Недійсна кількість Energy (400)

json
{
    "code": 1003,
    "msg": "Energy amount must be between 61000 and 650000. Requested: 50000"
}

Помилка автентифікації (401)

json
{
    "detail": "Invalid API key or IP not in whitelist"
}

Недостатньо коштів на балансі (403)

json
{
    "code": 1004,
    "msg": "Insufficient funds. Required: 1.43 TRX, Available: 0.50 TRX"
}

Сервіс недоступний (503)

json
{
    "code": 5003,
    "msg": "Service temporarily unavailable. Energy delegation failed after retries."
}

Обробка помилок 503

Відповідь 503 означає, що внутрішні пули тимчасово перевантажені. Рекомендована стратегія:

  1. Зачекайте 2–3 секунди та повторіть 5-хвилинне замовлення
  2. Якщо сервіс досі недоступний, перейдіть на 1-годинну кінцеву точку, яка використовує кількох постачальників

Внутрішня помилка сервера (500)

json
{
    "code": 5000,
    "msg": "Internal server error occurred"
}

Довідник кодів помилок

КодОписHTTP-статус
10000Успіх200
10000Успіх (кешована відповідь)208
-Повторний запит ще обробляється409
1003Кількість Energy виходить за межі діапазону400
1004Недостатній баланс403
1005Адресу платника користувача не налаштовано400
5000Внутрішня помилка сервера500
5003Сервіс Energy недоступний503

Ліміти запитів

Для цієї кінцевої точки діють такі обмеження частоти запитів (на одну IP-адресу):

ПеріодЛімітОпис
1 секунда50 запитівМаксимум 50 запитів на секунду

Заголовки ліміту запитів

http
RateLimit-Limit: 50
RateLimit-Remaining: 49
RateLimit-Reset: 1
X-RateLimit-Limit-Second: 50
X-RateLimit-Remaining-Second: 49

Перевищено ліміт запитів (429)

json
{
    "message": "API rate limit exceeded"
}

Ідемпотентність

API підтримує ідемпотентність для запобігання дублюванню обробки замовлень. Коли ви надсилаєте кілька однакових запитів, система гарантує, що замовлення буде оброблено лише один раз.

Як працює ідемпотентність

Унікальність запиту визначається комбінацією:

  • Мітки часу запиту (вікно в 2 секунди)
  • Кількості Energy
  • Адреси одержувача
  • API-ключа

Кожному запиту надається 2-секундне вікно унікальності. Запити з ідентичними параметрами в межах цього вікна розглядаються як дублікати.

Передача власного ключа

Ви можете взяти контроль над ідемпотентністю у свої руки, надіславши заголовок X-Idempotency-Key. Коли він присутній, саме це значення одноосібно визначає, чи є запит повторним, а автоматична комбінація вище не використовується. Якщо він відсутній, нічого не змінюється — сервер формує ключ для вас.

Правила такі самі, як і для /apiv2/order1h:

ЗаголовокX-Idempotency-Key
ФорматРівно 64 шістнадцяткових символи в нижньому регістрі — дайджест SHA-256
Час життя24 години з моменту першого запиту з цим ключем
Область діїВаш акаунт. Те саме значення, надіслане іншим акаунтом, ніколи не поверне ваш результат

Ключ будь-якого іншого формату — UUID з дефісами, base64, шістнадцятковий у верхньому регістрі — відхиляється з кодом 400 до розміщення замовлення та до списання коштів:

json
{
    "detail": "Invalid idempotency key format. Must be 64-character hexadecimal string."
}

Сформуйте ключ на основі вашого API-ключа, щоб він був унікальним для вашого акаунта та відтворюваним під час повторної спроби — практичний приклад наведено на сторінці 1-годинної оренди. Включіть період оренди в повідомлення, яке ви хешуєте: оренда для тієї самої адреси на 5 хвилин і на 1 годину — це різні замовлення, і повторне використання одного ключа для обох поверне відповідь першого замовлення для другого запиту.

Розміщення двох ідентичних замовлень

Та сама пастка, що й на годинній кінцевій точці, але з ширшим вікном. Два ідентичних замовлення — та сама сума на ту саму адресу — неможливо відрізнити від повторної спроби, і лише момент надходження розділяє їх.

Без власного ключа:

Інтервал між двома запитамиЩо відбувається
У межах того самого 2-секундного вікнаДругий запит сприймається як повтор. Він не виконується: ви отримуєте 208 і відповідь першого замовлення. Кошти за нього не списуються
З інтервалом понад дві секундиДва різні ключі — обидва замовлення розміщуються та оплачуються

Тому робіть паузу понад дві секунди між двома ідентичними замовленнями та перевіряйте код стану: 208 означає, що замовлення, яке ви щойно надіслали, не було розміщено.

Пауза — це тимчасове рішення, а не виправлення: вона також розділяє запити, які ви взагалі не збиралися дублювати (наприклад, повторна спроба після тайм-ауту або повторна доставка повідомлення з вашої черги), і кожен із них стане окремим замовленням з окремим списанням коштів. Передача власного ключа — це те, що дійсно вирішує проблему: новий nonce для нового замовлення, nonce першої спроби для повтору. Повне обґрунтування наведено на сторінці 1-годинної оренди.

Коди стану HTTP для повторних запитів

Код стануНазваОпис
200OKЗамовлення успішно оброблено (перший запит)
208Already ReportedЗамовлення вже було оброблено, повертається кешована відповідь
409ConflictЗапит наразі обробляється, не повторюйте спробу

Повторний запит — уже оброблено (208)

json
{
    "detail": {
        "code": 10000,
        "msg": "Successful, 1.430 TRX deducted",
        "data": {
            "hash": "3636f97dde244fca17cdc0b2cf7fd157...",
            "energy": 65050,
            "orderId": "5Mb4ee11ef86",
            "paidTRX": 1.43,
            "delegateAddress": "TNp5gsJhBmZFXgCdgjMgr8pEZ8fHgXUHDq"
        }
    },
    "idempotency": {
        "status": "completed",
        "cached": true,
        "original_created_at": "2026-03-21T08:53:52.498000"
    }
}

Повторний запит — ще обробляється (409)

json
{
    "success": false,
    "error": "duplicate_request_processing",
    "message": "This request is currently being processed. Please wait and do not retry.",
    "retry_after_seconds": 3
}

Рекомендації

  • Не надсилайте паралельні запити з однаковими параметрами — дочекайтеся кожної відповіді
  • Обробляйте відповіді 409 очікуванням, а не негайним повторенням запиту
  • Перевіряйте поле idempotency.cached, щоб виявляти кешовані відповіді

Порівняння: замовлення на 5 хвилин проти 1 години

Функція5-хвилинне замовлення1-годинне замовлення
Endpoint/apiv2/order5m/apiv2/order1h
Тривалість5 хвилин1 година
Діапазон Energy61 000 - 650 00061 000 - 3 000 000
ПостачальникиЛише внутрішні пули NettsВнутрішні пули + зовнішні постачальники
ЦінаНижча (5-хвилинний тариф)Стандартний погодинний тариф
ДоступністьМоже бути обмежена в пікові годиниВисока (резервування через кількох постачальників)
Найкраще підходить дляЧастих невеликих транзакційВеликих обсягів або гарантованої доставки

Примітки

  • Energy надається миттєво після успішного замовлення (зазвичай протягом 0.5–2 секунд)
  • Тайм-аут відповіді API: максимум 10 секунд (включає внутрішні спроби повтору)
  • Активація адреси: якщо адресу одержувача не активовано, Netts активує її за собівартістю. Вартість активації стягується лише один раз для кожної адреси
  • Тривалість: фіксовано 5 хвилин (300 секунд)
  • Мінімальна кількість Energy: 61 000 одиниць
  • Максимальна кількість Energy: 650 000 одиниць на одне замовлення
  • Буфер Energy: +50 одиниць додається автоматично (безкоштовно)
  • Формат ID замовлення: 5M{id} для уніфікованого відстеження
  • Ціноутворення: динамічне залежно від часу доби через Pricing API
  • Обмеження частоти запитів: 50 запитів на секунду для однієї IP-адреси
  • Лише внутрішні пули: якщо пули заповнені, повторіть спробу після невеликої затримки або використайте 1-годинну кінцеву точку як запасний варіант