401 Unauthorized and error code PINT-401-006 — there is no propagation delay. As a verifier running your own gate, you should also check revocation status so you can reject withdrawn credentials before you act on them, rather than relying solely on the calls you make to Sumvin.
A Stamped Mandate is delivered over the API as a PINT (header x-sumvin-pint-token), so the status endpoint, the pint_uri claim, and the PINT-4xx error codes below all use the PINT identifier on the wire.
Endpoint
Authorization: Bearer header. This endpoint is deliberately permissive — any authenticated third-party caller with a valid SIS API key can check the status of any Stamped Mandate they’ve been presented with. No specific scope is required.
Request
Extract the mandate’s identifier from the JWT’spint_uri claim and call the status endpoint:
Response — Valid
Response — Revoked
Response — Expired
Timestamps default to epoch milliseconds. To receive ISO 8601 strings instead (e.g.,
"2026-02-13T11:30:00Z"), send the header X-Timestamp-Format: iso8601. This applies to revoked_at and any other _at fields in the response.Error Responses
Implementation Examples
TypeScript
Python
Caching Guidance
The revocation check endpoint is designed for low latency (< 100ms p99) and responses are already cached server-side for 30 seconds. You should still cache on your side to avoid excessive calls: Recommended approach: Cache thevalid: true response for 30 seconds. This matches the server-side cache TTL and balances freshness (revocations propagate within 30s) with throughput.
Do not cache indefinitely. A Stamped Mandate that was valid at verification time may be revoked seconds later. The 30-second TTL provides a reasonable window.
Cache valid: false longer. Once a Stamped Mandate is revoked or expired, it doesn’t come back. You can cache negative results for the duration of the JWT’s remaining lifetime.