GET /apiv2/compliance/
एकल TRON पते के लिए खुला, बिना कुंजी वाला अनुपालन (compliance) लुकअप। यह एक निर्णय देता है — क्या पता ब्लॉक किया गया है, और किस श्रेणी में — जो पूरी तरह से इन-मेमोरी अस्वीकार-सूची (deny-list) कैश से प्रस्तुत किया जाता है। कोई API कुंजी नहीं, कोई शेष राशि नहीं, कोई शुल्क नहीं। इसका उद्देश्य किसी को भी एक HTTP GET के साथ अनुपालन परत को एकीकृत करने की अनुमति देना है।
यह एंडपॉइंट केवल कैश को पढ़ता है, डेटाबेस या चेन नोड को कभी नहीं, इसलिए एक लुकअप में मिलीसेकंड का एक अंश लगता है। यह गेटवे द्वारा प्रति IP दर-सीमित (rate limited) है।
Endpoint URL
GET https://netts.io/apiv2/compliance/{address}किसी भी प्रमाणीकरण हेडर की आवश्यकता नहीं है।
अनुरोध पैरामीटर
| Parameter | Type | Required | Description |
|---|---|---|---|
| address | string | Yes | TRON base58 पता — T के बाद 33 वर्ण |
उदाहरण
cURL
curl https://netts.io/apiv2/compliance/TTVUvAWUZafeHqQP82sYnfk4jNFPEHCRpLPython
import requests
address = "TTVUvAWUZafeHqQP82sYnfk4jNFPEHCRpL"
r = requests.get(f"https://netts.io/apiv2/compliance/{address}")
data = r.json()
if r.status_code == 200:
d = data["data"]
print(f"blocked : {d['blocked']}")
print(f"category: {d['category']}")
if d["category"] == "aml_risk":
print(f"reason : {d.get('reason_code')} — {d.get('label')}")
else:
print(f"Error: {data}")JavaScript
const address = "TTVUvAWUZafeHqQP82sYnfk4jNFPEHCRpL";
const res = await fetch(`https://netts.io/apiv2/compliance/${address}`);
const { data } = await res.json();
console.log(data.blocked, data.category, data.label);प्रतिक्रिया
ब्लॉक किया गया — केंद्रीय अस्वीकार सूची में मौजूद है (200 OK)
{
"code": 0,
"status": "ok",
"data": {
"address": "TTVUvAWUZafeHqQP82sYnfk4jNFPEHCRpL",
"blocked": true,
"category": "aml_risk",
"severity": "BLOCK",
"reason_code": "SANCTIONS_SCREENING",
"label": "DPRK Bitget Exploit - September 2026",
"subtype": null,
"subtype_status": "not_found",
"matches": ["aml_risk"],
"checks_complete": true,
"checked_at": "2026-09-27T12:00:00+00:00"
}
}GasFree वॉलेट — एक स्मार्ट अनुबंध जो USDT प्राप्त कर सकता है (200 OK)
{
"code": 0,
"status": "ok",
"data": {
"address": "TZEMF5vmSABaWjeUPty8kFpUsquMAKhGFp",
"blocked": true,
"category": "smart_contract",
"subtype": "gasfree_wallet",
"subtype_status": "confirmed",
"matches": ["smart_contract"],
"checks_complete": true,
"checked_at": "2026-10-23T12:00:00+00:00"
}
}हटाया गया अनुबंध — पता अभी भी एक स्मार्ट अनुबंध के रूप में गिना जाता है (200 OK)
{
"code": 0,
"status": "ok",
"data": {
"address": "TBtrogXC58EAvE7vod56ZnzRY4y5jrwtbN",
"blocked": true,
"category": "smart_contract",
"subtype": "selfdestructed_contract",
"subtype_status": "confirmed",
"matches": ["smart_contract"],
"checks_complete": true,
"checked_at": "2026-10-23T21:40:00+00:00"
}
}सुरक्षित — किसी भी सेट में नहीं है (200 OK)
{
"code": 0,
"status": "ok",
"data": {
"address": "TWaGxHZ9pFCFwUyzKtDsGNb6hEJ7tSjxEC",
"blocked": false,
"category": "clean",
"subtype": null,
"subtype_status": "not_found",
"matches": [],
"checks_complete": true,
"checked_at": "2026-09-27T12:00:00+00:00"
}
}प्रतिक्रिया फ़ील्ड
| Field | Type | Description |
|---|---|---|
| data.address | string | वह पता जिसकी जांच की गई थी |
| data.blocked | boolean | यदि पता किसी भी ब्लॉकिंग सेट में है तो true |
| data.category | string | aml_risk, usdt_frozen, smart_contract, spam_sender या clean (नीचे देखें); बैच एंडपॉइंट invalid या unavailable भी लौटा सकता है |
| data.severity | string | केवल aml_risk के लिए। जैसे BLOCK, REVIEW |
| data.reason_code | string | केवल aml_risk के लिए। मशीन कोड, जैसे SANCTIONS_OFAC_SDN |
| data.label | string | केवल aml_risk के लिए। मानव-पठनीय लेबल |
| data.subtype | string | null | smart_contract को परिष्कृत करता है। gasfree_wallet — एक सक्रिय GasFree वॉलेट (GasFree वॉलेट देखें); selfdestructed_contract — इस पते पर अनुबंध हटा दिया गया है (हटाए गए अनुबंध देखें); अन्यथा null |
| data.subtype_status | string | confirmed — उपप्रकार नवीनतम पुष्ट स्थिति द्वारा ज्ञात है; not_found — कोई भी उपप्रकार लागू नहीं होता; unavailable — वर्तमान में उपप्रकार सूची से परामर्श नहीं किया जा सका, इसलिए subtype null है और कुछ नहीं बताता है |
| data.matches | string[] | प्राथमिकता क्रम में सभी सेट जिनमें पता शामिल है (जैसे ["usdt_frozen", "smart_contract", "spam_sender"])। category केवल उनमें से पहला है |
| data.checks_complete | boolean | यदि लुकअप के समय सभी चार सेट लोड और अद्यतित थे तो true। false का अर्थ है कि एक clean उत्तर एक अपूर्ण जांच पर आधारित है |
| data.checked_at | string | लुकअप का UTC ISO-8601 टाइमस्टैम्प |
श्रेणियाँ
category एक निर्णय है, जोखिम स्कोर नहीं। जब कोई पता एक से अधिक सेटों में होता है, तो सबसे गंभीर श्रेणी इस क्रम में प्राथमिकता लेती है (वे सभी matches में सूचीबद्ध हैं):
| Category | blocked | Meaning |
|---|---|---|
aml_risk | true | केंद्रीय अस्वीकार सूची में मौजूद: प्रतिबंध, घोटाले, रैंसमवेयर, चोरी की संपत्ति, धोखाधड़ी, कानून प्रवर्तन या आंतरिक दुरुपयोग निष्कर्ष। एक क्यूरेटेड कारण संलग्न है |
usdt_frozen | true | USDT जारीकर्ता (Tether) द्वारा पते को फ्रीज कर दिया गया है। यह USDT स्थानांतरित नहीं कर सकता, इसलिए इसे संसाधन डेलिगेशन अस्वीकार कर दिया जाता है |
smart_contract | true | एक ज्ञात स्मार्ट अनुबंध पता, जिसमें बाद में हटाए गए अनुबंध भी शामिल हैं। नीचे दिया गया नोट देखें |
spam_sender | true | पुष्ट मास-स्पैम प्रेषक |
clean | false | किसी भी सेट में नहीं है |
unavailable | null | केंद्रीय अस्वीकार सूची से परामर्श नहीं किया जा सका, इसलिए पता न तो सुरक्षित माना गया है और न ही ब्लॉक किया गया है। केवल बैच; एकल-पता एंडपॉइंट इसके बजाय code 5004 के साथ 503 लौटाता है। देखें केंद्रीय अस्वीकार-सूची अनुपलब्ध |
स्मार्ट अनुबंधों को तकनीकी कारणों से ब्लॉक किया जाता है, AML कारणों से नहीं
एक smart_contract निर्णय का अर्थ है पता एक अनुबंध का है, उपयोगकर्ता वॉलेट का नहीं, इसलिए इसे Energy डेलिगेट नहीं की जाती है और ऑर्डर देने से पहले ही पते को अस्वीकार कर दिया जाता है। यह सेट हर उस पते को रखता है जहाँ एक अनुबंध सफलतापूर्वक बनाया गया था, जिसमें वे अनुबंध भी शामिल हैं जिन्हें बाद में हटा दिया गया था — एक हटाया गया अनुबंध अपने पते को उपयोगकर्ता वॉलेट में नहीं बदलता है। इसका मतलब यह नहीं है कि अनुबंध से समझौता किया गया है, यह दूषित है या AML के तहत उच्च जोखिम वाला है। इस सेट के अधिकांश अनुबंध पूरी तरह से सामान्य हैं। smart_contract को "डेलिगेशन लक्ष्य नहीं" मानें, जोखिम फ़्लैग के रूप में नहीं।
GasFree वॉलेट
GasFree वॉलेट एक ऐसा अनुबंध है जो इसके स्वामी को टोकन प्राप्त करने और भेजने तथा उन टोकनों में नेटवर्क शुल्क का भुगतान करने की सुविधा देता है। प्रत्येक को GasFree नियंत्रक TFFAMQLZybALaLb4uxHA9RBE7pxhUAjF3U द्वारा बनाया जाता है। ऐसे पते को subtype: "gasfree_wallet" के साथ category: "smart_contract" के रूप में रिपोर्ट किया जाता है।
फंड रूट करते समय यह अंतर मायने रखता है:
| साधारण स्मार्ट अनुबंध | GasFree वॉलेट | |
|---|---|---|
| इसे USDT भेजना | सामान्य प्राप्तकर्ता नहीं | हाँ — यह एक उपयोगकर्ता का वॉलेट है |
| इसे Energy डेलिगेट करना | नहीं | नहीं — हम GasFree वॉलेट को Energy डेलिगेट नहीं करते हैं |
category / subtype | smart_contract / null | smart_contract / gasfree_wallet |
कवरेज और सावधानियाँ:
- केवल परिनियोजित (deployed) वॉलेट ही ज्ञात हैं। एक GasFree पता जिसने USDT प्राप्त किया है लेकिन कभी कुछ नहीं भेजा है, वह अभी तक परिनियोजित नहीं है, इसलिए यह किसी भी सेट में नहीं है और
cleanके रूप में वापस आता है। - उपप्रकार यह वर्णन करता है कि पता कहाँ फंड प्राप्त कर सकता है। यह GasFree वॉलेट से होने वाले ट्रांसफर के बारे में कुछ नहीं कहता; प्रेषक पते की अलग से जांच करें।
subtype_status: "unavailable"का अर्थ है कि GasFree सूची से परामर्श नहीं किया जा सका। निर्णय का शेष भाग (blocked,category,matches) अभी भी मान्य है।- नियंत्रक स्वयं और अन्य अनुबंध GasFree वॉलेट नहीं हैं: वे
subtype: nullके साथ वापस आते हैं।
हटाए गए अनुबंध
एक अनुबंध स्वयं को हटा सकता है (आत्म-विनाश)। पता smart_contract सेट में ही रहता है: यह एक अनुबंध पता था, उपयोगकर्ता वॉलेट नहीं, और NETTS इसे संसाधनों को डेलिगेट नहीं करता है या भुगतान नहीं भेजता है। ऐसे पते को subtype: "selfdestructed_contract" के साथ category: "smart_contract" के रूप में रिपोर्ट किया जाता है।
confirmedका अर्थ है TRON नोड द्वारा पुष्टि की गई नवीनतम स्थिति द्वारा हटाया गया। यह भविष्य के बारे में कोई वादा नहीं है: उसी पते पर फिर से एक अनुबंध परिनियोजित किया जा सकता है, और तब उपप्रकार हटा दिया जाता है जबकि पता एकsmart_contractबना रहता है।- केवल एक सेल्फ-डिस्ट्रक्ट कॉल का अर्थ विलोपन नहीं है: TRON पर पूर्व के लेनदेन में बनाया गया अनुबंध इसके बाद भी अपना कोड बनाए रखता है। केवल नोड की स्थिति मान्य होती है।
- यदि कोई पता हटाया गया अनुबंध और GasFree सूची दोनों में है, तो
selfdestructed_contractको प्राथमिकता मिलती है — पते को कार्यशील GasFree वॉलेट के रूप में रिपोर्ट नहीं किया जाता है। subtype_status: "unavailable"का अर्थ है कि हटाए गए अनुबंधों की सूची से परामर्श नहीं किया जा सका; शेष निर्णय अभी भी मान्य है, और किसी भी पते को तब तक GasFree वॉलेट के रूप में पुष्टि नहीं की जाती जब तक कि फिर से परामर्श न किया जा सके।
कारण कोड और डेटा प्रदाता
aml_risk के लिए, reason_code और label बताते हैं कि पता क्यों सूचीबद्ध है। सार्वजनिक प्रतिबंध प्राधिकरणों को वैसे ही रखा जाता है — SANCTIONS_OFAC_SDN, SANCTIONS_EU_FSF, SANCTIONS_UK_FCDO इत्यादि। किसी निष्कर्ष के पीछे वाणिज्यिक स्क्रीनिंग प्रदाता का नाम कभी उजागर नहीं किया जाता है: ऐसे कोड SANCTIONS_SCREENING में सामान्यीकृत किए जाते हैं, और किसी भी प्रदाता का नाम label से हटा दिया जाता है।
अस्वीकार-सूची का आकार
GET https://netts.io/apiv2/compliance/statsउसी कैश से निर्णय के पीछे के सेटों का कुल आकार। खुला और बिना कुंजी वाला।
{
"code": 0,
"status": "ok",
"data": {
"aml_risk": 1079,
"usdt_frozen": 8022,
"smart_contract": 7581686,
"spam_sender": 27039018,
"gasfree_wallets_subset": 512487,
"selfdestructed_contracts_subset": 4065766,
"total": 34629805,
"revision": 1117,
"checked_at": "2026-10-23T21:40:00+00:00"
}
}smart_contract कुल का सबसे बड़ा AML-तटस्थ हिस्सा है — ऊपर अनुबंधों के बारे में नोट देखें। gasfree_wallets_subset (सक्रिय GasFree वॉलेट) और selfdestructed_contracts_subset (हटाए गए अनुबंध) smart_contract के भाग हैं; वे total में नहीं जोड़े जाते हैं। यदि इन दोनों काउंटरों में से किसी एक को अभी नहीं पढ़ा जा सकता है, तो यह null होता है और अन्य संख्याएँ फिर भी वापस की जाती हैं।
बैच लुकअप (API कुंजी)
एक साथ कई पतों की जांच करने के लिए, प्रमाणीकृत बैच एंडपॉइंट का उपयोग करें। यह नेटवर्क राउंड-ट्रिप को बचाने के लिए मौजूद है: N अलग-अलग GETs के बजाय एक अनुरोध और एक आंतरिक पाइपलाइन। एक एकल पता केवल एक-तत्व सरणी (one-element array) है।
POST https://netts.io/apiv2/compliance/batch
x-api-key: YOUR_KEY
Content-Type: application/json
{ "addresses": ["TTVUvAWUZafeHqQP82sYnfk4jNFPEHCRpL", "TWaGxHZ9pFCFwUyzKtDsGNb6hEJ7tSjxEC"] }प्रति अनुरोध 1000 पतों तक। निर्णय उसी क्रम में वापस आते हैं, प्रत्येक एकल-पता प्रतिक्रिया के समान फ़ील्ड के साथ (जिसमें subtype, subtype_status, matches और checks_complete शामिल हैं), साथ ही किसी भी विकृत प्रविष्टि के लिए category: "invalid" (error फ़ील्ड के साथ) — एक खराब प्रविष्टि पूरे बैच को विफल नहीं करती है। यदि केंद्रीय अस्वीकार सूची लोड नहीं है, तो अन्यथा सुरक्षित पता clean के बजाय category: "unavailable" (blocked: null, एक error फ़ील्ड के साथ) के रूप में वापस आता है — देखें केंद्रीय अस्वीकार-सूची अनुपलब्ध।
{
"code": 0,
"status": "ok",
"data": {
"count": 2,
"checked_at": "2026-09-27T12:00:00+00:00",
"results": [
{ "address": "TTVUvAWUZafeHqQP82sYnfk4jNFPEHCRpL", "blocked": true, "category": "aml_risk", "subtype": null, "subtype_status": "not_found", "matches": ["aml_risk"], "checks_complete": true, "severity": "BLOCK", "reason_code": "SANCTIONS_SCREENING", "label": "DPRK Bitget Exploit - September 2026" },
{ "address": "TWaGxHZ9pFCFwUyzKtDsGNb6hEJ7tSjxEC", "blocked": false, "category": "clean", "subtype": null, "subtype_status": "not_found", "matches": [], "checks_complete": true }
]
}
}बैच एंडपॉइंट के लिए एक API कुंजी (x-api-key हेडर) की आवश्यकता होती है और कुंजी को वैकल्पिक रूप से IP श्वेतसूची (whitelist) से बांधा जा सकता है। कुंजी प्राप्त करने के लिए हमसे संपर्क करें।
इसकी दर सीमा प्रति कुंजी है और सार्वजनिक एकल-पता एंडपॉइंट से अधिक है:
| Period | Limit |
|---|---|
| 1 सेकंड | 200 अनुरोध |
| 1 मिनट | 12,000 अनुरोध |
प्रत्येक अनुरोध में 1000 पते तक हो सकते हैं, इसलिए एक ही कुंजी इस सीमा के भीतर प्रति सेकंड एक लाख से अधिक पतों की जांच कर सकती है।
त्रुटि प्रतिक्रियाएं
अमान्य पता प्रारूप (400)
{
"code": 1001,
"status": "error",
"msg": "Invalid TRON address format (expected base58, 'T' + 33 chars)"
}सेवा अस्थायी रूप से अनुपलब्ध है (503)
{
"code": 5003,
"status": "error",
"msg": "compliance service temporarily unavailable"
}केंद्रीय अस्वीकार-सूची अनुपलब्ध (503, कोड 5004)
निर्णय इन-मेमोरी कैश से दिया जाता है। यदि वह कैश पहुंच योग्य है लेकिन केंद्रीय AML अस्वीकार सूची वर्तमान में लोड नहीं है, या इसका वर्तमान संशोधन अखंडता जांच में विफल रहता है, तो एंडपॉइंट clean पर वापस नहीं जाता है — क्योंकि वह एक अनियंत्रित पते को सुरक्षित के रूप में रिपोर्ट करेगा। इसके बजाय यह आपको स्पष्ट रूप से बताता है कि यह निर्णय उत्पन्न नहीं कर सका:
{
"code": 5004,
"status": "error",
"msg": "compliance deny-list temporarily unavailable, verdict cannot be produced"
}इसका क्या अर्थ है: पता न तो सुरक्षित माना गया है और न ही ब्लॉक किया गया है। सेवा अभी प्रतिबंध/AML सूची के विरुद्ध इसकी जांच नहीं कर सकी। पते को सुरक्षित न मानें — कुछ देर बाद पुनः प्रयास करें।
एक निश्चित ब्लॉक अभी भी सामान्य रूप से लौटाया जाता है: यदि पता फ्रोजन-USDT, स्मार्ट-अनुबंध या स्पैम-प्रेषक मैच है (वे सेट जो केंद्रीय सूची पर निर्भर नहीं हैं), तो आपको इस स्थिति में भी सामान्य blocked: true निर्णय प्राप्त होता है। केवल एक संभावित clean उत्तर ही 5004 बन जाता है।
बैच एंडपॉइंट में इसी स्थिति को प्रति-पता category: "unavailable" (blocked: null, एक error फ़ील्ड के साथ) के रूप में रिपोर्ट किया जाता है; बैच का शेष भाग अप्रभावित रहता है। यह एक दुर्लभ, अस्थायी स्थिति है।
रजिस्ट्री अनुपलब्ध (503, कोड 5005)
सेट यथास्थान अपडेट किए जाते हैं और अपडेट होने के दौरान भी पठनीय रहते हैं, इसलिए नियमित अपडेट कभी भी निर्णय को प्रभावित नहीं करता है। केवल तभी जब कोई सेट लागू होने में विफल रहता है, अन्यथा सुरक्षित पते की सुरक्षित के रूप में पुष्टि नहीं की जा सकती है। एकल-पता एंडपॉइंट तब लौटाता है:
{
"code": 5005,
"status": "error",
"msg": "address registry temporarily unavailable, verdict cannot be produced, retry shortly"
}जैसा कि 5004 के साथ होता है, एक निश्चित ब्लॉक अभी भी सामान्य रूप से लौटाया जाता है, और बैच एंडपॉइंट मामले को प्रति पता category: "unavailable" के रूप में रिपोर्ट करता है। बाद में पुन: प्रयास करें।
त्रुटि कोड संदर्भ
| Code | Description | HTTP Status |
|---|---|---|
0 | सफलता | 200 |
1001 | अमान्य TRON पता प्रारूप | 400 |
5003 | कैश बैकएंड अस्थायी रूप से अनुपलब्ध है | 503 |
5004 | केंद्रीय अस्वीकार सूची लोड नहीं है — निर्णय उत्पन्न नहीं किया जा सकता (पुनः प्रयास करें) | 503 |
5005 | एक सेट लागू होने में विफल रहा — निर्णय उत्पन्न नहीं किया जा सकता (पुनः प्रयास करें) | 503 |
दर सीमाएं
दो स्तर हैं, जो गेटवे पर लागू किए जाते हैं:
| Endpoint | Auth | Limited by | 1 second | 1 minute |
|---|---|---|---|---|
GET /apiv2/compliance/{address} | खुला, बिना कुंजी वाला | IP | 10 | 300 |
GET /apiv2/compliance/stats | खुला, बिना कुंजी वाला | IP | 10 | 300 |
POST /apiv2/compliance/batch | API कुंजी | कुंजी | 200 | 12,000 |
खुला एकल-पता एंडपॉइंट इंटरैक्टिव और हल्के प्रोग्रामेटिक उपयोग के लिए अभिप्रेत है। थोक स्क्रीनिंग के लिए बैच एंडपॉइंट का उपयोग करें: प्रति अनुरोध 1000 पतों तक और 200 अनुरोध/सेकंड प्रति कुंजी के साथ, एक ही कुंजी प्रति सेकंड एक लाख से अधिक पतों की जांच करती है। अधिक आवश्यकता है? प्रति-कुंजी सीमा एक नीति सेटिंग है, कोई तकनीकी सीमा नहीं — हमसे संपर्क करें।
दर सीमा पार हो गई (429)
{
"message": "API rate limit exceeded"
}नोट्स
- कोई प्रमाणीकरण नहीं और कोई लागत नहीं। इसे कोई भी कॉल कर सकता है; हस्ताक्षर करने के लिए कुछ भी नहीं है।
- केवल-कैश (Cache-only)। निर्णय कभी भी डेटाबेस या नोड को स्पर्श नहीं करता है, इसलिए यह दर सीमा के भीतर पोल करने के लिए तेज़ और सुरक्षित है।
- पूर्ण AML रिपोर्ट नहीं। जोखिम स्कोर, एक्सपोज़र ब्रेकडाउन और हस्ताक्षरित रिपोर्ट के लिए प्रमाणीकृत स्क्रीनिंग API (POST /apiv2/screening) का उपयोग करें। यह एंडपॉइंट एक संकीर्ण प्रश्न का उत्तर देता है: क्या पता हमारी अस्वीकार सूची में है, और क्यों।