POST/v1/developers/signup
Create a developer account
Responses
- 201
- Default Response
- 400
- Default Response
- 401
- Default Response
- 409
- Default Response
The published contract for the metered developer API. Every path below sits under /v1/api, is GET, returns JSON, and requires an API key.
Base URL https://api.registryradar.app · Machine-readable at /api/openapi.json · Narrative documentation, examples and error handling on the documentation page.
Rendered from the running API. This page read the spec from https://api.registryradar.app/v1/api/openapi.json and is as current as the deployment serving it.
Present the key in a header. Never in a query string — a request whose URL carries one is rejected with 400 even when the key is valid, because URLs reach access logs, browser history and referrer headers.
Authorization: Bearer rr_live_YOUR_KEY
# or
X-API-Key: rr_live_YOUR_KEYRadius search. Results are filtered by your key's declared purpose: some jurisdictions restrict by statute what their records may be used for, and `withheld` tells you how many records were removed and why. A `withheld` above zero means we hold records there that your purpose may not receive — it does not mean the area is clear.
Everything the source registry published for a single record: address, offences, demographics, aliases and the link back to the originating registry. Search returns a lean shape so a wide query stays small; this is where the rest lives. A record your purpose may not receive answers **403 `record_withheld`**, NOT 404. Those are different facts — 404 says the record does not exist, and reporting a record we are holding back as one that does not exist is the exact confusion between "no data" and "no risk" this API refuses to make anywhere else.
The same numbers as the `X-Quota-*` response headers, as a body — because a client that wants to check before a batch should not have to make a billable call and read its headers to find out. `limit` and `remaining` are **null** on an unmetered key (every test key, and negotiated enterprise plans). Null is not zero: rendering it as zero would report an unlimited key as an exhausted one. This call is itself metered, so `remaining` already accounts for it.
What we actually hold right now, so a buyer can verify the numbers on the pricing page rather than take them on trust — the counts here are computed from the loaded datasets, not written down. `liveRecords` and `lastSyncedAt` are **null**, not zero, when the record store cannot be reached. An integration that treats a degraded read as "0 records" would report an outage as an all-clear, which is the one failure this API exists to prevent. Reference datasets are compiled in and stay available either way. For liveness probes use the unauthenticated `GET /healthz` instead: it needs no key and costs no quota.
Our own research: 176 countries, each with its legal position, the operating body, and how an ordinary person checks. Not derived from any registry feed, so it carries no third-party use restriction.
All 50 states, DC and the five territories. `addressPrecision` records what the public site PUBLISHES, not what the state knows — several publish only a ZIP or a block, and Oregon publishes about 6% of its registrants at all. Null means we could not establish it, never that the state publishes nothing.
About 152 federally recognised tribes elected to be SORNA registration jurisdictions in their own right. 123 publish their own search, and for those the surrounding state registry does NOT hold their records — so a state-only integration silently misses that land.
The permitted-use position for every jurisdiction we serve, and what your own key's declared purpose can receive. Published because no competitor tells you this and because getting it wrong is your liability as well as ours.
For the 120 countries with no public registry, this is the practical answer: the vetting certificate or barred list that does exist, and crucially WHO may request it. That last field is the one most often got wrong — in Croatia the individual legally cannot request their own, in Canada the hiring organisation must initiate it. `independentlyVerified` says whether a second agent re-read the primary document; treat false as unaudited rather than wrong.
The machine-readable contract for `/v1/api/*` and `/v1/developers/*`. No API key required — you need this before you have one. Feed it to Postman, `openapi-generator`, or your own tooling.
Two fields on the record search determine whether what you build tells your users the truth. covered says whether we mirror any registry covering that point — false with an empty list means we cannot see there, not that nobody is there. withheldsays how many records we hold for that area but did not serve for your key's declared purpose, because several jurisdictions restrict by statute what their records may be used for. Neither an empty list nor a filtered one is an all-clear.
The per-jurisdiction position is published at GET /v1/api/policy and summarised on the datasets page.