Short links
POST/api/linksCreate. Body: url, alias?, expiresIn?, maxClicks?, preview?
PATCH/api/links/:codeChange url, maxClicks, expiresIn, preview. Owner.
GET/api/links/:code/stats30-day stats. Owner.
GET/api/links/:code/peekDestination without counting a click.
GET/:codeRedirect. Append + for stats, ~ for a preview page.
Seals
POST/api/sealsCreate. Body: kind, mode, salt, iter?, epk?, proof, meta, nonce?, chunk?, size?, expiresIn, maxViews.
PUT/api/seals/:code/blobUpload the encrypted stream, exact length. Owner.
GET/api/seals/:codePublic header: kind, mode, salt, expiry, views left.
POST/api/seals/:code/openBody: proof. Counts one view, returns ciphertext and a download URL.
GET/api/seals/:code/logAccess log. Owner.
Requests and housekeeping
POST/api/requestsAsk a person for a secret. Body: label, address, expiresIn.
POST/api/requests/:id/answerThe person's encrypted answer: epk, salt, meta.
GET/api/requests/:id/answerCollect it once. Owner.
DELETE/api/items/:codeRevoke a link or seal. Owner.
POST/api/statusStatus of many items. Body: items [{code, token}].
GET/api/qr.svg?d=…QR code as SVG.
POST/mcpRemote MCP, JSON-RPC 2.0.