---
title: "Get domain analysis history"
method: GET
path: "/domains/{domain}/history"
tags: ["domains"]
---

# Get domain analysis history

`GET /domains/{domain}/history`

## Request

- Base URL: `https://api.whoisgeni.us` (the document declares no server; this is the origin it was published from)
- URL: `https://api.whoisgeni.us/domains/{domain}/history`
- Auth: none declared

Get chronological analysis history for a domain.

Returns paginated analysis runs with entity attribution, confidence
scores, and diffs between consecutive runs showing entity, registrar,
nameserver, and confidence changes.

Supports cursor-based pagination via the ``before`` parameter (ISO 8601
timestamp from ``next_cursor`` in a previous response).

When ``include_external`` is True, merges pre-WhoisGenius ownership
history from the WHOIS History API into the timeline. External entries
are labeled ``source: external`` and only include records that predate
the earliest local analysis. Costs 50 credits per call.

Returns 404 if the domain has never been analyzed.

## Path parameters

- `domain` string, required

## Query parameters

- `limit` integer
- `before` string, nullable: Cursor: ISO 8601 timestamp for pagination
- `include_external` boolean: Include pre-WhoisGenius ownership history from WHOIS History API (50 credits)

## Headers

- `X-API-Key` string, nullable

## Response `200`

Successful Response

- ApiResponseHistoryResponse
  - `data` HistoryResponse: Paginated history of analysis runs for a domain. Attributes: domain: The domain name queried. total_runs: Total number of completed/partial runs for this domain. entries: List of history entries (newest first). next_cursor: Cursor for the next page (completed_at ISO timestamp). has_more: Whether more entries exist beyond this page.
    - `domain` string, required
    - `total_runs` integer, required
    - `entries` HistoryEntry[], required
      - `analysis_run_id` string, nullable
      - `completed_at` string, required
      - `status` string, required
      - `entity` string, required
      - `entity_type` string, required
      - `confidence` number, required
      - `registrar` string, nullable
      - `nameservers` string[]
      - `verdict` string, nullable
      - `verdict_operator` string, nullable
      - `diff` RunDiff: Diff between this run and the previous run. All change fields are None when unchanged. The entire diff is None for the first run in a domain's history (no previous run to compare). Attributes: entity: Entity attribution change (from/to display names). confidence_delta: Change in top-entity confidence score. registrar: Registrar change (from/to). nameservers: Nameserver additions and removals. verdict: Attribution verdict transition, when both runs have a verdict. significance: Whether this change is worth acting on -- ``material`` (an operator/verdict/registrar/NS-migration event a monitor would alert on), ``minor`` (a timeline detail), or ``none``. significance_reasons: Ordered, human-readable reasons for the significance classification (most significant first).
        - `entity` FieldChange: A single field that changed between consecutive runs. Attributes: from_value: Previous value (serialized as "from"). to_value: Current value (serialized as "to").
          - `from` string, required
          - `to` string, required
        - `confidence_delta` number, nullable
        - `registrar` FieldChange: A single field that changed between consecutive runs. Attributes: from_value: Previous value (serialized as "from"). to_value: Current value (serialized as "to").
          - `from` string, required
          - `to` string, required
        - `nameservers` NameserverDiff: Nameserver additions and removals between consecutive runs. Attributes: added: Nameservers present in current but not previous run. removed: Nameservers present in previous but not current run.
          - `added` string[]
          - `removed` string[]
        - `verdict` VerdictChange: A change in the attribution verdict between consecutive runs. Populated only when both runs carry an attribution verdict (runs persisted before verdicts existed have ``verdict=None`` and produce no VerdictChange). ``direction`` is relative to the tier ordinal: ``upgrade`` when attribution strengthened, ``downgrade`` when it weakened, ``lateral`` when the tier held but the operator identity changed. Attributes: from_tier: Previous verdict tier (serialized as "from"). to_tier: Current verdict tier (serialized as "to"). direction: upgrade, downgrade, or lateral. operator: Operator identity change, when the named operator differs.
          - `from` string, required
          - `to` string, required
          - `direction` 'upgrade' | 'downgrade' | 'lateral', required
          - `operator` FieldChange: A single field that changed between consecutive runs. Attributes: from_value: Previous value (serialized as "from"). to_value: Current value (serialized as "to").
            - `from` string, required
            - `to` string, required
        - `significance` 'material' | 'minor' | 'none'
        - `significance_reasons` string[]
      - `source` string
    - `next_cursor` string, nullable
    - `has_more` boolean
  - `error` ErrorDetail: Structured error information for API error responses. Attributes: code: Machine-readable error code (e.g. "JOB_NOT_FOUND"). message: Human-readable error description. details: Optional additional context for debugging.
    - `code` string, required
    - `message` string, required
    - `details` object, nullable
  - `meta` object, nullable

## Other responses

- `401`: Unauthorized — missing or invalid API key/JWT.
- `404`: Domain not found
- `422`: Validation Error

---

[API](https://skmtc.dev/whoisgeni/apis/whoisgenius.md) · [All operations](https://skmtc.dev/whoisgeni/apis/whoisgenius/llms.txt) · [OpenAPI document](https://skmtc.dev/whoisgeni/apis/whoisgenius/revisions/707f1c34f6b3?raw)
