---
title: "Director & PSC identity verification status (ECCTA)"
method: GET
path: "/compliance/identity/{number}"
tags: ["Compliance"]
---

# Director & PSC identity verification status (ECCTA)

`GET /compliance/identity/{number}`

## Request

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

Every officer and PSC with their Companies House identity verification dates and a status: verified (a verification statement for the role is on the register and has not ended), overdue, due_soon, pending, not_yet_scheduled (no date shown or worked out), ended (the statement was removed and no new date is shown) or not_applicable. deadline_basis says whether a date is the one Companies House shows (companies_house) or was worked out from the rules (derived_confirmation_statement, derived_birth_month, derived_psc_director). The 12-month transition for existing directors and PSCs runs from 18 November 2025; their due dates follow the confirmation statement or birth month, so some run to 30 November or 1 December 2026. status "verified" follows the register: a statement supplied on or before today whose end date (9999-12-31 while live) has not passed. Data is read from Companies House and cached for 24 hours (`refresh=true` forces a refresh).

## Path parameters

- `number` string, required

## Query parameters

- `refresh` boolean

## Response `200`

Status per person and summary

## 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)
- `404`: Company not found
- `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 unavailable and nothing cached

---

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