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

GET /apiv2/usdt/{sender}&

Hitung biaya transfer TRON USDT (endpoint publik, tidak memerlukan kunci API).

Mengembalikan analisis mendalam tentang akun pengirim dan penerima, kebutuhan sumber daya (energy/bandwidth), dan jalur biaya yang direkomendasikan.

Batas rasio rendah — ditujukan untuk penggunaan sesekali / pengujian

Endpoint ini dibagikan secara global dan dibatasi pada 1 req/detik dan 60 req/menit. Ketika aplikasi Anda berada di balik Cloudflare atau reverse proxy lainnya, batas tersebut mungkin secara efektif dibagikan di antara semua klien yang mengakses Netts melalui edge yang sama, sehingga Anda mungkin melihat 429 Too Many Requests lebih cepat daripada 60 permintaan/menit dari satu pengguna.

Untuk kebutuhan apa pun di luar panggilan sporadis, gunakan endpoint terautentikasi POST /apiv2/usdt/analyze — endpoint ini memiliki batas per-kunci yang jauh lebih tinggi (50 req/detik).

URL Endpoint

GET https://netts.io/apiv2/usdt/{sender}&{receiver}

Parameter URL

ParameterTipeWajibDeskripsi
senderstringYaAlamat TRON pengirim
receiverstringYaAlamat TRON penerima

Alamat diteruskan di dalam path, dipisahkan oleh tanda ampersand (&). Keduanya harus berupa alamat base58 TRON yang valid (34 karakter, dimulai dengan T, checksum valid).

Contoh permintaan

cURL

bash
curl "https://netts.io/apiv2/usdt/TFLit1TFohBtT2f8UVCLFVPmZxawxqByYe&TTKR9aQdJWTgXLK9cmzaDitT5VXE497thL"

Python

python
import requests

sender   = "TFLit1TFohBtT2f8UVCLFVPmZxawxqByYe"
receiver = "TTKR9aQdJWTgXLK9cmzaDitT5VXE497thL"

url = f"https://netts.io/apiv2/usdt/{sender}&{receiver}"
response = requests.get(url, timeout=15)

if response.status_code == 200:
    payload = response.json()
    data = payload["data"]
    print(f"Can transfer:        {data['can_transfer']}")
    print(f"Energy needed:       {data['requirements']['energy_needed']}")
    print(f"Bandwidth needed:    {data['requirements']['bandwidth_needed']}")
    print(f"Total cost (TRX):    {data['costs']['total_cost_trx']}")
    print(f"Recommended method:  {data['costs']['recommended_method']}")
elif response.status_code == 429:
    print("Rate-limited — retry after:", response.headers.get("Retry-After"), "s")
else:
    print("Error:", response.json())

Respons

Berhasil (200 OK)

Amplop tingkat atas:

json
{
    "status": "success",
    "data": { /* TransferAnalysis — lihat di bawah */ },
    "current_utc_time": "2026-04-23 11:54:13",
    "processing_time_ms": 19.27
}

data (TransferAnalysis)

BidangTipeDeskripsi
senderAddressInfoInfo akun lengkap untuk pengirim (saldo, staking, delegasi, aktivasi).
receiverAddressInfoInfo akun lengkap untuk penerima.
requirementsRequirementsEnergy / bandwidth yang dibutuhkan transfer (mentah + dengan buffer keamanan).
costsCostsRincian biaya pembakaran vs. sewa dan metode yang direkomendasikan.
can_transferbooleantrue jika transfer dapat dieksekusi dengan sumber daya/harga saat ini.
issuesstring[]Masalah yang terdeteksi selama analisis (misalnya bandwidth tidak mencukupi).
recommendationsstring[]Saran yang dapat dibaca manusia untuk klien.
variation_idstring | nullID skenario yang cocok (misalnya "CUSTOM") dari katalog variasi internal.
AddressInfo

Bidang umum yang akan Anda gunakan dalam integrasi: address, is_activated, trx_balance, usdt_balance, has_usdt, energy_balance, bandwidth_balance. Bidang tingkat rendah tambahan untuk penggunaan lanjutan: trx_balance_sun, energy_total, bandwidth_total, bandwidth_free, bandwidth_staked, energy_used, bandwidth_used, create_time, latest_operation_time, staked_for_energy, staked_for_bandwidth, delegated_for_energy, delegated_for_bandwidth, delegated_out_energy, delegated_out_bandwidth, votes.

Requirements
BidangTipeDeskripsi
energy_neededintUnit energy mentah yang diperlukan untuk transfer.
bandwidth_neededintUnit bandwidth mentah yang diperlukan.
energy_with_bufferintEnergy dibulatkan ke atas ke tingkat sewa yang aman (mis. 131 000).
bandwidth_with_bufferintBandwidth dengan buffer keamanan kecil.
receiver_has_usdtbooleanApakah penerima sudah memiliki USDT (memengaruhi energy).
Costs
BidangTipeDeskripsi
energy_burn_trxdecimalTRX yang dibakar jika energy dibayar melalui pembakaran langsung.
bandwidth_burn_trxdecimalTRX yang dibakar untuk menutupi bandwidth jika tidak tersedia secara gratis.
total_burn_trxdecimalenergy_burn_trx + bandwidth_burn_trx.
total_burn_suninttotal_burn_trx dinyatakan dalam SUN (10⁻⁶ TRX).
energy_rental_trxdecimalBiaya untuk menyewa energy yang diperlukan dari Netts untuk periode di bawah.
energy_rental_sunintSama seperti di atas tetapi dalam SUN.
rental_time_periodstringmis. "1h", "5m", atau "not_needed" saat sewa bukan jalur terbaik.
rental_price_per_unitintHarga sewa per unit energy dalam SUN untuk periode yang dipilih.
savings_trxdecimalBerapa banyak lebih murahnya rent vs. burn (bisa negatif jika pembakaran adalah yang terbaik).
savings_percentagefloatSama seperti di atas dalam persentase.
recommended_methodstring"burn" atau "rent" — opsi yang lebih murah untuk permintaan saat ini.
total_cost_trxdecimal | nullBiaya sebenarnya jika Anda mengikuti recommended_method.
sender_activation_costdecimal | nullBiaya tambahan jika akun pengirim memerlukan aktivasi, jika tidak null.

Contoh respons nyata (disingkat)

json
{
    "status": "success",
    "data": {
        "sender":   { "address": "TFLit1...", "is_activated": true,  "trx_balance": 191.943, "usdt_balance": 24410.499, "energy_balance": 195297, "bandwidth_balance": 148, "has_usdt": true,  "...": "..." },
        "receiver": { "address": "TTKR9a...", "is_activated": true,  "trx_balance":  18.656, "usdt_balance":     0.0,   "energy_balance":      0, "bandwidth_balance": 263, "has_usdt": false, "...": "..." },
        "requirements": {
            "energy_needed": 130285,
            "bandwidth_needed": 345,
            "energy_with_buffer": 131000,
            "bandwidth_with_buffer": 360,
            "receiver_has_usdt": false
        },
        "costs": {
            "energy_burn_trx": 0.0,
            "bandwidth_burn_trx": 0.345,
            "total_burn_trx": 0.345,
            "total_burn_sun": 345000,
            "energy_rental_trx": 0.0,
            "energy_rental_sun": 0,
            "rental_time_period": "not_needed",
            "rental_price_per_unit": 0,
            "savings_trx": 0.0,
            "savings_percentage": 0.0,
            "recommended_method": "burn",
            "total_cost_trx": 0.345,
            "sender_activation_cost": null
        },
        "can_transfer": true,
        "issues": [
            "Insufficient bandwidth: have 148, need 345. Network will burn 0.345 TRX for full amount"
        ],
        "recommendations": [
            "Insufficient bandwidth: have 148, need 345. Full amount of 0.345 TRX will be burned",
            "💰 Total cost: 0.345 TRX (burn for all resources)"
        ],
        "variation_id": "CUSTOM"
    },
    "current_utc_time": "2026-04-23 11:54:13",
    "processing_time_ms": 19.27
}

Kesalahan

HTTPIsi (contoh)Kapan
400{"code": -1, "msg": "Invalid sender address format: Txyz..."}Alamat gagal dalam validasi TRON base58 / panjang / checksum.
400{"code": -1, "msg": "Expected at least 2 parameters: sender&receiver"}URL tidak berisi dua alamat yang dipisahkan oleh &.
400{"code": -1, "msg": "Sender and receiver cannot be the same address"}Alamat pengirim dan penerima identik.
429{"message": "API rate limit exceeded"}Batas rasio terlampaui (lihat peringatan di bagian atas halaman ini).
500{"code": -1, "msg": "Internal server error"}Kegagalan sisi server yang tidak terduga.

Header batas rasio

Pada setiap respons (termasuk 429) header berikut dikembalikan:

HeaderArti
X-RateLimit-Limit-SecondPermintaan maksimum yang diizinkan per detik (saat ini 1).
X-RateLimit-Remaining-SecondBerapa banyak yang masih boleh Anda kirim detik ini.
X-RateLimit-Limit-MinutePermintaan maksimum yang diizinkan per menit (saat ini 60).
X-RateLimit-Remaining-MinuteBerapa banyak yang masih boleh Anda kirim menit ini.
Retry-AfterPada 429 — detik untuk menunggu sebelum mencoba kembali.

Header debug

Setiap respons juga membawa pengidentifikasi yang berguna saat membuka tiket dukungan — harap sertakan secara persis agar kami dapat menemukan permintaan tersebut di log kami dalam hitungan detik:

HeaderArti
X-Request-IDID permintaan sisi aplikasi (dihasilkan oleh kalkulator).
X-Process-TimeWaktu pemrosesan aplikasi dalam milidetik (upstream, tidak termasuk Kong).
X-Kong-Request-IdID permintaan sisi Kong (ada di log akses Kong).

Batas waktu sisi klien dan percobaan ulang

Kalkulator melakukan kueri langsung on-chain ke node TRON untuk setiap permintaan, sehingga di bawah beban berat atau node upstream yang lambat, satu panggilan dapat memakan waktu beberapa detik. Batas waktu klien yang pendek akan gagal bahkan pada respons yang sehat.

Pengaturan yang direkomendasikan:

  • Batas waktu ≥ 15 detik (30 d lebih aman). Nilai default 10 d yang digunakan oleh banyak klien HTTP terlalu pendek.
  • Pada HTTP 429, patuhi header Retry-After (detik). Tambahkan sedikit variasi/jitter (mis. 0–200 md) sebelum mencoba kembali, lalu gunakan backoff eksponensial jika Anda masih mencapai batas.
  • Pada HTTP 5xx atau kesalahan jaringan, coba lagi paling banyak 2–3 kali dengan backoff eksponensial; jangan membombardir endpoint.
  • Simpan hasil dalam cache sisi klien selama 30–60 detik per pasangan (sender, receiver) — harga sumber daya yang mendasari dan kondisi on-chain jarang berubah cukup cepat untuk membenarkan perhitungan ulang yang lebih sering.

Contoh respons 429

http
HTTP/1.1 429 Too Many Requests
Content-Type: application/json; charset=utf-8
RateLimit-Limit: 1
RateLimit-Remaining: 0
RateLimit-Reset: 1
Retry-After: 1
X-RateLimit-Limit-Second: 1
X-RateLimit-Remaining-Second: 0
X-RateLimit-Limit-Minute: 60
X-RateLimit-Remaining-Minute: 0

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

Catatan

  • Akses anonim: tanpa X-API-KEY, tanpa header Authorization, tanpa daftar putih IP.
  • Respons selalu dibungkus dalam {status, data, current_utc_time, processing_time_ms} — integrasi harus membaca penetapan harga dari data.costs dan kebutuhan dari data.requirements.
  • Respons dihitung secara real-time — ini mencerminkan harga sumber daya TRON saat ini dari Netts dan status on-chain saat ini dari kedua alamat, jadi perkirakan sedikit variasi antara panggilan berturut-turut.
  • Jika aplikasi Anda perlu memanggil kalkulator lebih dari beberapa kali per menit (per-IP / per-CF-edge), beralihlah ke POST /apiv2/usdt/analyze dengan kunci API Anda.