Ga naar inhoud

Anchor the head of an evidence chain

POST
/api/v1/notary/anchors
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.

Media typeapplication/json
object
seq
required

The sequence number of the head.

integer format: int64
head
required

The hash of the entry at seq (hex SHA-256).

string
count

The number of entries in the chain.

integer | null format: int64
links

Content-free links from the participant’s last anchor up to head, so the notary sees the new head extend the anchored chain (#58).

Array<object>

Link of the chain without content (for proving continuity).

object
seq
required
integer format: int64
prev_hash
required
string
content_hash
required
string
entry_hash
required
string

Example generated

{
"seq": 1,
"head": "example",
"count": 1,
"links": [
{
"seq": 1,
"prev_hash": "example",
"content_hash": "example",
"entry_hash": "example"
}
]
}

OK.

Media typeapplication/json

An anchor and its receipt.

object
id
required
string
seq
required
integer format: int64
head
required
string
anchored_at
required
string format: date-time
receipt
required

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.

string

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.

Media typeapplication/json

The body of every failed call to a management API.

object
error
required
object
code
required

Stable, machine-readable: invalid_request, unauthenticated, forbidden, not_found, conflict, upstream_unavailable, unavailable, internal, or a more specific code of the operation.

string
message
required

For people; may change between versions.

string

Example

{
"error": {
"code": "not_found",
"message": "unknown negotiation"
}
}

Not authenticated.

Media typeapplication/json

The body of every failed call to a management API.

object
error
required
object
code
required

Stable, machine-readable: invalid_request, unauthenticated, forbidden, not_found, conflict, upstream_unavailable, unavailable, internal, or a more specific code of the operation.

string
message
required

For people; may change between versions.

string

Example

{
"error": {
"code": "not_found",
"message": "unknown negotiation"
}
}

Not an active member.

Media typeapplication/json

The body of every failed call to a management API.

object
error
required
object
code
required

Stable, machine-readable: invalid_request, unauthenticated, forbidden, not_found, conflict, upstream_unavailable, unavailable, internal, or a more specific code of the operation.

string
message
required

For people; may change between versions.

string

Example

{
"error": {
"code": "not_found",
"message": "unknown negotiation"
}
}

The head does not extend the anchored chain: the chain forked.

Media typeapplication/json

The body of every failed call to a management API.

object
error
required
object
code
required

Stable, machine-readable: invalid_request, unauthenticated, forbidden, not_found, conflict, upstream_unavailable, unavailable, internal, or a more specific code of the operation.

string
message
required

For people; may change between versions.

string

Example

{
"error": {
"code": "not_found",
"message": "unknown negotiation"
}
}