REFERENCE

Verify a verdict, offline.

Every verdict ships a detached EdDSA signature — the riskPayloadJws. Fetch the public JWKS once, cache it, and verify every payload without ever calling Fidacy at decision time. Trust the math, not the transport.

1 · Fetch the keys

Pull the JWKS once and cache it. Refresh on a signing_key.rotated webhook — never per request.

GET /v1/.well-known/jwks.json
{ "keys": [ { "kty": "OKP", "crv": "Ed25519",
  "kid": "2026-07", "x": "11qYAY…" } ] }

2 · Verify the signature

Pick the key named by the JWS header's kid, then verify. Any standard JOSE library does this in a few lines.

// node — jose
import { jwtVerify, createLocalJWKSet } from "jose";
const jwks = createLocalJWKSet(cachedJwks);
const { payload } = await jwtVerify(riskPayloadJws, jwks);
// payload is now trusted

3 · Check the claims

A valid signature proves Fidacy issued the payload. Before you act on it, confirm the claims match the transaction in front of you.

{{ row.claim }}

{{ row.check }}

Failure modes

{{ row.case }}

{{ row.mean }}

Run it in the browser

The interactive verifier does exactly these steps with real WebCrypto — drop in a payload and watch it pass or fail. Then break the chain in the Proof sandbox.

← PREVIOUS
Webhooks
NEXT →
Security