Definitions, the wire formats, and the questions people actually ask. The prose versions live on the buy, use and trust pages.
Buyer to clerk, inside a shielded payment:
stamp <S|M|L> reply:<unified or sapling address>
Accepted variants and the exact failure cases are tabulated on the buy page. Maximum 512 bytes, which is a hard protocol limit rather than a truncation point.
Clerk to buyer, on a dust payment to the reply address:
IVlWVlWI stamp M key: <venice api key> until: 2026-09-28T12:34Z use: https://api.venice.ai/api/v1 - private models only - Tor https://xn--ojq.app
On a rejection, the same dust payment carries a single line explaining what was wrong, for example an underpaid amount or a sold-out tier.
Price is the inference the stamp funds, plus the operator margin, plus the cost of delivering the memo. That last part is a flat ZEC cost of roughly thirty cents per stamp: at a high ZEC price it would otherwise exceed the entire margin on tier S. The total is converted to ZEC at a live median of three independent sources: CoinGecko, Kraken and the Hyperliquid ZEC mid. At least two must answer.
Public, same origin, no authentication. Everything the page displays comes from here, and you can fetch it without running our code.
{
"name": "IVlWVlWI",
"network": "mainnet",
"dryRun": false,
"address": "u1...",
"zecUsd": 1520.87,
"priceSources": ["coingecko", "kraken", "hyperliquid"],
"tiers": [
{ "id": "S", "diemPerDay": 0.5, "days": 3, "usd": 2.09, "zec": "0.00141900" }
],
"capacity": { "total": 0, "committed": 0, "available": 0, "unlimitedDryRun": true },
"stamps": { "total": 0, "today": 0, "byTier": {}, "dryRun": 0 },
"burnLane": { "live": false, "chain": "Elysium", "chainId": 99901,
"publicRpcUrl": null, "token": null,
"tierAmounts": {}, "finality": "finalized" },
"memoFormat": "stamp <S|M|L> reply:<your unified address>",
"updatedAt": "2026-09-21T15:00:00.000Z"
}
Check network and dryRun before sending anything. Check capacity.available against the tier you want. If updatedAt is stale, the clerk is not running.
Returns 200 only once a poll has succeeded and fewer than three failures are in a row. 503 otherwise, with the detail inline. If this is unhappy, a payment you already sent is waiting rather than lost.
{ "ok": true, "running": true, "lastPollOk": "…", "lastPollError": null,
"consecutiveFailures": 0, "lastHeight": 3000001 }
The public lane, live only after the IVLW launch. Verifies a burn on Elysium (chain 99901, gas in HYPE) and delivers a stamp by memo. A burn is accepted once its block is at or below the finalized tag, meaning its batch is final on HyperEVM. Counting blocks would mean nothing at 100 ms per block.
{ "txHash": "0x…", "replyTo": "u1…" }
| CODE | MEANING |
|---|---|
| 200 | issued, with the tier and the delivery txid |
| 400 | invalid JSON, or the reply address is not shielded |
| 409 | already used, raced |
| 422 | bad hash, not found, pending, reverted, no burn transfer, below minimum, not final yet (unconfirmed), already used, sold out, or the clerk cannot deliver right now. Anything short of a delivered stamp gives the burn back, so the same hash can be sent again. |
| 429 | rate limited, try again in a minute |
| 503 | the burn lane is not live yet, or the delivery failed after the key was minted. In the second case send the same hash again: the key already minted for it is reused, not a second one. |
The rate limit is global rather than per address, because keeping per-address counters would mean keeping addresses.
IVlWVlWI is VENICE seen reflected in canal water. The letters collapse to strokes: V stays V, E becomes l, N becomes W, and two I pillars hold the reflection in place. Read the middle as VEN and VEN.
Public text is written in a four-glyph cipher built from the same idea. The cipher page encodes and decodes it in your browser.