GET /healthGET /api/v1/sites/:siteIdPUT /api/v1/sites/:siteIdDELETE /api/v1/sites/:siteId
Returns a simple health payload.
{
"status": "ok"
}Fetches an encrypted site payload.
{
"siteId": "my-note",
"version": 1,
"createdAt": "2026-04-24T08:00:00.000Z",
"updatedAt": "2026-04-24T08:00:00.000Z",
"ciphertext": "base64...",
"iv": "base64...",
"salt": "base64...",
"algorithm": "aes-256-gcm",
"kdf": "argon2id",
"noteHash": "sha256..."
}400invalidsiteId404site not found429rate limit exceeded
Creates or updates a site.
{
"ciphertext": "base64...",
"iv": "base64...",
"salt": "base64...",
"algorithm": "aes-256-gcm",
"kdf": "argon2id",
"authToken": "client-derived-secret",
"expectedVersion": 0,
"noteHash": "sha256..."
}expectedVersion: 0creates a new site.expectedVersion: <current version>updates an existing site.- The request fails if the client sends a stale version.
- The request fails if the token does not match the stored token hash.
400invalid input401invalid auth token409version conflict429rate limit exceeded
Deletes a site.
{
"authToken": "client-derived-secret",
"expectedVersion": 1
}400invalid input401invalid auth token404site not found409version conflict429rate limit exceeded