Revised

Reveal a domain

Buy one name, and return the row with it. THE ONLY CALL ON THIS API THAT SPENDS: a page of listings never charges for the rows it matched, so on a plan with a monthly ceiling this is how a masked `domain` becomes a real one. It also records the reveal, which a hold requires — `POST /domains/{id}/hold` refuses with `REVEAL_REQUIRED` until this has run for the same listing and the same account. FREE in two cases, both of which still write the ledger entry: the listing is on the `open` tier, whose name is published anyway, or the plan has no reveal ceiling. Idempotent — a repeat call returns the original `revealed_at`, costs nothing and is the safe way to re-read a name you have already bought. Refused with `reveal_code` `QUOTA_EXHAUSTED` (402, carries `resets_at`) when the month's allowance is gone, `FEATURED_REQUIRES_PRO` on a free plan against a featured listing, `HELD_BY_OTHER` while another account holds it, and `NOT_FOUND` once it has left the directory.

POST/api/v1/domains/{id}/reveal

Buy one name, and return the row with it. THE ONLY CALL ON THIS API THAT SPENDS: a page of listings never charges for the rows it matched, so on a plan with a monthly ceiling this is how a masked `domain` becomes a real one. It also records the reveal, which a hold requires — `POST /domains/{id}/hold` refuses with `REVEAL_REQUIRED` until this has run for the same listing and the same account. FREE in two cases, both of which still write the ledger entry: the listing is on the `open` tier, whose name is published anyway, or the plan has no reveal ceiling. Idempotent — a repeat call returns the original `revealed_at`, costs nothing and is the safe way to re-read a name you have already bought. Refused with `reveal_code` `QUOTA_EXHAUSTED` (402, carries `resets_at`) when the month's allowance is gone, `FEATURED_REQUIRES_PRO` on a free plan against a featured listing, `HELD_BY_OTHER` while another account holds it, and `NOT_FOUND` once it has left the directory.

Authorizations

Authorizationstringheaderrequired

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path parameters

idstringrequired

A listing id, exactly as the feed issued it: eight characters, CASE-SENSITIVE — `00aLaXEG`, not `00alaxeg`.

Example: 00aLaXEG

Responses

The listing, in the same shape `GET /domains/{id}` returns, plus when this account first revealed it.

age_yearsany

Age in whole years.

agent_citabilityany

Agent Citability score and the AI-cited sources that link to the domain. Null when the domain has no row in the current index — not a score of zero.

availability_checked_atstring (date-time)

When we last checked that the name is unregistered. Revealing a name in the directory re-checks it on the spot; exports and this API carry the last-checked stamp rather than triggering a check of their own, so read this timestamp before acting on the row.

backlinksany

Banded total backlinks.

categoryany
discovered_atstring (date-time)required

When this listing entered the directory. Written once and never rewritten, which is what `sort=latest` orders by and what makes that ordering safe to page. It is a fact about this directory, not about the domain: it is neither the registration date nor the date the name expired.

domainanyrequired

The registrable name, or NULL where it is withheld. TWO INDEPENDENT REASONS it can be null, and you cannot tell them apart from this field alone. (1) Another account holds the listing (`hold_state: "other"`) — a hold masks the name for every reader, and an unlimited reveal allowance is not an exemption from one; it comes back when their hold ends, and `hold_expires_at` says when. (2) Your plan has a monthly reveal ceiling and you have not revealed this listing: you receive names on the open tier (`tier: "open"`, published on the site anyway) and on anything you have already revealed, and a mask on the rest. `POST /domains/{id}/reveal` buys one. On a plan with no ceiling, only reason (1) applies. `mask_hint` is populated either way and is what to render. Read `tier` before republishing: only an `open` name is public.

domain_authorityany

Banded domain authority, 0-100, from our link graph. Null where we have no figure — not a score of zero.

estimated_value_centsintegerrequired

The valuation model's low bound, in cents, falling back to the reference figure on a row the model has not valued. Nothing here is for sale. This is the SAME number `priceRange` buckets, so a band and the values it returns agree.

featuredboolean
hold_expires_atany

When the active hold on this listing ends. Null when nothing is holding it.

hold_state"none" | "mine" | "other"required

`none`, `mine` (held by this key's account) or `other`. A held listing stays in the directory and stays listed here; what a hold reserves is the right to take it, inside Revised. Who holds it is never disclosed. NOTE: taking, extending or ending a hold does not move `updated_at`, so an incremental `since` poll will not re-deliver a row whose hold state changed — read the listing directly, or `GET /holds` for your own.

Available options: none, mine, other

idstringrequired

Eight characters, CASE-SENSITIVE and mixed case in practice (`00aLaXEG`, `X00w46xl`). Store it verbatim: lower-casing one will not match on the way back.

length_bucketstring
linked_bystring[]

Recognisable domains that link to this one.

mask_hintanyrequired

The public partial mask, e.g. `g▓▓▓▓▓▓farms` — true length, first letter, last word, hyphens. Always present, and the thing to render when `domain` is null. Null only for rows predating the mask backfill; `length_bucket` is the fallback shape.

metrics_missingstring[]required

Which of this row's optional metrics are NULL, by the key they are published under: `age_years`, `agent_citability`, `backlinks`, `category`, `domain_authority`. A null among those is ABSENT DATA, never a zero — an unscored domain is not a DA-0 domain — and the distinction is otherwise invisible in JSON. Empty when the row is complete. Note that the `min_*` filters exclude null rows rather than ranking them low, so a mild-looking floor can drop most of a page.

name_disclosedbooleanrequired

Whether `domain` holds a real registrable name. The same predicate `domain` itself is built from, so the two cannot disagree — false means `domain` is null and `mask_hint` is what to render. This is the discriminator; `mask_hint` is NOT, because it is populated on every row whether or not anything is masked. It is also not a reveal: on a plan with no reveal ceiling every name is disclosed without one having been bought.

referring_domainsany

Banded referring-domain count.

revised_scoreobject

The published Revised Score range. The exact score is not part of the API.

snapshotsstring

Banded archive snapshot count, e.g. `40+`.

spam"low" | "moderate"

Available options: low, moderate

statusstringrequired

Always `active` on a full row. Branch on this to tell a listing from a tombstone.

tier"featured" | "regular" | "open"required

Which shelf this listing sits on, and the only field that says whether its `domain` is PUBLIC. `open` means the name is already published on the site, in the listing page's title and in the sitemap, so you may republish it. `regular` and `featured` names are masked everywhere on the site and are disclosed to you under the API terms only — do not republish them. `featured` additionally means the curated shelf; it is not the same thing as the `featured` boolean, which reads the shelf rank and can disagree.

Available options: featured, regular, open

tldstringrequired
updated_atstring (date-time)required

Feed watermark. What `since` filters on, and the version of this row: with `id` it is what makes a repeated row safe to ignore.

word_countinteger
revealed_atstring (date-time)required
curl --request POST \
  --url "https://getrevised.com/api/v1/domains/00aLaXEG/reveal" \
  --header "Authorization: Bearer YOUR_API_KEY"
{}

Type to search…

↑↓ navigate openesc close