Overview
The Velt Node SDK exposes two independent backends:| Backend | Namespace | Use case |
|---|---|---|
| Self-hosting | sdk.selfHosting.* | Store Velt data in your own MongoDB + AWS S3 |
| REST API | sdk.api.* | Call Velt’s REST APIs directly — no database required |
sdk.selfHosting.*) simplifies backend implementation by 90%. Instead of writing custom database queries and storage logic, you:
- Pass your DB and storage configs to the SDK
- Call the relevant SDK method with the raw request payload
- Return the resulting response directly to the client
sdk.api.*) provides feature parity with the Velt Python SDK. 17 services, fully-typed TypeScript request objects, and raw Velt API responses. No database or AWS configuration needed.
Installation
Requirements
- Node.js 18+
- TypeScript 5.x (optional — JavaScript is fully supported)
- MongoDB 6+ (Percona Server or MongoDB Atlas) for self-hosting
mongodb^6 and@aws-sdk/client-s3^3 as optional peer dependencies
Quick Start
Initialize the SDK
Self-hosting initialization (MongoDB + optional AWS):database section is optional when using only sdk.api.*. Set VELT_API_KEY and VELT_AUTH_TOKEN environment variables as an alternative to passing credentials in the config object.
Shutdown
Callawait sdk.close() when your process exits to release the database connection pool.
Configuration
Environment Variables
| Variable | Config key equivalent | Purpose |
|---|---|---|
VELT_API_KEY | apiKey | Velt API key for authenticating REST API calls |
VELT_AUTH_TOKEN | authToken | Velt auth token for authenticating REST API calls |
VELT_WORKSPACE_ID | — | Default workspace ID for workspace-scoped operations |
VELT_WORKSPACE_AUTH_TOKEN | — | Auth token scoped to a specific workspace |
AWS_ACCESS_KEY_ID | — | AWS access key for S3 attachments |
AWS_SECRET_ACCESS_KEY | — | AWS secret key for S3 attachments |
AWS_REGION | — | AWS region for S3 |
AWS_S3_BUCKET_NAME | — | S3 bucket name for attachments |
AWS_S3_ENDPOINT_URL | — | Custom S3 endpoint (e.g., for MinIO) |
Self-Hosting Configuration
- Database
- AWS (Attachments)
- Complete Example
Configure MongoDB connection for storing comments, reactions, and user data.
Self-Hosting Backend
Each self-hosting service is loaded asynchronously on first access viaawait sdk.selfHosting.getXxx(). The service is cached after the first call. The token service is the exception — it is available as a direct synchronous property via sdk.selfHosting.token.
Comments
Access viaawait sdk.selfHosting.getComments().
getComments
- Fetches comments for a document from your MongoDB store.
- Params: GetCommentsRequest (SH)
- Returns: VeltSelfHostingResponse
saveComments
- Saves (creates or updates) comment annotations to MongoDB.
- Params: SaveCommentsRequest (SH)
- Returns: VeltSelfHostingResponse
deleteComment
- Deletes a single comment annotation from MongoDB.
- Params: DeleteCommentRequest (SH)
- Returns: VeltSelfHostingResponse
Reactions
Access viaawait sdk.selfHosting.getReactions().
getReactions
- Fetches reactions for a document from MongoDB.
- Params: GetReactionsRequest (SH)
- Returns: VeltSelfHostingResponse
saveReactions
- Persists reactions to MongoDB.
- Params: SaveReactionsRequest (SH)
- Returns: VeltSelfHostingResponse
deleteReaction
- Deletes a single reaction from MongoDB.
- Params: DeleteReactionRequest (SH)
- Returns: VeltSelfHostingResponse
Attachments
Access viaawait sdk.selfHosting.getAttachments().
getAttachment
- Fetches an attachment record by organization and attachment ID.
- Params: positional —
organizationId(string),attachmentId(number) - Returns: VeltSelfHostingResponse
saveAttachment
- Persists attachment metadata, optionally uploading the file body to S3.
- Params: SaveAttachmentRequest (SH) plus optional positional
fileData(Buffer),fileName(string),mimeType(string) - Returns: VeltSelfHostingResponse
deleteAttachment
- Deletes an attachment record (and S3 object, if applicable).
- Params: DeleteAttachmentRequest (SH)
- Returns: VeltSelfHostingResponse
Users
Access viaawait sdk.selfHosting.getUsers().
getUsers
- Fetches users from MongoDB.
- Params: GetUsersSelfHostingRequest (SH)
- Returns: VeltSelfHostingResponse
Recorder
Access viaawait sdk.selfHosting.getRecorder().
getRecorderAnnotations
- Fetches recorder annotations from MongoDB.
- Params: GetRecorderAnnotationsRequest (SH)
- Returns: VeltSelfHostingResponse
saveRecorderAnnotation
- Saves a single recorder annotation.
- Params: SaveRecorderAnnotationRequest (SH)
- Returns: VeltSelfHostingResponse
deleteRecorderAnnotation
- Deletes a recorder annotation.
- Params: DeleteRecorderAnnotationRequest (SH)
- Returns: VeltSelfHostingResponse
Notifications
Access viaawait sdk.selfHosting.getNotifications().
getNotifications
- Fetches notifications for a user from MongoDB.
- Params: GetNotificationsSelfHostingRequest (SH)
- Returns: VeltSelfHostingResponse
saveNotifications
- Persists one or more notifications to MongoDB.
- Params: SaveNotificationsRequest (SH)
- Returns: VeltSelfHostingResponse
deleteNotification
- Deletes a notification from MongoDB.
- Params: DeleteNotificationRequest (SH)
- Returns: VeltSelfHostingResponse
Activities
Access viaawait sdk.selfHosting.getActivities().
getActivities
- Fetches activity logs from MongoDB.
- Params: GetActivitiesSelfHostingRequest (SH)
- Returns: VeltSelfHostingResponse
saveActivities
- Persists activity log entries to MongoDB.
- Params: SaveActivitiesRequest (SH)
- Returns: VeltSelfHostingResponse
Token
Access via the synchronoussdk.selfHosting.token property (no await).
getToken
- Generates a Velt auth token for a user.
- Params: positional —
organizationId(string),userId(string),email(string, optional),isAdmin(boolean, optional) - Returns: VeltSelfHostingResponse
Note: getToken takes positional arguments — not a request object.
REST API Backend
Thesdk.api.* namespace provides 17 services covering all Velt REST API operations. No database or AWS configuration is required — only apiKey and authToken.
Every sdk.api.* method requires an organizationId in its request payload. Velt enforces data isolation per-organization server-side.
Organizations
Namespace:sdk.api.organizations
addOrganizations
- Creates one or more organizations.
- Params: AddOrganizationsRequest
- Returns: VeltApiResponse
getOrganizations
- Retrieves organizations. Optionally filter by IDs with pagination.
- Params: GetOrganizationsRequest
- Returns: GetOrganizationsResponse
updateOrganizations
- Updates organization properties.
- Params: UpdateOrganizationsRequest
- Returns: VeltApiResponse
deleteOrganizations
- Deletes one or more organizations.
- Params: DeleteOrganizationsRequest
- Returns: VeltApiResponse
updateOrganizationDisableState
- Enables or disables one or more organizations.
- Params: UpdateOrganizationDisableStateRequest
- Returns: VeltApiResponse
Folders
Namespace:sdk.api.folders
addFolder
- Creates one or more folders inside an organization.
- Params: AddFolderRequest
- Returns: VeltApiResponse
getFolders
- Retrieves folders. Optionally filter by folder ID with depth control.
- Params: GetFoldersRequest
- Returns: GetFoldersResponse
updateFolder
- Updates folder properties.
- Params: UpdateFolderRequest
- Returns: VeltApiResponse
deleteFolder
- Deletes a folder.
- Params: DeleteFolderRequest
- Returns: VeltApiResponse
updateFolderAccess
- Updates access type for one or more folders.
- Params: UpdateFolderAccessRequest
- Returns: VeltApiResponse
Documents
Namespace:sdk.api.documents
addDocuments
- Creates one or more documents.
- Params: AddDocumentsRequest
- Returns: VeltApiResponse
getDocuments
- Retrieves documents with optional filters and pagination.
- Params: GetDocumentsRequest
- Returns: GetDocumentsResponse
updateDocuments
- Updates document properties.
- Params: UpdateDocumentsRequest
- Returns: VeltApiResponse
deleteDocuments
- Deletes one or more documents.
- Params: DeleteDocumentsRequest
- Returns: VeltApiResponse
moveDocuments
- Moves documents into a folder.
- Params: MoveDocumentsRequest
- Returns: VeltApiResponse
updateDocumentAccess
- Updates access type for one or more documents.
- Params: UpdateDocumentAccessRequest
- Returns: VeltApiResponse
updateDocumentDisableState
- Enables or disables one or more documents.
- Params: UpdateDocumentDisableStateRequest
- Returns: VeltApiResponse
migrateDocuments
- Starts a document migration job.
- Params: MigrateDocumentsRequest
- Returns: MigrateDocumentsResponse
Note:migrateDocumentsis asynchronous and returns amigrationId. Poll completion withmigrateDocumentsStatus.
migrateDocumentsStatus
- Polls the status of a migration job.
- Params: MigrateDocumentsStatusRequest
- Returns: MigrateDocumentsStatusResponse
Users
Namespace:sdk.api.users
addUsers
- Adds one or more users to an organization, document, or folder.
- Params: AddUsersRequest
- Returns: VeltApiResponse
getUsers
- Retrieves users with optional filters and pagination.
- Params: GetUsersRequest
- Returns: GetUsersResponse
updateUsers
- Updates user properties.
- Params: UpdateUsersRequest
- Returns: VeltApiResponse
deleteUsers
- Removes users from an organization.
- Params: DeleteUsersRequest
- Returns: VeltApiResponse
User Groups
Namespace:sdk.api.userGroups
addUserGroups
- Creates one or more user groups.
- Params: AddUserGroupsRequest
- Returns: VeltApiResponse
addUsersToGroup
- Adds users to an existing group.
- Params: AddUsersToGroupRequest
- Returns: VeltApiResponse
deleteUsersFromGroup
- Removes users from a group, or removes all users.
- Params: DeleteUsersFromGroupRequest
- Returns: VeltApiResponse
Notifications
Namespace:sdk.api.notifications
addNotifications
- Adds one or more notifications targeted to specific users.
- Params: AddNotificationsRequest
- Returns: VeltApiResponse
getNotifications
- Gets notifications for a user with optional filters and pagination.
- Params: GetNotificationsRequest
- Returns: GetNotificationsResponse
updateNotifications
- Updates existing notifications (e.g., mark as read).
- Params: UpdateNotificationsRequest
- Returns: VeltApiResponse
deleteNotifications
- Deletes one or more notifications.
- Params: DeleteNotificationsRequest
- Returns: VeltApiResponse
getNotificationConfig
- Gets notification preferences for a user.
- Params: GetNotificationConfigRequest
- Returns: GetNotificationConfigResponse
setNotificationConfig
- Sets notification preferences for one or more users.
- Params: SetNotificationConfigRequest
- Returns: VeltApiResponse
Comment Annotations
Namespace:sdk.api.commentAnnotations
addCommentAnnotations
- Creates comment annotations on a document.
- Params: AddCommentAnnotationsRequest
- Returns: VeltApiResponse
getCommentAnnotations
- Retrieves comment annotations for a document with optional filters and pagination.
- Params: GetCommentAnnotationsRequest
- Returns: GetCommentAnnotationsResponse
getCommentAnnotationsCount
- Gets total and unread annotation counts per document.
- Params: GetCommentAnnotationsCountRequest
- Returns: GetCommentAnnotationsCountResponse
updateCommentAnnotations
- Updates fields on existing annotations (e.g., resolve them).
- Params: UpdateCommentAnnotationsRequest
- Returns: VeltApiResponse
deleteCommentAnnotations
- Deletes comment annotations.
- Params: DeleteCommentAnnotationsRequest
- Returns: VeltApiResponse
addComments
- Adds comments to an existing annotation.
- Params: AddCommentsRequest
- Returns: VeltApiResponse
getComments
- Retrieves comments within a specific annotation.
- Params: GetCommentsRequest
- Returns: GetCommentsResponse
updateComments
- Updates comments within a specific annotation.
- Params: UpdateCommentsRequest
- Returns: VeltApiResponse
deleteComments
- Deletes individual comments from an annotation.
- Params: DeleteCommentsRequest
- Returns: VeltApiResponse
Activities
Namespace:sdk.api.activities
addActivities
- Logs activity events.
- Params: AddActivitiesRequest
- Returns: VeltApiResponse
getActivities
- Retrieves activity events with optional filters and pagination.
- Params: GetActivitiesRequest
- Returns: GetActivitiesResponse
updateActivities
- Updates existing activity events.
- Params: UpdateActivitiesRequest
- Returns: VeltApiResponse
deleteActivities
- Deletes activity events for a document.
- Params: DeleteActivitiesRequest
- Returns: VeltApiResponse
Access Control
Namespace:sdk.api.accessControl
addPermissions
- Grants a user access to one or more resources.
- Params: AddPermissionsRequest
- Returns: VeltApiResponse
getPermissions
- Retrieves permissions for users on resources.
- Params: GetPermissionsRequest
- Returns: GetPermissionsResponse
removePermissions
- Revokes a user’s access to one or more resources.
- Params: RemovePermissionsRequest
- Returns: VeltApiResponse
generateSignature
- Generates a signed payload for the Permission Provider flow.
- Params: GenerateSignatureRequest
- Returns: GenerateSignatureResponse
generateToken
- Generates a JWT auth token for a user with embedded permissions.
- Params: GenerateTokenRequest
- Returns: GenerateTokenResponse
CRDT
Namespace:sdk.api.crdt
Supports text, map, array, and xml CRDT data types.
addCrdtData
- Stores CRDT (Yjs) editor data for a document.
- Params: AddCrdtDataRequest
- Returns: VeltApiResponse
getCrdtData
- Retrieves CRDT data for a document, optionally filtered by editor.
- Params: GetCrdtDataRequest
- Returns: GetCrdtDataResponse
updateCrdtData
- Updates existing CRDT editor data.
- Params: UpdateCrdtDataRequest
- Returns: VeltApiResponse
Presence
Namespace:sdk.api.presence
addPresence
- Adds users to presence on a document.
- Params: AddPresenceRequest
- Returns: VeltApiResponse
updatePresence
- Updates presence status for one or more users.
- Params: UpdatePresenceRequest
- Returns: VeltApiResponse
deletePresence
- Removes users from presence on a document.
- Params: DeletePresenceRequest
- Returns: VeltApiResponse
Livestate
Namespace:sdk.api.livestate
broadcastEvent
- Broadcasts an ephemeral live-state event to all clients on a document.
- Params: BroadcastEventRequest
- Returns: VeltApiResponse
Recordings
Namespace:sdk.api.recordings
getRecordings
- Retrieves recording metadata for an organization or document with optional filtering and pagination.
- Params: GetRecordingsRequest
- Returns: GetRecordingsResponse
Rewriter
Namespace:sdk.api.rewriter
Supports OpenAI, Anthropic, and Gemini models.
askAi
- Calls the Velt AI rewriter with a model, prompt, and text.
- Params: AskAiRequest
- Returns: AskAiResponse
Note: askAi may take several seconds to respond. The SDK does not enforce a client-side timeout.
GDPR
Namespace:sdk.api.gdpr
deleteAllUserData
- Requests deletion of all data associated with one or more users.
- Params: DeleteAllUserDataRequest
- Returns: VeltApiResponse
Note:deleteAllUserDatais asynchronous and returns a job ID. Poll completion withgetDeleteUserDataStatus.
getAllUserData
- Exports all data for a single user (paginated).
- Params: GetAllUserDataRequest
- Returns: GetAllUserDataResponse
getDeleteUserDataStatus
- Polls the status of a deletion job.
- Params: GetDeleteUserDataStatusRequest
- Returns: GetDeleteUserDataStatusResponse
Workspace
Namespace:sdk.api.workspace
createWorkspace
- Creates a new Velt workspace.
- Params: CreateWorkspaceRequest
- Returns: VeltApiResponse
getWorkspace
- Retrieves details for the current workspace.
- Params: empty object
{} - Returns: GetWorkspaceResponse
createApiKey
- Creates a new API key for the workspace.
- Params: CreateApiKeyRequest
- Returns: VeltApiResponse
updateApiKey
- Renames an existing API key.
- Params: UpdateApiKeyRequest
- Returns: VeltApiResponse
getApiKeys
- Lists all API keys with optional pagination.
- Params: GetApiKeysRequest
- Returns: GetApiKeysResponse
getApiKeyMetadata
- Gets metadata for the current API key.
- Params: empty object
{} - Returns: GetApiKeyMetadataResponse
resetAuthToken
- Rotates the auth token for an API key.
- Params: ResetAuthTokenRequest
- Returns: VeltApiResponse
getAuthTokens
- Lists auth tokens for an API key.
- Params: GetAuthTokensRequest
- Returns: GetAuthTokensResponse
addDomains
- Adds allowed domains to the workspace allow-list.
- Params: AddDomainsRequest
- Returns: VeltApiResponse
deleteDomains
- Removes allowed domains.
- Params: DeleteDomainsRequest
- Returns: VeltApiResponse
getDomains
- Lists allowed domains.
- Params: empty object
{} - Returns: GetDomainsResponse
getEmailStatus
- Checks email verification status for an owner.
- Params: GetEmailStatusRequest
- Returns: GetEmailStatusResponse
sendLoginLink
- Sends a passwordless login link to a user.
- Params: SendLoginLinkRequest
- Returns: VeltApiResponse
getEmailConfig
- Retrieves email service configuration.
- Params: empty object
{} - Returns: GetEmailConfigResponse
updateEmailConfig
- Updates email service configuration.
- Params: UpdateEmailConfigRequest
- Returns: VeltApiResponse
getWebhookConfig
- Retrieves webhook configuration.
- Params: empty object
{} - Returns: GetWebhookConfigResponse
updateWebhookConfig
- Updates webhook configuration.
- Params: UpdateWebhookConfigRequest
- Returns: VeltApiResponse
Token
Namespace:sdk.api.token
getToken
- Generates a Velt auth token for a user via REST.
- Params: positional —
organizationId(string),userId(string),email(string, optional),isAdmin(boolean, optional) - Returns: VeltApiResponse
Note: getToken takes positional arguments — not a request object.
Error Handling
The SDK exports five typed error classes:| Class | Extends | When thrown |
|---|---|---|
VeltSDKError | Error | Base class for all SDK errors |
VeltDatabaseError | VeltSDKError | MongoDB connection or query failures |
VeltValidationError | VeltSDKError | Missing or invalid request parameters |
VeltTokenError | VeltSDKError | Token generation failures |
VeltApiError | VeltSDKError | REST API call failures |
errorCode field:
INVALID_INPUT— Request data is malformed or missing required fieldsINTERNAL_ERROR— Server-side error during processingNOT_FOUND— Requested resource was not found
Distribution
The package ships both CommonJS (CJS) and ES Module (ESM) bundles with rolled-up.d.ts type definitions, making it compatible with all modern Node.js project setups.

