API Reference
Ledger API
Immutable ledger records, certificates, and chain integrity
Endpoints in this group
- GET
/v1/ledger/records - GET
/v1/ledger/records/{id} - GET
/v1/ledger/records/{id}/certificate - POST
/v1/ledger/records/{id}/certificate - GET
/v1/ledger/certificates - GET
/v1/ledger/certificates/{id} - GET
/v1/ledger/integrity - POST
/v1/ledger/integrity/verify - GET
/v1/ledger/integrity/records/{id}/discrepancy - POST
/v1/ledger/integrity/records/{id}/restore - GET
/v1/ledger/integrity/missing/{sequenceNumber}
/v1/ledger/recordsList ledger records with pagination and filters
Parameters
| Parameter | In | Type | Req | Description |
|---|---|---|---|---|
page | query | integer | No | |
pageSize | query | integer | No | |
eventType | query | string | No | |
startDate | query | string | No | |
endDate | query | string | No | |
actorId | query | string | No | |
documentHash | query | string | No | |
documentReference | query | string | No |
Responses
| Field | Type | Req | Description |
|---|---|---|---|
data | Record[] | Yes | |
pagination | Pagination | Yes |
Example request
curl -X GET "https://api.bedrockcompliance.co.uk/v1/ledger/records" \
-H "X-Bedrock-Key: bk_live_your_api_key"/v1/ledger/records/{id}Get a single ledger record
Parameters
| Parameter | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | Yes | Record ID |
Responses
| Field | Type | Req | Description |
|---|---|---|---|
id | string | No | |
firmId | string | No | |
sequenceNumber | integer | No | |
eventType | string | No | |
actorId | string | No | |
actorFcaRef | string | null | No | |
actorName | string | No | |
documentHash | string | No | |
documentMetadata | object | No | |
previousHash | string | null | No | |
recordHash | string | No | |
chainHash | string | No | |
signature | string | No | |
publicKey | string | No | |
timestamp | string (date-time) | No | |
reviewJobId | string | null | No |
Example request
curl -X GET "https://api.bedrockcompliance.co.uk/v1/ledger/records/<id>" \
-H "X-Bedrock-Key: bk_live_your_api_key"/v1/ledger/records/{id}/certificateGet presigned URL for certificate PDF
Parameters
| Parameter | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | Yes | Record ID |
Responses
| Field | Type | Req | Description |
|---|---|---|---|
url | string (uri) | No | |
certificateId | string | No | ID of the certificate |
Example request
curl -X GET "https://api.bedrockcompliance.co.uk/v1/ledger/records/<id>/certificate" \
-H "X-Bedrock-Key: bk_live_your_api_key"/v1/ledger/records/{id}/certificateIssue a certificate on demand for a ledger record
On-demand certificate issuance for any ledger record outside the auto-issue allowlist. Idempotent: returns the existing certificate id if one was already issued for the record.
Parameters
| Parameter | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | Yes | Record ID |
Responses
| Field | Type | Req | Description |
|---|---|---|---|
certificateId | string | null | No | Existing certificate id, or null if cert-gen was enqueued |
status | string | No | existingenqueued |
Example request
curl -X POST "https://api.bedrockcompliance.co.uk/v1/ledger/records/<id>/certificate" \
-H "X-Bedrock-Key: bk_live_your_api_key"/v1/ledger/certificatesList all certificates for the authenticated firm
Responses
Example request
curl -X GET "https://api.bedrockcompliance.co.uk/v1/ledger/certificates" \
-H "X-Bedrock-Key: bk_live_your_api_key"/v1/ledger/certificates/{id}Get certificate metadata by id
Item pair of `listCertificates` — returns the full Certificate envelope. For the PDF download, use `GET /v1/ledger/records/{id}/certificate` instead.
Parameters
| Parameter | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | Yes | Certificate ID |
Responses
| Field | Type | Req | Description |
|---|---|---|---|
id | string | No | |
ledgerRecordId | string | No | |
firmId | string | No | |
firmName | string | No | |
firmFrnNumber | string | No | |
issuedAt | string (date-time) | No | |
verificationUrl | string (uri) | No | |
pdfUrl | string (uri) | No | |
pdfStorageKey | string | No | |
metadata | object | No | Event-specific snapshot — shape depends on the linked record's eventType. Carries `eventLabel`, optional `statusPill`, and `sections` (heading + labelled fields). |
Example request
curl -X GET "https://api.bedrockcompliance.co.uk/v1/ledger/certificates/<id>" \
-H "X-Bedrock-Key: bk_live_your_api_key"/v1/ledger/integrityChain integrity status with verification history
Responses
| Field | Type | Req | Description |
|---|---|---|---|
firmId | string | No | |
totalRecords | integer | No | |
lastVerification | object | null | No | |
recentVerifications | object[] | No |
Example request
curl -X GET "https://api.bedrockcompliance.co.uk/v1/ledger/integrity" \
-H "X-Bedrock-Key: bk_live_your_api_key"/v1/ledger/integrity/verifyRun a fresh chain verification
Recomputes every record hash from its payload fields and verifies chain links. The result is persisted and returned.
Responses
| Field | Type | Req | Description |
|---|---|---|---|
verification | object | No | |
result | object | No |
Example request
curl -X POST "https://api.bedrockcompliance.co.uk/v1/ledger/integrity/verify" \
-H "X-Bedrock-Key: bk_live_your_api_key"/v1/ledger/integrity/records/{id}/discrepancyCompare a record against its immutable backup
Returns a field-by-field diff between the database row and the S3 immutable copy. If the record was deleted, `database` is null.
Parameters
| Parameter | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | Yes | Ledger record ID |
Responses
| Field | Type | Req | Description |
|---|---|---|---|
recordId | string | No | |
sequenceNumber | integer | No | |
database | object | null | No | |
immutable | object | null | No | |
diffs | object[] | No |
Example request
curl -X GET "https://api.bedrockcompliance.co.uk/v1/ledger/integrity/records/<id>/discrepancy" \
-H "X-Bedrock-Key: bk_live_your_api_key"/v1/ledger/integrity/records/{id}/restoreRestore a tampered record from its immutable backup
Overwrites the database row (or re-inserts a deleted record) from the S3 immutable copy. Requires FIRM_ADMIN or LEAD_REVIEWER role. A CHAIN_REPAIRED audit record is written to the ledger.
Parameters
| Parameter | In | Type | Req | Description |
|---|---|---|---|---|
id | path | string | Yes | Ledger record ID |
Request body
| Field | Type | Req | Description |
|---|---|---|---|
confirm | boolean | Yes | Must be true to proceed |
Responses
Example request
curl -X POST "https://api.bedrockcompliance.co.uk/v1/ledger/integrity/records/<id>/restore" \
-H "X-Bedrock-Key: bk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"confirm": true
}'/v1/ledger/integrity/missing/{sequenceNumber}Find a deleted record by sequence number from S3
Scans the immutable S3 backup for a record with the given sequence number that no longer exists in the database. Used to recover deleted records detected by chain verification.
Parameters
| Parameter | In | Type | Req | Description |
|---|---|---|---|---|
sequenceNumber | path | integer | Yes | The sequence number of the missing record |
Responses
| Field | Type | Req | Description |
|---|---|---|---|
recordId | string | No | |
sequenceNumber | integer | No | |
database | object | null | No | |
immutable | object | null | No | |
diffs | object[] | No |
Example request
curl -X GET "https://api.bedrockcompliance.co.uk/v1/ledger/integrity/missing/<sequenceNumber>" \
-H "X-Bedrock-Key: bk_live_your_api_key"