---
title: "Read a Wikidata item"
method: GET
path: "/api/wikidata/items/{qid}"
tags: ["Proposing changes"]
---

# Read a Wikidata item

`GET /api/wikidata/items/{qid}`

## Request

- Base URL: `https://verifiedhandles.org`
- URL: `https://verifiedhandles.org/api/wikidata/items/{qid}`
- Auth: HTTP bearer

What a Wikidata item says, the way the Wikidata sync would store it: label, description, image and handles, with the entries already on it. For proposing what it says onto an entry. It asks Wikidata within a lookup budget per account and for the site, behind a short cache; over budget, or when Wikidata does not answer, a 503: try again in a minute.

## Path parameters

- `qid` string, required

## Response `200`

The item.

- WikidataItem: What one Wikidata item says, mapped the way the sync maps it.
  - `qid` string, required: The item asked for.
  - `resolved_qid` string: Present when Wikidata merged it: the item it now redirects to.
  - `label` string, nullable, required
  - `description` string, nullable, required
  - `image` object, nullable, required
    - `filename` string, required: The item’s image on Wikimedia Commons.
    - `token` string, required: Proves the file came from this look-up, for adding it to the site.
  - `handles` object[], required: The handles the item states, as the Wikidata sync would store them.
    - `platform_id` string, required
    - `value` string, required
    - `value_norm` string, required: Its key as the site stores it (letter case folded where the platform ignores it): the same handle as an entry’s with an equal `value_norm` (`GET /api/editor/{vhid}`).
  - `entries_on_item` object[], required: The live entries already on the item.
    - `vhid` string, required
    - `short` string, nullable, required
    - `title` string, required

## Other responses

- `400`: Not a QID (`bad_qid`). Or the request sent a key and a session cookie together (`bearer_with_cookie`): send one.
- `401`: No key was sent (`auth_required`), or the key was refused: unknown, revoked or expired, its holder may no longer use keys, or this instance takes none. Carries `WWW-Authenticate: Bearer`. After 60 refused keys from one IP address in a minute, every key from there is answered `429` (text, with `Retry-After`) until the minute is up.
- `403`: The account may not propose (`forbidden`). A read-only key tried to change something (`read_only_key`), or the account is blocked (`forbidden`).
- `404`: Wikidata has no such item.
- `429`: Too many changes in the last minute: counted per IP address, per account and per key (an admin key’s per key alone, at the limit set on Console → Rate limits). Wait the number of seconds `Retry-After` gives.
- `503`: Over the lookup budget, or Wikidata did not answer (JSON, with `Retry-After: 60`); or the site is down for maintenance (an HTML page).

---

[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)
