API v1

Documentación API

API REST pública para geolocalización IP, herramientas de red y verificación de seguridad.

REST JSON SSE CORS

Base URL : https://mon-ip.dev

Autenticación

Clave API

La API es accesible públicamente sin autenticación. Para límites más altos, cree una cuenta y genere una clave API desde su panel. Uso.

Uso

Transmita su clave mediante el header Authorization: Authorization

Header HTTP
Authorization: Bearer mk_votre_cle_api
Ejemplo
curl
$curl https://mon-ip.dev/api/v1/json -H "Authorization: Bearer mk_a1b2c3d4e5f6..."

Límites

Rate limiting

Las solicitudes están limitadas según su nivel de acceso. Al superar el límite, la API devuelve un error 429 Too Many Requests. 429 Too Many Requests

Nivel Por hora Por día Claves máx
Public 100 / IP 500 / IP —
Free 1 000 10 000 5
Pro próximamente
10 000 100 000 20
Headers de respuesta

Cada respuesta incluye headers para seguir su consumo:

X-RateLimit-Limit Número máximo de solicitudes permitidas por hora
X-RateLimit-Remaining Solicitudes restantes en la ventana actual
X-RateLimit-Reset Timestamp UNIX de reinicio del contador

Errores

Códigos de error

En caso de error, la respuesta contiene un campo error con un mensaje descriptivo. error

400 Parámetro faltante o inválido
401 Clave API inválida o revocada
429 Límite de solicitudes superado (rate limit)
502 Error de conexión al servicio interno
500 Error interno del servidor
Formato
429 Too Many Requests
{
  "error": "Rate limit exceeded",
  "limit": 100,
  "reset": 1709913600
}

IP y Geolocalización

GET /api/v1/json

Devuelve información de geolocalización, ISP y seguridad de la IP del cliente.

Respuesta JSON
ip string Dirección IPv4
ipv6 string Dirección IPv6 (si disponible)
hostname string Reverse DNS
type string Tipo de IP (Residential, Business, etc.)
class string Clase de IP (A, B, C)
location object country, countryCode, city, continent, latitude, longitude, timezone, postalCode
network object provider, asn
security object Indicadores de seguridad (proxy, VPN, Tor, etc.)
Ejemplo
Solicitud
$curl https://mon-ip.dev/api/v1/json
Respuesta
{
  "ip": "203.0.113.42",
  "hostname": "42.113.0.203.example.net",
  "type": "Residential",
  "class": "C",
  "location": {
    "country": "France",
    "countryCode": "FR",
    "city": "Paris",
    "latitude": 48.8566,
    "longitude": 2.3522,
    "timezone": "Europe/Paris"
  },
  "network": { "provider": "Orange SA", "asn": "AS3215" },
  "security": { "proxy": false, "vpn": false, "tor": false }
}
GET /api/v1/ipv6

Detecta si el cliente se conecta por IPv4 o IPv6.

Respuesta JSON
ip string Dirección IP del cliente
is_ipv4 boolean true si IPv4
is_ipv6 boolean true si IPv6 nativo
protocol string "IPv4" o "IPv6"
timestamp string Marca de tiempo ISO 8601
Ejemplo
Solicitud
$curl https://mon-ip.dev/api/v1/ipv6
Respuesta
{
  "ip": "203.0.113.42",
  "is_ipv4": true,
  "is_ipv6": false,
  "protocol": "IPv4",
  "timestamp": "2026-03-09T14:30:00Z"
}

DNS y Dominios

GET /api/v1/dns

Realiza una resolución DNS para un tipo de registro dado.

Parámetros
host requerido Nombre de dominio (ej: google.com)
record_type requerido Tipo: A, AAAA, MX, NS, TXT, CNAME, SOA, PTR, SRV
Respuesta JSON
host string Dominio consultado
records array Lista de registros: record_type, value, ttl
Ejemplo
Solicitud
$curl "https://mon-ip.dev/api/v1/dns?host=google.com&record_type=MX"
Respuesta
{
  "host": "google.com",
  "records": [
    { "record_type": "MX", "value": "10 smtp.google.com", "ttl": 300 }
  ]
}
GET /api/v1/whois

Devuelve la información WHOIS de un dominio o una IP.

Parámetros
target requerido Dominio o IP (ej: google.com)
Respuesta JSON
target string Objetivo consultado
raw string Respuesta WHOIS sin procesar
parsed object domain_name, registrar, creation_date, expiration_date, name_servers, status, dnssec
cached boolean true si el resultado proviene del caché
Ejemplo
Solicitud
$curl https://mon-ip.dev/api/v1/whois?target=google.com
Respuesta
{
  "target": "google.com",
  "parsed": {
    "domain_name": "google.com",
    "registrar": "MarkMonitor Inc.",
    "creation_date": "1997-09-15",
    "expiration_date": "2028-09-14",
    "name_servers": ["ns1.google.com", "ns2.google.com"],
    "dnssec": "unsigned"
  },
  "cached": false
}
GET /api/v1/ssl

Verifica el certificado SSL/TLS de un dominio conectándose al puerto 443.

Parámetros
host requerido Nombre de dominio (ej: google.com)
Respuesta JSON
host string Dominio probado
valid boolean true si el certificado es válido
days_remaining number Días hasta la expiración
subject string Sujeto (CN)
issuer string Emisor (CN)
issuer_org string Organización del emisor
valid_from string Fecha de inicio (ISO 8601)
valid_to string Fecha de expiración (ISO 8601)
serial string Número de serie
fingerprint string Huella SHA-256
protocol string Protocolo TLS (ej: TLSv1.3)
bits number | null Tamaño de clave en bits
alt_names string[] Nombres alternativos (SAN)
Ejemplo
Solicitud
$curl https://mon-ip.dev/api/v1/ssl?host=google.com
Respuesta
{
  "host": "google.com",
  "valid": true,
  "days_remaining": 62,
  "subject": "*.google.com",
  "issuer": "GTS CA 1C3",
  "protocol": "TLSv1.3",
  "alt_names": ["*.google.com", "google.com"]
}

Seguridad

GET /api/v1/blacklist

Verifica si una dirección IPv4 está listada en 8 listas negras DNS.

Parámetros
ip requerido Dirección IPv4 (ej: 8.8.8.8)
Respuesta JSON
ip string IP probada
total number Número de listas probadas
listed number Número de listas donde aparece la IP
clean boolean true si la IP no está en ninguna lista
results array Detalle por lista: name, zone, listed
Ejemplo
Solicitud
$curl https://mon-ip.dev/api/v1/blacklist?ip=8.8.8.8
Respuesta
{
  "ip": "8.8.8.8",
  "total": 8,
  "listed": 0,
  "clean": true,
  "results": [
    { "name": "Spamhaus ZEN", "zone": "zen.spamhaus.org", "listed": false }
  ]
}

Red

GET /api/v1/ping SSE

Envía paquetes ICMP y devuelve los resultados en tiempo real vía Server-Sent Events.

Parámetros
host requerido Host o IP (ej: 8.8.8.8)
count opcional Número de paquetes (por defecto: 4)
Eventos SSE
start host, resolved_ip
reply seq, ip, time_ms, ttl
timeout seq
done alive, packets_sent, packets_received, packet_loss, min_ms, avg_ms, max_ms
error message
Ejemplo
Solicitud
$curl -N "https://mon-ip.dev/api/v1/ping?host=8.8.8.8&count=4"
Respuesta
data: {"type":"start","host":"8.8.8.8","resolved_ip":"8.8.8.8"}
data: {"type":"reply","seq":1,"ip":"8.8.8.8","time_ms":12.4,"ttl":118}
data: {"type":"reply","seq":2,"ip":"8.8.8.8","time_ms":11.8,"ttl":118}
data: {"type":"done","alive":true,"packets_sent":4,"packets_received":4,"packet_loss":0,"min_ms":11.2,"avg_ms":12.0,"max_ms":12.8}
GET /api/v1/traceroute SSE

Traza la ruta de red hacia un host en tiempo real vía Server-Sent Events.

Parámetros
host requerido Host o IP (ej: google.com)
Eventos SSE
start host, resolved_ip
hop hop, ip, hostname, rtt_ms
done total_hops, reached
error message
Ejemplo
Solicitud
$curl -N https://mon-ip.dev/api/v1/traceroute?host=google.com
Respuesta
data: {"type":"start","host":"google.com","resolved_ip":"142.250.179.110"}
data: {"type":"hop","hop":1,"ip":"192.168.1.1","hostname":"gateway","rtt_ms":1.2}
data: {"type":"hop","hop":2,"ip":"10.0.0.1","hostname":"isp-router","rtt_ms":5.4}
data: {"type":"done","total_hops":12,"reached":true}

Notas

CORS

Todos los endpoints aceptan solicitudes cross-origin (CORS).

SSE

Los endpoints ping y traceroute usan Server-Sent Events. EventSource / curl -N

KEY

Su clave API se muestra solo una vez al crearla. Guárdela con cuidado.

SEC

Las claves API están cifradas con AES-256-GCM en reposo.