No key · no account · no charge

Public records, ready to pass on.

Datasets marked open can be read, downloaded, mirrored and built upon without an account, under the listed licences. The API is read-only, allows requests from any website, and carries its sources, licences, dates and coverage limits with the data. Named people and political-finance records keep their separate publication reviews; the public system map does not depend on them.

https://api.taxsorted.io/v1/politics/uk

Release truth: the current corpus has agent and technical screening, not human approval. Production record bodies fail closed until Yu adopts the boundary, reviews the published admission ledger, and a confidential safety-reporting route is live. This page describes the workspace implementation; the public API host may be behind it until an authorised deploy. Once deployed, the catalogue, rights statement and bulk dataset schemas remain readable while bodies are closed.

After this API release is deployed

Check release state in 30 seconds

curl -fsS \
  'https://api.taxsorted.io/v1/politics/uk/datasets' \
  -o taxsorted-politics-catalogue.json

The catalogue distinguishes development-preview, publication-review, approved-disabled, open and emergency-stopped. Only open is an approved hosted release. There is no token or request header to add.

Plain browser JavaScript

Inspect before downloading

const response = await fetch(
  "https://api.taxsorted.io/v1/politics/uk/datasets"
);

if (!response.ok) throw new Error(`TaxSorted returned ${response.status}`);

const { publication, datasets } = await response.json();
console.log(publication.status);
console.log(datasets.map(({ id, availability }) => ({ id, availability })));

This catalogue example does not assume publication approval. Fetch a record body only when its catalogue entry says availability: open.

Made to travel

One catalogue, three useful formats.

Once this API release is deployed, the catalogue remains readable through publication review. Dataset JSON, CSV and NDJSON bodies become downloadable only after the catalogue marks that dataset open.

JSON

A self-describing envelope with dataset metadata, records and links. Best for applications and archiving.

CSV

One record per row. Arrays and objects are canonical JSON inside one cell, so no values are guessed or flattened away.

NDJSON

One complete JSON record per line. Best for streaming, command-line tools and larger mirrors.

Polite mirroring

Ask whether it changed first.

The catalogue, and each static dataset representation once open, has an ETag. Send it back as If-None-Match; an unchanged file returns 304 with no body. ETags differ by format, so keep one beside each JSON, CSV or NDJSON mirror.

curl -fsS \
  --etag-save taxsorted.etag \
  --etag-compare taxsorted.etag \
  'https://api.taxsorted.io/v1/politics/uk/datasets' \
  -o taxsorted-politics-catalogue.json

X-Dataset-Version, X-Schema-Version, X-Record-Count and X-Checksum-SHA256 make unattended checks straightforward.

Keep the meaning

IDs and sources are the join.

  • Stable IDs: dataset and record IDs are permanent identifiers and must not be recycled. A public tombstone ledger is still needed to audit that promise across releases.
  • Schema versions: new optional fields may stay within major version 1; removed fields and required, nullable, type, meaning, primary-key or money-unit changes require a new major.
  • Source IDs: keep sourceIds where present. Source-ledger records carry their own sourceId and official URL.
  • Licences: TaxSorted curation and upstream data can have different terms. Read the mixed-rights statement, then the official-sources dataset before redistribution.
After release: read the source and reuse ledger ↗Read the mixed-rights statement ↗After deployment: read the admission ledger ↗

Reference

Main API doors

GET

The shortest starting response: access terms and links to the catalogue, manifest, sources and OpenAPI document.

GET

/manifest

A stable alias of the current open-dataset catalogue for discovery and automated mirroring.

GET

/datasets

Every distributable dataset, with coverage, record count, versions, fields, licences, source IDs and download URLs.

GET

/datasets/schema

JSON Schema for the shared TaxSorted catalogue and open-dataset envelope.

GET

/datasets/rights

The machine-readable boundary between TaxSorted's curation licence and source-specific rights.

GET

/datasets/admissions

After API deployment: every dataset's purpose, coverage limit, field contract, rights decision, risks, mitigations and pending human decision.

GET

/system

After human release approval: the mapped non-personal foundation for elections, office power, political funding, public money, relationships, enforcement, history and law watch.

GET

/integrity

The public-integrity scope, evidence rule, dataset doors, excluded material and named-person publication-gate state.

GET

/integrity/sources

Official finance, corporate, land and law-enforcement sources with jurisdiction, reuse and personal-data status.

GET

/integrity/corrections

The correction, restriction, privacy-objection, urgent-safety and public-tombstone method; public intake is honestly marked not live yet.

GET

/relationships/schema

The typed evidence-event contract: exact-identifier joins, correction states and no automatic causal inference.

GET

/relationships/datasets

Honest live, mapped, review-gated and licence-gated status for finance and corporate-record sources.

GET

/enforcement/institutions

A first UK-wide institutional map of territorial policing, national enforcement, prosecution and principal oversight.

GET

/enforcement/governance

Typed strategy, appointment, accountability, operational-command, inspection, complaint and prosecution relationships.

GET

/enforcement/ranks

Generic rank families by jurisdiction—not a named roster or live incident command chain.

GET

/enforcement/pay-benefits

Current England and Wales rank ranges plus official pay, allowance, pension and benefits sources, kept separate and effective-dated.

GET

/enforcement/workforce

Aggregate workforce and demographic sources with official suppression and no individual characteristics.

GET

/enforcement/funding

Official police-funding sources; grants, precepts, capital, reserves, budgets and spending remain distinct measures.

GET

/enforcement/activities

Safe institutional activity coverage such as meetings, minutes, reports and speeches; never deployments, tactics or officer logs.

GET

/enforcement/private-security

The SIA, private-security company and individual-licence-check boundary; never a bulk worker directory or a claim of police power.

GET

/enforcement/forces

Live institutional force names from data.police.uk, with stated territorial and source gaps.

GET

/enforcement/power/offices

Draft formal office-power cards with all dimensions and legal constraints visible; no person score or leaderboard.

GET

/enforcement/communication-method

A method-only specification for deterministic surface features in official texts; personality and psychological labels are prohibited.

GET

/elections/process

The UK Parliamentary election chain, responsible actors, public records and stated territorial gaps.

GET

/funding/rules

Effective-dated candidate, party, non-party and regulated-funding rules. This is rules data, not the gated donation register.

GET

/funding/public

Public democratic-support schemes kept separate from private donations and campaign spending.

GET

/power/method

The six-dimension, office-not-person scoring method, rubric and comparison limits.

GET

/power/offices

Provisional office assessments with evidence, checks and neutral 0–5 dimension scores. No global sort or leaderboard.

GET

/budgets/accountability

Public-money responsibility lanes and a status-labelled Main Estimates aggregate snapshot.

GET

/relationships/method

Safe evidence lanes for interests, donations, meetings, lobbying and procurement, including what each record does not prove.

GET

/enforcement/method

Rules for keeping allegations, investigations, findings, sanctions, corrections and appeals distinct.

GET

/history/method

The effective-dated history model, current coverage, privacy boundary and licensed source map.

GET

/law/watch

Proposed political-system legislation, kept explicitly separate from rules currently in force.

GET

/people/5131

One sourced record: offices, roles, activity and election result, with staff and registered interests independently gated and not fetched while closed.

GET

/sources

Coverage, sources, licences and known gaps.

Source-first

Each dataset names its supporting source IDs; the source ledger resolves them to official URLs.

Bounded

Small pages, date limits, upstream timeouts and useful cache headers.

Deliberately less

Private contacts and donor address fields are removed, not redistributed.

Funding licence gate:the Electoral Commission search and downloads remain the official route today. The normalized donations door returns a clear unavailable response until Political Finance Online's database-reuse and attribution terms are confirmed.

Parliamentary information is attributed under the Open Parliament Licence v3.0; applicable GOV.UK material uses the Open Government Licence v3.0. No licence is assumed for a Political Finance Online mirror. Check the publishing method before republishing joined data.