---
title: "Summarise cited sources"
method: GET
path: "/v1/data/sources/summary"
tags: ["Data Quality"]
---

# Summarise cited sources

`GET /v1/data/sources/summary`

## Request

- Base URL: `https://api.gunspec.io`
- URL: `https://api.gunspec.io/v1/data/sources/summary`
- Auth: one of:
  - none
  - API key in header `X-API-Key`
  - HTTP bearer

The registry totals, and every kind in the source hierarchy with its rank, what it means, example sites, and how many sites and citations of that kind the catalogue holds.

No API key required.

## Response `200`

Summarise cited sources

- object
  - `success` boolean, required: Always true on a successful response. Every error carries `false` and an `error` object instead.
  - `data` object, required: The response payload.
    - `totals` object: The registry as a whole: the sites cited, the citations, and how many sites are classed.
      - `hosts` integer: Sites cited.
      - `citations` integer: Citations.
      - `authority` integer: Sites that are authorities.
      - `unclassified` integer: Sites not yet classed.
    - `kinds` object[]: Every kind, strongest first.
      - `kind` 'manufacturer' | 'standards_body' | 'government' | 'peer_reviewed' | 'reference' | 'aggregator' | 'press' | 'retailer' | 'community' | 'other': The kind.
      - `rank` integer: Its place in the hierarchy: 0 is the strongest.
      - `label` string: What it is called.
      - `description` string: What it means.
      - `examples` string[]: Example sites.
      - `hosts` integer: Sites of this kind the catalogue cites.
      - `citations` integer: Citations of this kind.

## Other responses

- `400`: Validation error
- `429`: A limit was reached. `RATE_LIMITED` is the per-minute limit: wait `Retry-After` seconds (a minute) and retry. `DAILY_CAP_EXCEEDED` is the plan's daily limit, per key: nothing will be served until the counters return to zero at midnight UTC. `MONTHLY_CAP_EXCEEDED` is the plan's monthly allowance, for the whole account: nothing will be served until midnight UTC on the first of next month, or until the plan changes. For both, `Retry-After` is the seconds until then and `error.resetsAt` says when as an instant. Calls made after a refusal are refused too and do not spend the month, and a free key that keeps calling is paused, so stop at the first one and resume at the reset.
- `500`: Internal server error

---

[API](https://skmtc.dev/gunspec/apis/gunspec-io-api.md) · [All operations](https://skmtc.dev/gunspec/apis/gunspec-io-api/llms.txt) · [OpenAPI document](https://skmtc.dev/gunspec/apis/gunspec-io-api/revisions/f2e974d8b05c?raw)
