API reference
Every operation Lithic calls under /api/v1 — 145 of them across 109 paths, generated from the OpenAPI 3.1.0 document the server emits from its own route table. If an endpoint is documented here, it exists.
One server answers more than one product, and this reference covers the areas this one uses. An endpoint absent from these pages is not necessarily absent from the server — it belongs to a surface you have not been given.
Start with API for authentication, error shapes, pagination and webhooks.
Workspaces and people
Workspaces, their members, groups and invitations, the capabilities of the calling account, and what the workspace has used of its plan.
GET /api/v1/workspacesPOST /api/v1/workspacesGET /api/v1/workspaces/activatableGET /api/v1/workspaces/{workspaceId}PATCH /api/v1/workspaces/{workspaceId}DELETE /api/v1/workspaces/{workspaceId}POST /api/v1/workspaces/{workspaceId}/activationGET /api/v1/workspaces/{workspaceId}/membersGET /api/v1/workspaces/{workspaceId}/collections/{collectionId}/membersPUT /api/v1/workspaces/{workspaceId}/collections/{collectionId}/membersDELETE /api/v1/workspaces/{workspaceId}/collections/{collectionId}/members/{subjectType}/{subjectId}POST /api/v1/me/avatarDELETE /api/v1/me/avatarGET /api/v1/users/{userId}/avatarGET /api/v1/workspaces/{workspaceId}/usageGET /api/v1/workspaces/{workspaceId}/me/capabilitiesPATCH /api/v1/workspaces/{workspaceId}/members/{userId}DELETE /api/v1/workspaces/{workspaceId}/members/{userId}GET /api/v1/workspaces/{workspaceId}/groupsPOST /api/v1/workspaces/{workspaceId}/groupsPATCH /api/v1/workspaces/{workspaceId}/groups/{groupId}DELETE /api/v1/workspaces/{workspaceId}/groups/{groupId}GET /api/v1/workspaces/{workspaceId}/groups/{groupId}/membersPUT /api/v1/workspaces/{workspaceId}/groups/{groupId}/members/{userId}DELETE /api/v1/workspaces/{workspaceId}/groups/{groupId}/members/{userId}GET /api/v1/workspaces/{workspaceId}/invitationsPOST /api/v1/workspaces/{workspaceId}/invitationsDELETE /api/v1/workspaces/{workspaceId}/invitations/{invitationId}POST /api/v1/invitations/accept
Outlines
Outliner documents: a structure block like a page, with its node tree inside its own document rather than in the page tree.
GET /api/v1/workspaces/{workspaceId}/outlinesPOST /api/v1/workspaces/{workspaceId}/outlinesGET /api/v1/workspaces/{workspaceId}/outlines/{outlineId}PATCH /api/v1/workspaces/{workspaceId}/outlines/{outlineId}DELETE /api/v1/workspaces/{workspaceId}/outlines/{outlineId}GET /api/v1/workspaces/{workspaceId}/outlines/{outlineId}/markdownPUT /api/v1/workspaces/{workspaceId}/outlines/{outlineId}/markdownPOST /api/v1/workspaces/{workspaceId}/outlines/{outlineId}/moveGET /api/v1/workspaces/{workspaceId}/outlines/{outlineId}/pane-layoutPUT /api/v1/workspaces/{workspaceId}/outlines/{outlineId}/pane-layout
Cross-product references
The one door a reference crosses a product boundary through: making a project on a surface that has none of its own, and resolving a stored id into the words to draw beside it. What crosses is an identity, never content — a title is resolved where it is drawn, and a reference nobody may see resolves to nothing rather than to an error. Both products have to be active on the workspace.
POST /api/v1/workspaces/{workspaceId}/cross-refs/resolvePOST /api/v1/workspaces/{workspaceId}/cross-refs/projects
Pages
Creating, moving, trashing and restoring pages; their Markdown surface, field values, relations, backlinks, search, and the pages a person pins.
GET /api/v1/workspaces/{workspaceId}/pagesPOST /api/v1/workspaces/{workspaceId}/pagesGET /api/v1/workspaces/{workspaceId}/pages/{pageId}PUT /api/v1/workspaces/{workspaceId}/pages/{pageId}PATCH /api/v1/workspaces/{workspaceId}/pages/{pageId}POST /api/v1/workspaces/{workspaceId}/pages/{pageId}/movePOST /api/v1/workspaces/{workspaceId}/pages/{pageId}/duplicatePOST /api/v1/workspaces/{workspaceId}/pages/{pageId}/trashPOST /api/v1/workspaces/{workspaceId}/pages/{pageId}/restoreGET /api/v1/workspaces/{workspaceId}/trashGET /api/v1/workspaces/{workspaceId}/trash/summaryDELETE /api/v1/workspaces/{workspaceId}/pages/{pageId}/permanentPOST /api/v1/workspaces/{workspaceId}/trash/emptyGET /api/v1/workspaces/{workspaceId}/searchGET /api/v1/workspaces/{workspaceId}/favoritesPOST /api/v1/workspaces/{workspaceId}/favoritesDELETE /api/v1/workspaces/{workspaceId}/favorites/{pageId}POST /api/v1/workspaces/{workspaceId}/favorites/{pageId}/moveGET /api/v1/workspaces/{workspaceId}/pages/{pageId}/boardsGET /api/v1/workspaces/{workspaceId}/pages/{pageId}/backlinksGET /api/v1/workspaces/{workspaceId}/blocks/{blockId}/referencesGET /api/v1/workspaces/{workspaceId}/pages/{pageId}/referenced-blocksGET /api/v1/workspaces/{workspaceId}/blocks/{blockId}/ref-targetGET /api/v1/workspaces/{workspaceId}/pages/{pageId}/fieldsGET /api/v1/workspaces/{workspaceId}/pages/{pageId}/propsPATCH /api/v1/workspaces/{workspaceId}/pages/{pageId}/propsGET /api/v1/workspaces/{workspaceId}/pages/{pageId}/relationsPUT /api/v1/workspaces/{workspaceId}/pages/{pageId}/relations/{fieldId}
Collaboration
Comments, page history, activity, notifications, attachments and the workspace symbol library.
POST /api/v1/workspaces/{workspaceId}/attachmentsGET /api/v1/workspaces/{workspaceId}/attachments/{attachmentId}GET /api/v1/workspaces/{workspaceId}/symbolsPOST /api/v1/workspaces/{workspaceId}/symbolsPATCH /api/v1/workspaces/{workspaceId}/symbols/{symbolId}DELETE /api/v1/workspaces/{workspaceId}/symbols/{symbolId}GET /api/v1/workspaces/{workspaceId}/pages/{pageId}/commentsPOST /api/v1/workspaces/{workspaceId}/pages/{pageId}/commentsGET /api/v1/workspaces/{workspaceId}/commentsGET /api/v1/workspaces/{workspaceId}/comment-threads/{threadId}POST /api/v1/workspaces/{workspaceId}/comment-threads/{threadId}/commentsPOST /api/v1/workspaces/{workspaceId}/comment-threads/{threadId}/resolvePATCH /api/v1/workspaces/{workspaceId}/comment-threads/{threadId}/comments/{commentId}DELETE /api/v1/workspaces/{workspaceId}/comment-threads/{threadId}/comments/{commentId}GET /api/v1/workspaces/{workspaceId}/pages/{pageId}/historyPOST /api/v1/workspaces/{workspaceId}/pages/{pageId}/historyGET /api/v1/workspaces/{workspaceId}/pages/{pageId}/history/{versionId}DELETE /api/v1/workspaces/{workspaceId}/pages/{pageId}/history/{versionId}POST /api/v1/workspaces/{workspaceId}/pages/{pageId}/history/{versionId}/restoreGET /api/v1/workspaces/{workspaceId}/pages/{pageId}/activityGET /api/v1/workspaces/{workspaceId}/activityGET /api/v1/workspaces/{workspaceId}/notificationsGET /api/v1/workspaces/{workspaceId}/notifications/summaryPOST /api/v1/workspaces/{workspaceId}/notifications/{notificationId}/readPOST /api/v1/workspaces/{workspaceId}/notifications/readDELETE /api/v1/workspaces/{workspaceId}/notifications/{notificationId}
Permissions and sharing
Per-page access control lists, restriction boundaries, public share links, and the token routes a stranger reads them through.
GET /api/v1/public/shares/{token}GET /api/v1/public/shares/{token}/pages/{pageId}GET /api/v1/public/shares/{token}/attachments/{attachmentId}GET /api/v1/workspaces/{workspaceId}/pages/{pageId}/public-sharePUT /api/v1/workspaces/{workspaceId}/pages/{pageId}/public-shareDELETE /api/v1/workspaces/{workspaceId}/pages/{pageId}/public-shareGET /api/v1/workspaces/{workspaceId}/pages/{pageId}/accessPUT /api/v1/workspaces/{workspaceId}/pages/{pageId}/permissionsDELETE /api/v1/workspaces/{workspaceId}/pages/{pageId}/permissions/{subjectType}/{subjectId}POST /api/v1/workspaces/{workspaceId}/pages/{pageId}/restrict
Automation
Personal access tokens, webhooks, export, and link unfurling — the operations where the instance talks to the outside world. Plus the few that run the other way: the early-access signup and the sign-in screen’s question about which ways in this deployment has, the parts of this API a caller reaches with no session at all.
GET /api/v1/auth/methodsPOST /api/v1/waitlistPOST /api/v1/waitlist/confirmPOST /api/v1/waitlist/unsubscribePOST /api/v1/workspaces/{workspaceId}/unfurlGET /api/v1/workspaces/{workspaceId}/exportGET /api/v1/workspaces/{workspaceId}/tokensPOST /api/v1/workspaces/{workspaceId}/tokensDELETE /api/v1/workspaces/{workspaceId}/tokens/{tokenId}GET /api/v1/workspaces/{workspaceId}/webhooksPOST /api/v1/workspaces/{workspaceId}/webhooksPATCH /api/v1/workspaces/{workspaceId}/webhooks/{webhookId}DELETE /api/v1/workspaces/{workspaceId}/webhooks/{webhookId}POST /api/v1/workspaces/{workspaceId}/webhooks/{webhookId}/secretGET /api/v1/workspaces/{workspaceId}/webhooks/{webhookId}/deliveries
Connected accounts
A person’s own authorisation at a foreign service — Google, Microsoft, a CalDAV server or a plain ICS subscription — and the calendar mirror it feeds. Personal, not workspace-shared: these routes answer with the calling account’s connections and nobody else’s, so a workspace admin sees their own and no colleague’s. Two routes change a meeting at the provider, and only on a calendar switched on for it; everything else here reads. No route returns a credential: a refresh token, an app-specific password and a subscription URL all stay on the server, and a subscription URL is treated as the bearer secret it is.
GET /api/v1/workspaces/{workspaceId}/connected-accountsPOST /api/v1/workspaces/{workspaceId}/connected-accountsDELETE /api/v1/workspaces/{workspaceId}/connected-accounts/{connectionId}GET /api/v1/workspaces/{workspaceId}/connected-accounts/{connectionId}/calendarsPOST /api/v1/workspaces/{workspaceId}/connected-accounts/{connectionId}/resyncPATCH /api/v1/workspaces/{workspaceId}/connected-accounts/{connectionId}/calendars/{sourceId}GET /api/v1/workspaces/{workspaceId}/calendar/eventsPATCH /api/v1/workspaces/{workspaceId}/calendar/eventsDELETE /api/v1/workspaces/{workspaceId}/calendar/eventsGET /api/v1/workspaces/{workspaceId}/calendar/ticksPUT /api/v1/workspaces/{workspaceId}/calendar/ticksGET /api/v1/workspaces/{workspaceId}/calendar/publicationsPUT /api/v1/workspaces/{workspaceId}/calendar/publication-scopesPOST /api/v1/workspaces/{workspaceId}/calendar/publications/retryPOST /api/v1/workspaces/{workspaceId}/connected-accounts/oauth/startPOST /api/v1/connectors/oauth/callback
Billing and invoices
The workspace’s subscription and billing details, and the invoices this instance issues in the operator’s own number range — plus the payment provider’s callback.
POST /api/v1/billing/webhookGET /api/v1/workspaces/{workspaceId}/billing/subscriptionGET /api/v1/workspaces/{workspaceId}/billing/customerPUT /api/v1/workspaces/{workspaceId}/billing/customerGET /api/v1/workspaces/{workspaceId}/billing/invoicesGET /api/v1/workspaces/{workspaceId}/billing/invoices/{invoiceId}GET /api/v1/workspaces/{workspaceId}/billing/invoices/{invoiceId}/documentPOST /api/v1/workspaces/{workspaceId}/billing/checkout
Feedback
Filing a bug report or an idea from inside the app. Authenticated, and deliberately outside /workspaces/{workspaceId}: the report is addressed to the people who run the instance rather than to a workspace, which is also why it is session-only and why the workspace it names carries no authority. It travels with the screen it was written on, the build, the window, the pointer and a structural recording of what the app did — never with anything anybody wrote. Operators read them through the back office.