Overview
The Velt Python 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
- Pass the raw request object directly to SDK methods
- Return the resulting response object straight to the client
sdk.api.*) — new in v0.1.9 — provides feature parity with the Velt Node SDK. 17 services, typed @dataclass request objects, and raw Velt API responses. No database or AWS configuration needed.
Installation
Requirements
- Python 3.8+
- Django 4.2.26+ (only if using the self-hosting backend)
- MongoDB (Percona Server or MongoDB Atlas) for self-hosting
requestsfor REST API calls (installed automatically)
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 dict.
Configuration
Environment Variables
The SDK reads the following environment variables automatically. These can be used instead of (or in addition to) config dict keys.| 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 |
Self-Hosting Configuration
- Database
- AWS (Attachments)
- Collections
- User Schema
- Complete Example
Configure MongoDB connection for storing comments, reactions, and user data.
Self-Hosting Backend
The SDK provides methods that accept the raw request from the frontend and return the properly formatted response.Comments
getComments
- Fetches comments from your database for a document.
- Params: GetCommentResolverRequest
- Returns: VeltSelfHostingResponse
saveComments
- Saves new or updated comments to your database.
- Params: SaveCommentResolverRequest
- Returns: VeltSelfHostingResponse
deleteComment
- Deletes a comment from your database.
- Params: DeleteCommentResolverRequest
- Returns: VeltSelfHostingResponse
Reactions
getReactions
- Fetches reactions from your database for a document.
- Params: GetReactionResolverRequest
- Returns: VeltSelfHostingResponse
saveReactions
- Saves new or updated reactions to your database.
- Params: SaveReactionResolverRequest
- Returns: VeltSelfHostingResponse
deleteReaction
- Deletes a reaction from your database.
- Params: DeleteReactionResolverRequest
- Returns: VeltSelfHostingResponse
Users
getUsers
- Fetches users from your database.
- Params: GetUserResolverRequest
- Returns: VeltSelfHostingResponse
Attachments
saveAttachment
- Uploads an attachment file to S3 and saves the metadata.
- Params: SaveAttachmentResolverRequest
- Returns: VeltSelfHostingResponse
- Django
- Flask
- FastAPI
deleteAttachment
- Deletes an attachment file from S3 and removes its metadata.
- Params: DeleteAttachmentResolverRequest
- Returns: VeltSelfHostingResponse
- Django
- Flask
- FastAPI
Token
getToken
- Generates a Velt auth token for a user. Self-hosting variant.
- Params: positional —
organizationId,userId,email(optional),isAdmin(optional) - Returns: VeltSelfHostingResponse
Note:getTokentakes positional / keyword arguments — it does NOT accept a dataclass request object. Signature:getToken(organizationId, userId, email=None, isAdmin=False).
Framework Examples
- Django
- Flask
- FastAPI
SDK Initialization (velt_sdk.py)API Endpoints (views.py)Configuration (settings.py)
REST API Backend
Added in v0.1.9. Thesdk.api.* namespace provides feature parity with the Velt Node SDK for REST. 17 services are available, each accepting typed @dataclass request objects and returning the raw Velt API response without local reshaping.
No database or AWS configuration is required — only apiKey and authToken.
result key (success) or an error key (failure). See VeltApiResponse.
Organizations
addOrganizations
- Creates one or more organizations.
- Params: AddOrganizationsRequest
- Returns: VeltApiResponse
getOrganizations
- Retrieves organizations by ID, with optional pagination.
- Params: GetOrganizationsRequest
- Returns: GetOrganizationsResponse
updateOrganizations
- Updates properties of one or more organizations.
- Params: UpdateOrganizationsRequest
- Returns: VeltApiResponse
deleteOrganizations
- Deletes one or more organizations.
- Params: DeleteOrganizationsRequest
- Returns: VeltApiResponse
updateOrganizationDisableState
- Enables or disables access to one or more organizations.
- Params: UpdateOrganizationDisableStateRequest
- Returns: VeltApiResponse
Folders
addFolder
- Creates one or more folders inside an organization.
- Params: AddFolderRequest
- Returns: VeltApiResponse
getFolders
- Retrieves folders within an organization.
- Params: GetFoldersRequest
- Returns: GetFoldersResponse
updateFolder
- Updates properties of one or more folders.
- Params: UpdateFolderRequest
- Returns: VeltApiResponse
deleteFolder
- Deletes a folder.
- Params: DeleteFolderRequest
- Returns: VeltApiResponse
updateFolderAccess
- Updates the access type of one or more folders.
- Params: UpdateFolderAccessRequest
- Returns: VeltApiResponse
Documents
addDocuments
- Creates one or more documents inside an organization.
- Params: AddDocumentsRequest
- Returns: VeltApiResponse
getDocuments
- Retrieves documents within an organization.
- Params: GetDocumentsRequest
- Returns: GetDocumentsResponse
updateDocuments
- Updates properties of one or more documents.
- Params: UpdateDocumentsRequest
- Returns: VeltApiResponse
deleteDocuments
- Deletes one or more documents.
- Params: DeleteDocumentsRequest
- Returns: VeltApiResponse
moveDocuments
- Moves documents into a target folder.
- Params: MoveDocumentsRequest
- Returns: VeltApiResponse
updateDocumentAccess
- Updates the access type of one or more documents.
- Params: UpdateDocumentAccessRequest
- Returns: VeltApiResponse
updateDocumentDisableState
- Enables or disables access to one or more documents.
- Params: UpdateDocumentDisableStateRequest
- Returns: VeltApiResponse
migrateDocuments
- Starts a job to migrate a document to a new document ID.
- Params: MigrateDocumentsRequest
- Returns: MigrateDocumentsResponse
Note: This call is asynchronous. Poll status via migrateDocumentsStatus.
migrateDocumentsStatus
- Polls the status of a document migration job.
- Params: MigrateDocumentsStatusRequest
- Returns: MigrateDocumentsStatusResponse
Users
addUsers
- Adds one or more users to an organization.
- Params: AddUsersRequest
- Returns: VeltApiResponse
getUsers
- Retrieves users in an organization or document.
- Params: GetUsersRequest
- Returns: GetUsersResponse
updateUsers
- Updates metadata for one or more users.
- Params: UpdateUsersRequest
- Returns: VeltApiResponse
deleteUsers
- Removes users from an organization.
- Params: DeleteUsersRequest
- Returns: VeltApiResponse
User Groups
addUserGroups
- Creates one or more user groups inside an organization.
- Params: AddUserGroupsRequest
- Returns: VeltApiResponse
addUsersToGroup
- Adds users to an existing group.
- Params: AddUsersToGroupRequest
- Returns: VeltApiResponse
deleteUsersFromGroup
- Removes users from a group, or empties the group entirely when
deleteAllisTrue. - Params: DeleteUsersFromGroupRequest
- Returns: VeltApiResponse
Notifications
addNotifications
- Sends a notification to one or more users on a document.
- Params: AddNotificationsRequest
- Returns: VeltApiResponse
getNotifications
- Retrieves notifications for a user or document.
- Params: GetNotificationsRequest
- Returns: GetNotificationsResponse
updateNotifications
- Updates fields on 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 (inbox/email/slack channels) for a user.
- Params: GetNotificationConfigRequest
- Returns: GetNotificationConfigResponse
setNotificationConfig
- Sets notification preferences for one or more users.
- Params: SetNotificationConfigRequest
- Returns: VeltApiResponse
Comment Annotations
addCommentAnnotations
- Creates one or more comment annotations on a document.
- Params: AddCommentAnnotationsRequest
- Returns: VeltApiResponse
getCommentAnnotations
- Retrieves comment annotations on a document.
- Params: GetCommentAnnotationsRequest
- Returns: GetCommentAnnotationsResponse
getCommentAnnotationsCount
- Counts total and unread annotations across one or more documents.
- Params: GetCommentAnnotationsCountRequest
- Returns: GetCommentAnnotationsCountResponse
updateCommentAnnotations
- Updates annotation fields (e.g., change status).
- Params: UpdateCommentAnnotationsRequest
- Returns: VeltApiResponse
deleteCommentAnnotations
- Deletes one or more comment annotations.
- Params: DeleteCommentAnnotationsRequest
- Returns: VeltApiResponse
addComments
- Adds reply comments to an existing annotation.
- Params: AddCommentsRequest
- Returns: VeltApiResponse
getComments
- Retrieves individual comments inside an annotation.
- Params: GetCommentsRequest
- Returns: GetCommentsResponse
updateComments
- Updates fields on individual comments inside an annotation.
- Params: UpdateCommentsRequest
- Returns: VeltApiResponse
deleteComments
- Deletes one or more comments from an annotation, or all comments if
commentIdsis omitted. - Params: DeleteCommentsRequest
- Returns: VeltApiResponse
Activities
addActivities
- Logs one or more activity events.
- Params: AddActivitiesRequest
- Returns: VeltApiResponse
getActivities
- Retrieves activities with optional filters and pagination.
- Params: GetActivitiesRequest
- Returns: GetActivitiesResponse
updateActivities
- Updates fields on existing activities.
- Params: UpdateActivitiesRequest
- Returns: VeltApiResponse
deleteActivities
- Deletes activities by document, target entity, or specific IDs.
- Params: DeleteActivitiesRequest
- Returns: VeltApiResponse
Access Control
addPermissions
- Grants resource-level permissions to a user.
- Params: AddPermissionsRequest
- Returns: VeltApiResponse
getPermissions
- Retrieves permissions for one or more users.
- Params: GetPermissionsRequest
- Returns: GetPermissionsResponse
removePermissions
- Revokes resource-level permissions from a user.
- Params: RemovePermissionsRequest
- Returns: VeltApiResponse
generateSignature
- Generates a signed payload for Velt’s Permission Provider flow.
- Params: GenerateSignatureRequest
- Returns: GenerateSignatureResponse
generateToken
- Generates a Velt JWT token bound to a user and a set of resource permissions.
- Params: GenerateTokenRequest
- Returns: GenerateTokenResponse
CRDT
addCrdtData
- Stores CRDT data (text, map, array, or xml) for an editor on a document.
- Params: AddCrdtDataRequest
- Returns: VeltApiResponse
getCrdtData
- Retrieves CRDT data for one or all editors on a document.
- Params: GetCrdtDataRequest
- Returns: GetCrdtDataResponse
updateCrdtData
- Updates existing CRDT data for an editor.
- Params: UpdateCrdtDataRequest
- Returns: VeltApiResponse
Presence
addPresence
- Adds users to a document’s presence list.
- Params: AddPresenceRequest
- Returns: VeltApiResponse
updatePresence
- Updates presence status for one or more users on a document.
- Params: UpdatePresenceRequest
- Returns: VeltApiResponse
deletePresence
- Removes users from a document’s presence list.
- Params: DeletePresenceRequest
- Returns: VeltApiResponse
Livestate
broadcastEvent
- Broadcasts an event payload to all clients subscribed to a livestate ID on a document.
- Params: BroadcastEventRequest
- Returns: VeltApiResponse
Recordings
getRecordings
- Retrieves recording metadata, optionally scoped to a document or set of recording IDs.
- Params: GetRecordingsRequest
- Returns: GetRecordingsResponse
Rewriter
askAi
- Sends a model, prompt, and text to Velt’s AI rewriter and returns the transformed text.
- Params: AskAiRequest
- Returns: AskAiResponse
Note: This call may take several seconds and has no client-side timeout. Wrap calls in your own timeout if needed.
GDPR
deleteAllUserData
- Requests deletion of all data associated with one or more users.
- Params: DeleteAllUserDataRequest
- Returns: VeltApiResponse
Note: This call is asynchronous and returns ajobId. Poll status viagetDeleteUserDataStatus.
getAllUserData
- Exports all data associated with a user, paginated.
- Params: GetAllUserDataRequest
- Returns: GetAllUserDataResponse
getDeleteUserDataStatus
- Polls the status of a
deleteAllUserDatajob. - Params: GetDeleteUserDataStatusRequest
- Returns: GetDeleteUserDataStatusResponse
Workspace
createWorkspace
- Creates a new workspace.
- Params: CreateWorkspaceRequest
- Returns: VeltApiResponse
getWorkspace
- Retrieves details about the current workspace.
- Params: GetWorkspaceRequest
- Returns: GetWorkspaceResponse
createApiKey
- Creates a new API key in the workspace.
- Params: CreateApiKeyRequest
- Returns: VeltApiResponse
updateApiKey
- Updates an existing API key (e.g., rename it).
- Params: UpdateApiKeyRequest
- Returns: VeltApiResponse
getApiKeys
- Lists all API keys in the workspace.
- Params: GetApiKeysRequest
- Returns: GetApiKeysResponse
getApiKeyMetadata
- Gets metadata for the API key the SDK is authenticated with.
- Params: GetApiKeyMetadataRequest
- Returns: GetApiKeyMetadataResponse
resetAuthToken
- Rotates the auth token associated with 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.
- Params: AddDomainsRequest
- Returns: VeltApiResponse
deleteDomains
- Removes allowed domains from the workspace.
- Params: DeleteDomainsRequest
- Returns: VeltApiResponse
getDomains
- Lists allowed domains for the workspace.
- Params: GetDomainsRequest
- Returns: GetDomainsResponse
getEmailStatus
- Checks email verification status for a workspace owner.
- Params: GetEmailStatusRequest
- Returns: GetEmailStatusResponse
sendLoginLink
- Sends a login link email to a user.
- Params: SendLoginLinkRequest
- Returns: VeltApiResponse
getEmailConfig
- Retrieves the workspace’s email service configuration.
- Params: GetEmailConfigRequest
- Returns: GetEmailConfigResponse
updateEmailConfig
- Updates the workspace’s email service configuration.
- Params: UpdateEmailConfigRequest
- Returns: VeltApiResponse
getWebhookConfig
- Retrieves the workspace’s webhook configuration.
- Params: GetWebhookConfigRequest
- Returns: GetWebhookConfigResponse
updateWebhookConfig
- Updates the workspace’s webhook configuration.
- Params: UpdateWebhookConfigRequest
- Returns: VeltApiResponse
Token
getToken
- Generates a Velt auth token for a user.
- Params: positional —
organizationId,userId,email(optional),isAdmin(optional) - Returns: VeltApiResponse
Note:getTokentakes positional / keyword arguments — it does NOT accept a dataclass request object. Signature:getToken(organizationId, userId, email=None, isAdmin=False).
Data Isolation
Everysdk.api.* method requires an organizationId in its request payload. Velt’s API enforces data isolation server-side — requests without a valid organizationId will be rejected.
Error Handling
The SDK raises typed exceptions for different failure modes. All exceptions extendVeltSDKError.
| Exception | When raised |
|---|---|
VeltSDKError | Base class; catch for any SDK-level error |
VeltValidationError | SDK-level validation (e.g., missing required config); sdk.api.* methods do not validate request payloads locally |
VeltTokenError | Token generation or authentication failure |
VeltApiError | REST API errors (network failures, unexpected responses) |
from velt_py.exceptions import VeltSDKError, VeltValidationError, VeltTokenError, VeltApiError
Common self-hosting error codes returned in the response errorCode field:
INVALID_INPUT— Request data is malformed or missing required fieldsINTERNAL_ERROR— Server-side error during processingNOT_FOUND— Requested resource was not found
Data Models
Python-SDK-specific dataclasses used by the self-hosting backend. These are not in the shared API reference because they are only relevant tosdk.selfHosting.* implementations.
PartialCommentAnnotation
Represents a partial update payload for a comment annotation. Starting in v0.1.10, from, assignedTo, targetTextRange, and resolvedByUserId are first-class typed fields (previously silent pass-through via extra_fields).
from_— Python alias for the JSON keyfrom(reserved keyword). Serialized asfromin the Mongo document.assignedTo— Typed asPartialUser. Omit to leave unchanged; the Mongo write skips the field whenNone.targetTextRange— TypedPartialTargetTextRangefor the selected text snippet a comment is anchored to.resolvedByUserId— See UNSET sentinel for the difference between absent (UNSET) and explicitNone.extra_fields— Retained as a catch-all because the frontend contract includes[key: string]: anyfor customer-configuredfieldsToRemoveandadditionalFields.
PartialTargetTextRange
Anchors a comment to a selected text snippet.
UNSET Sentinel
UNSET is a sentinel value exported from velt_py.models.comment. It signals that a field was not included in the incoming request payload and should be skipped entirely during the MongoDB write.
| Value | Payload | Mongo write |
|---|---|---|
UNSET | Field absent | Field skipped — no change |
None | Field present, value null | Field written as null |
BaseMetadata
Base metadata attached to every comment annotation. Starting in v0.1.10, sdkVersion and documentMetadata are fully modeled and preserved in MongoDB writes. These fields were previously sent by the frontend on every annotation save but silently dropped.
BaseMetadata is populated automatically from the incoming request payload. The fix applies transparently to all saveComments calls.

