API
Reads are JSON with open CORS. Writes need a wallet session (a signed message, never a transaction).
| Method | Path | What | Access |
|---|---|---|---|
| GET | /api/config | Phase (pre-launch or live), the index version and size. | public, CORS |
| POST | /api/looks | Look at an address: { address, save? } → its tree, the NOAA chronology, rarity. Saving needs a session for that wallet. | 30/min per IP |
| GET | /api/series/{study} | A NOAA chronology by study id, parsed (index × 1000, sample depth). | public, CORS |
| GET | /api/core/{study} | The record's longest core: ring widths in millimetres, from NOAA's .rwl file. | public, CORS |
| GET | /api/trees?limit=&before= | Saved trees, newest first. | public, CORS |
| GET | /api/trees/{n} | One saved tree. | public, CORS |
| PUT | /api/trees/{n}/studio | Save your cut: { from, to, tone, cut, mark: { year, note } }. Owner only. | session |
| GET | /api/wallet/{address} | The tree a wallet saved, if any. | public, CORS |
| GET | /api/forest | Every saved tree, and for each year from 20 CE to 2019 how many were alive to record it. | public, CORS |
| POST | /api/auth/nonce | Start sign-in: { address } → a message to sign. | 20/min per IP |
| POST | /api/auth/verify | Finish sign-in: { address, message, signature } → session cookie. | 20/min per IP |
| GET | /api/me | Your session, phase, holder status and tree. | session |
| POST | /api/auth/logout | End the session. | session |
Try /api/forest · /api/trees · /api/config. The index itself is /data/itrdb-v1.json.