Ga naar inhoud

List evidence

GET
/api/v1/evidence
curl --request GET \
--url https://example.com/api/v1/evidence \
--cookie bl_%3Cslug%3E_session=%3Cbl_%3Cslug%3E_session%3E

Entries of the evidence chain, newest first, with the anchor that covers each. Asked for one process, or for a dataplane.* kind, the data plane requests on record are listed too.

process_id
string

Only the evidence of this process; then the data plane requests of the process are listed too.

kind
string

Only this kind, e.g. dsp.in or dataplane.request.

cursor
integer format: int64

The next_cursor of the previous page.

limit
integer format: int64

At most this many, 1 to 500; default 50.

offset
integer format: int64

Rows to skip: pages by number (LIST-6). A cursor pages by seq.

from
string

Recorded at or after / at or before (RFC 3339).

to
string
counterparty
string

The counterparty’s DID.

q
string

Search in summary, process id, id and counterparty, ignoring case; | separates alternatives, and a user’s name finds their pseudonym.

OK.

Media typeapplication/json

A page of a list that also counts all matching rows (the evidence log, LIST-6).

object
items
required
Array<object>

An entry of the evidence chain or a data plane request on record, as the list shows it (documents entry_view and leaf_view).

object
seq

The entry’s place in the chain; for a request, its window’s entry.

integer | null format: int64
id
required
string
at
required
string format: date-time
kind
required
string
process_id
string | null
counterparty_did
string | null
summary
required

In Dutch; pseudonyms replaced by names where known.

string
actor_name

Who acted, for administrative entries.

string | null
payload_sha256
required
string
prev_hash
string | null
entry_hash
required
string
signature
string | null
counterparty_signature
string | null
anchored_by

The anchor that covers it, once anchored.

string | null
has_payload
boolean | null
meta
object | null
leaf

A data plane request (a leaf of a window) rather than a chain entry.

boolean | null
archived

The request’s content moved to the archive.

boolean | null
next_cursor

Pass as cursor for the next page; null on the last page and when paging by offset.

string | null
total
required

How many rows match the filter, up to a cap.

integer format: int64
total_capped
required

True when total stopped at the cap: there are at least that many.

boolean

Example generated

{
"items": [
{
"seq": 1,
"id": "example",
"at": "2026-04-15T12:00:00Z",
"kind": "example",
"process_id": "example",
"counterparty_did": "example",
"summary": "example",
"actor_name": "example",
"payload_sha256": "example",
"prev_hash": "example",
"entry_hash": "example",
"signature": "example",
"counterparty_signature": "example",
"anchored_by": "example",
"has_payload": true,
"meta": "example",
"leaf": true,
"archived": true
}
],
"next_cursor": "example",
"total": 1,
"total_capped": true
}

No valid session, DPoP-bound token or API key.

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 caller lacks the role this operation needs; or a change with the session cookie came from a page of another site (cross_site_request, decisions #83).

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"
}
}