Documentación API
API WebSocket en tiempo real para monitorear eventos de bloqueo USDT/USDC en redes Tron y Ethereum.
Primeros Pasos
Conéctate al endpoint WebSocket para recibir eventos de bloqueo en tiempo real y consultar información de direcciones.
wss://api.usdtbanlist.com/ws?apiKey=YOUR_API_KEYObtén tu clave API
Abre @USDTBanBot en Telegram, ve a Perfil → API Key para generar tu clave.
Autenticación
Incluye tu clave API en la URL de conexión o envía un mensaje de autenticación después de conectarte.
wss://api.usdtbanlist.com/ws?apiKey=mk_your_api_key_here{
"type": "auth",
"apiKey": "mk_your_api_key_here"
}{
"type": "connected",
"clientId": "client_xxx",
"authenticated": true,
"tier": "free" // or "premium"
}Eventos
Una vez conectado y autenticado, recibirás eventos de bloqueo en tiempo real.
| Tipo de Evento | Descripción | Plan |
|---|---|---|
ban_submitted | Bloqueo pendiente en multisig | Premium |
ban_executed | Dirección bloqueada (confirmado) | Gratis |
unban_submitted | Desbloqueo pendiente en multisig | Premium |
unban_executed | Dirección desbloqueada | Gratis |
destroy_submitted | Quema de fondos pendiente en multisig | Premium |
destroy_executed | Fondos quemados de dirección bloqueada | Gratis |
{
"type": "event",
"event": {
"id": "uuid",
"network": "trx", // "trx" or "eth"
"eventType": "ban_executed",
"address": "41...", // hex format
"addressBase58": "T...", // TRX only
"symbol": "USDT",
"txHash": "...",
"blockNumber": 12345678,
"timestamp": "2024-01-15T12:00:00Z",
"amount": "1234.56", // balance at event time
"amountRaw": "1234560000"
}
}Métodos JSON-RPC
Envía solicitudes JSON-RPC 2.0 para consultar datos y gestionar suscripciones.
pingVerificar estado de conexión
{
"jsonrpc": "2.0",
"id": 1,
"method": "ping"
}{
"jsonrpc": "2.0",
"id": 1,
"result": "pong"
}getStatusObtener estado actual de conexión e información de límites
{
"jsonrpc": "2.0",
"id": 1,
"method": "getStatus"
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"tier": "free",
"subscriptions": ["all"],
"rateLimit": {
"used": 5,
"limit": 10,
"windowMs": 60000
}
}
}subscribeSuscribirse a canales de eventos
{
"jsonrpc": "2.0",
"id": 1,
"method": "subscribe",
"params": {
"channels": ["all"] // "all", "eth", "trx", or address
}
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"subscribed": ["all"],
"total": 1
}
}unsubscribeCancelar suscripción de canales
{
"jsonrpc": "2.0",
"id": 1,
"method": "unsubscribe",
"params": {
"channels": ["eth"] // empty array to unsubscribe all
}
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"unsubscribed": ["eth"],
"remaining": 1
}
}checkAddressVerificar si una dirección está bloqueada
{
"jsonrpc": "2.0",
"id": 1,
"method": "checkAddress",
"params": {
"address": "TLJpijVuVyjAtKRahhGTAFkpZxfpzHMtWe"
}
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"address": "TLJpijVuVyjAtKRahhGTAFkpZxfpzHMtWe",
"network": "trx",
"isBanned": false,
"usdt_status": "active",
"usdc_status": "active",
"usdt_balance": "0.00",
"usdc_balance": "0.00",
"tag": { "type": "GasFree", "tag": "GasFree" },
"events": [{ "event_name": "UnBlock", "volume": "0.00", "symbol": "USDT", "status": "executed" }],
"walletScore": { "totalScore": 45, "riskLevel": "medium" },
"connections": { "totalConnections": 0, "categories": [] },
"formattedText": "..."
}
}getAddressInfoObtener información detallada sobre una dirección
{
"jsonrpc": "2.0",
"id": 1,
"method": "getAddressInfo",
"params": {
"address": "TLJpijVuVyjAtKRahhGTAFkpZxfpzHMtWe",
"network": "trx"
}
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"address": "TLJpijVuVyjAtKRahhGTAFkpZxfpzHMtWe",
"network": "trx",
"info": {
"label": "Exchange Wallet",
"firstSeen": "2023-01-15T10:00:00Z",
"lastSeen": "2024-01-10T15:30:00Z"
},
"cached": true
}
}Límites de Velocidad
| Plan | Solicitudes RPC | Eventos |
|---|---|---|
| Gratis | 10 / minuto | Solo ejecutados |
| Premium | 100 / minuto | Todos los eventos (pendientes + ejecutados) |
Cuando se excede el límite de velocidad, recibirás una respuesta de error:
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32000,
"message": "Rate limit exceeded"
}
}Ejemplos
const WebSocket = require('ws');
const API_KEY = 'mk_your_api_key';
const ws = new WebSocket(`wss://api.usdtbanlist.com/ws?apiKey=${API_KEY}`);
ws.on('open', () => {
console.log('Connected');
// Subscribe to TRX events
ws.send(JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'subscribe',
params: { channels: ['trx'] }
}));
});
ws.on('message', (data) => {
const msg = JSON.parse(data);
if (msg.type === 'event') {
console.log('Ban event:', msg.event.eventType, msg.event.address);
}
if (msg.jsonrpc) {
console.log('RPC response:', msg);
}
});
ws.on('error', console.error);import json
import websocket
API_KEY = 'mk_your_api_key'
def on_message(ws, message):
msg = json.loads(message)
if msg.get('type') == 'event':
event = msg['event']
print(f"Ban event: {event['eventType']} - {event['address']}")
if msg.get('type') == 'connected' and msg.get('authenticated'):
# Subscribe to all events
ws.send(json.dumps({
'jsonrpc': '2.0',
'id': 1,
'method': 'subscribe',
'params': {'channels': ['all']}
}))
def on_error(ws, error):
print(f"Error: {error}")
ws = websocket.WebSocketApp(
f"wss://api.usdtbanlist.com/ws?apiKey={API_KEY}",
on_message=on_message,
on_error=on_error
)
ws.run_forever()