Anchor the head of an evidence chain
const url = 'https://example.com/api/v1/notary/anchors';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"seq":1,"head":"example","count":1,"links":[{"seq":1,"prev_hash":"example","content_hash":"example","entry_hash":"example"}]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/api/v1/notary/anchors \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "seq": 1, "head": "example", "count": 1, "links": [ { "seq": 1, "prev_hash": "example", "content_hash": "example", "entry_hash": "example" } ] }'A member’s connector anchors the head of its evidence chain. The notary sees only hashes: the head must extend the last anchored one (decisions #58), and it returns a signed, timestamped receipt. The same anchor again returns the same receipt.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
The sequence number of the head.
The hash of the entry at seq (hex SHA-256).
The number of entries in the chain.
Content-free links from the participant’s last anchor up to head,
so the notary sees the new head extend the anchored chain (#58).
Link of the chain without content (for proving continuity).
object
Example generated
{ "seq": 1, "head": "example", "count": 1, "links": [ { "seq": 1, "prev_hash": "example", "content_hash": "example", "entry_hash": "example" } ]}Responses
Section titled “Responses”OK.
An anchor and its receipt.
object
A JWT (bl-anchor-receipt+jwt) signed with the authority’s notary key: iss, sub, seq,
head, anchored_at. Anyone can check it with the authority’s DID document.
Example generated
{ "id": "example", "seq": 1, "head": "example", "anchored_at": "2026-04-15T12:00:00Z", "receipt": "example"}An invalid head, or links that do not reach it.
The body of every failed call to a management API.
object
object
Stable, machine-readable: invalid_request, unauthenticated,
forbidden, not_found, conflict, upstream_unavailable,
unavailable, internal, or a more specific code of the operation.
For people; may change between versions.
Example
{ "error": { "code": "not_found", "message": "unknown negotiation" }}Not authenticated.
The body of every failed call to a management API.
object
object
Stable, machine-readable: invalid_request, unauthenticated,
forbidden, not_found, conflict, upstream_unavailable,
unavailable, internal, or a more specific code of the operation.
For people; may change between versions.
Example
{ "error": { "code": "not_found", "message": "unknown negotiation" }}Not an active member.
The body of every failed call to a management API.
object
object
Stable, machine-readable: invalid_request, unauthenticated,
forbidden, not_found, conflict, upstream_unavailable,
unavailable, internal, or a more specific code of the operation.
For people; may change between versions.
Example
{ "error": { "code": "not_found", "message": "unknown negotiation" }}The head does not extend the anchored chain: the chain forked.
The body of every failed call to a management API.
object
object
Stable, machine-readable: invalid_request, unauthenticated,
forbidden, not_found, conflict, upstream_unavailable,
unavailable, internal, or a more specific code of the operation.
For people; may change between versions.
Example
{ "error": { "code": "not_found", "message": "unknown negotiation" }}