---
title: "All appointments for a person"
method: GET
path: "/officers/person/{name}/appointments"
tags: ["Officers"]
---

# All appointments for a person

`GET /officers/person/{name}/appointments`

## Request

- Base URL: `https://api.companystack.co.uk`
- URL: `https://api.companystack.co.uk/officers/person/{name}/appointments`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Api-Key`

Searches the whole Companies House register of officers for the name (the same search as GET /officers/search, cached for six hours), keeps the people whose name holds every word given, in any order (accents, punctuation, case and titles ignored), and reads the appointments of up to 5 of them (as GET /officers/{officer_id}/appointments, cached for up to 3 days). Appointments are grouped by company, current ones first; each position names the officer_id and name it belongs to, and `people` lists each person with their month and year of birth, so different people who share a name can be told apart. People who have objected cannot be found by name, and appointments withheld at their request are left out. people_matched, people_truncated and people_unavailable say how many people matched, whether more matched than were read, and how many could not be read just now; other_names_found offers up to 5 other names the search found (often Companies House's own spelling) to search again with.

## Path parameters

- `name` string, required

## Query parameters

- `limit` integer

## Response `200`

Appointments grouped by company: { search_name, total_appointments, active_appointments, resigned_appointments, companies_count, companies: [{ company_number, company_name, company_status, sic_code, positions: [{ officer_id, officer_name, officer_role, appointed_on, resigned_on, active }] }], people: [{ officer_id, name, date_of_birth, total_appointments, active_appointments, truncated }], people_matched, people_truncated, people_unavailable, other_names_found }

## Other responses

- `400`: Name shorter than 2 or longer than 100 characters
- `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 reached, or the search allowance is used up (code search_busy); retry after Retry-After seconds

---

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