---
title: "Get an entry’s revision history"
method: GET
path: "/api/v1/entities/{vhid}/history"
tags: ["History"]
---

# Get an entry’s revision history

`GET /api/v1/entities/{vhid}/history`

## Request

- Base URL: `https://verifiedhandles.org`
- URL: `https://verifiedhandles.org/api/v1/entities/{vhid}/history`
- Auth: none required

The entry’s public revision history, newest first, a page at a time: the history kept from the old wiki and every edit made since. Hidden and deleted revisions are never listed, and an editor is named only if they chose to be. A merged entry’s key answers with that entry’s own history, and `merged_into` names the entry it became. An entry whose history has been hidden answers 404.

Any origin may read it: `Access-Control-Allow-Origin: *`, methods GET and OPTIONS, no credentials. An `OPTIONS` preflight answers 204. No key is needed. A request that sends one (`Authorization: Bearer`) has it checked, so a wrong, revoked or expired key is refused 401, and is counted against the key’s read limit; it gets the same answer, marked `no-store`.

## Path parameters

- `vhid` string, required

## Query parameters

- `limit` integer
- `offset` integer

## Response `200`

A page of the history.

- EntityHistory: A page of an entry’s public revision history, newest first.
  - `vhid` string, required: The entry’s VHID: 11 digits, permanent.
  - `merged_into` string: Present when the entry was merged into another: that entry’s VHID. The history is still the merged entry’s own.
  - `limit` integer, required: The page size used: the `limit` asked for, clamped to the endpoint’s range.
  - `offset` integer, required: The offset used: the `offset` asked for, clamped to 0–10,000.
  - `next_offset` integer, nullable, required: The `offset` of the next page, or null when this is the last one. Follow it rather than computing it.
  - `history` Revision[], required: Newest first.
    - `ref_id` string, required: The revision’s id: `a<n>` for the history kept from the old wiki, `r<n>` for an edit made since.
    - `kind` 'archive' | 'forward', required: `archive`: from the old wiki. `forward`: made on Verified Handles.
    - `ts` string, date-time, nullable, required: When it was made.
    - `actor` string, nullable, required: Who made it, as they chose to be named in public; null when they keep their name private.
    - `summary` string, nullable, required: The edit summary.
    - `is_bot` boolean, nullable, required: Made by an automated process (the Wikidata sync, an import).
    - `source` 'import' | 'mediawiki' | 'sync' | 'admin' | 'trusted' | 'submission' | 'claim', required: How the edit was made.
    - `hidden` false, required: Always false here: a hidden revision is never in the public history.
    - `deleted` false, required: Always false here: a deleted revision is never in the public history.
    - `proposer` string, nullable, required: For an approved proposal, who proposed it, as they chose to be named; null otherwise.

## Other responses

- `404`: No public entry answers to that key, or its history is hidden.
- `429`: Too many requests from this IP address in the last minute (at a route that takes a key, an admin key’s are counted per key instead, at the limits set on Console → Rate limits). Wait the number of seconds `Retry-After` gives.
- `503`: The site is down for maintenance. The body is the maintenance page, as HTML. Try again later: `Retry-After` gives the seconds.

---

[API](https://skmtc.dev/verifiedhandles/apis/verified-handles-api.md) · [All operations](https://skmtc.dev/verifiedhandles/apis/verified-handles-api/llms.txt) · [OpenAPI document](https://skmtc.dev/verifiedhandles/apis/verified-handles-api/revisions/40720de2e0ec?raw)
