AUDRIEDOCS
ReferenceVerifications

List your organisation's verifications

GET/v1/verifications

Returns your organisation's verification log, newest first.

Scoped to the calling key's organisation and environment: a test key never sees live verifications. Anonymous verifications are attributable to no one and are not logged, so a credential is required.

Rows carry the verdict as it was recorded. They carry no matches: to get matches for a hash, POST it, which is the operation that computes them.

Cursor-paginated. See Pagination.

Errors

Every query parameter is rejected rather than ignored or clamped. An unparseable from, an out-of-range limit or a cursor that does not decode all answer 400 with the offending field in error.details — a silently different page is worse than a refusal on a log you reconcile against.

AuthorizationBearer <token>

Authorization: Bearer aud_live_…

Optional on POST /v1/verifications, which answers without any credential. Required to list or read verifications back.

Send exactly one Authorization header. A credential that is present and does not work is refused rather than downgraded to the anonymous tier.

Issue a key in the portal under Settings → Organisation → API credentials; it is shown once, at creation.

Two scopes exist. verifications:read covers every verification operation and is on every key. records:write covers POST /v1/records and is granted only on a live credential whose organisation holds the organisation-issued authentication add-on at the moment the key is minted — a test key never receives it, because there is no sandbox ledger and the records it would create would be permanent — scopes are fixed then and never widen afterwards, because a credential's recorded scopes are what an auditor reads to know what that key could do on a given date. Buying the add-on later means minting a new key; the old one keeps verifying.

Scopes, rotation, revocation, the live and test prefixes and what to do about a leaked key: https://audrie.io/docs/authentication

In: header

Query Parameters

verdict?string

Return only verifications that recorded this verdict.

Value in

  • "verified"
  • "verified_org"
  • "revoked"
  • "signature_invalid"
  • "pending_anchor"
  • "no_record"
originalDocHash?string

Return only verifications of this document hash.

Match^sha256:[0-9a-f]{64}$
from?string

Return only verifications at or after this instant. RFC 3339 timestamp.

Formatdate-time
to?string

Return only verifications at or before this instant. RFC 3339 timestamp.

Formatdate-time
limit?integer

Rows per page. An integer between 1 and 100. Defaults to 25. A value outside that range is refused, not clamped.

Range1 <= value <= 100
Default25
after?string

Opaque cursor from a previous page's pagination.nextCursor. Pass it back verbatim; do not construct or modify one.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/verifications?from=2026-08-01T00%3A00%3A00Z&to=2026-08-31T23%3A59%3A59Z"
{  "data": [    {      "verificationId": "72d12273-0723-448e-a9f6-f7957128efa5",      "verdict": "verified",      "assuranceLevel": "audrie.registry.v1",      "mode": "partial",      "environment": "live",      "originalDocHash": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",      "verifiedAt": "2019-08-24T14:15:22Z",      "reference": "string"    }  ],  "pagination": {    "nextCursor": "string",    "hasMore": true  }}

Pagination

How to page through the verification log with cursors.

Verify a document hash POST

Submits a document hash and returns a **verdict** — Audrie's answer to "does this document check out, and what do you know about it". Both cryptographic checks are recomputed server-side for your request. Nothing in the request body is trusted beyond the identifiers used to look records up: a client that lies about a hash can only produce a verdict that fails its own verification. Works with or without a credential. See [Disclosure tiers](https://audrie.io/docs/disclosure-tiers). ## What you get back `verdict` is a single value you can branch on. It is derived from the four checks in `matches[].checksPerformed` plus revocation state, and it fails closed: anything Audrie cannot fully substantiate is never reported as `verified`. Every determinate outcome — `no_record` included — returns `200` with a `verdict`. A hash Audrie holds no record of is information, not a failed request. `mode` is `partial` on every response. Read the field rather than hardcoding the value. ## One hash, several records You do not pick the record. One hash can legitimately have several records — a re-signing, or several parties authenticating the same document — so the response returns every anchored match, ordered by anchor time, earliest first. The timeline is the answer. `verdict` asserts that some valid anchored authentication exists, not that a particular party made it. Read each match's own `status`, `signerStanding` and `signerHint` before attributing a document to anyone. ## Signer standing is live `signerStanding` is recomputed at request time. A certificate issued earlier carries a frozen snapshot; this endpoint does not. The two can legitimately disagree, and the live value is the current answer. ## Errors A `400` here means `originalDocHash` is not `sha256:` followed by 64 lowercase hex characters, `reference` is longer than 128 characters or contains a control character, or the body is not a JSON object. `error.details` names the field.