-
Notifications
You must be signed in to change notification settings - Fork 0
Quick Verification Example
chrismaz11 edited this page Mar 12, 2026
·
1 revision
Navigation
- Home
- What is TrustSignal
- Architecture
- Verification Receipts
- API Overview
- Quick Verification Example
- Vanta Integration Example
This page is written for developers, integration engineers, compliance engineers, and technical partner reviewers who want to understand the smallest realistic TrustSignal verification flow.
This example shows how to:
- submit a verification request to the public TrustSignal API
- receive a decision plus a signed receipt
- inspect the main receipt fields returned by the API
- understand how later re-verification works
The example uses the current integration-facing receipt workflow on POST /api/v1/verify.
sequenceDiagram
participant C as Client
participant A as TrustSignal API
participant E as Verification Engine
C->>A: POST /api/v1/verify
A->>E: createVerification(...)
E-->>A: verification result + receipt
A-->>C: JSON response
C->>A: POST /api/v1/receipt/:receiptId/verify
A->>E: getVerificationStatus(...)
E-->>A: current receipt status
A-->>C: integrity and lifecycle status
The public product language often maps to the current API contract like this:
| Product Term | Current API Field |
|---|---|
artifact_hash |
doc.docHash |
source |
caller-owned workflow or integration context |
timestamp |
timestamp |
control_id |
policy.profile |
verification_id |
bundleId |
receipt_id |
receiptId |
receipt_signature |
receiptSignature |
status |
decision and later verification status |
anchor_subject_digest |
anchor.subjectDigest |
curl -X POST https://api.trustsignal.example/api/v1/verify \
-H "Content-Type: application/json" \
-H "x-api-key: $TRUSTSIGNAL_API_KEY" \
-d '{
"bundleId": "verification-2026-04-18-001",
"transactionType": "compliance_evidence",
"ron": {
"provider": "source-system",
"notaryId": "NOTARY-EXAMPLE-01",
"commissionState": "IL",
"sealPayload": "example-seal-payload"
},
"doc": {
"docHash": "0x8b7b2f52f2a2e19f8f3fe0d815d1c1d8d1e0d120e8cc60d1baf5e7a6f9d211aa"
},
"property": {
"parcelId": "PARCEL-EXAMPLE-1001",
"county": "Cook",
"state": "IL"
},
"policy": {
"profile": "CONTROL_CC_001"
},
"timestamp": "2026-04-18T15:24:00.000Z"
}'This example uses:
-
bundleIdas the caller-controlled verification identifier -
doc.docHashas the artifact hash -
policy.profileas the control or policy context
{
"receiptVersion": "2.0",
"decision": "ALLOW",
"reasons": [],
"receiptId": "2c17d2f5-4de6-48c3-b22c-0b7ea9eb5c0a",
"receiptHash": "0x4e7f2ce9d3f7a8d3b0e4c9f2aa17fd59d6b4fda2d7b7b7d1cce8124d7ee39d04",
"receiptSignature": {
"alg": "EdDSA",
"kid": "trustsignal-current",
"signature": "eyJleGFtcGxlIjoic2lnbmVkLXJlY2VpcHQifQ"
},
"anchor": {
"status": "PENDING",
"backend": "EVM_LOCAL",
"subjectDigest": "0x8c0f95cda31274e7b61adfd1dd1e0c03a4b96f78d90da52d42fd93d9a38fc112"
},
"fraudRisk": {
"score": 0,
"band": "LOW",
"signals": []
},
"zkpAttestation": null,
"revocation": {
"status": "ACTIVE"
}
}-
receiptId: the durable receipt handle for later retrieval and verification -
receiptHash: the integrity digest for the returned receipt payload -
receiptSignature: the presence of a signed receipt artifact, without exposing signing infrastructure details -
anchor.subjectDigest: the public-facing anchor subject digest when available -
decision: the current verification outcome returned by the public API -
revocation.status: whether the receipt is currently active or revoked
To check the receipt later, call:
-
GET /api/v1/receipt/:receiptIdto retrieve the stored receipt -
POST /api/v1/receipt/:receiptId/verifyto validate current receipt integrity and status
Example:
curl -X POST https://api.trustsignal.example/api/v1/receipt/2c17d2f5-4de6-48c3-b22c-0b7ea9eb5c0a/verify \
-H "x-api-key: $TRUSTSIGNAL_API_KEY"That later check is how downstream systems confirm that the receipt still matches stored verification state rather than relying only on the original response.
This example intentionally does not expose:
- proof witness details
- scoring internals
- circuit identifiers
- model outputs
- signing infrastructure specifics
- internal service topology
The public integration contract is the request, the response, and the receipt lifecycle behavior.