Ir al contenido

Documentación API

Integra TraceMapper en tus aplicaciones con nuestra API REST. Disponible para usuarios Pro.

Autenticación

Todas las solicitudes API requieren una clave API pasada como parámetro "key". Genera tu clave API desde el Panel de control.

Parámetro de consulta

GET /api/v1/trace?dest=example.com&key=tm_your_api_key

Encabezado Authorization (recomendado)

Authorization: Bearer tm_your_api_key

Las claves API expiran después de 1 año. Puedes regenerarlas desde el Panel de control.

Endpoints

GET/api/v1/trace

Ejecuta un traceroute hacia un destino y devuelve todos los saltos con geolocalización, ASN, latencia, jitter y pérdida de paquetes.

Parámetros

ParámetroTipoRequeridoDescripción
keystringrequeridoTu clave API (comienza con tm_)
deststringrequeridoDirección IP o nombre de dominio de destino
maxHopsintegeropcionalNúmero máximo de saltos (1-64, por defecto: 30)
protocolstringopcionalProtocolo: icmp, udp o tcp (por defecto: icmp)

Ejemplo de respuesta

{
  "dest": "8.8.8.8",
  "protocol": "icmp",
  "totalHops": 12,
  "hops": [
    {
      "hopNumber": 1,
      "ip": "192.168.1.1",
      "hostname": "router.local",
      "asn": null,
      "asnOrg": null,
      "city": null,
      "country": null,
      "lat": null,
      "lon": null,
      "latencyAvg": 1.2,
      "latencyMin": 0.8,
      "latencyMax": 1.5,
      "jitter": 0.3,
      "packetLoss": 0.0,
      "isTimeout": false
    }
  ]
}

Códigos de error

401Clave API faltante o inválida
403Usuario no Pro o clave inválida
429Límite de solicitudes excedido
GET/api/v1/traces

Lista tus traceroutes guardados con paginación. Soporta filtrado por destino.

ParámetroTipoDescripción
limitintegerResultados por página (1-100, por defecto: 20)
offsetintegerNúmero de resultados a omitir (por defecto: 0)
deststringFiltrar por IP o nombre de dominio de destino
GET/api/v1/status

Obtener el estado de la API, fuentes disponibles e información de límites. Sin autenticación requerida.

GET/api/v1/ping

Hacer ping a un host y devolver estadísticas de latencia, pérdida de paquetes y tiempos de ida y vuelta individuales.

Parámetros

ParámetroTipoRequeridoDescripción
hoststringrequeridoDirección IP o nombre de host a hacer ping
countintegeropcionalNúmero de paquetes ping a enviar (1-20, por defecto: 4)

Ejemplo de respuesta

{
  "host": "8.8.8.8",
  "resolvedIp": "8.8.8.8",
  "count": 4,
  "sent": 4,
  "received": 4,
  "packetLoss": 0,
  "latency": {
    "min": 1.23,
    "avg": 2.45,
    "max": 3.67,
    "jitter": 0.89
  },
  "rtts": [1.23, 2.45, 3.67, 2.45]
}
GET/api/v1/dns

Realizar una consulta DNS para un dominio y devolver los registros resueltos con el tiempo de consulta.

Parámetros

ParámetroTipoRequeridoDescripción
domainstringrequeridoNombre de dominio a consultar
typestringopcionalTipo de registro: A, AAAA, MX, NS, CNAME, TXT o SOA (por defecto: A)

Ejemplo de respuesta

{
  "domain": "example.com",
  "type": "A",
  "records": [
    { "address": "93.184.216.34", "ttl": 300 }
  ],
  "queryTime": 12.34,
  "server": "system"
}
GET/api/v1/http-check

Verificar una URL HTTP(S) y devolver el código de estado, tiempo de respuesta, cadena de redirecciones, encabezados y detalles del certificado SSL.

Parámetros

ParámetroTipoRequeridoDescripción
urlstringrequeridoURL a verificar (se añade https:// si se omite)

Ejemplo de respuesta

{
  "url": "https://example.com",
  "statusCode": 200,
  "statusText": "OK",
  "responseTime": 145,
  "redirects": [],
  "headers": {
    "content-type": "text/html; charset=UTF-8",
    "server": "nginx"
  },
  "ssl": {
    "valid": true,
    "issuer": "DigiCert Inc",
    "validFrom": "2024-01-01",
    "validTo": "2025-01-01",
    "daysRemaining": 180,
    "protocol": "TLSv1.3",
    "sans": ["example.com", "www.example.com"]
  }
}
GET/api/v1/port-check

Verificar si un puerto TCP está abierto en un host y devolver el tiempo de respuesta y el nombre del servicio.

Parámetros

ParámetroTipoRequeridoDescripción
hoststringrequeridoDirección IP o nombre de host a verificar
portintegerrequeridoNúmero de puerto a verificar (1-65535)
portsstringopcionalUsar "common" para escanear puertos comunes (21, 22, 25, 53, 80, 443, ...)

Ejemplo de respuesta

{
  "host": "example.com",
  "port": 443,
  "open": true,
  "responseTime": 23,
  "service": "HTTPS"
}
GET/api/v1/ip-reputation

Verificar la reputación de una dirección IP contra listas negras DNS y AbuseIPDB, con datos de geolocalización.

Parámetros

ParámetroTipoRequeridoDescripción
ipstringrequeridoDirección IPv4 o IPv6 a verificar

Ejemplo de respuesta

{
  "ip": "8.8.8.8",
  "reputation": "clean",
  "score": 0,
  "abuseipdb": {
    "score": 0,
    "totalReports": 12,
    "lastReported": "2025-12-01T10:00:00Z"
  },
  "blacklists": [
    { "name": "Spamhaus ZEN", "listed": false },
    { "name": "SpamCop", "listed": false },
    { "name": "SORBS", "listed": false }
  ],
  "geo": {
    "country": "US",
    "isp": "Google LLC",
    "org": "Google Public DNS",
    "as": "AS15169 Google LLC"
  }
}
GET/api/v1/bgp

Consultar información de enrutamiento BGP para una dirección IP o prefijo, incluyendo ASN de origen, rutas AS y proveedores upstream.

Parámetros

ParámetroTipoRequeridoDescripción
targetstringrequeridoDirección IP o prefijo (ej.: 8.8.8.0/24)

Ejemplo de respuesta

{
  "prefix": "8.8.8.0/24",
  "origin": { "asn": 15169, "holder": "Google LLC" },
  "paths": [
    {
      "collector": "rrc00",
      "asPath": [13335, 15169],
      "communities": ["13335:10000"]
    }
  ],
  "pathCount": 245,
  "collectorCount": 24,
  "upstreamAsns": [
    { "asn": 13335, "holder": "Cloudflare Inc", "count": 45 }
  ]
}

Límites de solicitudes

Las solicitudes API están limitadas a 30 por minuto por clave API. Si excedes este límite, recibirás un código 429 con un encabezado Retry-After.

Ejemplos de código

cURL

# Con encabezado Authorization
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/trace?dest=8.8.8.8"

# Listar trazas guardadas
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/traces?limit=10"

# Ping
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/ping?host=8.8.8.8&count=4"

# DNS
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/dns?domain=example.com&type=MX"

# HTTP Check
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/http-check?url=https://example.com"

# Port Check
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/port-check?host=example.com&port=443"

# IP Reputation
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/ip-reputation?ip=8.8.8.8"

# BGP
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/bgp?target=8.8.8.0/24"

JavaScript / Node.js

const API_KEY = "tm_your_api_key";
const headers = { Authorization: `Bearer ${API_KEY}` };

// Traceroute
const trace = await fetch(
  "https://tracemapper.com/api/v1/trace?dest=8.8.8.8",
  { headers }
).then(r => r.json());
console.log(trace.hops);

// Ping
const ping = await fetch(
  "https://tracemapper.com/api/v1/ping?host=8.8.8.8",
  { headers }
).then(r => r.json());
console.log(ping.latency);

// DNS
const dns = await fetch(
  "https://tracemapper.com/api/v1/dns?domain=example.com&type=A",
  { headers }
).then(r => r.json());
console.log(dns.records);

Python

import requests

headers = {"Authorization": "Bearer tm_your_api_key"}

# Traceroute
r = requests.get(
    "https://tracemapper.com/api/v1/trace",
    params={"dest": "8.8.8.8"},
    headers=headers,
)
print(r.json()["hops"])

# Ping
r = requests.get(
    "https://tracemapper.com/api/v1/ping",
    params={"host": "8.8.8.8", "count": 4},
    headers=headers,
)
print(r.json()["latency"])

# DNS
r = requests.get(
    "https://tracemapper.com/api/v1/dns",
    params={"domain": "example.com", "type": "MX"},
    headers=headers,
)
print(r.json()["records"])