How it works · API

One request per deposit.

The verifier over HTTP, for exchanges, bridges and anyone else. Same code and same answers as the command line. Every read-only endpoint below has a Try it live button that calls the real API on mainnet.

01 / Basics

No key, no account.

api.usevintage.siteBase URL, Zcash mainnet. JSON in and out. Open to any origin (CORS).
No logsNo request log, no IPs, no txids kept. The only record is the anonymous daily count at /stats.
Self-hostFor production, run vintage-api next to your own node, so nobody learns which deposits you check. See the integration guide.
02 / The check

GET /verify/{txid}?before={event or height}

Did every coin this transaction spends exist before the event? Answers PASS, FAIL or NOT_PROVABLE, with the evidence and the coins' age. Only act on "provisional": false.

Request
$ curl 'https://api.usevintage.site/verify/da9017e0fca0d8bd87def8e3faa7956067f2bd2234cfee91ca7ad4e67095e3a7?before=vintage-demo-2026-10'
FieldMeaning
verdictPASS: every coin predates the event. FAIL: no information, never a flag. NOT_PROVABLE: non-Ironwood inputs, see reasons.
summaryOne sentence for people.
provisionaltrue while unmined: the same txid could still be mined with another anchor.
ageBlock and time by which every coin was in the pool.
evidenceBlocks covered and distinct pool states ruled out.
03 / No event needed

GET /age/{txid}

The coins' proven age, and for each registered event whether they predate it. One call screens a deposit against every event. The example is a stranger's transaction from the day before the Bitget hack.

Request
$ curl https://api.usevintage.site/age/d3252057850259c86ffae437d0df207ff8b500e4d83dfe4409f585dcd6b441e4
05 / The registry

GET /events

The signed event registry for this network, its public key, and whether the signature verified. The exact signed bytes: /registry/events.json and .sig.

Request
$ curl https://api.usevintage.site/events
06 / Service

Counts and health.

GET /stats

Anonymous daily totals of checks, by verdict and by event. Nothing else is recorded.

GET /health

The network, the lightwalletd server the API reads from, and the chain tip.

07 / Errors

When there's no verdict.

StatusWhen
400Malformed txid, missing before, unknown event, or a height before Ironwood's activation (block 3,428,143) or above the tip.
404The server doesn't know the transaction.
502The lightwalletd server couldn't be reached.

Errors are JSON: {"error": "…"}. Treat any error as no information and apply your normal process. Full field reference: docs/API.md. The same checks from a terminal: the command line.