Developer API
One REST endpoint family for IP intelligence — geolocation, network owner, threat-list hits, an explainable score and an actionable BLOCK / REVIEW / ALLOW verdict. JSON in, JSON out, authenticated with a Bearer token.
Quickstart
Three steps from zero to your first dossier.
- Get a key. Create an account (free tier included) and copy your key from API Keys.
- Send it as a Bearer token on every request.
- Make your first call — the liveness check needs no key.
curl http://showmyip.io/api/v1/ping/
# 200 OK
# {"status":"ok","service":"showmyip-api","version":"1.0.0"}
Authentication
Every intelligence endpoint requires an API key as a Bearer token. Keys are created and revoked from your dashboard; each call counts against your plan's monthly quota and per-minute rate limit, both shared across all your keys.
Authorization: Bearer smip_live_xxxxxxxxxxxxxxxxxxxxxxxx
Single lookup
Full dossier for one IPv4 or IPv6 address. Counts as one lookup against your quota.
curl -H "Authorization: Bearer smip_live_xxx" \ http://showmyip.io/api/v1/lookup/8.8.8.8/
import requests
r = requests.get(
"http://showmyip.io/api/v1/lookup/8.8.8.8/",
headers={"Authorization": "Bearer smip_live_xxx"},
)
d = r.json()
print(d["recommendation"], d["score"]) # REVIEW 15
const res = await fetch("http://showmyip.io/api/v1/lookup/8.8.8.8/", {
headers: { Authorization: "Bearer smip_live_xxx" },
});
const d = await res.json();
console.log(d.recommendation, d.score); // REVIEW 15
{
"ip": "8.8.8.8",
"score": 15,
"level": "low",
"connection_type": "Hosting / Datacenter",
"recommendation": "REVIEW",
"fraud": { "score": 50, "risk": "medium" },
"geo": { "country_code": "US", "city": "Mountain View" },
"asn": { "asn": 15169, "organization": "Google LLC" },
"threats": [],
"reverse_dns": "dns.google",
"badges": ["DATACENTER"]
}
Bulk lookup
Investigate many addresses in one request (paid plans). Every IP in the batch counts against your quota; the batch size is capped by your plan.
curl -X POST http://showmyip.io/api/v1/bulk \
-H "Authorization: Bearer smip_live_xxx" \
-H "Content-Type: application/json" \
-d '{"ips": ["8.8.8.8", "1.1.1.1", "45.15.21.0"]}'
{
"count": 3,
"results": [
{ "ip": "8.8.8.8", "recommendation": "REVIEW", "score": 15 },
{ "ip": "1.1.1.1", "recommendation": "ALLOW", "score": 0 }
]
}
Network (ASN)
Address space, country footprint, threat overlap and a network-level risk score for an autonomous system. Counts as one lookup.
curl -H "Authorization: Bearer smip_live_xxx" \ http://showmyip.io/api/v1/network/9009/
{
"asn": 9009,
"organization": "M247 Europe SRL",
"risk": { "score": 70, "level": "high", "badges": ["TOR", "BLOCKLIST"] },
"address_space": { "announced_ranges": 2280, "ipv4_addresses": 1532160 },
"threats": { "total": 29, "by_category": { "tor": 3, "blocklist": 26 } }
}
Account
Your current plan, quota and month-to-date usage — for building your own dashboards or alerting. Requires a key; does not count against your quota.
curl -H "Authorization: Bearer smip_live_xxx" \ http://showmyip.io/api/v1/account/
{
"plan": "Growth",
"monthly_quota": 2000000,
"used_this_month": 6333,
"remaining": 1993667,
"rate_limit_per_min": 300,
"bulk_limit": 500,
"period": "2026-06"
}
Key response fields
The fields you'll read on most integrations. The full schema lives in the dashboard API console.
| Field | Type | Description |
|---|---|---|
| score | int | Explainable threat score, 0–100. |
| level | string | clean · low · elevated · high |
| recommendation | string | Actionable verdict: ALLOW REVIEW BLOCK |
| fraud | object | Fraud/abuse risk tuned for signup & checkout: score 0–100, risk band (minimal→critical), and factors. |
| connection_type | string | Residential / ISP · Hosting / Datacenter · Tor exit · Proxy / VPN. |
| geo | object | country_code, city, region, latitude, longitude. |
| asn | object | asn number + organization (the network owner). |
| cloud | object | Public-cloud attribution when the IP is in a known range: provider (AWS, GCP, Azure, Oracle, DigitalOcean, Cloudflare), region, service. null otherwise. |
| threats | array | Matched threat lists (Tor, FireHOL, …) with category. |
| badges | array | Quick tags: CLEAN, TOR, BLOCKLIST, DATACENTER. |
Plan limits
Every response carries X-Quota-Remaining and X-RateLimit-Limit headers so you can track usage in-band.
| Plan | Monthly quota | Rate limit | Bulk batch |
|---|
Status codes
| Code | Meaning |
|---|---|
| 200 | OK. |
| 400 | Invalid IP, malformed body, or batch over your plan's limit. |
| 401 | Missing, invalid, or revoked API key. |
| 403 | Feature not on your plan (e.g. bulk on Free). |
| 429 | Monthly quota or per-minute rate limit exceeded. |