API v1

Documentation API

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

REST JSON SSE CORS

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.

Utilisation

Transmettez votre clé via le header Authorization : 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. 429 Too Many Requests

Tier Par heure Par jour Clés max
Public 100 / IP 500 / IP —
Free 1 000 10 000 5
Pro bientôt
10 000 100 000 20
Headers de réponse

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

X-RateLimit-Limit Nombre max de requêtes autorisées par heure
X-RateLimit-Remaining Requêtes restantes dans la fenêtre courante
X-RateLimit-Reset Timestamp 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. error

400 Paramètre manquant ou invalide
401 Clé API invalide ou révoquée
429 Limite de requêtes dépassée (rate limit)
502 Erreur de connexion au service interne
500 Erreur 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
ip string Adresse IPv4
ipv6 string Adresse IPv6 (si disponible)
hostname string Reverse DNS
type string Type d'IP (Residential, Business, etc.)
class string Classe d'IP (A, B, C)
location object country, countryCode, city, continent, latitude, longitude, timezone, postalCode
network object provider, asn
security object Indicateurs 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
ip string Adresse IP du client
is_ipv4 boolean true si IPv4
is_ipv6 boolean true si IPv6 natif
protocol string "IPv4" ou "IPv6"
timestamp string Horodatage 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 donne.

Paramètres
host requis Nom de domaine (ex: google.com)
record_type requis Type : A, AAAA, MX, NS, TXT, CNAME, SOA, PTR, SRV
Réponse JSON
host string Domaine interroge
records array Liste 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
target requis Domaine ou IP (ex: google.com)
Réponse JSON
target string Cible interrogée
raw string Réponse WHOIS brute
parsed object domain_name, registrar, création_date, expiration_date, name_servers, status, dnssec
cached boolean true 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
host requis Nom de domaine (ex: google.com)
Réponse JSON
host string Domaine testé
valid boolean true si le certificat est valide
days_remaining number Jours avant expiration
subject string Sujet (CN)
issuer string Émetteur (CN)
issuer_org string Organisation de l'émetteur
valid_from string Date de début (ISO 8601)
valid_to string Date d'expiration (ISO 8601)
serial string Numéro de série
fingerprint string Empreinte SHA-256
protocol string Protocole TLS (ex: TLSv1.3)
bits number | null Taille de clé en bits
alt_names string[] 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
ip requis Adresse IPv4 (ex: 8.8.8.8)
Réponse JSON
ip string IP testée
total number Nombre de listes testées
listed number Nombre de listes ou l'IP apparaît
clean boolean true si l'IP n'est dans aucune liste
results array Dé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/ping SSE

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

Paramètres
host requis Hôte ou IP (ex: 8.8.8.8)
count optionnel Nombre de paquets (défaut: 4)
Événements 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
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/traceroute SSE

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

Paramètres
host requis Hôte ou IP (ex: google.com)
Événements SSE
start host, resolved_ip
hop hop, ip, hostname, rtt_ms
done total_hops, reached
error message
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. EventSource / curl -N

KEY

Votre clé API est affichée une seule fois lors de sa création. Conservez-la précieusement.

SEC

Les clés API sont chiffrées en AES-256-GCM au repos.