Utility endpoints for integration work — country lookup and fake contact generation.
Generate a test contact
Generate a realistic fake INDIVIDUAL contact for testing. The generator picks a random country, produces locale-appropriate name / address / phone number, and assigns an email from your verified mail domains.
The returned email is guaranteed unique — it's cross-checked against the contacts table before being returned, so you can pass it directly to POST /clients/{clientId}/contacts without duplicate errors.
Generate a test contact › Request Body optional
emailDomainForce a specific email domain. If omitted, a random domain from your verified mail servers is used.
Generate a test contact › Responses
Generated contact
RDAP lookup
Registration data for a domain, straight from the authoritative RDAP server for its TLD (resolved via the IANA bootstrap, with rdap.org as fallback).
Returns both a normalised view (parsed) and the untouched registry response (raw). Results are cached for 30 minutes; pass refresh=1 to bypass.
found: false with an rdapError means the registry answered but has no record — that is a valid answer, not a failure.
Not every TLD publishes RDAP. For those (.ac among them) the lookup returns found: false with rdapError set — the query was answered, there is simply no RDAP service to answer it.
query Parameters
domainDomain to look up.
refreshSet to 1 to bypass the 30-minute cache.
RDAP lookup › Responses
RDAP record
DNS diagnosis + propagation
Full delegation diagnosis for a domain, plus a propagation check across public resolvers worldwide.
chain[] walks the delegation in order — registry delegation, parent/child NS agreement, glue at the parent, nameserver resolution, port 53 reachability, authoritative answer, zone consistency — and each step reports ok: true | false | "warn" with a human-readable detail. healthy is true only when every step passed.
propagation[] queries a dozen public resolvers (Google, Cloudflare, Quad9, Yandex, AdGuard…) and reports what each one currently returns, so you can spot a partially propagated change.
Cached for 5 minutes; pass refresh=1 to force a fresh run.
query Parameters
domainDomain to diagnose.
typeRecord type to check propagation for.
refreshSet to 1 to bypass the 5-minute cache.
DNS diagnosis + propagation › Responses
Diagnosis result
Validate a nameserver host
Checks a single nameserver host (not a domain): does it resolve, and does it answer as a nameserver.
Deliberately lenient — shared/anycast nameservers (Cloudflare and friends) legitimately refuse an SOA for their own hostname, so any valid DNS reply counts as answering. There is no TCP port ping and no glue requirement: out-of-zone nameservers correctly have no glue.
Use this before submitting nameservers on a domain — an invalid host is the most common cause of a rejected NS change.
Checking several hosts
Pass hosts instead of host to validate a whole nameserver set in one call — they are checked concurrently and one bad host never fails the batch: it comes back with ok: false and its own error, while the rest still report normally. Handy right before submitting an NS change, where every host has to be usable.
query Parameters
hostA single nameserver hostname. Returns the flat single-host shape below.
hostsSeveral hostnames, comma or space separated (max 20). Returns { results, total, valid } instead of the flat shape — the response form follows whichever parameter you used, so it never changes under an existing integration.
refreshSet to 1 to bypass the 5-minute cache.
Validate a nameserver host › Responses
Validation result