Verification
Verify the integrity and status of Ananke Trust documents by reference or by hash. Supports both authenticated API access and public verification.
Overview
Ananke Trust verification confirms whether a document is authentic, untampered, and in a valid state. Any party with the document reference or content hash can verify it — no prior relationship with the issuer is required.
Verification checks the cryptographic signature, anchoring status, and current lifecycle state. The result includes a verdict, the document's status, issuer information, and timestamps.
Verification inputs
Ananke Trust supports two verification methods:
| Method | Input | Endpoint |
|---|---|---|
| By reference | Document reference (e.g. TRF-ABCD1234) | POST /v1/trust/verify/by-reference |
| By hash | SHA-256 hash of the document content | POST /v1/trust/verify/by-hash |
Verify by reference
const result = await client.trust.verify.byReference("TRF-ABCD1234");
console.log(result.verdict); // "valid"
console.log(result.status); // "Active"
console.log(result.issuerName); // "Acme Corp"curl -X POST https://api.anankelabs.net/v1/trust/verify/by-reference \
-H "Content-Type: application/json" \
-d '{ "reference": "TRF-ABCD1234" }'Verify by hash
Hash-based verification is useful when you have the document content but not its reference. Compute the SHA-256 hash and submit it:
const result = await client.trust.verify.byHash(
"e3b0c44298fc1c149afbf4c8996fb924..."
);
console.log(result.verdict); // "valid" | "revoked" | "not_found"Verification outcomes
| Verdict | Meaning |
|---|---|
valid | Document is authentic, untampered, and in Active state. |
suspended | Document is authentic but temporarily suspended by the issuer. |
revoked | Document is authentic but has been permanently revoked. |
expired | Document is authentic but past its expiration date. |
not_found | No matching document exists. The input may be incorrect or the document may not exist. |
The full response object includes:
{
"data": {
"verdict": "valid",
"status": "Active",
"issuerName": "Acme Corp",
"recipientName": "Jane Doe",
"documentTitle": "Certificate of Completion",
"documentType": "Certificate",
"issuedAt": "2026-03-18T10:00:00Z",
"reference": "TRF-ABCD1234"
}
}Public verification
Ananke Trust verification endpoints do not require an API key. This is by design — any third party should be able to independently verify a document without needing a relationship with the issuer.
For private verification within your system, you can still include the API key for audit tracking, but it is not enforced.
Verification history
Authenticated tenants can retrieve a history of verifications performed against their documents:
const history = await client.trust.verify.history({
page: 1,
pageSize: 50,
});
for (const entry of history.items) {
console.log(entry.reference, entry.verdict, entry.verifiedAt);
}Common failure states
- Reference not found — The reference does not match any issued document. Double-check the format (should start with
TRF-). - Hash mismatch — The hash does not match any document. Ensure you are computing SHA-256 over the correct content.
- Suspended / Revoked — The document exists but is not in Active state. Your UI should display the appropriate status message.
UI guidance
When building a verification page, map each verdict to a clear visual state:
valid— Green success state with issuer and document details.suspended— Amber warning explaining the document is temporarily disabled.revoked— Red error state with revocation reason if available.expired— Grey or amber state noting the expiration date.not_found— Neutral state explaining no match was found.
See the Build a verification page guide for detailed component mapping.
Next steps
- Templates — Configure document schemas.
- Guide: Verify a document — Step-by-step tutorial.
- Guide: Build a verification page — Frontend patterns.
- Ananke Trust API Reference — Full endpoint docs.