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

GET /apiv2/usdt/{sender}&

TRON USDT transfer maliyetini hesaplayın (herkese açık uç nokta, API anahtarı gerekmez).

Gönderici ve alıcı hesaplarının ayrıntılı bir analizini, kaynak gereksinimlerini (energy/bandwidth) ve önerilen maliyet yöntemini döndürür.

Düşük istek sınırı — ara sıra / test amaçlı kullanım içindir

Bu uç nokta genel kullanıma açıktır ve 1 istek/sn ile 60 istek/dk şeklinde sınırlandırılmıştır. Uygulamanız Cloudflare veya başka bir ters proxy arkasında olduğunda, bu sınır aynı uç nokta üzerinden Netts'e erişen tüm istemciler arasında etkin olarak paylaşılabilir; bu nedenle tek bir kullanıcıdan 60 istek/dakika dolmadan 429 Too Many Requests hatasıyla karşılaşabilirsiniz.

Seyrek çağrıların ötesindeki her durum için kimlik doğrulamalı POST /apiv2/usdt/analyze uç noktasını kullanın — anahtar başına çok daha yüksek bir sınıra (50 istek/sn) sahiptir.

Uç Nokta URL'si

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

URL parametreleri

ParametreTürZorunluAçıklama
senderstringEvetGöndericinin TRON adresi
receiverstringEvetAlıcının TRON adresi

Adresler yolda ve işareti (&) ile ayrılarak iletilir. Her ikisi de geçerli base58 TRON adresleri olmalıdır (34 karakter, T ile başlayan, geçerli sağlama toplamı).

İstek örnekleri

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())

Yanıt

Başarılı (200 OK)

Üst düzey zarf:

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

data (TransferAnalysis)

AlanTürAçıklama
senderAddressInfoGönderici için eksiksiz hesap bilgileri (bakiye, staking, delegasyon, etkinleştirme).
receiverAddressInfoAlıcı için eksiksiz hesap bilgileri.
requirementsRequirementsTransferin ihtiyaç duyacağı Energy / bandwidth (ham + güvenlik payı ile).
costsCostsYakma (burn) ve kiralama (rent) maliyet dökümü ve önerilen yöntem.
can_transferbooleanTransfer mevcut kaynaklar/fiyatlar ile yürütülebiliyorsa true.
issuesstring[]Analiz sırasında tespit edilen sorunlar (örn. yetersiz bandwidth).
recommendationsstring[]İstemci için insan tarafından okunabilir öneriler.
variation_idstring | nullDahili varyasyon kataloğundan eşleşen senaryo kimliği (örn. "CUSTOM").
AddressInfo

Entegrasyonlarda kullanacağınız tipik alanlar: address, is_activated, trx_balance, usdt_balance, has_usdt, energy_balance, bandwidth_balance. İleri düzey kullanım için ek alt düzey alanlar: 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
AlanTürAçıklama
energy_neededintTransfer için gereken ham energy birimleri.
bandwidth_neededintGereken ham bandwidth birimleri.
energy_with_bufferintGüvenli bir kiralama kademesine yuvarlanmış energy (örn. 131 000).
bandwidth_with_bufferintKüçük bir güvenlik payı içeren bandwidth.
receiver_has_usdtbooleanAlıcının halihazırda USDT tutup tutmadığı (energy'yi etkiler).
Costs
AlanTürAçıklama
energy_burn_trxdecimalEnergy doğrudan yakma yoluyla ödenirse yakılan TRX.
bandwidth_burn_trxdecimalÜcretsiz olarak mevcut değilse, bandwidth'i karşılamak için yakılan TRX.
total_burn_trxdecimalenergy_burn_trx + bandwidth_burn_trx.
total_burn_sunintSUN (10⁻⁶ TRX) cinsinden ifade edilen total_burn_trx.
energy_rental_trxdecimalGerekli energy'yi aşağıdaki süre boyunca Netts üzerinden kiralamak için maliyet.
energy_rental_sunintYukarıdakinin aynısı ancak SUN cinsinden.
rental_time_periodstringörn. "1h", "5m" veya kiralama en iyi yol olmadığında "not_needed".
rental_price_per_unitintSeçilen dönem için SUN cinsinden energy birimi başına kiralama fiyatı.
savings_trxdecimalrent seçeneğinin burn seçeneğine kıyasla ne kadar ucuz olduğu (yakma en iyisiyse negatif olabilir).
savings_percentagefloatYüzde olarak aynısı.
recommended_methodstring"burn" veya "rent" — geçerli istek için daha ucuz olan seçenek.
total_cost_trxdecimal | nullrecommended_method izlendiğinde oluşacak gerçek maliyet.
sender_activation_costdecimal | nullGönderici hesabının etkinleştirilmesi gerekiyorsa ek maliyet, aksi halde null.

Gerçek yanıt örneği (kısaltılmış)

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
}

Hatalar

HTTPGövde (örnek)Durum
400{"code": -1, "msg": "Invalid sender address format: Txyz..."}Adres TRON base58 / uzunluk / sağlama toplamı doğrulamasını geçemez.
400{"code": -1, "msg": "Expected at least 2 parameters: sender&receiver"}URL, & ile ayrılmış iki adres içermez.
400{"code": -1, "msg": "Sender and receiver cannot be the same address"}Gönderici ve alıcı adresleri aynıdır.
429{"message": "API rate limit exceeded"}İstek sınırı aşıldı (bu sayfanın başındaki uyarıya bakın).
500{"code": -1, "msg": "Internal server error"}Beklenmeyen sunucu tarafı hatası.

İstek sınırı başlıkları

Her yanıtta (429 dahil) aşağıdaki başlıklar döndürülür:

BaşlıkAnlamı
X-RateLimit-Limit-SecondSaniye başına izin verilen maksimum istek (şu anda 1).
X-RateLimit-Remaining-SecondBu saniye içinde hâlâ gönderebileceğiniz istek sayısı.
X-RateLimit-Limit-MinuteDakika başına izin verilen maksimum istek (şu anda 60).
X-RateLimit-Remaining-MinuteBu dakika içinde hâlâ gönderebileceğiniz istek sayısı.
Retry-After429 durumunda — yeniden denemeden önce beklenecek saniye.

Hata ayıklama başlıkları

Her yanıt ayrıca bir destek talebi açarken yararlı olan tanımlayıcıları da taşır — isteği günlüklerimizde saniyeler içinde bulabilmemiz için lütfen bunları olduğu gibi ekleyin:

BaşlıkAnlamı
X-Request-IDUygulama tarafı istek kimliği (hesaplayıcı tarafından oluşturulur).
X-Process-TimeMilisaniye cinsinden uygulama işlem süresi (Kong hariç, kaynak sunucu).
X-Kong-Request-IdKong tarafı istek kimliği (Kong erişim günlüklerinde bulunur).

İstemci tarafı zaman aşımı ve yeniden deneme

Hesaplayıcı her istek için TRON düğümlerine canlı zincir üstü sorgular yürütür; bu nedenle yük altında veya yavaş kaynak düğümlerinde tek bir çağrı birkaç saniye sürebilir. Kısa istemci zaman aşımları, başarılı yanıtlarda bile başarısızlığa neden olur.

Önerilen ayarlar:

  • Zaman aşımı ≥ 15 saniye (30 sn daha güvenlidir). Birçok HTTP istemcisi tarafından kullanılan varsayılan 10 sn çok kısadır.
  • HTTP 429 durumunda, Retry-After başlığını (saniye) dikkate alın. Yeniden denemeden önce küçük bir gecikme dalgalanması (jitter, örn. 0–200 ms) ekleyin, ardından sınıra takılmaya devam ederseniz üstel geri çekilme (exponential backoff) uygulayın.
  • HTTP 5xx veya ağ hatalarında, üstel geri çekilme ile en fazla 2–3 kez yeniden deneyin; uç noktayı aşırı istek yağmuruna tutmayın.
  • Sonucu (sender, receiver) çifti başına istemci tarafında 30–60 saniye boyunca önbelleğe alın — temel kaynak fiyatları ve zincir üstü durum, daha sık yeniden hesaplamayı gerektirecek kadar nadiren hızlı değişir.

Örnek 429 yanıtı

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

Notlar

  • Anonim erişim: X-API-KEY yok, Authorization başlığı yok, IP beyaz listesi yok.
  • Yanıt her zaman {status, data, current_utc_time, processing_time_ms} içinde sarmalanır — entegrasyonlar fiyatlandırmayı data.costs alanından ve gereksinimleri data.requirements alanından okumalıdır.
  • Yanıt gerçek zamanlı olarak hesaplanır — Netts'in güncel TRON kaynak fiyatlarını ve her iki adresin mevcut zincir üstü durumunu yansıtır, bu nedenle ardışık çağrılar arasında küçük farklılıklar bekleyebilirsiniz.
  • Uygulamanızın hesaplayıcıyı dakikada birkaç kereden fazla çağırması gerekiyorsa (IP başına / CF uç noktası başına), API anahtarınız ile POST /apiv2/usdt/analyze uç noktasına geçin.