Skip to main content
This page records changes to the API contract and to behaviour worth knowing about: new fields, renames, breaking changes. Each entry names the release it shipped in. The release is info.version in the OpenAPI spec. See Versioning.
Entries start at release 1.0.0, the first numbered release. Changes made during the earlier beta were not tracked.

Conventions

Entries are tagged so you can scan for the kind of change that affects you:
  • Breaking: you must change your integration. Always listed first.
  • Added: new endpoint, field, or capability. Safe to ignore if you don’t use it.
  • Changed: non-breaking change to existing behaviour.
  • Deprecated: still works but scheduled for removal. Start migrating.
  • Removed: no longer available.
  • Fixed: bug fix bringing actual behaviour in line with documented behaviour.

History

2026-09-30: release 1.2.0

  • Added: company_status on every match result: the matched company’s status as Companies House reports it, such as Active, Active - but in an unusual state (Active with Dormant Accounts) or Struck off (Dissolved). The response reference lists the values.
  • Deprecated: active. It still says whether the matched company is not dissolved ("True" or "False"), but company_status says more, and active will be removed in the next API version.
  • Fixed: active was "False" on most matches and missing on exact-name matches, whatever the company’s status. It is now correct on every match.
  • Changed: an exact registered name is now resolved against our own daily copy of the Companies House register, so such a match returns without waiting on an upstream lookup. Where several registered companies share the name, the one in the healthiest status is preferred: active before dormant, dormant before dissolved. Matching of names that are not an exact registered name is unchanged.

2026-09-25: release 1.1.2

  • Fixed: a batch that was running while we deployed an update could report more rows completed than it contains, because a few rows were matched twice. Progress now stays exact across updates. The results themselves were not affected.

2026-09-25: release 1.1.1

  • Changed: batch jobs now match several companies at once, so a large batch finishes sooner. Each batch returns the same results as before, and the API contract is unchanged.

2026-09-09: release 1.1.0

  • Changed: the match endpoints now declare 404, 409 and 500 in the OpenAPI spec, so the Endpoints pages and any client generated from the spec list every status a route can return. What the endpoints do is unchanged.
  • Changed: submitted request bodies are cleared from usage records 30 days after the call. The usage metadata for that call is kept: the endpoint, the number of companies, the response status and the processing time.
  • Changed: cached responses from upstream company-data sources are deleted after 180 days. Before this release they stopped being used at that age but were not removed.
  • Changed: submitted company fields and match results are no longer written to application log records. A log entry identifies a request by the id you supply and by our own job and row identifiers.
The response reference now sets out how route and rigorous_match derive the confidence band. That behaviour has not changed; it was undocumented.

2026-09-04: release 1.0.1

  • Fixed: deployment fix only. No change to the API contract.

2026-09-04: release 1.0.0

First numbered release. The URL prefix stays /api/v1.
  • Breaking: request field postcode renamed to input_postcode.
  • Breaking: response field matched_postcode renamed to matched_registered_postcode. It holds the registered office postcode of the matched company.
Requests that still send postcode are not rejected. The API returns 200 and ignores the unknown field, so the postcode stops contributing to matching and you get no error. Rename the field.
Last modified on October 7, 2026