GET /apiv2/usdt/{sender}&
TRON USDT ट्रांसफर लागत की गणना करें (सार्वजनिक एंडपॉइंट, किसी API कुंजी की आवश्यकता नहीं)।
प्रेषक और प्राप्तकर्ता खातों का विस्तृत विश्लेषण, संसाधन आवश्यकताएं (energy/bandwidth) और अनुशंसित लागत विकल्प लौटाता है।
कम दर सीमा — केवल कभी-कभार / परीक्षण उपयोग के लिए
यह एंडपॉइंट विश्व स्तर पर साझा किया गया है और इसकी दर सीमा 1 अनुरोध/सेकंड तथा 60 अनुरोध/मिनट है। जब आपका एप्लिकेशन Cloudflare या किसी अन्य रिवर्स प्रॉक्सी के पीछे होता है, तो यह सीमा प्रभावी रूप से उसी एज के माध्यम से Netts तक पहुंचने वाले सभी क्लाइंट्स के बीच साझा हो सकती है, इसलिए आपको एक ही उपयोगकर्ता से 60 अनुरोध/मिनट से पहले भी 429 Too Many Requests दिखाई दे सकता है।
छिटपुट कॉलों से परे किसी भी चीज़ के लिए, प्रमाणित POST /apiv2/usdt/analyze एंडपॉइंट का उपयोग करें — इसकी प्रति-कुंजी सीमा बहुत अधिक (50 अनुरोध/सेकंड) है।
एंडपॉइंट URL
GET https://netts.io/apiv2/usdt/{sender}&{receiver}URL पैरामीटर
| पैरामीटर | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
| sender | string | हाँ | प्रेषक का TRON पता |
| receiver | string | हाँ | प्राप्तकर्ता का TRON पता |
पते पाथ में एम्पर्सेंड (&) द्वारा अलग करके पास किए जाते हैं। दोनों वैध base58 TRON पते होने चाहिए (34 वर्ण, T से शुरू, वैध चेकसम)।
अनुरोध उदाहरण
cURL
curl "https://netts.io/apiv2/usdt/TFLit1TFohBtT2f8UVCLFVPmZxawxqByYe&TTKR9aQdJWTgXLK9cmzaDitT5VXE497thL"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())प्रतिक्रिया
सफलता (200 OK)
शीर्ष-स्तरीय एनवलप:
{
"status": "success",
"data": { /* TransferAnalysis — see below */ },
"current_utc_time": "2026-04-23 11:54:13",
"processing_time_ms": 19.27
}data (TransferAnalysis)
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
sender | AddressInfo | प्रेषक के लिए पूर्ण खाता जानकारी (शेष राशि, स्टेकिंग, डेलिगेशन, सक्रियण)। |
receiver | AddressInfo | प्राप्तकर्ता के लिए पूर्ण खाता जानकारी। |
requirements | Requirements | स्थानांतरण के लिए आवश्यक Energy / Bandwidth (मूल + सुरक्षा बफर के साथ)। |
costs | Costs | बर्न बनाम रेंट लागत का विवरण और अनुशंसित तरीका। |
can_transfer | boolean | यदि वर्तमान संसाधनों/कीमतों के साथ स्थानांतरण निष्पादित किया जा सकता है तो true। |
issues | string[] | विश्लेषण के दौरान पाई गई समस्याएं (उदा. अपर्याप्त बैंडविड्थ)। |
recommendations | string[] | क्लाइंट के लिए मानव-पठनीय सुझाव। |
variation_id | string | null | आंतरिक विविधता सूची से मेल खाने वाली परिदृश्य ID (उदा. "CUSTOM")। |
AddressInfo
एकीकरण में आपके द्वारा उपयोग किए जाने वाले सामान्य फ़ील्ड: address, is_activated, trx_balance, usdt_balance, has_usdt, energy_balance, bandwidth_balance। उन्नत उपयोग के लिए अतिरिक्त निम्न-स्तरीय फ़ील्ड: 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
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
energy_needed | int | स्थानांतरण के लिए आवश्यक मूल energy इकाइयाँ। |
bandwidth_needed | int | आवश्यक मूल bandwidth इकाइयाँ। |
energy_with_buffer | int | सुरक्षित रेंटल टियर तक राउंड अप की गई Energy (उदा. 131 000)। |
bandwidth_with_buffer | int | छोटे सुरक्षा बफर के साथ Bandwidth। |
receiver_has_usdt | boolean | क्या प्राप्तकर्ता के पास पहले से USDT है (energy को प्रभावित करता है)। |
Costs
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
energy_burn_trx | decimal | यदि energy का भुगतान सीधे बर्न के माध्यम से किया जाता है तो बर्न किया गया TRX। |
bandwidth_burn_trx | decimal | यदि bandwidth मुफ्त में उपलब्ध नहीं है तो उसे कवर करने के लिए बर्न किया गया TRX। |
total_burn_trx | decimal | energy_burn_trx + bandwidth_burn_trx। |
total_burn_sun | int | SUN (10⁻⁶ TRX) में व्यक्त total_burn_trx। |
energy_rental_trx | decimal | नीचे दी गई अवधि के लिए Netts से आवश्यक energy किराए पर लेने की लागत। |
energy_rental_sun | int | उपरोक्त के समान ही लेकिन SUN में। |
rental_time_period | string | उदा. "1h", "5m", या "not_needed" जब रेंटल सबसे अच्छा विकल्प न हो। |
rental_price_per_unit | int | चुनी गई अवधि के लिए SUN में प्रति energy इकाई रेंटल मूल्य। |
savings_trx | decimal | burn की तुलना में rent कितना सस्ता है (यदि बर्न सबसे अच्छा है तो नकारात्मक हो सकता है)। |
savings_percentage | float | प्रतिशत के रूप में वही मान। |
recommended_method | string | "burn" या "rent" — वर्तमान अनुरोध के लिए सस्ता विकल्प। |
total_cost_trx | decimal | null | यदि आप recommended_method का पालन करते हैं तो वास्तविक लागत। |
sender_activation_cost | decimal | null | यदि प्रेषक खाते को सक्रियण की आवश्यकता है तो अतिरिक्त लागत, अन्यथा null। |
उदाहरण वास्तविक प्रतिक्रिया (संक्षिप्त)
{
"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
}त्रुटियां
| HTTP | बॉडी (उदाहरण) | कब |
|---|---|---|
| 400 | {"code": -1, "msg": "Invalid sender address format: Txyz..."} | पता TRON base58 / लंबाई / चेकसम सत्यापन में विफल रहता है। |
| 400 | {"code": -1, "msg": "Expected at least 2 parameters: sender&receiver"} | URL में & से अलग किए गए दो पते शामिल नहीं हैं। |
| 400 | {"code": -1, "msg": "Sender and receiver cannot be the same address"} | प्रेषक और प्राप्तकर्ता के पते एक समान हैं। |
| 429 | {"message": "API rate limit exceeded"} | दर सीमा पार हो गई (इस पृष्ठ के शीर्ष पर दी गई चेतावनी देखें)। |
| 500 | {"code": -1, "msg": "Internal server error"} | अप्रत्याशित सर्वर-साइड विफलता। |
दर-सीमा हेडर
प्रत्येक प्रतिक्रिया पर (429 सहित) निम्नलिखित हेडर लौटाए जाते हैं:
| हेडर | अर्थ |
|---|---|
X-RateLimit-Limit-Second | प्रति सेकंड अनुमत अधिकतम अनुरोध (वर्तमान में 1)। |
X-RateLimit-Remaining-Second | इस सेकंड आप अभी कितने और अनुरोध भेज सकते हैं। |
X-RateLimit-Limit-Minute | प्रति मिनट अनुमत अधिकतम अनुरोध (वर्तमान में 60)। |
X-RateLimit-Remaining-Minute | इस मिनट आप अभी कितने और अनुरोध भेज सकते हैं। |
Retry-After | 429 पर — पुनः प्रयास करने से पहले प्रतीक्षा करने के लिए सेकंड। |
डिबग हेडर
प्रत्येक प्रतिक्रिया में सहायता टिकट खोलते समय उपयोगी पहचानकर्ता भी होते हैं — कृपया उन्हें हूबहू शामिल करें ताकि हम सेकंडों में अपने लॉग में अनुरोध ढूंढ सकें:
| हेडर | अर्थ |
|---|---|
X-Request-ID | एप्लिकेशन-साइड अनुरोध ID (कैलकुलेटर द्वारा जनरेट किया गया)। |
X-Process-Time | मिलीसेकंड में एप्लिकेशन प्रोसेसिंग समय (अपस्ट्रीम, Kong को छोड़कर)। |
X-Kong-Request-Id | Kong-साइड अनुरोध ID (Kong एक्सेस लॉग में मौजूद)। |
क्लाइंट-साइड टाइमआउट और पुनः प्रयास
कैलकुलेटर प्रत्येक अनुरोध के लिए TRON नोड्स पर लाइव ऑन-चेन क्वेरी करता है, इसलिए लोड होने पर या धीमे अपस्ट्रीम नोड्स के कारण एक कॉल में कई सेकंड लग सकते हैं। छोटे क्लाइंट टाइमआउट सामान्य प्रतिक्रियाओं पर भी विफल हो जाएंगे।
अनुशंसित सेटिंग्स:
- टाइमआउट ≥ 15 सेकंड (30 सेकंड अधिक सुरक्षित है)। कई HTTP क्लाइंट्स द्वारा उपयोग किया जाने वाला डिफ़ॉल्ट 10 सेकंड बहुत कम है।
- HTTP 429 पर,
Retry-Afterहेडर (सेकंड) का पालन करें। पुनः प्रयास करने से पहले थोड़ा जिटर (उदा. 0–200 मिलीसेकंड) जोड़ें, फिर यदि आप अभी भी सीमा पर पहुंचते हैं तो एक्सपोनेंशियल बैकऑफ़ का उपयोग करें। - HTTP 5xx या नेटवर्क त्रुटियों पर, एक्सपोनेंशियल बैकऑफ़ के साथ अधिकतम 2–3 बार पुनः प्रयास करें; एंडपॉइंट पर बार-बार अनुरोधों की बौछार न करें।
- प्रत्येक
(sender, receiver)युग्म के लिए परिणाम को क्लाइंट-साइड पर 30–60 सेकंड के लिए कैश करें — अंतर्निहित संसाधन कीमतें और ऑन-चेन स्थिति शायद ही कभी इतनी तेजी से बदलती है कि अधिक बार पुनर्गणना की आवश्यकता हो।
उदाहरण 429 प्रतिक्रिया
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"}टिप्पणियाँ
- अनाम पहुंच: कोई
X-API-KEYनहीं, कोईAuthorizationहेडर नहीं, कोई IP श्वेतसूची नहीं। - प्रतिक्रिया हमेशा
{status, data, current_utc_time, processing_time_ms}में लिपटी होती है — एकीकरणों कोdata.costsसे मूल्य निर्धारण औरdata.requirementsसे आवश्यकताओं को पढ़ना चाहिए। - प्रतिक्रिया की गणना वास्तविक समय में की जाती है — यह Netts से वर्तमान TRON संसाधन कीमतों और दोनों पतों की वर्तमान ऑन-चेन स्थिति को दर्शाती है, इसलिए लगातार कॉलों के बीच थोड़े बदलाव की उम्मीद रखें।
- यदि आपके एप्लिकेशन को प्रति मिनट कुछ से अधिक बार कैलकुलेटर को कॉल करने की आवश्यकता है (प्रति-IP / प्रति-CF-एज), तो अपनी API कुंजी के साथ
POST /apiv2/usdt/analyzeपर स्विच करें।