Skip to main content
Verification and Receipt generation both already happen automatically as the last two steps of POST /execute. This guide covers triggering them independently afterward.

Trigger a new verification

curl -X POST http://localhost:3000/verify \
  -H "Content-Type: application/json" \
  -d '{ "businessTransactionId": "..." }'
The TypeScript SDK’s client.verify() does not do this — it calls GET /verification/:id to read the latest already-computed Verification instead. If you’re on TypeScript and need to force a fresh verification, call POST /verify directly over HTTP; there’s no wrapping method for it. See REST API → Verify and Python SDK → ParmanaClient for the full explanation of why the two SDKs diverge here.
Each call to POST /verify re-hashes the trust record via VerificationCrypto.verify() (see Packages → crypto) and appends a new Verification — it doesn’t replace the previous one. Read the whole history back with GET /trust-records/:id.

Generate a Receipt

curl -X POST http://localhost:3000/receipt \
  -H "Content-Type: application/json" \
  -d '{ "businessTransactionId": "..." }'
ReceiptService.generate() requires trustRecord.verifications.at(-1).status === VERIFIED — if the most recent Verification failed (or none exists yet), Receipt generation throws ReceiptGenerationError rather than producing a Receipt. If you need a Receipt after a failed verification, call POST /verify again first to produce a new, successful Verification.

Reading a Receipt back later

curl http://localhost:3000/receipt/latest/b6f1c8de-1a2b-4c3d-8e9f-0a1b2c3d4e5f
This path is /receipt/latest/:id, not /receipt/:id — and neither SDK has a method for it at all. See REST API → Receipt. If you need a Receipt through an SDK without regenerating one, read it off GET /trust-records/:id’s .receipts array instead.
examples/05-verification’s run.ts is currently an unimplemented stub (console.log("Parmana Example 05 - Verification")) — there’s no runnable example for this flow yet in the monorepo. This guide is grounded directly in packages/runtime/src/services/verification-service.ts and receipt-service.ts.

Verify (REST API)

Full endpoint reference.

Receipt (REST API)

Full endpoint reference.

Security Model

What the hash and signature actually guarantee.

Deterministic Replay

A related but distinct integrity check.