API v1

Documentation API

API REST publique pour la géolocalisation IP, les outils réseau et la vérification de sécurité.

RESTJSONSSECORS

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

Authentification

Clé API

L'API est accessible publiquement sans authentification. Pour bénéficier de limites plus élevées, créez un compte et générez une clé API depuis votre tableau de bord.

Utilisation

Transmettez votre clé via le header Authorization :

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

Limites

Rate limiting

Les requêtes sont limitées selon votre niveau d'accès. En cas de dépassement, l'API retourne une erreur 429 Too Many Requests.

TierPar heurePar jourClés max
Public100 / IP500 / IP
Free1 00010 0005
Probientôt
10 000100 00020
Headers de réponse

Chaque réponse inclut des headers pour suivre votre consommation :

X-RateLimit-LimitNombre max de requêtes autorisées par heure
X-RateLimit-RemainingRequêtes restantes dans la fenêtre courante
X-RateLimit-ResetTimestamp UNIX de réinitialisation du compteur

Erreurs

Codes d'erreur

En cas d'erreur, la réponse contient un champ error avec un message descriptif.

400Paramètre manquant ou invalide
401Clé API invalide ou révoquée
429Limite de requêtes dépassée (rate limit)
502Erreur de connexion au service interne
500Erreur interne du serveur
Format
429 Too Many Requests
{
  "error": "Rate limit exceeded",
  "limit": 100,
  "reset": 1709913600
}

IP & Géolocalisation

GET/api/v1/json

Retourne les informations de géolocalisation, FAI et sécurité de l'IP du client.

Réponse JSON
ipstringAdresse IPv4
ipv6stringAdresse IPv6 (si disponible)
hostnamestringReverse DNS
typestringType d'IP (Residential, Business, etc.)
classstringClasse d'IP (A, B, C)
locationobjectcountry, countryCode, city, continent, latitude, longitude, timezone, postalCode
networkobjectprovider, asn
securityobjectIndicateurs de sécurité (proxy, VPN, Tor, etc.)
Exemple
Requête
$ curl https://mon-ip.dev/api/v1/json
Réponse
{
  "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

Détecte si le client se connecte en IPv4 ou IPv6.

Réponse JSON
ipstringAdresse IP du client
is_ipv4booleantrue si IPv4
is_ipv6booleantrue si IPv6 natif
protocolstring"IPv4" ou "IPv6"
timestampstringHorodatage ISO 8601
Exemple
Requête
$ curl https://mon-ip.dev/api/v1/ipv6
Réponse
{
  "ip": "203.0.113.42",
  "is_ipv4": true,
  "is_ipv6": false,
  "protocol": "IPv4",
  "timestamp": "2026-03-09T14:30:00Z"
}

DNS & Domaines

GET/api/v1/dns

Effectue une résolution DNS pour un type d'enregistrement donné.

Paramètres
hostrequisNom de domaine (ex: google.com)
record_typerequisType : A, AAAA, MX, NS, TXT, CNAME, SOA, PTR, SRV
Réponse JSON
hoststringDomaine interrogé
recordsarrayListe d'enregistrements : record_type, value, ttl
Exemple
Requête
$ curl "https://mon-ip.dev/api/v1/dns?host=google.com&record_type=MX"
Réponse
{
  "host": "google.com",
  "records": [
    { "record_type": "MX", "value": "10 smtp.google.com", "ttl": 300 }
  ]
}
GET/api/v1/whois

Retourne les informations WHOIS d'un domaine ou d'une IP.

Paramètres
targetrequisDomaine ou IP (ex: google.com)
Réponse JSON
targetstringCible interrogée
rawstringRéponse WHOIS brute
parsedobjectdomain_name, registrar, creation_date, expiration_date, name_servers, status, dnssec
cachedbooleantrue si le résultat provient du cache
Exemple
Requête
$ curl https://mon-ip.dev/api/v1/whois?target=google.com
Réponse
{
  "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

Vérifie le certificat SSL/TLS d'un domaine en se connectant au port 443.

Paramètres
hostrequisNom de domaine (ex: google.com)
Réponse JSON
hoststringDomaine testé
validbooleantrue si le certificat est valide
days_remainingnumberJours avant expiration
subjectstringSujet (CN)
issuerstringÉmetteur (CN)
issuer_orgstringOrganisation de l'émetteur
valid_fromstringDate de début (ISO 8601)
valid_tostringDate d'expiration (ISO 8601)
serialstringNuméro de série
fingerprintstringEmpreinte SHA-256
protocolstringProtocole TLS (ex: TLSv1.3)
bitsnumber | nullTaille de clé en bits
alt_namesstring[]Noms alternatifs (SAN)
Exemple
Requête
$ curl https://mon-ip.dev/api/v1/ssl?host=google.com
Réponse
{
  "host": "google.com",
  "valid": true,
  "days_remaining": 62,
  "subject": "*.google.com",
  "issuer": "GTS CA 1C3",
  "protocol": "TLSv1.3",
  "alt_names": ["*.google.com", "google.com"]
}

Sécurité

GET/api/v1/blacklist

Vérifie si une adresse IPv4 est listée dans 8 listes noires DNS.

Paramètres
iprequisAdresse IPv4 (ex: 8.8.8.8)
Réponse JSON
ipstringIP testée
totalnumberNombre de listes testées
listednumberNombre de listes où l'IP apparaît
cleanbooleantrue si l'IP n'est dans aucune liste
resultsarrayDétail par liste : name, zone, listed
Exemple
Requête
$ curl https://mon-ip.dev/api/v1/blacklist?ip=8.8.8.8
Réponse
{
  "ip": "8.8.8.8",
  "total": 8,
  "listed": 0,
  "clean": true,
  "results": [
    { "name": "Spamhaus ZEN", "zone": "zen.spamhaus.org", "listed": false }
  ]
}

Réseau

GET/api/v1/pingSSE

Envoie des paquets ICMP et retourne les résultats en temps réel via Server-Sent Events.

Paramètres
hostrequisHôte ou IP (ex: 8.8.8.8)
countoptionnelNombre de paquets (défaut: 4)
Événements SSE
starthost, resolved_ip
replyseq, ip, time_ms, ttl
timeoutseq
donealive, packets_sent, packets_received, packet_loss, min_ms, avg_ms, max_ms
errormessage
Exemple
Requête
$ curl -N "https://mon-ip.dev/api/v1/ping?host=8.8.8.8&count=4"
Réponse
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/tracerouteSSE

Trace le chemin réseau vers un hôte en temps réel via Server-Sent Events.

Paramètres
hostrequisHôte ou IP (ex: google.com)
Événements SSE
starthost, resolved_ip
hophop, ip, hostname, rtt_ms
donetotal_hops, reached
errormessage
Exemple
Requête
$ curl -N https://mon-ip.dev/api/v1/traceroute?host=google.com
Réponse
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}

Notes

CORS

Tous les endpoints acceptent les requêtes cross-origin (CORS).

SSE

Les endpoints ping et traceroute utilisent Server-Sent Events. Utilisez EventSource en JavaScript ou curl -N en CLI.

KEY

Votre clé API est affichée une seule fois lors de sa création. Conservez-la précieusement. Vous pouvez la révoquer et en créer une nouvelle à tout moment.

SEC

Les clés API sont chiffrées en AES-256-GCM au repos. Seul un index aveugle HMAC-SHA256 est stocké pour la recherche.