Directors

Get company directors with their other appointments

Get all directors for a company, split into current and past, with their other board appointments.

For each director, the response includes every other company they sit on (or have sat on), enabling you to map connections between companies through shared board members.

  • current_directors - officers with no resignation date, including secretaries (never filtered - a secretary is a real officer that KYB checks need to see)
  • past_directors - officers who have resigned
  • other_appointments - every other company each director is or was appointed to

Each director carries ECCTA identity verification state: verification_status (verified | pending | overdue | unknown | not_applicable), verification_deadline (this person's own CH-authoritative deadline, only set when pending or overdue), and is_board_director (true for every officer except secretaries - a corporate-director IS a board director even though it cannot personally verify an identity, so verification_status is not_applicable for it while is_board_director stays true). pending means a deadline has been recorded but has NOT passed - nothing has been missed. Top-level counts (directors_verified, directors_pending, directors_overdue, directors_unknown, directors_verification_required) exclude officers ECCTA does not apply to (corporate officers and secretaries), so they can be smaller than total_current.

Data is cached for 30 days. If the Companies House API is down, stale cached data is returned with cached: true in the response.

Example: /v1/company/00445790/directors returns all Tesco PLC directors.


Upstream usage: This endpoint is upstream-intensive on first fetch. It makes 1 call per director (to retrieve their appointment history), plus 1–2 calls for the officer list itself. A company with 10 directors uses ~12 upstream calls; a company with 50 directors uses ~52. After the first fetch, the result is cached for 30 days and subsequent calls are free.

At high volume, querying more than ~8 different companies per minute on cold cache will cause responses to slow while upstream capacity recovers (typically 5–15 seconds). For bulk use cases, space requests out or pre-warm the cache during off-peak hours.

get/v1/company/{company_number}/directors

Request

  • Base URL: https://api.registrum.co.uk
  • URL: https://api.registrum.co.uk/v1/company/{company_number}/directors
  • Auth: API key in header X-API-Key

Path parameters

company_numberstring required

The Companies House company number. 8 alphanumeric characters (e.g., 00445790 for Tesco PLC). Numeric-only numbers are automatically zero-padded.

Example:00445790

Response

Directors list returned successfully, split into current and past

statusstring

'success' or 'error'

cachedboolean

True if this response was served from cache rather than fetched live

cache_age_secondsinteger nullable

How many seconds ago this data was fetched from Companies House (null if not cached)

fetched_atstring nullable

ISO 8601 instant (UTC) when this data was actually fetched from Companies House. Use this, not cache_age_seconds, to show a user when the data was last checked: an age is measured at the moment this response was produced, so anything that caches the response downstream will overstate freshness by however long it held it. This instant does not drift. Null when unknown - render nothing rather than a guessed date.

data_sourcestring

'live' - fetched from Companies House right now; 'cached' - served from local cache (data is recent, no upstream call needed); 'cached_rate_conserved' - served from cache because the CH API budget is above 70% utilisation; data may be up to 30 days old in this state

credits_usedinteger

Number of API credits consumed by this request

credits_remaininginteger nullable

API credits remaining this month (null in dev mode)

Example response

{
  "cache_age_seconds": 3421,
  "cached": true,
  "credits_remaining": 487,
  "credits_used": 1,
  "data": {
    "company_age_years": 78,
    "company_name": "TESCO PLC",
    "company_number": "00445790",
    "company_status": "active",
    "company_type": "plc"
  },
  "data_source": "cached",
  "status": "success"
}

Changes

No recorded changes to this operation across all 1 revision of this API.