---
title: "PSC statements"
method: GET
path: "/psc/company/{number}/statements"
tags: ["PSC"]
---

# PSC statements

`GET /psc/company/{number}/statements`

## Request

- Base URL: `https://api.companystack.co.uk`
- URL: `https://api.companystack.co.uk/psc/company/{number}/statements`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Api-Key`

What the company, LLP or partnership has filed instead of, or while it looks for, a person with significant control: "no registrable person", "details not confirmed", "notice not answered" and the rest, in words for the entity, with the date. A company with no PSC on the register may have filed a statement, so an empty PSC list is not "no owner". The list is complete or the request fails: it is served from storage when CompanyStack can prove the stored list complete (the stream is on, without a gap and current, and the list was read in full from Companies House in the last 30 days), otherwise read once from Companies House, otherwise 503 with Retry-After. as_at says when the list was last known current and source whether it was stored or live. Each item carries the statement code, its words, a tone (none: no registrable person; info; attention: an open question), notified_on, ceased_on (set when withdrawn) and linked_psc_name, the person a statement names, which is withheld at the request of the person named. summary gives the current statements at a glance.

## Path parameters

- `number` string, required

## Response `200`

The statements, complete

- PscStatementList
  - `company_number` string, required
  - `total` integer
  - `active` integer
  - `ceased` integer
  - `as_at` string, required: When the list was last known current: the stream's last checkpoint when stored, or when Companies House answered when read live
  - `source` 'stored' | 'live', required
  - `complete` boolean, required: Always true: the list is complete or the request fails with 503
  - `summary` PscStatementSummary: What the current statements mean. available false: the statements could not be read, which is "not checked", never "none".
    - `available` boolean
    - `as_at` string, nullable
    - `source` 'stored' | 'live' | 'null', nullable
    - `current` object[]
      - `statement` string, nullable
      - `text` string
      - `tone` 'none' | 'info' | 'attention'
      - `notified_on` string, date, nullable
    - `no_registrable_person` boolean: A current statement says there is no registrable person
    - `needs_attention` boolean: A current statement is an open question about who controls the entity
  - `items` PscStatement[], required
    - `statement_id` string, nullable
    - `statement` string, nullable: Companies House statement code, e.g. no-individual-or-entity-with-signficant-control, psc-details-not-confirmed
    - `text` string: The statement in words, for the entity (the company, the LLP, the partnership)
    - `tone` 'none' | 'info' | 'attention': none: no registrable person; info: a fact that asks nothing of the reader; attention: an open question about who controls the entity
    - `notified_on` string, date, nullable
    - `ceased_on` string, date, nullable: Set when the statement has been withdrawn
    - `linked_psc_name` string, nullable
    - `restrictions_notice_withdrawal_reason` string, nullable

## Other responses

- `401`: API key missing, malformed or revoked
- `403`: The key's plan does not include this endpoint (`code: plan_upgrade_required`, with `upgrade_url`), the key may not call it, or the key is beyond the plan's key limit after a downgrade (`code: key_limit_exceeded`: the newest keys are paused until keys are deleted or the plan upgraded)
- `429`: Per-minute or per-day limit reached (`code: rate_limited`, `window: minute|day`). Wait `Retry-After` seconds; when both windows are full the day is reported. A refused request does not count against either limit. A bulk lookup (`POST /company/bulk`) counts each company number in it as one request, so one that is more than you have left is refused whole, and the body adds `requested` and `fits`.
- `503`: Companies House could not be read and the stored list cannot be proved complete: not available (never an empty list). Retry-After is set.

---

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