Method & API
How a passport is built, what each status means, and how to read it programmatically
Method
- Exact mint first. Cards are keyed by network + mint. A ticker search returns a list with addresses and never picks one
- Issuer → product → network → mint. A card is published only when a chain-specific issuer document names the address. Then owner program, layout and decimals are read at finalized commitment
- Claims with evidence. Each material field has a normalized value, scope (issuer / product / venue), document and section, digest, fetched-at, reviewed-at and reviewer
- Two people per change. Draft → in review → published. The author of a change cannot approve it; approval binds to the revision hash, so a later edit needs a new approval
- Hourly checks. A material change marks linked claims review required at once. 48 h without a successful fetch marks the source stale. Withdrawn cards keep their history
Statuses
confirmedA primary source states it and a reviewer bound it to this exact mint and version
partialSome fields are unknown, or a claim is waiting for review after a source change
unknownNo reviewed document states it. Never read as “no restriction”
conflictingTwo primary documents disagree. Both stay on the card; a newer page date does not settle it
Categories
Assigned only from evidence: direct / security entitlement, economic exposure / wrapper, fund / vault, platform / reward token, unknown. A token that pays out an NVDA-like asset does not inherit NVDA rights
API
Public, read-only, JSON. Responses carry the version hash, source IDs and claim statuses; unknown fields are present with value: null.
GET /v1/passports/{network}/{mint}Current published passport, or 404 unlistedGET /v1/catalogAll curated instruments with coverageGET /v1/compare?ids={mint},{mint}Two passports in one responsecurl -s <host>/v1/passports/solana/XsDoVfqeBukxuZHWhdvWHBhgEHjGNst4MLodqsJHzoB | jq '.claims[] | {field, status, value}'Integrator keys, embeds and term-change webhooks are metered in credits. There is no arbitrary-URL fetch or RPC proxy