Infrastructure

Intelligent caching — built in

Every Registrum response is cached automatically. You never hit the Companies House rate limit. Even when CH goes down, your app keeps working.

The same request — two very different experiences

Direct Companies House API
Your app
Makes request
~480 ms
Companies House API
600 req/5min limit
parse iXBRL yourself
Your app
Handles errors, rate limits

Pain points

  • • 600 req / 5 min hard cap — one busy feature can exhaust it
  • • CH outages propagate directly to your users
  • • Financial data: separate iXBRL download + parse
  • • No caching — every call is a fresh upstream request
Via Registrum
Your app
Makes request
~8 ms (cache hit)
Registrum cache
Supabase · 24h TTL

Cache miss only (first request, or after TTL):

~480 ms
Companies House API
Buffered via circuit breaker
Your app
Clean JSON · no parsing

What you get

  • • Cache hit: ~8 ms response time
  • • CH outage: stale cache served, X-Data-Stale header set
  • • Financial data: already parsed, in the same response
  • • Circuit breaker: bad upstream trips automatically

Cache TTLs by endpoint

EndpointTTLRationale
/v1/company/{number}24 hoursCompany status changes infrequently; directors, SIC, addresses are stable day-to-day
/v1/company/{number}/financials7 daysAccounts are filed annually; iXBRL parsing is expensive — no point re-parsing daily
/v1/company/{number}/directors24 hoursAppointment changes are filed within days; a 24h window is accurate enough
/v1/company/{number}/network24 hoursNetwork derives from director data — same cadence
/v1/search1 hourCompany name/status changes rarely; search index updates are gradual

What happens during a CH outage?

Companies House goes down several times a year — for maintenance, deployments, or unexpectedly. With a direct integration, that outage becomes your problem. With Registrum, it doesn't.

T+0
CH goes down
Companies House returns 5xx errors
T+0
Circuit breaker trips
Registrum detects upstream failure, stops forwarding requests
T+0 → T+outage
Stale cache served
All requests return cached data with X-Data-Stale: true header
T+recovery
CH recovers
Circuit breaker resets. Cache refreshes on next request per endpoint TTL

# Response during CH outage (stale cache served)

HTTP/1.1 200 OK

X-Data-Stale: true

X-Cache-Age: 14423

X-Request-Id: a3f1...

{

"company_name": "TESCO PLC",

"cached": true

}

Your app receives data. The X-Data-Stale: true header tells you it's from cache, so you can surface that transparently to your users if needed — or silently absorb it.

Stop worrying about rate limits

The free tier gives you 50 calls/month with caching and circuit breaker included. No extra configuration required.