scan

Report

Return the persisted report for domain, else scan once and persist.

Anonymous allowed. Explanations are cache-first (never a fresh LLM call); uncached findings carry explanation: null. The A8 next_steps block is attached at the edge — the persisted row never gains the key.

An over-limit anonymous caller may buy this call (D104): the limiter answers 402 and a verifying X-PAYMENT retry rides a HELD payment into this handler. The settle call is the last statement for that reason — every refusal above it (suppression 404, the per-target budget 429) and any 5xx leaves it unreached, so a payer is only ever charged for a report they actually received.

get/report/{domain}

Request

  • Base URL: https://dnsdoctor.dev/api/v1
  • URL: https://dnsdoctor.dev/api/v1/report/{domain}
  • Auth: none required

Path parameters

domainstring required

Response

Successful Response

domainstring required
scanned_atstring date-time
explanations_pendingboolean
dns_provider_keystring nullable
not_registeredboolean
agent_scannedboolean
indexableboolean required

Thin-page shield: worth indexing only if mail-capable AND substantive.

Mail-capable = any of mx/spf/dmarc observed a record; substantive = at least _MIN_RESOLVED_CHECKS checks resolved (non-TEMPERROR). NXDOMAIN, parked, and garbage domains fail the first gate; half-broken scans fail the second. Non-indexable reports stay fully viewable — they are only noindex + sitemap-excluded. Serializes into report_json; older persisted JSON without the key still validates (computed on read).

dns_providerobject nullable required

The serialized assist-only NS provider, looked up by key at read time.

Mirrors the domain-row dns_provider object: the key is stored, the full object (display name, console URL, guide anchor, collision note) is resolved from the DNS_PROVIDERS table on serialize, so a URL/copy fix never needs a re-scan. A key that no longer exists in the table (or None) serializes as None — the report page then omits the provider mention.

Changes

No recorded changes to this operation across all 2 revisions of this API.