VellumKite / API v1
A quiet contract for live data.
Use one bearer key to query a refreshed, normalized public-register snapshot. Every record carries its source, provenance, refresh time, and schema version.
REST / JSON / bearer API key / schema v1
GET /api/vellumkite-register/{registrationId}
Normalized record
{
"id": "normalized-record-id",
"sourceRecordId": "08209948",
"operatorName": "Example Operator Ltd",
"registrationId": "08209948",
"status": "active",
"sourceUrl": "https://download.companieshouse.gov.uk/BasicCompanyData-2026-09-01-part1_7.zip",
"refreshedAt": "2026-09-14T02:00:19.365Z",
"licenseNote": "Companies House register data provenance.",
"schemaVersion": "v1"
}Copy, then adapt
The useful failure modes are documented too.
Lookup one record
Fetch a normalized record by registration ID.
request / response
curl --request GET \
--url 'https://your-app.example/api/vellumkite-register/08209948' \
--header 'Authorization: Bearer vk_live_your_api_key'Search with pagination
Search operator names or IDs with one-based pagination.
request / response
curl --request GET \
--url 'https://your-app.example/api/vellumkite-register?q=northline&page=1&pageSize=25' \
--header 'Authorization: Bearer vk_live_your_api_key'401 · authentication failure
Missing, invalid, or revoked bearer keys are rejected before lookup.
request / response
HTTP/1.1 401 Unauthorized
{"error":"A valid API key is required."}400 · validation failure
page must be at least 1 and pageSize must be between 1 and 100.
request / response
HTTP/1.1 400 Bad Request
{"errors":{"page":"Number must be greater than or equal to 1.","pageSize":"Number must be less than or equal to 100."}}Rate limits
Each API key may make 100 authenticated GET requests per one-minute window. Responses include X-RateLimit-* headers.
When the quota is exhausted, the API returns 429, a Retry-After header, and a JSON body with the number of seconds to wait.