Use the network without touching the blockchain
Adoption has to be possible without direct ledger access. The service API handles authentication, rate limiting, transaction preparation, certificate issuance and verification — so your integration is an HTTP call, not a node deployment.
Status: the API described on this page is the design specification for the LKS Notary MVP, currently in development under the funded plan. Endpoints and payloads are published early so that integrators can review and challenge them before they are frozen. They are not yet a production interface. See delivery status →
Endpoints
Notarisation Live
Base URL https://notary.lkschain.io. Writes need an X-API-Key; reads are public, because a proof only you can check is not a proof.
/api/v1/notarizeQueue a proof of existence for a hash — returns 202 and a certificate id/api/v1/verify/{certificate}Full proof: canonical record, Merkle path, chain reference, Bitcoin attestation/api/v1/lookup/{sha256}Every certificate issued for a document hash/api/v1/batch/{batch}/otsDownload the OpenTimestamps attestation file/healthService statusIdentity & signatures Planned
/api/v1/identityCreate or update a decentralised identifier/api/v1/signProduce a signature bound to an identity/api/v1/attestationIssue a verifiable attestationTraceability Planned
/api/v1/trace/lotRecord a lot event (create, transform, split, merge, ship, receive)/api/v1/trace/lot/{lot_id}Retrieve lot state and chain of custodyFour requirements that are not optional
These are not nice-to-haves scheduled for a later version. Each one, if deferred, silently breaks verification or duplicates cost in production.
Idempotency
Every write request accepts an idempotency key; repeating the same request never produces a second transaction. Without it, a network retry generates duplicate notarisations and duplicate fees.
POST /api/v1/notarize Idempotency-Key: po-2026-00417
Deterministic canonicalisation
Structured data is normalised according to JCS (RFC 8785) before hashing. Otherwise a simple reordering of JSON keys makes verification impossible — and the failure only surfaces months later, in front of the party disputing the proof.
Declared, versioned hash algorithm
SHA-256 as the default, with a version field in the certificate so that future migrations do not invalidate proofs that already exist.
Immutable service-side audit log
Required to answer disputes about the behaviour of the service itself, and deliberately kept distinct from the on-chain proof. The two answer different questions.
A complete integration
The intended flow for an ERP recording a production lot, from creation to public verification.
The company creates lot LOT-2026-001 in its ERP
No change to existing business processes.
The ERP sends canonicalised data with an idempotency key
Only the canonicalised hash and minimal metadata leave the company's systems.
LKS computes the proof and prepares the transaction
Fees are handled by the service; the client is billed in euro.
The network validates; the ChainLock fixes finality
Once L2 is active, irreversibility is established within seconds.
TXID and timestamp are returned; the periodic root is anchored to Bitcoin
The .ots attestation is attached to the certificate when the anchor completes.
Transformations generate linked events
LOT-2026-001-A and -B each carry a proof pointing back to their parent.
Shipping and receipt are recorded
SHIP and RECEIVE events close the chain of custody.
The QR code exposes public verification
Only publishable fields are shown. In case of a recall, the genealogy identifies exactly which lots are affected.
# canonicalise (RFC 8785) then hash POST /api/v1/trace/lot Idempotency-Key: lot-2026-001-create { "event": "CREATE", "lot_id": "01/09512345678901/10/2026-001", "product_code": "PRD-4417", "production_date": "2026-08-05T06:30:00Z", "quantity": 1200, "unit": "kg", "facility": "PLANT-02", "organization": "did:lks:8f2a…", "metadata_hash": "c41e…77b0" } # → response { "certificate_id": "LKS-T-2026-1C77A0", "txid": "a19f…4d20", "chainlock": true, "anchor_ref": "lks-2026-08-05-04.ots", "verify_url": "https://…/v/LKS-T-2026-1C77A0" }
The independent verifier
A tool that lets a third party validate a certificate without depending on the project's servers. It is the element that makes the entire architecture credible — and it is an explicit deliverable, not an aspiration.
- Recomputes the content hash from the file you hold.
- Walks the Merkle path from the leaf to the published root.
- Checks the ledger reference and the ChainLock status.
- Validates the
.otsattestation against the Bitcoin blockchain.
If our servers disappeared tomorrow, every certificate already issued would still verify.
Planned SDKs
Client libraries for Python, JavaScript and PHP, plus ERP and MES integration adapters, belong to the extended roadmap and are labelled as strategic direction rather than a dated commitment.
The REST API and the independent verifier come first, because they are what make everything else replaceable.
Open items being worked through
Transaction format and payload capacity for proofs · timestamp handling and event ordering under ChainLocks · replay protection · enterprise authentication and key management · on-chain / off-chain separation · rate limiting and anti-spam · network fee coverage · explorer and public APIs realigned to the new codebase.
Challenge the design before it is frozen
If you integrate systems like this for a living, the most useful thing you can do right now is tell us where this specification breaks.