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

POST /apiv2/order5m

Buat pesanan sewa energy 5 menit melalui pool energy internal Netts.

URL Endpoint

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

Header Permintaan

HeaderDiperlukanDeskripsi
Content-TypeYaapplication/json
X-API-KEYYaKunci API Anda dari dasbor Netts
X-Real-IPYaAlamat IP dari whitelist Anda

Isi Permintaan

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

Parameter Permintaan

ParameterTipeDiperlukanDeskripsi
amountintegerYaJumlah energy yang disewa (minimum: 61.000, maksimum: 650.000)
receiveAddressstringYaAlamat TRON yang akan menerima energy (format TRC-20)

Batas Energy

Endpoint 5 menit menerima jumlah energy antara 61.000 dan 650.000 unit per pesanan. Permintaan di luar rentang ini akan ditolak dengan HTTP 400.

Informasi Penyedia

Pesanan energy 5 menit dipenuhi secara eksklusif melalui pool energy internal Netts. Berbeda dengan endpoint 1 jam, penyedia eksternal tidak digunakan.

Ketersediaan & Strategi Percobaan Ulang

Karena delegasi hanya berasal dari pool internal, ketidaktersediaan sementara mungkin terjadi selama periode permintaan tinggi. Jika Anda menerima kesalahan 503, coba lagi permintaan setelah jeda singkat atau beralihlah ke endpoint 1 jam yang memiliki akses ke beberapa penyedia eksternal.

Contoh

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)}")

Respons

Respons Sukses (200 OK)

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

Sukses dengan Aktivasi Alamat (200 OK)

Ketika alamat penerima belum diaktifkan di jaringan TRON, Netts mengaktifkannya secara otomatis. Biaya aktivasi ditambahkan ke total:

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..."
        }
    }
}

Bidang Respons

BidangTipeDeskripsi
detail.codeintegerSelalu 10000 untuk pesanan yang berhasil
detail.msgstringPesan sukses dengan jumlah yang dipotong
detail.data.orderIdstringID pesanan terpadu (format: 5M{id})
detail.data.paidTRXnumberTotal biaya dalam TRX (termasuk biaya aktivasi jika berlaku)
detail.data.hashstringHash transaksi delegasi
detail.data.delegateAddressstringAlamat pool yang mendelegasikan energy
detail.data.energyintegerJumlah energy + buffer (biasanya +50)
detail.data.activationHashstringHanya ada jika aktivasi alamat dilakukan

Respons Kesalahan

Jumlah Energy Tidak Valid (400)

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

Kesalahan Autentikasi (401)

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

Saldo Tidak Cukup (403)

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

Layanan Tidak Tersedia (503)

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

Menangani Kesalahan 503

Respons 503 berarti pool internal sedang penuh untuk sementara. Strategi yang disarankan:

  1. Tunggu 2-3 detik dan coba lagi pesanan 5 menit
  2. Jika masih tidak tersedia, beralihlah ke endpoint 1 jam yang menggunakan beberapa penyedia

Kesalahan Server Internal (500)

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

Referensi Kode Kesalahan

KodeDeskripsiStatus HTTP
10000Sukses200
10000Sukses (respons dari cache)208
-Permintaan duplikat masih diproses409
1003Jumlah energy di luar rentang400
1004Saldo tidak cukup403
1005Alamat pembayar pengguna belum dikonfigurasi400
5000Kesalahan server internal500
5003Layanan energy tidak tersedia503

Batas Frekuensi

Batas laju berikut berlaku untuk endpoint ini (per alamat IP):

PeriodeBatasDeskripsi
1 detik50 permintaanMaksimum 50 permintaan per detik

Header Batas Laju

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

Batas Laju Terlampaui (429)

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

Idempotensi

API mendukung idempotensi untuk mencegah pemrosesan pesanan ganda. Saat Anda mengirim beberapa permintaan yang identik, sistem memastikan pesanan hanya diproses satu kali.

Cara Kerja Idempotensi

Keunikan permintaan ditentukan oleh kombinasi dari:

  • Timestamp permintaan (jendela 2 detik)
  • Jumlah energy
  • Alamat penerima
  • Kunci API

Setiap permintaan diberikan jendela keunikan 2 detik. Permintaan dengan parameter identik dalam jendela ini diperlakukan sebagai duplikat.

Menyediakan Kunci Anda Sendiri

Anda dapat mengelola idempotensi secara mandiri dengan mengirimkan header X-Idempotency-Key. Saat header ini ada, nilai tersebut saja yang menentukan apakah suatu permintaan merupakan pengulangan, dan kombinasi otomatis di atas tidak digunakan. Jika header ini tidak ada, tidak ada yang berubah — server menghasilkan kuncinya untuk Anda.

Aturannya sama seperti pada /apiv2/order1h:

HeaderX-Idempotency-Key
FormatTepat 64 karakter heksadesimal huruf kecil — sebuah digest SHA-256
Masa berlaku24 jam sejak permintaan pertama yang membawa kunci tersebut
CakupanAkun Anda. Nilai yang sama yang dikirim oleh akun berbeda tidak akan pernah mengembalikan hasil Anda

Kunci dengan bentuk lain — UUID dengan tanda hubung, base64, heksadesimal huruf besar — akan ditolak dengan 400 sebelum pesanan dibuat dan sebelum biaya apa pun dipotong:

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

Hasilkan kunci dari kunci API Anda agar unik untuk akun Anda dan dapat direproduksi pada percobaan ulang — contoh penggunaannya ada di halaman 1 jam. Sertakan periode sewa dalam pesan yang Anda hash: menyewa alamat yang sama untuk 5 menit dan untuk 1 jam adalah pesanan yang berbeda, dan menggunakan kembali satu kunci untuk keduanya akan mengembalikan respons pesanan pertama untuk permintaan kedua.

Membuat Dua Pesanan Identik

Jebakan yang sama seperti pada endpoint per jam, dengan jendela yang lebih lebar. Dua pesanan identik — jumlah yang sama ke alamat yang sama — tidak dapat dibedakan dari percobaan ulang, dan hanya waktu kedatangan yang membedakannya.

Tanpa kunci Anda sendiri:

Jeda antara kedua permintaanApa yang terjadi
Di dalam jendela 2 detik yang samaPermintaan kedua dianggap sebagai pengulangan. Permintaan tersebut tidak dieksekusi: Anda mendapatkan 208 dan respons dari pesanan pertama. Tidak ada biaya yang dipotong untuk itu
Terpaut lebih dari dua detikDua kunci berbeda — kedua pesanan dibuat dan keduanya dikenakan biaya

Jadi, berikan jeda lebih dari dua detik antara dua pesanan identik, dan baca kode statusnya: 208 berarti pesanan yang baru saja Anda kirim tidak dibuat.

Jeda hanyalah solusi sementara, bukan solusi tuntas — jeda tersebut juga memisahkan permintaan yang tidak pernah Anda maksudkan untuk diulang, seperti percobaan ulang setelah timeout atau pesan yang dikirim ulang oleh antrean Anda, dan masing-masing menjadi pesanan terpisah dengan biaya terpisah. Mengirimkan kunci Anda sendiri adalah solusi yang sebenarnya: gunakan nonce baru untuk pesanan baru, dan nonce dari percobaan pertama untuk percobaan ulang. Penjelasan lengkapnya ada di halaman 1 jam.

Kode Status HTTP untuk Permintaan Duplikat

Kode StatusNamaDeskripsi
200OKPesanan berhasil diproses (permintaan pertama)
208Already ReportedPesanan sudah diproses, mengembalikan respons dari cache
409ConflictPermintaan sedang diproses, jangan coba lagi

Permintaan Duplikat - Sudah Diproses (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"
    }
}

Permintaan Duplikat - Masih Diproses (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
}

Praktik Terbaik

  • Jangan mengirim permintaan paralel dengan parameter yang sama - tunggu setiap respons
  • Tangani respons 409 dengan menunggu, bukan dengan segera mencoba ulang
  • Periksa bidang idempotency.cached untuk mengidentifikasi respons dari cache

Perbandingan: Pesanan 5 Menit vs 1 Jam

FiturPesanan 5 MenitPesanan 1 Jam
Endpoint/apiv2/order5m/apiv2/order1h
Durasi5 menit1 jam
Rentang energy61.000 - 650.00061.000 - 3.000.000
PenyediaHanya pool internal NettsPool internal + penyedia eksternal
HargaLebih rendah (tarif 5 menit)Tarif standar per jam
KetersediaanMungkin terbatas pada jam sibukTinggi (fallback ke beberapa penyedia)
Terbaik untukTransaksi kecil yang seringPengiriman dalam jumlah besar atau terjamin

Catatan

  • Energy dikirim secara instan setelah pesanan berhasil (biasanya dalam 0,5-2 detik)
  • Batas waktu respons API: Maksimum 10 detik (termasuk upaya percobaan ulang internal)
  • Aktivasi alamat: Jika alamat penerima belum diaktifkan, Netts mengaktifkannya dengan harga pokok. Biaya aktivasi hanya dikenakan sekali per alamat
  • Durasi: Tetap 5 menit (300 detik)
  • Jumlah energy minimum: 61.000 unit
  • Jumlah energy maksimum: 650.000 unit per pesanan
  • Buffer energy: +50 unit ditambahkan secara otomatis (gratis)
  • Format ID pesanan: 5M{id} untuk pelacakan terpadu
  • Harga: Dinamis berdasarkan waktu dalam sehari melalui Pricing API
  • Rate limiting: 50 permintaan per detik per alamat IP
  • Hanya pool internal: Jika pool sedang penuh, coba lagi setelah jeda singkat atau gunakan endpoint 1 jam sebagai cadangan