API v1

API Documentation

Public REST API for IP geolocation, network tools and security verification.

REST JSON SSE CORS

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.

Usage

Pass your key via the Authorization header: Authorization

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

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

Tier Per hour Per day Max keys
Public 100 / IP 500 / IP —
Free 1 000 10 000 5
Pro soon
10 000 100 000 20
Response headers

Each response includes headers to track your usage:

X-RateLimit-Limit Maximum allowed requests per hour
X-RateLimit-Remaining Remaining requests in the current window
X-RateLimit-Reset UNIX timestamp of counter reset

Errors

Error codes

In case of error, the response contains an error field with a descriptive message. error

400 Missing or invalid parameter
401 Invalid or revoked API key
429 Request limit exceeded (rate limit)
502 Internal service connection error
500 Internal server error
Format
429 Too Many Requests
{
  "error": "Rate limit exceeded",
  "limit": 100,
  "reset": 1709913600
}

IP & Geolocation

GET /api/v1/json

Returns geolocation, ISP and security information for the client's IP.

JSON Response
ip string IPv4 address
ipv6 string IPv6 address (if available)
hostname string Reverse DNS
type string IP type (Residential, Business, etc.)
class string IP class (A, B, C)
location object country, countryCode, city, continent, latitude, longitude, timezone, postalCode
network object provider, asn
security object Security indicators (proxy, VPN, Tor, etc.)
Example
Request
$curl https://mon-ip.dev/api/v1/json
Response
{
  "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

Detects whether the client is connecting via IPv4 or IPv6.

JSON Response
ip string Client IP address
is_ipv4 boolean true if IPv4
is_ipv6 boolean true if native IPv6
protocol string "IPv4" or "IPv6"
timestamp string ISO 8601 timestamp
Example
Request
$curl https://mon-ip.dev/api/v1/ipv6
Response
{
  "ip": "203.0.113.42",
  "is_ipv4": true,
  "is_ipv6": false,
  "protocol": "IPv4",
  "timestamp": "2026-03-09T14:30:00Z"
}

DNS & Domains

GET /api/v1/dns

Performs a DNS resolution for a given record type.

Parameters
host required Domain name (e.g., google.com)
record_type required Type: A, AAAA, MX, NS, TXT, CNAME, SOA, PTR, SRV
JSON Response
host string Queried domain
records array List of records: record_type, value, ttl
Example
Request
$curl "https://mon-ip.dev/api/v1/dns?host=google.com&record_type=MX"
Response
{
  "host": "google.com",
  "records": [
    { "record_type": "MX", "value": "10 smtp.google.com", "ttl": 300 }
  ]
}
GET /api/v1/whois

Returns WHOIS information for a domain or IP.

Parameters
target required Domain or IP (e.g., google.com)
JSON Response
target string Queried target
raw string Raw WHOIS response
parsed object domain_name, registrar, creation_date, expiration_date, name_servers, status, dnssec
cached boolean true if result is from cache
Example
Request
$curl https://mon-ip.dev/api/v1/whois?target=google.com
Response
{
  "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

Checks the SSL/TLS certificate of a domain by connecting to port 443.

Parameters
host required Domain name (e.g., google.com)
JSON Response
host string Tested domain
valid boolean true if certificate is valid
days_remaining number Days until expiration
subject string Subject (CN)
issuer string Issuer (CN)
issuer_org string Issuer organization
valid_from string Start date (ISO 8601)
valid_to string Expiration date (ISO 8601)
serial string Serial number
fingerprint string SHA-256 fingerprint
protocol string TLS protocol (e.g., TLSv1.3)
bits number | null Key size in bits
alt_names string[] Subject alternative names (SAN)
Example
Request
$curl https://mon-ip.dev/api/v1/ssl?host=google.com
Response
{
  "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

GET /api/v1/blacklist

Checks if an IPv4 address is listed in 8 DNS blacklists.

Parameters
ip required IPv4 address (e.g., 8.8.8.8)
JSON Response
ip string Tested IP
total number Number of lists tested
listed number Number of lists where IP appears
clean boolean true if IP is not on any list
results array Detail per list: name, zone, listed
Example
Request
$curl https://mon-ip.dev/api/v1/blacklist?ip=8.8.8.8
Response
{
  "ip": "8.8.8.8",
  "total": 8,
  "listed": 0,
  "clean": true,
  "results": [
    { "name": "Spamhaus ZEN", "zone": "zen.spamhaus.org", "listed": false }
  ]
}

Network

GET /api/v1/ping SSE

Sends ICMP packets and returns results in real-time via Server-Sent Events.

Parameters
host required Host or IP (e.g., 8.8.8.8)
count optional Number of packets (default: 4)
SSE Events
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
Example
Request
$curl -N "https://mon-ip.dev/api/v1/ping?host=8.8.8.8&count=4"
Response
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

Traces the network path to a host in real-time via Server-Sent Events.

Parameters
host required Host or IP (e.g., google.com)
SSE Events
start host, resolved_ip
hop hop, ip, hostname, rtt_ms
done total_hops, reached
error message
Example
Request
$curl -N https://mon-ip.dev/api/v1/traceroute?host=google.com
Response
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

All endpoints accept cross-origin requests (CORS).

SSE

Ping and traceroute endpoints use Server-Sent Events. EventSource / curl -N

KEY

Your API key is shown only once when created. Keep it safe.

SEC

API keys are encrypted with AES-256-GCM at rest.