Capture API
Capture is the private side of Rasepi: personal spaces of notes that belong to one user, organized into a tree, optionally shared, and summarized by AI. Notes are private by default and encrypted at the application layer. Base URL /personal.
Overview
Each user has their own space. Notes form a tree (a note can have a parent), are private unless explicitly shared with users or groups, and never appear in tenant-wide search. AI summarization runs against a per-user quota, separate from the workspace AI budget.
Authentication
Capture endpoints are user-scoped: they act as the signed-in user, so they use a normal user session or OAuth access token (not a machine API key). Every note is owned by the authenticated user.
Authorization: Bearer <user access token>
See the Platform API for the shared auth flow.
GET /personal/notes
The current user's own notes as a flat list; the client builds the tree from each note's parent.
GET /personal/notes
[
{ "id": "9b1c…", "title": "Standup notes", "parentId": null, "updatedAt": "2026-06-12T08:00:00Z" },
{ "id": "4a2e…", "title": "Q3 ideas", "parentId": "9b1c…", "updatedAt": "2026-06-11T17:20:00Z" }
]GET /personal/notes/{id}
One note with its full content. Returns 404 if the note does not exist or is not yours.
POST /personal/notes
Create a private note. Set parentId to nest it under another note.
POST /personal/notes
{
"title": "Standup notes",
"content": "Discussed the release timeline…",
"parentId": null
}PUT /personal/notes/{id}
Update a note's title and/or content. Owner only.
DELETE /personal/notes/{id}
Delete a note. Owner only. Returns 204 No Content.
POST /personal/notes/{id}/summarize
AI-summarize a note. Counts against the per-user AI quota; returns 409 if the note is empty or the quota is exhausted.
POST /personal/notes/9b1c…/summarize
{ "summary": "Three release blockers and an owner for each." }GET /personal/groups
Tenant groups the user can share notes with. Group names only; tenant-scoped.
GET /personal/quota
The current user's personal AI usage for the period — how much summarization budget remains.