API Documentation
Public REST API for IP geolocation, network tools and security verification.
Base URL : https://mon-ip.dev
Authentication
API Key
The API is publicly accessible without authentication. For higher limits, create an account and generate an API key from your dashboard. Usage.
Pass your key via the Authorization header: Authorization
Limits
Rate limiting
Requests are limited based on your access level. If exceeded, the API returns a 429 Too Many Requests error. 429 Too Many Requests
Each response includes headers to track your usage:
X-RateLimit-Limit Maximum allowed requests per hourX-RateLimit-Remaining Remaining requests in the current windowX-RateLimit-Reset UNIX timestamp of counter resetErrors
Error codes
In case of error, the response contains an error field with a descriptive message. error
400 Missing or invalid parameter401 Invalid or revoked API key429 Request limit exceeded (rate limit)502 Internal service connection error500 Internal server error{
"error": "Rate limit exceeded",
"limit": 100,
"reset": 1709913600
}IP & Geolocation
/api/v1/json Returns geolocation, ISP and security information for the client's IP.
ip string IPv4 addressipv6 string IPv6 address (if available)hostname string Reverse DNStype string IP type (Residential, Business, etc.)class string IP class (A, B, C)location object country, countryCode, city, continent, latitude, longitude, timezone, postalCodenetwork object provider, asnsecurity object Security indicators (proxy, VPN, Tor, etc.){
"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 }
}/api/v1/ipv6 Detects whether the client is connecting via IPv4 or IPv6.
ip string Client IP addressis_ipv4 boolean true if IPv4is_ipv6 boolean true if native IPv6protocol string "IPv4" or "IPv6"timestamp string ISO 8601 timestamp{
"ip": "203.0.113.42",
"is_ipv4": true,
"is_ipv6": false,
"protocol": "IPv4",
"timestamp": "2026-03-09T14:30:00Z"
}DNS & Domains
/api/v1/dns Performs a DNS resolution for a given record type.
host required Domain name (e.g., google.com)record_type required Type: A, AAAA, MX, NS, TXT, CNAME, SOA, PTR, SRVhost string Queried domainrecords array List of records: record_type, value, ttl{
"host": "google.com",
"records": [
{ "record_type": "MX", "value": "10 smtp.google.com", "ttl": 300 }
]
}/api/v1/whois Returns WHOIS information for a domain or IP.
target required Domain or IP (e.g., google.com)target string Queried targetraw string Raw WHOIS responseparsed object domain_name, registrar, creation_date, expiration_date, name_servers, status, dnsseccached boolean true if result is from cache{
"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
}/api/v1/ssl Checks the SSL/TLS certificate of a domain by connecting to port 443.
host required Domain name (e.g., google.com)host string Tested domainvalid boolean true if certificate is validdays_remaining number Days until expirationsubject string Subject (CN)issuer string Issuer (CN)issuer_org string Issuer organizationvalid_from string Start date (ISO 8601)valid_to string Expiration date (ISO 8601)serial string Serial numberfingerprint string SHA-256 fingerprintprotocol string TLS protocol (e.g., TLSv1.3)bits number | null Key size in bitsalt_names string[] Subject alternative names (SAN){
"host": "google.com",
"valid": true,
"days_remaining": 62,
"subject": "*.google.com",
"issuer": "GTS CA 1C3",
"protocol": "TLSv1.3",
"alt_names": ["*.google.com", "google.com"]
}Security
/api/v1/blacklist Checks if an IPv4 address is listed in 8 DNS blacklists.
ip required IPv4 address (e.g., 8.8.8.8)ip string Tested IPtotal number Number of lists testedlisted number Number of lists where IP appearsclean boolean true if IP is not on any listresults array Detail per list: name, zone, listed{
"ip": "8.8.8.8",
"total": 8,
"listed": 0,
"clean": true,
"results": [
{ "name": "Spamhaus ZEN", "zone": "zen.spamhaus.org", "listed": false }
]
}Network
/api/v1/ping SSESends ICMP packets and returns results in real-time via Server-Sent Events.
host required Host or IP (e.g., 8.8.8.8)count optional Number of packets (default: 4)start host, resolved_ipreply seq, ip, time_ms, ttltimeout seqdone alive, packets_sent, packets_received, packet_loss, min_ms, avg_ms, max_mserror messagedata: {"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}/api/v1/traceroute SSETraces the network path to a host in real-time via Server-Sent Events.
host required Host or IP (e.g., google.com)start host, resolved_iphop hop, ip, hostname, rtt_msdone total_hops, reachederror messagedata: {"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
All endpoints accept cross-origin requests (CORS).
Ping and traceroute endpoints use Server-Sent Events. EventSource / curl -N
Your API key is shown only once when created. Keep it safe.
API keys are encrypted with AES-256-GCM at rest.
