BUILD · QUICKSTART · VERIFY
Check a credential without ever calling us.
A verifier makes no network call to ORBIS at all — everything it needs was published by the organization that vouched, at its own domain. All three artefacts below are open reads, reachable right now, and the presentation in step 3 is not a fixture written for this page — it is read straight out of the conformance set at build time.
The wire, drawn.
Every command below can be run by a machine that has never heard of ORBIS before this page.
The four steps
-
01
Fetch the issuer's trust anchor
The did:web document names the keys this issuer actually signs with. Trust the domain, or do not — but the key comes from there, never from us. A sandbox tenant's identifier carries its own segment (
did:web:<host>:sandbox:t:<slug>) distinct from a production one — read how issuance separates the two planes before you decide what a given did:web is telling you.witnessed/.well-known/did.jsoncurl -s https://id.orbis.id/.well-known/did.jsonReached on 2026-08-30. -
02
Fetch the status list it references
A signed, compressed bitstring. One index, one bit, no account needed to read it.
witnessed/status/1curl -s https://id.orbis.id/status/1Reached on 2026-08-30. -
03
Take a real presentation to test against
Pull the "valid" vector out of the conformance set — the same set /build/conformance renders as a table, read from the same file rather than retyped.
witnessed/conformance/vectorscurl -s https://id.orbis.id/conformance/vectors | jq -r '.vectors[] | select(.id=="valid") | .input.presentation'Set version 1.0.0, checked 2026-08-30. This is the same JWT this build embeds — it starts eyJ0eXAiOiJkYytzZC1qd3Qi…. -
04
Run the five checks and see where it stops
Signature, issuer, holder binding, status, and — the one most implementations skip — that every disclosed claim re-hashes into the signed set. Each check, and what it catches, is written up here. Then point your own verifier at the vectors that are supposed to fail — a set that only contains valid proofs tests nothing.
What is real here.
Every artefact on this page is a live, unauthenticated read, probed for this build. Nothing on it is described from memory.
- LIVE Publishes deterministic vectors a third party can recompute offline to check their implementation against ours conformance-vectors
The register holds 17 live · 2 partial · 2 planned · 5 not yet.
3 of the 4 capabilities this page depends on have no row in the register yet, so this page will not print a state for them. They are named rather than dropped, because a slice that silently shortens itself is the same defect as a claim with no receipt.
- did-web-anchor
- revocation
- selective-disclosure
The register route serves, but it carries no row for these yet. List what it does carry:
curl -s https://id.orbis.id/api/site/register | jq -r '.entries[].slug' Straight answers
- Does step 4 call ORBIS to check the presentation?
- No. Everything it needs came from steps 1–3; the checking runs entirely on your side.
- Do I need my own wallet to follow this page?
- No — step 3 supplies a real presentation from the published conformance set instead.
- Is the "valid" vector the only one I should test?
- No. The other vectors are engineered to fail, and a correct verifier must reject every one of them.
Do not trust us. Check us.