---
title: "Submit a bug report or feature request"
method: POST
path: "/v1/feedback"
tags: ["Feedback"]
---

# Submit a bug report or feature request

`POST /v1/feedback`

## Request

- Base URL: `https://api.registrum.co.uk`
- URL: `https://api.registrum.co.uk/v1/feedback`
- Auth: API key in header `X-API-Key`

Submit a bug report, feature request, or general feedback.

Feedback is stored and reviewed by the Registrum team.
Include `endpoint` and `company_number` when relevant - it helps reproduce the issue faster.

**Types:**
- `bug` - something is broken or returning unexpected data
- `request` - a new endpoint, field, or capability you'd like to see
- `other` - anything else

**Example:**
```
POST /v1/feedback
{
  "type": "bug",
  "message": "The financials endpoint returns 502 for company 00445790.",
  "endpoint": "/v1/company/00445790/financials",
  "company_number": "00445790"
}
```

## Request body

- FeedbackRequest: Feedback payload.
  - `type` string, required: Feedback type. One of: `bug`, `request`, `other`.
  - `message` string, required: Human-readable description of the issue or request.
  - `endpoint` string, nullable: The API endpoint where you encountered the issue, if applicable.
  - `company_number` string, nullable: UK company number you were querying, if applicable.
  - `request_id` string, nullable: The X-Request-Id header value from the failed response. Including this lets us trace the exact request in our logs.

## Response `200`

Feedback received.

- FeedbackEnvelope: Response envelope for POST /v1/feedback.
  - `status` string: 'success' or 'error'
  - `data` FeedbackReceipt: Acknowledgement that feedback was stored.
    - `message` string, required: Human-readable confirmation that the feedback was received
  - `cached` boolean: True if this response was served from cache rather than fetched live
  - `cache_age_seconds` integer, nullable: How many seconds ago this data was fetched from Companies House (null if not cached)
  - `fetched_at` string, 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_source` string: '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_used` integer: Number of API credits consumed by this request
  - `credits_remaining` integer, nullable: API credits remaining this month (null in dev mode)

## Other responses

- `400`: Invalid feedback type. Must be 'bug', 'request', or 'other'.
- `401`: Missing or invalid API key.
- `422`: Validation error - message must be 10–2000 characters.
- `500`: Internal error saving feedback.

---

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