Developer interfaces
Lookup, search, graph traversal and change feeds
The same backbone that powers AI training is exposed through stable, documented endpoints — designed for production agents, copilots and analytics.
Lookup API
GET/v1/entities/{id}
Resolve a single canonical entity by SDF ID, Companies House number, domain or VAT number. Returns the unified record with per-field provenance.
GET /v1/entities/SDF_03977902
Authorization: Bearer <token>
200 OK
{
"id": "SDF_03977902",
"name": "Example Holdings Ltd",
"status": "active",
"registered_address": { "postcode": "EC2A 4NE", "lat": 51.522, "lon": -0.082 },
"_provenance": {
"name": { "source": "companies_house", "as_of": "2026-04-12" },
"status": { "source": "companies_house", "as_of": "2026-05-02", "confidence": 0.99 }
}
}Search API
POST/v1/search
Faceted search across entities, contracts, properties and people. Supports filters on geography, sector, financials, ownership and dates.
POST /v1/search
{
"type": "entity",
"filters": {
"postcode_area": "M",
"sic_section": "C",
"employees_gte": 10,
"status": "active"
},
"limit": 50
}Graph traversal
POST/v1/graph/traverse
Walk relationships across the knowledge graph — owners, directors, contracts, suppliers, premises — with depth and edge-type controls.
POST /v1/graph/traverse
{
"start": "SDF_03977902",
"edges": ["owns", "controlled_by", "awarded"],
"depth": 3,
"return": ["entity", "contract"]
}Change feeds
GET (stream)/v1/changes?since={cursor}
Resumable, append-only stream of every change with source, timestamp and previous value. Drives live agent context, alerting and incremental retraining.
GET /v1/changes?since=2026-05-09T00:00:00Z
Accept: text/event-stream
event: entity.updated
data: { "id":"SDF_03977902", "field":"status",
"from":"active", "to":"in_administration",
"source":"insolvency_service", "as_of":"2026-05-10T08:14:00Z" }