What We Publish
Etchd publishes everything a reader needs to check a tick without us. Your data stays out of it. Users appear only as hashes, because a stamp request carries one hash and no file (What You Send Us on the Stamping page). Each witness capture goes out with its normalized form and both hashes. Machine captures also carry the raw response we fetched. News feeds keep only capped metadata, and since 2026-10-23 their raw feed is hashed but not stored or published.
Published Records
All of it is public. The API serves the calendar's own data and each witness capture with its normalized form, plus the raw body wherever we kept one, and the daily bundles carry the same.
| What | Where |
|---|---|
| Tick roots, tick summaries and their status | /v1/ticks, /v1/ticks/:n |
| The DAG-CBOR tick body, the exact bytes behind the CID | /v1/ticks/:n/body |
| One beacon observation with its path to the beacon root, and the raw block header for UTXO and EVM chains | /v1/ticks/:n/beacon/:chain |
| Anchor records, one per transaction with 400 confirmations | /v1/anchors/:epoch/:nonce |
| Witness captures with their hashes, metadata and Merkle path, and the normalized record for machine sources | /v1/captures/:id |
| The raw response body of a machine capture or a news capture from before 2026-10-23, the bytes behind its raw hash | /v1/captures/:id/raw |
| The normalized form of a capture, the bytes behind its normalized hash | /v1/captures/:id/normalized |
| Signer keys and their epochs | /v1/signers |
| Daily CAR bundles and single blocks by CID | /v1/exports, /ipfs/:cid |
Witness Captures
Editorial sources are third-party writing, which today means Hacker News and the 80 news feeds listed under News Feeds, while machine sources are the Certificate Transparency signed tree heads, the NIST Randomness Beacon pulses and the ECB reference rates. Machine captures publish their raw body. News captures from 2026-10-23 on keep the title, link, date and id of each item, with titles cut at 300 Unicode code points, links and ids at 500 and dates at 64, and at most 100 items, and the raw feed is hashed but not kept. News captures from before that date kept their raw feed and still serve it.
We fetch only feeds and APIs. Hacker News comes from its official API as JSON and the newspapers from their public RSS feeds, and we never fetch or publish an HTML page. A capture page lists the normalized items, meaning the headlines with links to the articles, plus Hacker News points and comment counts from the normalized record.
News Feeds
Each feed is captured every two hours, at its own minute of the two hours, and no two feeds share a minute. The 80 outlets cover the major economies and regions, and where a country has both a state-run or public outlet and an independent one we take both, so a reader can compare how each covered the same hour. They come from 44 countries and are written in 24 languages.
The raw route returns the body exactly as we fetched it, served as a download with application/octet-stream, nosniff and a sandbox content security policy so that a browser never renders it as a page from etchd.app. For a news capture from 2026-10-23 on it answers 404 with the reason not-kept. The daily CAR bundles carry the same normalized bytes, and the raw bytes wherever we kept them. If a publisher asks, we remove a stored raw copy. The hash and proofs stay valid.
Open a capture from the Witnesses on the Live page and the browser hashes the normalized bytes against the normalized hash. Where we kept the raw bytes it also hashes them against the raw hash, then runs the published normalizer on them and checks that the result gives the normalized hash, following the rules in Normalizers in SPEC.md. For a news capture from 2026-10-23 on, the page says the raw feed was hashed but not kept and skips those two checks. A copy of the feed you saved yourself at that moment still covers them. Check Your Copy hashes it against the raw hash and normalizes it to compare with the normalized hash, all in your browser.
Other Posts to the Contract
The anchor contract is a public noticeboard. Anyone can post to it. Our explorer and API read only the calendar's own tables, the ticks it sealed and the transactions its signer sent, and never the contract's event log, which means a post to the contract from someone else does not show up on etchd.app as a tick, a transaction or a proof.