API reference
Every operation the Basalt server serves under /api/v1 — 160 of them across 119 paths, generated from the OpenAPI 3.1.0 document the server emits from its own route table. If an endpoint is not here, it does not exist.
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/{workspaceId}PATCH /api/v1/workspaces/{workspaceId}DELETE /api/v1/workspaces/{workspaceId}GET /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}GET /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
Collections
The top level of the page tree, and who may see each one.
GET /api/v1/workspaces/{workspaceId}/collectionsPOST /api/v1/workspaces/{workspaceId}/collectionsPATCH /api/v1/workspaces/{workspaceId}/collections/{collectionId}DELETE /api/v1/workspaces/{workspaceId}/collections/{collectionId}
Outlines
Lithic’s outliner documents (ADR-0018): 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}/markdown
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}/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}/propsPATCH /api/v1/workspaces/{workspaceId}/pages/{pageId}/propsGET /api/v1/workspaces/{workspaceId}/pages/{pageId}/relationsPUT /api/v1/workspaces/{workspaceId}/pages/{pageId}/relations/{fieldId}
Databases and fields
The workspace field registry, databases and their bound fields, saved views, and row memberships.
GET /api/v1/workspaces/{workspaceId}/fieldsPOST /api/v1/workspaces/{workspaceId}/fieldsGET /api/v1/workspaces/{workspaceId}/fields/{fieldId}PATCH /api/v1/workspaces/{workspaceId}/fields/{fieldId}DELETE /api/v1/workspaces/{workspaceId}/fields/{fieldId}POST /api/v1/workspaces/{workspaceId}/fields/{fieldId}/retypePOST /api/v1/workspaces/{workspaceId}/fields/{fieldId}/mergeGET /api/v1/workspaces/{workspaceId}/fields/{fieldId}/usageGET /api/v1/workspaces/{workspaceId}/databasesPOST /api/v1/workspaces/{workspaceId}/databasesGET /api/v1/workspaces/{workspaceId}/databases/{databaseId}PATCH /api/v1/workspaces/{workspaceId}/databases/{databaseId}POST /api/v1/workspaces/{workspaceId}/databases/{databaseId}/trashPOST /api/v1/workspaces/{workspaceId}/databases/{databaseId}/restoreDELETE /api/v1/workspaces/{workspaceId}/databases/{databaseId}/permanentGET /api/v1/workspaces/{workspaceId}/databases/{databaseId}/fieldsPOST /api/v1/workspaces/{workspaceId}/databases/{databaseId}/fieldsPATCH /api/v1/workspaces/{workspaceId}/databases/{databaseId}/fields/{fieldId}DELETE /api/v1/workspaces/{workspaceId}/databases/{databaseId}/fields/{fieldId}GET /api/v1/workspaces/{workspaceId}/viewsPOST /api/v1/workspaces/{workspaceId}/viewsGET /api/v1/workspaces/{workspaceId}/views/{viewId}PATCH /api/v1/workspaces/{workspaceId}/views/{viewId}POST /api/v1/workspaces/{workspaceId}/views/{viewId}/trashPOST /api/v1/workspaces/{workspaceId}/databases/{databaseId}/rows/queryPOST /api/v1/workspaces/{workspaceId}/databases/{databaseId}/rowsPOST /api/v1/workspaces/{workspaceId}/databases/{databaseId}/rows/addPOST /api/v1/workspaces/{workspaceId}/databases/{databaseId}/rows/{pageId}/moveDELETE /api/v1/workspaces/{workspaceId}/databases/{databaseId}/rows/{pageId}
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, import and export, and link unfurling — the operations where the instance talks to the outside world. Plus the one pair that runs the other way: the early-access signup, which is the only part of this API a caller reaches with no session at all.
POST /api/v1/waitlistPOST /api/v1/waitlist/confirmPOST /api/v1/waitlist/unsubscribePOST /api/v1/workspaces/{workspaceId}/unfurlGET /api/v1/workspaces/{workspaceId}/exportPOST /api/v1/workspaces/{workspaceId}/importGET /api/v1/workspaces/{workspaceId}/import/runsGET /api/v1/workspaces/{workspaceId}/import/runs/{runId}GET /api/v1/workspaces/{workspaceId}/import/runs/{runId}/linksGET /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}/deliveriesGET /api/v1/workspaces/{workspaceId}/import-connectionsPOST /api/v1/workspaces/{workspaceId}/import-connectionsDELETE /api/v1/workspaces/{workspaceId}/import-connections/{connectionId}POST /api/v1/workspaces/{workspaceId}/import-connections/{connectionId}/probePOST /api/v1/workspaces/{workspaceId}/import-connections/{connectionId}/run
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
Instance administration
The operator back office: every workspace on this instance with its metadata and plan, the plan assignment, and the append-only trail of operator actions. Metadata only — the operator of a hosted Basalt is a data processor and these routes cannot return page titles, page contents or comments. Session-only, and restricted to the operators named in BASALT_OPERATORS.