---
title: "Company report (PDF)"
method: GET
path: "/reports/company/{file}"
tags: ["Documents"]
---

# Company report (PDF)

`GET /reports/company/{file}`

## Request

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

A branded PDF company report: profile, filed figures with trends, owners, officers, charges, filings and the health score, with a reference anyone can check at /verify/{reference}. A company with no filed accounts gets the New Company Report. Included with API Starter (10 a month) and Business (50 a month), counted per calendar month (UTC); an account that also has a web-app plan gets the larger allowance. The response carries `X-Reports-Remaining` and `X-Document-Reference`.

## Path parameters

- `file` string, required

## Query parameters

- `prepared_for` string
- `client_reference` string

## Response `200`

The PDF

## 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`.

---

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