GET /apiv2/usdt/{sender}&
TRON USDT ٹرانسفر کی لاگت کا حساب لگائیں (عوامی اینڈپوائنٹ، کسی API کی کی ضرورت نہیں)۔
ارسال کنندہ اور وصول کنندہ کے اکاؤنٹس، وسائل کی ضروریات (energy/bandwidth) اور لاگت کے لیے تجویز کردہ طریقے کا تفصیلی تجزیہ واپس کرتا ہے۔
کم شرح کی حد (ریٹ لمٹ) — کبھی کبھار / ٹیسٹنگ کے استعمال کے لیے مخصوص
یہ اینڈپوائنٹ عالمی سطح پر مشترک ہے اور اس کی ریٹ لمٹ 1 درخواست/سیکنڈ اور 60 درخواستیں/منٹ ہے۔ جب آپ کی ایپلی کیشن Cloudflare یا کسی دوسرے ریورس پراکسی کے پیچھے ہوتی ہے، تو یہ حد ایک ہی ایج (edge) کے ذریعے Netts تک پہنچنے والے تمام کلائنٹس کے درمیان مشترک ہو سکتی ہے، اس لیے آپ کو ایک صارف کی جانب سے فی منٹ 60 درخواستوں سے پہلے ہی 429 Too Many Requests کا سامنا ہو سکتا ہے۔
غیر متواتر یا کبھی کبھار کی جانے والی کالز کے علاوہ کسی بھی کام کے لیے، تصدیق شدہ POST /apiv2/usdt/analyze اینڈپوائنٹ کا استعمال کریں — اس میں فی کی (per-key) حد بہت زیادہ ہے (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)
اوپری سطح کا اینولپ (envelope):
{
"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 | جلانے (burn) بمقابلہ کرایہ پر لینے کی لاگت کی تفصیل اور تجویز کردہ طریقہ۔ |
can_transfer | boolean | true اگر ٹرانسفر موجودہ وسائل/قیمتوں کے ساتھ مکمل کیا جا سکتا ہو۔ |
issues | string[] | تجزیہ کے دوران سامنے آنے والے خدشات (مثلاً ناکافی Bandwidth)۔ |
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 | جلائی گئی TRX اگر Energy کی ادائیگی براہ راست برن کے ذریعے کی جائے۔ |
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 | برن کے مقابلے میں رینٹ کتنا سستا ہے (اگر برن بہترین آپشن ہو تو منفی ہو سکتا ہے)۔ |
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
}غلطیاں (Errors)
| 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ہیڈر (سیکنڈز) کا احترام کریں۔ دوبارہ کوشش کرنے سے پہلے معمولی وقفہ (jitter) شامل کریں (مثلاً 0–200 ملی سیکنڈ)، پھر اگر آپ اب بھی حد سے ٹکرا رہے ہیں تو ایکسپونینشل بیک آف کا طریقہ استعمال کریں۔ - HTTP 5xx یا نیٹ ورک کی غلطیوں پر، ایکسپونینشل بیک آف کے ساتھ زیادہ سے زیادہ 2–3 بار دوبارہ کوشش کریں؛ اینڈپوائنٹ پر درخواستوں کی ضرورت سے زیادہ بھرمار نہ کریں۔
- ہر
(sender, receiver)جوڑے کے لیے نتیجے کو کلائنٹ کی جانب 30–60 سیکنڈ کے لیے کیش (cache) کریں — بنیادی وسائل کی قیمتیں اور آن چین حالت شاذ و نادر ہی اتنی تیزی سے تبدیل ہوتی ہیں کہ اس سے زیادہ بار بار حساب کتاب کرنے کی ضرورت پڑے۔
مثال 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پر سوئچ کریں۔