Chain & state
91 live operations under /api/chain. 37 require a machine key; 54 are public. Tagged: Chain & State.
| Method | Path | What it does | Auth |
|---|---|---|---|
GET | /api/chain/{motherSlug}/anchored | Pseudonymous overview of every private machine anchoring here. | public |
POST | /api/chain/{motherSlug}/anchor | — | public |
GET | /api/chain/{motherSlug}/anchors | — | public |
GET | /api/chain/{slug}/activity | 9b. GET /api/chain/:slug/activity — typed, paginated audit feed AUDIT-EVERYTHING Phase 5: the observer's API. | public |
DELETE | /api/chain/{slug}/admins/{zid} | 4. DELETE /api/chain/:slug/admins/:zid | public |
PATCH | /api/chain/{slug}/admins/{zid} | 3. PATCH /api/chain/:slug/admins/:zid Body: { role: "admin" | "operator" | "viewer" } | public |
GET | /api/chain/{slug}/admins | 1. GET /api/chain/:slug/admins | public |
POST | /api/chain/{slug}/admins | 2. POST /api/chain/:slug/admins Body: { zid: string, role: "admin" | "operator" | "viewer" } | public |
GET | /api/chain/{slug}/analytics | 15.8 GET /api/chain/:slug/analytics — per-machine sparkline data EX.H (2026-05-19). | public |
DELETE | /api/chain/{slug}/api-keys/{id} | 10. DELETE /api/chain/:slug/api-keys/:id — revoke | public |
GET | /api/chain/{slug}/api-keys | 9. GET /api/chain/:slug/api-keys — list (no raw values) | public |
POST | /api/chain/{slug}/api-keys | 9. POST /api/chain/:slug/api-keys — mint a developer API key Body: { name: string, scope?: 'read'|'write'|'admin' | public |
POST | /api/chain/{slug}/app-event | 9d. POST /api/chain/:slug/app-event — mini-app audit hook AUDIT-EVERYTHING Phase 3: client-only mini-apps (compress, mai | key |
GET | /api/chain/{slug}/at | api/chain/:slug/at?zeqond=N | public |
POST | /api/chain/{slug}/audit/decrypt | admin role does NOT suffice — only owner. | public |
GET | /api/chain/{slug}/awareness/status | Public read — same canRead gate as /state. | public |
GET | /api/chain/{slug}/block | 10. GET /api/chain/:slug/block?zeqond=N — snapshot at N | public |
POST | /api/chain/{slug}/connection | 7. POST /api/chain/:slug/connection — connection event | key |
GET | /api/chain/{slug}/contracts/{id}/audit | 5. GET /api/chain/:slug/contracts/:id/audit — full transition history | key |
POST | /api/chain/{slug}/contracts/{id}/dry-run | what would fire / be filtered / pass. | key |
GET | /api/chain/{slug}/contracts/{id}/export | Returns a portable envelope of the contract's definition + metadata. | key |
POST | /api/chain/{slug}/contracts/{id}/fire-now | — | key |
POST | /api/chain/{slug}/contracts/{id}/freeze | fires. The row stays in the DB so audit history is preserved. | key |
GET | /api/chain/{slug}/contracts/{id}/integrity | Public-read, returns the stored hash + the live re-hash. | public |
GET | /api/chain/{slug}/contracts/{id}/next-fires | Predict the next N fires for time-based triggers (one_shot/recurring/cron). | key |
POST | /api/chain/{slug}/contracts/{id}/pause | — | key |
GET | /api/chain/{slug}/contracts/{id}/preview | Cheap, GET-only, owner-only, no charge. | key |
POST | /api/chain/{slug}/contracts/{id}/resume | — | key |
POST | /api/chain/{slug}/contracts/{id}/rollback | — | key |
POST | /api/chain/{slug}/contracts/{id}/skip-next | — | key |
POST | /api/chain/{slug}/contracts/{id}/transition | 4. POST /api/chain/:slug/contracts/:id/transition — execute transition | key |
GET | /api/chain/{slug}/contracts/{id}/transitions/stream | Push every successful transition for this contract. | key |
POST | /api/chain/{slug}/contracts/{id}/verify | 6. POST /api/chain/:slug/contracts/:id/verify — verify entire proof chain | key |
GET | /api/chain/{slug}/contracts/{id}/versions/{n} | — | key |
GET | /api/chain/{slug}/contracts/{id}/versions | — | key |
GET | /api/chain/{slug}/contracts/{id} | 3. GET /api/chain/:slug/contracts/:id — get contract + recent transitions | key |
PATCH | /api/chain/{slug}/contracts/{id} | overwrites the live row and bumps current_version_no. | key |
POST | /api/chain/{slug}/contracts/custom | templated deploy path; the only difference is the body carries a definition blob instead of a template id. | key |
POST | /api/chain/{slug}/contracts/import | slug. Runtime state (audit, fire_count, watermarks, secrets) starts clean — definition + metadata only. | key |
GET | /api/chain/{slug}/contracts | 2. GET /api/chain/:slug/contracts — list contracts | key |
POST | /api/chain/{slug}/contracts | 1. POST /api/chain/:slug/contracts — create contract | key |
GET | /api/chain/{slug}/coverage | 9c. GET /api/chain/:slug/coverage — which action types this machine emitted AUDIT-EVERYTHING Phase 5: the audit coverage | public |
POST | /api/chain/{slug}/event | 4. POST /api/chain/:slug/event — catch-all log | key |
GET | /api/chain/{slug}/events/stream | Push every contract_events insert for this slug to the connected client as an SSE frame. | key |
GET | /api/chain/{slug}/events | Read-only feed over contract_events for one slug. | key |
GET | /api/chain/{slug}/explore/sse | 12. GET /api/chain/:slug/explore/sse — live feed | public |
GET | /api/chain/{slug}/explore | } Response shape version field marks the new shape so consumers can negotiate. | public |
POST | /api/chain/{slug}/file | 6. POST /api/chain/:slug/file — file-hash event | key |
GET | /api/chain/{slug}/oracles | the contracts that carry definition.oracle, each enriched with its latest reading (value + Zeqond) and a small recent-hi | key |
GET | /api/chain/{slug}/pohc/validate | 13. GET /api/chain/:slug/pohc/validate?from=A&to=B PoHC = Proof of Harmonic Convergence. | public |
PATCH | /api/chain/{slug}/settings | 5. PATCH /api/chain/:slug/settings | public |
GET | /api/chain/{slug}/site/file/{sha} | 3. GET /api/chain/:slug/site/file/:sha — single file metadata | public |
GET | /api/chain/{slug}/site/list | 2. GET /api/chain/:slug/site/list — list pages | public |
DELETE | /api/chain/{slug}/site/publish-key | — | key |
GET | /api/chain/{slug}/site/publish-key | — | public |
POST | /api/chain/{slug}/site/publish-key | Plaintext is only returned on issue; thereafter the proxy at /s/<slug>/sdk/zeq/<op> attaches it server-side | key |
POST | /api/chain/{slug}/site/upload | 1. POST /api/chain/:slug/site/upload — upload one page | public |
GET | /api/chain/{slug}/sources | shows a section per named source). | public |
GET | /api/chain/{slug}/state | 9. GET /api/chain/:slug/state — latest state | public |
POST | /api/chain/{slug}/state | 5. POST /api/chain/:slug/state — state-hash snapshot | key |
GET | /api/chain/{slug}/stats | 7. GET /api/chain/:slug/stats | public |
POST | /api/chain/{slug}/status | 6. POST /api/chain/:slug/status Body: { status: "active" | "paused" | "archived" } | public |
GET | /api/chain/{slug}/tally/mint-rate | the global ticker drips it into tokens_remaining automatically. | public |
POST | /api/chain/{slug}/tally/mint-rate | — | key |
GET | /api/chain/{slug}/tally/supply | — | public |
GET | /api/chain/{slug}/tally/token/{tokenId} | — | public |
GET | /api/chain/{slug}/tally/token/avatar | decrypt + serve | public |
POST | /api/chain/{slug}/tally/token/avatar | encrypted upload | public |
POST | /api/chain/{slug}/tally/token/genesis | one-shot create + lock | public |
GET | /api/chain/{slug}/tally/token | public token metadata | public |
GET | /api/chain/{slug}/tally/tokens | — | public |
POST | /api/chain/{slug}/tally/verify | — | public |
POST | /api/chain/{slug}/tx/submit | 8. POST /api/chain/:slug/tx/submit — contract transition (stub for 6.1.N integration) ─ | key |
POST | /api/chain/{slug}/unlock | — | public |
GET | /api/chain/active | Returns the top public machines by transition count in the last N Zeqonds. | public |
GET | /api/chain/aggregate/list | Phase 6.1.U — aggregator-friendly list of every public state machine. | public |
GET | /api/chain/aggregate/sse | One SSE per consumer (e.g. | public |
GET | /api/chain/fleet | — | public |
GET | /api/chain/newest | 15.4 GET /api/chain/newest — newest registered public machines Network-home "Latest registered machines" panel. | public |
GET | /api/chain/recent | Returns newest-first. | public |
POST | /api/chain/rejection-log | — | public |
GET | /api/chain/seal | it binds, with every constant and recipe a stranger needs to verify the whole thing OFFLINE (tools/verify-zeq-chain.mjs | public |
GET | /api/chain/state-machines/{slug}/anchor-config | — | key |
PUT | /api/chain/state-machines/{slug}/anchor-config | — | key |
POST | /api/chain/state-machines/{slug}/anchor-key/rotate | — | key |
POST | /api/chain/state-machines/{slug}/share/disable | — | public |
POST | /api/chain/state-machines/{slug}/share/set | — | public |
GET | /api/chain/state-machines/{slug} | 3. GET /api/chain/state-machines/:slug — metadata | public |
GET | /api/chain/state-machines | 2. GET /api/chain/state-machines — list | public |
POST | /api/chain/state-machines | 1. POST /api/chain/state-machines — spin up | public |
GET | /api/chain/verify-anchor | Verifier helper. Recomputes id_hash from (slug, genesis_hash) and reports. | public |
Generated by scripts/generate-reference.mjs from https://zeq.me/openapi.json.