Quick start
Versioned JSON over HTTPS
Send GET requests to /api/v1. Every response contains a request ID, API version, and timestamp. Public verification may be called without a key; configured commercial access uses X-API-Key.
Authentication
API keys are cryptographically generated, displayed once, stored only as SHA-256 digests, and limited to approved read scopes. Invalid, suspended, revoked, and expired keys fail closed. Authenticated CORS never uses a wildcard.
Active endpoints
/api/v1/healthService, database, chain, contract, and read-only policy status
/api/v1/passports/{passportId}Approved public passport projection
/api/v1/passports/{passportId}/verifyLive record-integrity result
/api/v1/passports/{passportId}/statusAuthoritative lifecycle and transfer state
/api/v1/passports/{passportId}/provenanceApproved public provenance
/api/v1/passports/{passportId}/transfersPrivacy-safe transfer history
/api/v1/issuers/{issuerId}Public issuer profile
/api/v1/issuers/{issuerId}/passportsPaginated issuer passports
/api/v1/searchBounded public search
Verification terminology
Record Verified is used only when approved database commitments and the configured live contract agree. It never means “Authentic” by blockchain presence alone. Precise states cover mismatches, lost, stolen, disputed, retired, burned, chain unavailable, and contract not configured.
Provenance
Only approved public event identifiers, descriptions, actors, timestamps, hashes, transaction references, and evidence-availability booleans are returned. Private evidence and investigation notes are excluded.
Issuers
The issuer model is multi-issuer. CRCA remains a demonstration issuer used in this preview environment; an issuer’s public profile and paginated passport list are separate resources.
Search
Search accepts documented fields only, rejects abusive wildcard patterns, caps text length, uses page sizes from 1–50, and never performs unbounded queries.
Errors
Errors use stable codes inside the standard envelope. See the OpenAPI specification for every code and HTTP response.
Rate limits
Responses include limit, remaining, reset, and plan headers. Blocked requests also include Retry-After. Developer, Starter, Professional, and Enterprise are configuration tiers only; billing is disabled.
Security
The public API is read-only. It has no contract writer, signer, broadcaster, deployer, or active webhook delivery path. The sole mutating surface on the deployment is the Square card-charge endpoint, which activates only when payments are enabled and stores no card data. Base Sepolia remains read-only.
Privacy
No customer identity, private contact data, purchase price, private valuation, secure-tag secret, NFC secret, private evidence, authentication material, wallet credential, or internal role assignment belongs in a public response.
Changelog
OpenAPI v1.1.0 adds transfers, issuer passport listings, bounded search, API-key and rate-limit documentation, and the verification widget. Write specifications are reserved for future versions and remain disabled in the current API.