{"openapi":"3.0.3","info":{"title":"Domain Sentinel API","description":"Domain availability and registration data. One endpoint, usable anonymously (rate limited) or with an API key.","version":"1.0.0"},"servers":[{"url":"https://api.domain-sentinel.com"}],"paths":{"/v1/lookup/{domain}":{"get":{"summary":"Look up a domain","description":"Returns availability and registration data for a domain. Sources: RDAP when the TLD has a registered server, WHOIS port 43 for curated registries, DNS delegation check otherwise. Anonymous callers are limited to 5 requests/minute and 50/day per IP.","security":[{},{"bearerAuth":[]}],"parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","example":"example.com"},"description":"Full domain name to check"}],"responses":{"200":{"description":"Lookup result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainLookup"}}}},"400":{"description":"Malformed domain"},"401":{"description":"API key provided but invalid or revoked"},"429":{"description":"Rate limit exceeded (anonymous access)"},"502":{"description":"Upstream registry unreachable"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key created in the dashboard (ds_live_...)"}},"schemas":{"DomainLookup":{"type":"object","required":["domain","available","entities","nameservers","statuses","events"],"properties":{"id":{"type":"string","format":"uuid"},"domain":{"type":"string","example":"example.com"},"available":{"type":"boolean","nullable":true,"description":"true = free, false = registered, null = unknown (see maybeAvailable)"},"checkMethod":{"type":"string","enum":["rdap","whois43","dns"],"description":"Data source used for this answer"},"maybeAvailable":{"type":"boolean","description":"Present and true when the DNS check found no delegation: the domain may be free but no registry source could confirm it"},"ldhName":{"type":"string","nullable":true},"unicodeName":{"type":"string","nullable":true},"handle":{"type":"string","nullable":true},"rdapServer":{"type":"string","nullable":true},"secureDNS":{"type":"boolean","nullable":true},"delegationSigned":{"type":"boolean","nullable":true},"lookedUpAt":{"type":"string","format":"date-time"},"entities":{"type":"array","items":{"$ref":"#/components/schemas/Entity"}},"nameservers":{"type":"array","items":{"$ref":"#/components/schemas/Nameserver"}},"statuses":{"type":"array","items":{"type":"string"}},"events":{"type":"array","items":{"$ref":"#/components/schemas/Event"}}}},"Entity":{"type":"object","properties":{"role":{"type":"string","example":"registrar"},"handle":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"organization":{"type":"string","nullable":true},"ianaId":{"type":"string","nullable":true},"abuseEmail":{"type":"string","nullable":true},"abusePhone":{"type":"string","nullable":true}}},"Nameserver":{"type":"object","properties":{"ldhName":{"type":"string"},"ipv4":{"type":"array","items":{"type":"string"}},"ipv6":{"type":"array","items":{"type":"string"}}}},"Event":{"type":"object","properties":{"eventAction":{"type":"string","example":"expiration"},"eventDate":{"type":"string","format":"date-time","nullable":true}}}}}}