API & curl

Every page also answers in plain text and JSON. No key, no signup.

From a terminal

curl aaaa.bot                    # your IP and whether you came over IPv4 or IPv6
curl aaaa.bot/example.com        # does example.com have IPv6?
curl aaaa.bot/93.184.216.34      # every IPv6 form of an IPv4
curl aaaa.bot/2001:db8::1        # what kind of IPv6 address this is
curl -4 v4.aaaa.bot/ip           # your IPv4 (fails if you have none)
curl -6 v6.aaaa.bot/ip           # your IPv6 (fails if you have none)

JSON

GET https://aaaa.bot/api/v1/{domain or IP}
GET https://aaaa.bot/ip           # {"ip":"…","family":"IPv4"|"IPv6"}

Or send Accept: application/json to any result page. CORS is open, so you can call it from a browser.

{
  "kind": "host",
  "report": {
    "host": "example.com",
    "verdict": "dual-stack",
    "a":    { "status": "found", "values": ["…"], "ttl": 300 },
    "aaaa": { "status": "found", "values": ["…"], "ttl": 300 },
    "www":  { … }
  }
}

verdict is one of dual-stack, ipv4-only, ipv6-only, no-address, not-found, unknown. Each lookup's status is found, absent, nxdomain or failed. A failed lookup is never reported as "no IPv6".

Limits

Domain lookups are limited to 30 a minute per IP and cached for up to five minutes. IP conversions are free of limits — they don't touch the network.