> ## Documentation Index
> Fetch the complete documentation index at: https://velt.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# API Methods Index

# Comments

### Threads

#### addCommentAnnotation()

Add a new comment annotation.

* Params: [AddCommentAnnotationRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentannotationrequest)
* Returns: [AddCommentAnnotationEvent](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentannotationevent)
* React Hook: `useAddCommentAnnotation()`
* Note: For `organizationPrivate` visibility, the visibility config accepts `organizationIds?: string[]` (multi-org) alongside `organizationId`; they are merged + de-duplicated. With neither provided, the comment defaults to the logged-in user's own org.
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#addcommentannotation)

#### addCommentOnSelectedText()

Add a comment on selected text.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#addcommentonselectedtext)

#### addCommentOnElement()

Add a comment on a specific element.

* Params: `{ targetElement: object, commentData: array, status?: string }`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#addcommentonelement)

#### addManualComment()

Add a comment with custom positioning.

* Params: `ManualCommentAnnotationConfig`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#addmanualcomment)

#### deleteCommentAnnotation()

Delete a comment annotation.

* Params: [DeleteCommentAnnotationRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#deletecommentannotationrequest)
* Returns: [DeleteCommentAnnotationEvent](https://velt.dev/docs/api-reference/sdk/models/data-models.md#deletecommentannotationevent)
* React Hook: `useDeleteCommentAnnotation()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#deletecommentannotation)

#### deleteSelectedComment()

Delete the currently selected comment.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#deleteselectedcomment)

#### getCommentAnnotationsCount()

Get the total and unread comment annotations count for specified documents.

* Params: [CommentRequestQuery](https://velt.dev/docs/api-reference/sdk/models/data-models.md#commentrequestquery) (optional)
* Returns: [`Observable<GetCommentAnnotationsCountResponse>`](https://velt.dev/docs/api-reference/sdk/models/data-models#getcommentannotationscountresponse)
* React Hook: `useCommentAnnotationsCount()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#getcommentannotationscount)

#### getUnreadCommentAnnotationCountByLocationId()

Get count of unread comment annotations by location ID.

* Params: `locationId: string`
* Returns: `Observable<UnreadCommentsCount | null>`
* React Hook: `useUnreadCommentAnnotationCountByLocationId()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#getunreadcommentannotationcountbylocationid)

#### getCommentAnnotations()

Get all the comment annotations for all the specified documents.

* Params: [CommentRequestQuery](https://velt.dev/docs/api-reference/sdk/models/data-models.md#commentrequestquery) (optional)
* Returns: [`Observable<GetCommentAnnotationsResponse>`](https://velt.dev/docs/api-reference/sdk/models/data-models#getcommentannotationsresponse)
* React Hook: `useGetCommentAnnotations()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#getcommentannotations)

#### getSelectedComments()

Get currently selected comment annotations.

* Params: none
* Returns: `Observable<CommentAnnotation[]>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#getselectedcomments)

#### getCommentAnnotationById()

Get a specific comment annotation by ID.

* Params: `{ annotationId: string, documentId?: string }`
* Returns: `Observable<CommentAnnotation>`
* React Hook: `useCommentAnnotationById()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#getcommentannotationbyid)

#### getElementRefByAnnotationId()

Get the DOM element reference for a comment annotation.

* Params: `annotationId: string`
* Returns: `string`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#getelementrefbyannotationid)

#### submitComment()

Programmatically submit a comment from a composer.

* Params: [`SubmitCommentRequest`](https://velt.dev/docs/api-reference/sdk/models/data-models#submitcommentrequest)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#submitcomment)

#### enableDraftMode()

Enable Draft Mode to save partial comments as drafts.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#draftmode)

#### disableDraftMode()

Disable Draft Mode to prevent saving partial comments as drafts.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#draftmode)

#### enableDraftConfirmation()

Show a Keep Draft / Delete Draft confirmation popup before an unsent composer is saved as a draft. Requires Draft Mode to be on.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#draftconfirmation)

#### disableDraftConfirmation()

Revert to saving an unsent composer as a draft silently, with no confirmation popup.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#draftconfirmation)

#### enableLazyLoadResolvedComments()

Skip fetching resolved comments on a document's initial load; they load on demand the first time the sidebar unlocks them.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#lazyloadresolvedcomments)

#### disableLazyLoadResolvedComments()

Revert to always fetching resolved comments on a document's initial load.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#lazyloadresolvedcomments)

#### clearComposer()

Reset composer state including text, attachments, recordings, tagged users, assignments, custom lists.

* Params: [`ClearComposerRequest`](https://velt.dev/docs/api-reference/sdk/models/data-models#clearcomposerrequest)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#clearcomposer)

#### getComposerData()

Fetch current composer state on-demand. Returns same data structure as composerTextChange event.

* Params: [`GetComposerDataRequest`](https://velt.dev/docs/api-reference/sdk/models/data-models#getcomposerdatarequest)
* Returns: [`ComposerTextChangeEvent`](https://velt.dev/docs/api-reference/sdk/models/data-models#composertextchangeevent) | `null`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#getcomposerdata)

#### setContextProvider()

Set a function to provide context dynamically for comment annotations.

* Params: [`CommentContextProvider`](https://velt.dev/docs/api-reference/sdk/models/data-models#commentcontextprovider) | `null`
* Returns: `void`
* React Hook: `useSetContextProvider()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#setcontextprovider)

#### updateVisibility()

Programmatically set comment visibility to `public`, `organizationPrivate`, or `restricted`. When setting `restricted` type, the current user's `userId` is automatically appended to `userIds` if not already present.

* Params: [`config: CommentVisibilityConfig`](https://velt.dev/docs/api-reference/sdk/models/data-models#commentvisibilityconfig) — a single object; the comment is identified by its `annotationId` field.
* Returns: `Promise<any>`
* React Hook: `n/a`
* Note: For `organizationPrivate`, `config` accepts `organizationIds?: string[]` (multi-org) alongside `organizationId`; they are merged + de-duplicated. With neither provided, the comment defaults to the logged-in user's own org.
* Note: Setting visibility keeps the comment's [Access Context](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#private-comments-with-access-context), including the `access` object and its context scoping.
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#updatevisibility)

#### enablePrivateMode()

Enable private mode so new comments are created with restricted visibility by default.

* Params: [`PrivateModeConfig`](https://velt.dev/docs/api-reference/sdk/models/data-models#privatemodeconfig)
* Returns: `void`
* React Hook: `n/a`
* Note: `PrivateModeConfig` now accepts `organizationId` / `organizationIds?: string[]` for `organizationPrivate` mode; `organizationIds` is merged + de-duplicated with `organizationId`. With neither provided, comments default to the logged-in user's own org.
* Note: Setting visibility keeps the comment's [Access Context](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#private-comments-with-access-context), including the `access` object and its context scoping.
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableprivatemode)

#### disablePrivateMode()

Disable private mode, reverting new comments to default visibility.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#disableprivatemode)

#### enableVisibilityOptions()

Enable the visibility banner in the comment composer, letting users set visibility before submitting.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#visibilityoptions)

#### disableVisibilityOptions()

Disable the visibility banner in the comment composer.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#visibilityoptions)

#### setAssignToType()

Configure assignment UI mode.

* Params: [`AssignToConfig`](https://velt.dev/docs/api-reference/sdk/models/data-models#assigntoconfig)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#setassigntotype)

#### enableContextInPageModeComposer()

Enable passing context data to page mode composer when opening via comment tool.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#contextinpagemodecomposer)

#### disableContextInPageModeComposer()

Disable passing context data to page mode composer.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#contextinpagemodecomposer)

#### clearPageModeComposerContext()

Clear context data from page mode composer.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#contextinpagemodecomposer)

#### enableFormatOptions()

Enable text formatting toolbar in comment composers.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableformatoptions)

#### disableFormatOptions()

Disable text formatting toolbar in comment composers.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableformatoptions)

#### setFormatConfig()

Configure individual text formatting options (bold, italic, underline, strikethrough).

* Params: [`FormatConfig`](https://velt.dev/docs/api-reference/sdk/models/data-models#formatconfig)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#setformatconfig)

#### applyCommentSidebarClientFilters()

Applies client-provided `CommentSidebarFilters` to a set of annotations, honoring the current `systemFiltersOperator`. Backs the Comment Sidebar V2 declarative filtering.

* Params: `annotations:` [`CommentAnnotation[]`](https://velt.dev/docs/api-reference/sdk/models/data-models#commentannotation), `filters:` [`CommentSidebarFilters`](https://velt.dev/docs/api-reference/sdk/models/data-models#commentsidebarfilters)
* Returns: [`CommentAnnotation[]`](https://velt.dev/docs/api-reference/sdk/models/data-models#commentannotation)
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments-sidebar/v2/customize-behavior.md)

### Slate

#### withVeltComments()

Higher-order function that enhances a Slate editor with Velt comments capabilities.

* Params:
  * `editor: Editor`
  * `options?: VeltCommentsEditorOptions`
* Returns: `VeltCommentsEditor`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/slatejs.md#withveltcomments)

#### addComment()

Creates a comment annotation for the currently selected text in the editor.

* Signature: `async (request:` [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentrequest)`) => Promise<void>`
* Params: `request:` [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentrequest)
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/slatejs.md#addcomment)

#### renderComments()

Renders and highlights comment annotations in the editor.

* Signature: `(request:` [RenderCommentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsrequest)`) => void`
* Params: `request:` [RenderCommentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsrequest)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/slatejs.md#rendercomments)

#### SlateVeltComment

React component that renders a Velt comment text element with annotation ID.

* Params:
  * `props: RenderElementProps`
  * `element:` [VeltCommentsElement](https://velt.dev/docs/api-reference/sdk/models/data-models.md#veltcommentselement)
* Returns: `N/A`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/slatejs.md#slateveltcomment)

### Tiptap

#### TiptapVeltComments.configure()

A custom Tiptap extension for Velt comments.

* Params: `options?:` [TiptapVeltCommentsOptions](https://velt.dev/docs/api-reference/sdk/models/data-models.md#tiptapveltcommentsoptions)
* Returns: `TiptapVeltComments`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/tiptap.md#tiptapveltcomments)

#### addComment()

Creates a comment annotation for the currently selected text in the editor.

* Params:
  * `request:` [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentrequest)
    * `editor: Editor`
    * `editorId?: string`
    * `context?: unknown`
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/tiptap.md#addcomment)

#### renderComments()

Renders and highlights comment annotations in the editor.

* Params:
  * `request:` [RenderCommentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsrequest)
    * `editor: Editor`
    * `editorId?: string`
    * `commentAnnotations?:` [CommentAnnotation\[\]](https://velt.dev/docs/api-reference/sdk/models/data-models#commentannotation)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/tiptap.md#rendercomments)

### Lexical

#### addComment()

Creates a comment annotation for the currently selected text in the editor.

* Signature: `addComment: async (request:` [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentrequest-3)`) => Promise<void>`
* Params: [`AddCommentRequest`](https://velt.dev/docs/api-reference/sdk/models/data-models#addcommentrequest-3)
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/lexical.md#addcomment)

#### renderComments()

Renders and highlights comment annotations in the editor.

* Signature: `renderComments: (request:` [RenderCommentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsrequest-3)`) => void`
* Params: [`RenderCommentsRequest`](https://velt.dev/docs/api-reference/sdk/models/data-models#rendercommentsrequest-3)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/lexical.md#rendercomments)

#### exportJSONWithoutComments()

Export the editor state JSON while stripping comment nodes and normalizing adjacent text nodes.

* Signature: `exportJSONWithoutComments(editor: LexicalEditor): SerializedEditorState<SerializedLexicalNode>`
* Params: `editor:` [`LexicalEditor`](https://lexical.dev/docs/api/classes/lexical.LexicalEditor)
* Returns: `SerializedEditorState<SerializedLexicalNode>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/lexical.md#exportjsonwithoutcomments)

### Plate

#### VeltCommentsPlugin.configure()

A Plate.js plugin for Velt comments.

* Params: `options?:` [VeltCommentsPluginConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#veltcommentspluginconfig)
* Returns: `Plate Plugin`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/plate.md#veltcommentsplugin)

#### addComment()

Creates a comment annotation for the currently selected text in the editor.

* Params:
  * `request:` [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentrequest-4)
    * `editor: PlateEditor`
    * `editorId?: string`
    * `context?: object`
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/plate.md#addcomment)

#### renderComments()

Renders and highlights comment annotations in the editor.

* Params:
  * `request:` [RenderCommentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsrequest-4)
    * `editor: PlateEditor`
    * `editorId?: string`
    * `commentAnnotations?:` [CommentAnnotation\[\]](https://velt.dev/docs/api-reference/sdk/models/data-models#commentannotation)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/plate.md#rendercomments)

#### exportJSONWithoutComments()

Exports the editor content as JSON with Velt comment elements removed.

* Params: `content: Descendant[]`
* Returns: `Descendant[]`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/plate.md#exportjsonwithoutcomments)

#### PlateVeltComment

React component that renders a Velt comment element in the editor.

* Params:
  * `props: PlateRenderElementProps`
  * `element:` [VeltCommentsElement](https://velt.dev/docs/api-reference/sdk/models/data-models.md#veltcommentselement-2)
* Returns: `N/A`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/plate.md#plateveltcomment)

### CodeMirror

#### CodemirrorVeltComments()

Creates the Velt Comments extension for CodeMirror.

* Params: `config?:` [CodemirrorVeltCommentsConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#codemirrorveltcommentsconfig)
* Returns: CodeMirror `Extension`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/codemirror.md#codemirrorveltcomments)

#### addComment()

Creates a comment annotation for the currently selected text in the editor.

* Params:
  * `request:` [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentrequest-4)
    * `editor: EditorView`
    * `editorId?: string`
    * `context?: object`
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/codemirror.md#addcomment)

#### renderComments()

Renders and highlights comment annotations in the editor.

* Params:
  * `request:` [RenderCommentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsrequest-4)
    * `editor: EditorView`
    * `editorId?: string`
    * `commentAnnotations?:` [CommentAnnotation\[\]](https://velt.dev/docs/api-reference/sdk/models/data-models#commentannotation)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/codemirror.md#rendercomments)

### Ace

#### AceVeltComments()

Initializes the Velt Comments extension for an Ace Editor instance.

* Params: `editor: Ace.Editor`, `config?:` [AceVeltCommentsConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#aceveltcommentsconfig)
* Returns: `() => void` - Cleanup function to remove event listeners
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/ace.md#aceveltcomments)

#### addComment()

Creates a comment annotation for the currently selected text in the editor.

* Params:
  * `request:` [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentrequest-5)
    * `editor: Ace.Editor`
    * `editorId?: string`
    * `context?: object`
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/ace.md#addcomment)

#### renderComments()

Renders and highlights comment annotations in the editor.

* Params:
  * `request:` [RenderCommentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsrequest-5)
    * `editor: Ace.Editor`
    * `editorId?: string`
    * `commentAnnotations?:` [CommentAnnotation\[\]](https://velt.dev/docs/api-reference/sdk/models/data-models#commentannotation)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/ace.md#rendercomments)

### Quill

#### QuillVeltComments

The Velt Comments module for Quill. Register it with Quill before creating the editor.

* Params: `config?:` [QuillVeltCommentsConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#quillveltcommentsconfig)
* Returns: `Quill Module`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/quill.md#quillveltcomments)

#### addComment()

Creates a comment annotation for the currently selected text in the editor.

* Params:
  * `request:` [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentrequest-6)
    * `editor: Quill`
    * `editorId?: string`
    * `context?: object`
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/quill.md#addcomment)

#### renderComments()

Renders and highlights comment annotations in the editor.

* Params:
  * `request:` [RenderCommentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsrequest-6)
    * `editor: Quill`
    * `editorId?: string`
    * `commentAnnotations?:` [CommentAnnotation\[\]](https://velt.dev/docs/api-reference/sdk/models/data-models#commentannotation)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/quill.md#rendercomments)

### Apryse

#### ApryseVeltComments.configure()

Creates the Velt Comments extension for the Apryse WebViewer. Call `.attach(instance)` on the result to wire it to a WebViewer instance.

* Params: `config?:` [ApryseVeltCommentsConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#apryseveltcommentsconfig)
* Returns: `ApryseVeltComments` (call `.attach(instance)` to get an [AttachedExtension](https://velt.dev/docs/api-reference/sdk/models/data-models.md#attachedextension))
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/apryse.md#apryseveltcomments-configure)

#### addComment()

Creates a comment annotation for the currently selected text in the WebViewer.

* Params:
  * `request:` [AddCommentArgs](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentargs)
    * `instance: WebViewerInstance`
* Returns: `Promise<`[AddCommentResult](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentresult)` | null>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/apryse.md#addcomment)

#### renderComments()

Renders and highlights comment annotations in the WebViewer.

* Params:
  * `request:` [RenderCommentsArgs](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsargs)
    * `instance: WebViewerInstance`
    * `commentAnnotations:` [CommentAnnotation\[\]](https://velt.dev/docs/api-reference/sdk/models/data-models#commentannotation)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/apryse.md#rendercomments)

### DraftJS

#### DraftJSVeltEditor

React wrapper around the DraftJS `Editor` component that handles Velt comment decorator setup and annotation context tracking.

* Params: `props:` [DraftJSVeltEditorProps](https://velt.dev/docs/api-reference/sdk/models/data-models.md#draftjsvelteditorprops)
* Returns: React element
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/draftjs.md#draftjsvelteditor)

#### addComment()

Creates a comment annotation for the currently selected text in the editor.

* Signature: `async (request:` [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentrequest-7)`) => Promise<void>`
* Params: `request:` [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentrequest-7)
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/draftjs.md#addcomment)

#### renderComments()

Renders and highlights comment annotations in the DraftJS editor.

* Signature: `(request:` [RenderCommentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsrequest-7)`) => void`
* Params: `request:` [RenderCommentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsrequest-7)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/draftjs.md#rendercomments)

#### exportContentStateWithoutComments()

Returns a DraftJS `ContentState` with Velt comment entities removed.

* Params: `contentState: ContentState`
* Returns: `ContentState`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/draftjs.md#exportcontentstatewithoutcomments)

### ProseMirror

#### VeltCommentsPlugin()

Creates the ProseMirror plugin that powers Velt comments. Add it to the editor state's `plugins` array.

* Params: `config?:` [VeltCommentsPluginConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#veltcommentspluginconfig-1)
* Returns: ProseMirror `Plugin`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/prosemirror.md#veltcommentsplugin)

#### addComment()

Creates a comment annotation for the currently selected text in the ProseMirror editor.

* Signature: `async (request:` [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentrequest-8)`) => Promise<void>`
* Params: `request:` [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentrequest-8)
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/prosemirror.md#addcomment)

#### renderComments()

Renders and highlights comment annotations in the ProseMirror editor.

* Signature: `(request:` [RenderCommentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsrequest-8)`) => void`
* Params: `request:` [RenderCommentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsrequest-8)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/prosemirror.md#rendercomments)

#### veltCommentsPluginKey

The ProseMirror `PluginKey` used by the package. Exported for advanced plugin state inspection.

* Params: none
* Returns: `PluginKey<VeltPluginState>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/prosemirror.md#veltcommentspluginkey)

### TinyMCE

#### VeltCommentsPlugin

The registered TinyMCE plugin name (`'veltcomments'`) that powers Velt comments. Import the package and add it to the editor's `plugins` list.

* Params: none
* Returns: TinyMCE plugin name
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/tinymce.md#veltcommentsplugin)

#### registerVeltCommentsPlugin()

Explicitly registers the TinyMCE `veltcomments` plugin against a TinyMCE instance. Use this when TinyMCE is loaded or provided after package import.

* Params: `instance?: TinyMCE`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/tinymce.md#registerveltcommentsplugin)

#### addComment()

Creates a Velt comment annotation for the currently selected TinyMCE text.

* Signature: `async (request:` [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentrequest-9)`) => Promise<void>`
* Params: `request:` [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentrequest-9)
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/tinymce.md#addcomment)

#### renderComments()

Resolves Velt comment annotations back to TinyMCE DOM ranges and renders stable `<velt-comment-text>` overlay elements for the visible comments.

* Signature: `(request:` [RenderCommentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsrequest-9)`) => void`
* Params: `request:` [RenderCommentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsrequest-9)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/tinymce.md#rendercomments)

### CKEditor

#### VeltCommentsPlugin

The CKEditor 5 plugin class that powers Velt comments. Add it to the editor's `plugins` list and configure it with `config.veltComments`.

* Config: [VeltCommentsPluginConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#ckeditor-veltcommentspluginconfig)
* Returns: CKEditor plugin class
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/ckeditor.md#veltcommentsplugin)

#### addComment()

Creates a comment annotation for the currently selected text in CKEditor.

* Signature: `async (request:` [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#ckeditor-addcommentrequest)`) => Promise<void>`
* Params: `request:` [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#ckeditor-addcommentrequest)
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/ckeditor.md#addcomment)

#### renderComments()

Resolves and highlights Velt comment annotations in CKEditor.

* Signature: `(request:` [RenderCommentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#ckeditor-rendercommentsrequest)`) => void`
* Params: `request:` [RenderCommentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#ckeditor-rendercommentsrequest)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/ckeditor.md#rendercomments)

### Monaco

#### registerVeltComments()

Registers the Velt comments integration on a Monaco editor instance and returns a disposable handle.

* Signature: `(editor: MonacoEditor, config?:` [MonacoVeltCommentsConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#monacoveltcommentsconfig)`) =>` [VeltCommentsHandle](https://velt.dev/docs/api-reference/sdk/models/data-models.md#veltcommentshandle)
* Params:
  * `editor: MonacoEditor`
  * `config?:` [MonacoVeltCommentsConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#monacoveltcommentsconfig)
* Returns: [VeltCommentsHandle](https://velt.dev/docs/api-reference/sdk/models/data-models.md#veltcommentshandle)
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/monaco.md#registerveltcomments)

#### addComment()

Creates a Velt comment annotation for the currently selected Monaco text.

* Signature: `async (request:` [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentrequest-10)`) => Promise<void>`
* Params: `request:` [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentrequest-10)
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/monaco.md#addcomment)

#### renderComments()

Resolves Velt comment annotations to Monaco ranges and renders stable `<velt-comment-text>` overlay elements for the visible comments.

* Signature: `(request:` [RenderCommentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsrequest-10)`) => void`
* Params: `request:` [RenderCommentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsrequest-10)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/monaco.md#rendercomments)

#### isVeltAvailable()

Checks whether the Velt SDK is loaded on `window.Velt`.

* Params: none
* Returns: `boolean`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/monaco.md#isveltavailable)

### SuperDoc

#### SuperDocVeltComments

Creates the Velt Comments extension for a SuperDoc editor. Configure it, then call `.attach(instance)` to wire it to an editor.

* Config: [SuperDocVeltCommentsConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#superdocveltcommentsconfig)
* Returns: `SuperDocVeltComments`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/superdoc.md#superdocveltcomments)

#### addComment()

Creates a comment annotation for the currently selected text in the SuperDoc editor.

* Signature: `async (args: AddCommentArgs) => Promise<AddCommentResult | null>`
* Params: `args:` [AddCommentArgs](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentargs-1)
* Returns: `Promise<AddCommentResult | null>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/superdoc.md#addcomment)

#### renderComments()

Renders and updates Velt comment highlights in the SuperDoc editor.

* Signature: `(args:` [RenderCommentsArgs](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsargs-1)`) => void`
* Params: `args:` [RenderCommentsArgs](https://velt.dev/docs/api-reference/sdk/models/data-models.md#rendercommentsargs-1)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/superdoc.md#rendercomments)

### Nutrient

#### NutrientVeltComments

Creates the Velt Comments extension for a Nutrient viewer. Configure it, then call `.attach(instance)` to wire it to a viewer instance.

* Config: [NutrientVeltCommentsConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#nutrient-nutrientveltcommentsconfig)
* Returns: `NutrientVeltComments`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/nutrient.md#nutrientveltcomments)

#### captureSelection()

Records the current Nutrient text selection for the next `addComment()` call.

* Signature: `(instance: NutrientInstance) => Promise<void>`
* Params: `instance: NutrientInstance`
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/nutrient.md#captureselection)

#### addComment()

Creates a comment annotation for the currently captured text selection in the Nutrient viewer.

* Signature: `async (args: AddCommentArgs) => Promise<AddCommentResult | null>`
* Params: `args:` [AddCommentArgs](https://velt.dev/docs/api-reference/sdk/models/data-models.md#nutrient-addcommentargs)
* Returns: `Promise<AddCommentResult | null>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/nutrient.md#addcomment)

#### renderComments()

Renders and updates Velt comment highlights in the Nutrient viewer.

* Signature: `(args:` [RenderCommentsArgs](https://velt.dev/docs/api-reference/sdk/models/data-models.md#nutrient-rendercommentsargs)`) => void`
* Params: `args:` [RenderCommentsArgs](https://velt.dev/docs/api-reference/sdk/models/data-models.md#nutrient-rendercommentsargs)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/nutrient.md#rendercomments)

### SpreadJS

#### SpreadJSVeltComments

Creates the Velt Comments extension for a SpreadJS workbook. Configure it, then call `.attach(instance)` to wire it to a workbook instance.

* Config: [SpreadJSVeltCommentsConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#spreadjs-spreadjsveltcommentsconfig)
* Returns: `SpreadJSVeltComments`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/spreadjs.md#spreadjsveltcomments)

#### addComment()

Creates a comment annotation for the currently selected SpreadJS cell or range.

* Signature: `async (args: AddCommentArgs) => Promise<AddCommentResult | null>`
* Params: `args:` [AddCommentArgs](https://velt.dev/docs/api-reference/sdk/models/data-models.md#spreadjs-addcommentargs)
* Returns: `Promise<AddCommentResult | null>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/spreadjs.md#addcomment)

#### renderComments()

Renders and updates Velt comment highlights in the SpreadJS workbook.

* Signature: `(args:` [RenderCommentsArgs](https://velt.dev/docs/api-reference/sdk/models/data-models.md#spreadjs-rendercommentsargs)`) => void`
* Params: `args:` [RenderCommentsArgs](https://velt.dev/docs/api-reference/sdk/models/data-models.md#spreadjs-rendercommentsargs)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/setup/spreadjs.md#rendercomments)

### Messages

#### addComment()

Add a comment to a specific comment annotation.

* Params: [AddCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentrequest)
* Returns: [AddCommentEvent](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addcommentevent)
* React Hook: `useAddComment()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#addcomment)

#### updateComment()

Update a comment in a specific comment annotation.

* Params: [UpdateCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#updatecommentrequest)
* Returns: [UpdateCommentEvent](https://velt.dev/docs/api-reference/sdk/models/data-models.md#updatecommentevent)
* React Hook: `useUpdateComment()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#updatecomment)

#### deleteComment()

Delete a comment from a specific comment annotation.

* Params: [DeleteCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#deletecommentrequest)
* Returns: [DeleteCommentEvent](https://velt.dev/docs/api-reference/sdk/models/data-models.md#deletecommentevent)
* React Hook: `useDeleteComment()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#deletecomment)

#### getComment()

Get comments from a specific comment annotation.

* Params: [GetCommentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#getcommentrequest)
* Returns: [Comment\[\]](https://velt.dev/docs/api-reference/sdk/models/data-models#comment)
* React Hook: `useGetComment()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#getcomment)

#### getUnreadCommentCountOnCurrentDocument()

Get the number of unread comments on the current document.

* Params: none
* Returns: `Observable<UnreadCommentsCount | null>`
* React Hook: `useUnreadCommentCountOnCurrentDocument()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#getunreadcommentcountoncurrentdocument)

#### getUnreadCommentCountByLocationId()

Get the number of unread comments by location ID.

* Params: `locationId: string`
* Returns: `Observable<UnreadCommentsCount | null>`
* React Hook: `useUnreadCommentCountByLocationId()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#getunreadcommentcountbylocationid)

#### getUnreadCommentCountByAnnotationId()

Get the number of unread comments by annotation ID.

* Params: `annotationId: string`
* Returns: `Observable<number>`
* React Hook: `useUnreadCommentCountByAnnotationId()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#getunreadcommentcountbyannotationid)

#### markAsRead()

Mark a comment annotation as read for the current user.

* Params: `annotationId: string`
* Returns: `Promise<void>`
* React Hook: `useCommentUtils()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#markasread)

#### markAsUnread()

Mark a comment annotation as unread for the current user.

* Params: `annotationId: string`
* Returns: `Promise<void>`
* React Hook: `useCommentUtils()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#markasunread)

#### setCommentProgressStaleAfter()

Set how long a progress row can go without an update before it's treated as stale and hidden.

* Params: `commentProgressStaleAfter: number` (milliseconds)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#commentprogressstaleafter)

### @Mentions

#### assignUser()

Assign a user to a comment annotation.

* Params: [AssignUserRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#assignuserrequest)
* Returns: [AssignUserEvent](https://velt.dev/docs/api-reference/sdk/models/data-models.md#assignuserevent)
* React Hook: `useAssignUser()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#assignuser)

#### disableCustomAutocompleteSearch()

Disable custom autocomplete search for contact list.

* Params: `none`
* Returns: `void`
* React Hook: `useContactUtils()` or `useCommentUtils()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablecustomautocompletesearch)

#### enableAtHere()

Enable or disable @here mentions.

* Params: none
* Returns: `void`
* React Hook: `useContactUtils()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableathere)

#### enableUserMentions()

Enable or disable user @mentions.

* Params: none
* Returns: `void`
* React Hook: `useContactUtils()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableusermentions)

#### enablePaginatedContactList()

Enable paginated loading of the contact list. On by default: each list loads 10 users plus the signed-in user.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablepaginatedcontactlist)

#### disablePaginatedContactList()

Disable paginated loading of the contact list so the full list loads up front.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablepaginatedcontactlist)

#### enableAnonymousEmail()

Enable display of unrecognized email addresses in the @mention dropdown.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#anonymousemail)

#### disableAnonymousEmail()

Suppress unrecognized email addresses from appearing in the @mention dropdown.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#anonymousemail)

#### enableCustomAutocompleteSearch()

Enable custom autocomplete search for contact list.

* Params: `none`
* Returns: `void`
* React Hook: `useContactUtils()` or `useCommentUtils()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablecustomautocompletesearch)

#### getContactList()

Subscribe to the list of users added to organization, folder, document, user groups or the ones overwritten using the `updateContactList` API.

* Params: none
* Returns: [`Observable<GetContactListResponse>`](https://velt.dev/docs/api-reference/sdk/models/data-models#getcontactlistresponse)
* React Hook: `useContactList()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#getcontactlist)

#### onContactSelected()

Listen for when a contact is selected from the dropdown.

* Params: none
* Returns: [`Observable<UserContactSelectedPayload>`](https://velt.dev/docs/api-reference/sdk/models/data-models#usercontactselectedpayload)
* React Hook: `useContactSelected()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#oncontactselected)

#### setAtHereLabel()

Customize the @here label text.

* Params: `label: string`
* Returns: `void`
* React Hook: `useContactUtils()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#setatherelabel)

#### setAtHereDescription()

Customize the @here description text.

* Params: `description: string`
* Returns: `void`
* React Hook: `useContactUtils()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#setatheredescription)

#### subscribeCommentAnnotation()

Subscribe to a comment annotation.

* Params: [SubscribeCommentAnnotationRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#subscribecommentannotationrequest)
* Returns: [SubscribeCommentAnnotationEvent](https://velt.dev/docs/api-reference/sdk/models/data-models.md#subscribecommentannotationevent)
* React Hook: `useSubscribeCommentAnnotation()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#subscribecommentannotation)

#### unsubscribeCommentAnnotation()

Unsubscribe from a comment annotation.

* Params: [UnsubscribeCommentAnnotationRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#unsubscribecommentannotationrequest)
* Returns: [UnsubscribeCommentAnnotationEvent](https://velt.dev/docs/api-reference/sdk/models/data-models.md#unsubscribecommentannotationevent)
* React Hook: `useUnsubscribeCommentAnnotation()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#unsubscribecommentannotation)

#### updateContactList()

Update the contact list for the current user session.

* Params: `contacts: Array<{userId: string, name: string, email: string}>, options?: {merge: boolean, filters: boolean}`
* Returns: `void`
* React Hook: `useContactUtils()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#updatecontactlist)

#### updateOrgList()

Supplies the list of teams shown in the comment dialog's "Selected Teams" visibility picker. Unlike `updateContactList()`, this is a full replace on every call (it does not merge); pass `{ orgList: [] }` to clear the picker. Exposed on `contactElement` only.

* Params: [`config: UpdateOrgListConfig`](https://velt.dev/docs/api-reference/sdk/models/data-models#updateorglistconfig) (`orgList` is an array of [`OrgContact`](https://velt.dev/docs/api-reference/sdk/models/data-models#orgcontact))
* Returns: `void`
* React Hook: `useContactUtils()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#updateorglist)

#### updateContactListScopeForOrganizationUsers()

Restrict which contacts are shown in the dropdown for organization users.

* Params: `scopes: Array<'all' | 'organization' | 'organizationUserGroup' | 'document'>`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#updatecontactlistscopefororganizationusers)

### Metadata

#### addContext()

Add custom metadata to a comment annotation.

* Params: `{ [key: string]: any }`
* Returns: `void`
* React Hook: `useCommentEventCallback('addCommentAnnotation')`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#addcontext)

#### updateContext()

Update custom metadata on a comment annotation.

* Params: `annotationId: string, context: { [key: string]: any }, config?: { merge: boolean }`
* Returns: `void`
* React Hook: `n/a`
* Note: Updating a comment's [Access Context](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#private-comments-with-access-context) keeps its visibility, including when you pass `null` to clear the `access` object.
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#updatecontext)

### Custom Lists

#### addCustomListDataOnAnnotation()

Add a custom dropdown list at the Comment Annotation level.

* Params: `{ type: 'multi' | 'single', placeholder: string, data: Array<{ id: string, label: string }> }`
* Returns: `void`
* React Hook: `useCommentUtils()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#createcustomlistdataoncomment)

#### addCustomListDataOnComment()

Add a custom dropdown list that appears when a hotkey is pressed in the comment composer.

* Params: `{ hotkey: string, type: 'custom', data: Array<AutocompleteItem> }`
* Returns: `void`
* React Hook: `useCommentUtils()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#createcustomlistdataoncomment)

#### onAutocompleteChipClick()

Listen for clicks on autocomplete chips in comments.

* Params: none
* Returns: `Observable<AutocompleteItem>`
* React Hook: `useAutocompleteChipClick()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#createcustomlistdataoncomment)

#### enableCustomAutocompleteSearch()

Enable custom autocomplete search for custom list.

* Params: `none`
* Returns: `void`
* React Hook: `useCommentUtils()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablecustomautocompletesearch)

#### disableCustomAutocompleteSearch()

Disable custom autocomplete search for custom list.

* Params: `none`
* Returns: `void`
* React Hook: `useCommentUtils()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablecustomautocompletesearch)

### Event Subscription

#### on()

Subscribe to comment events.

* Params: `CommentEventType`. [Here](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#on) is the list of event types you can subscribe to.
* Returns: `Observable<CommentEventTypesMap[T]>`. [Here](https://velt.dev/docs/api-reference/sdk/models/data-models.md#comment) is the list of events object types you can expect to receive.
* React Hook: `useCommentEventCallback(CommentEventType)`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#on)

### Attachments

#### enableAttachments()

Enable file attachments in comments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableattachments)

#### enableAttachmentDownload()

Allow clicking an attachment to trigger a file download.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableattachmentdownload)

#### disableAttachmentDownload()

Prevent clicking an attachment from triggering a file download; `attachmentDownloadClicked` still fires.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableattachmentdownload)

#### enableScreenshot()

Enable screenshot option in comments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablescreenshot)

#### disableScreenshot()

Disable screenshot option in comments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablescreenshot)

#### addAttachment()

Add an attachment to a specific comment annotation.

* Params: [AddAttachmentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addattachmentrequest)
* Returns: `Promise<AddAttachmentResponse[]>`
* React Hook: `useAddAttachment()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#addattachment)

#### deleteAttachment()

Delete an attachment from a specific comment annotation.

* Params: [DeleteAttachmentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#deleteattachmentrequest)
* Returns: `Promise<DeleteAttachmentEvent | null>`
* React Hook: `useDeleteAttachment()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#deleteattachment)

#### getAttachment()

Get attachments from a specific comment annotation.

* Params: [GetAttachmentRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#getattachmentrequest)
* Returns: `Promise<Attachment[]>`
* React Hook: `useGetAttachment()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#getattachment)

#### setAllowedFileTypes()

Limit file types in comment attachments by specifying allowed file extensions.

* Params: `string[]` (array of file extensions)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#allowedfiletypes)

#### setComposerFileAttachments()

Programmatically add file attachments to the comment composer from your application instead of requiring users to select files from the file system.

* Params: [UploadFileData](https://velt.dev/docs/api-reference/sdk/models/data-models.md#uploadfiledata)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#setcomposerfileattachments)

#### enableAttachmentDownload()

Enable automatic file downloads when clicking the download button on attachments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#attachmentdownload)

#### disableAttachmentDownload()

Disable automatic file downloads. The `attachmentDownloadClicked` event still fires, allowing custom download logic.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#attachmentdownload)

### Reactions

#### enableReactions()

Enable emoji reactions in comments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablereactions)

#### setCustomReactions()

Set custom reactions by passing a map containing reaction information.

* Params: `{[reactionId: string]: {url?: string, emoji?: string}}`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#setcustomreactions)

#### addReaction()

Add a reaction to a specific comment annotation.

* Params: [AddReactionRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#addreactionrequest)
* Returns: `Promise<AddReactionEvent | null>`
* React Hook: `useAddReaction()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#addreaction)

#### deleteReaction()

Delete a reaction from a specific comment annotation.

* Params: [DeleteReactionRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#deletereactionrequest)
* Returns: `Promise<DeleteReactionEvent | null>`
* React Hook: `useDeleteReaction()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#deletereaction)

#### toggleReaction()

Toggle a reaction for a specific comment annotation.

* Params: [ToggleReactionRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#togglereactionrequest)
* Returns: `Promise<ToggleReactionEvent | null>`
* React Hook: `useToggleReaction()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#togglereaction)

### Status & Priority

#### enableStatus()

Enable status dropdown & filters in comments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablestatus)

#### setCustomStatus()

Set custom statuses by passing an array of status objects.

* Params: `StatusConfig[]`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#setcustomstatus)

#### enableResolveButton()

Enable resolve button on comments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableresolvebutton)

#### updateStatus()

Update the status of a comment annotation.

* Params: [UpdateStatusRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#updatestatusrequest)
* Returns: `Promise<UpdateStatusEvent>`
* React Hook: `useUpdateStatus()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#updatestatus)

#### resolveCommentAnnotation()

Resolve a comment annotation.

* Params: [ResolveCommentAnnotationRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#resolvecommentannotationrequest)
* Returns: `Promise<ResolveCommentAnnotationEvent>`
* React Hook: `useResolveCommentAnnotation()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#resolvecommentannotation)

#### enablePriority()

Enable priority settings in comments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablepriority)

#### setCustomPriority()

Set custom priorities by passing an array of priority objects.

* Params: `PriorityConfig[]`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#setcustompriority)

#### updatePriority()

Update the priority of a comment annotation.

* Params: [UpdatePriorityRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#updatepriorityrequest)
* Returns: `Promise<UpdatePriorityEvent>`
* React Hook: `useUpdatePriority()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#updatepriority)

### Recordings

#### deleteRecording()

Delete a recording from a comment.

* Params: [DeleteRecordingRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#deleterecordingrequest)
* Returns: `Promise<DeleteRecordingEvent | null>`
* React Hook: `useDeleteRecording()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#deleterecording)

#### getRecording()

Get recordings from a comment.

* Params: [GetRecordingRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#getrecordingrequest)
* Returns: `Promise<RecordedData[]>`
* React Hook: `useGetRecording()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#getrecording)

#### setAllowedRecordings()

Set allowed recording types (audio, video, screen).

* Params: `string`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#setallowedrecordings)

#### enableRecordingCountdown()

Enable countdown before recording starts.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablerecordingcountdown)

#### enableRecordingTranscription()

Enable AI transcription for recordings.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablerecordingtranscription)

### Deep Link

#### getLink()

Get a link to a specific comment annotation.

* Params: [GetLinkRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#getlinkrequest)
* Returns: [GetLinkResponse](https://velt.dev/docs/api-reference/sdk/models/data-models.md#getlinkresponse)
* React Hook: `useGetLink()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#getlink)

#### copyLink()

Copy a link to a specific comment annotation to clipboard.

* Params: [CopyLinkRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#copylinkrequest)
* Returns: [CopyLinkEvent](https://velt.dev/docs/api-reference/sdk/models/data-models.md#copylinkevent)
* React Hook: `useCopyLink()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#copylink)

### Navigation

#### scrollToCommentByAnnotationId()

Scroll the page to a comment's location.

* Params: `annotationId: string`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#scrolltocommentbyannotationid)

#### selectCommentByAnnotationId()

Programmatically select a comment annotation. When called without arguments or with an invalid ID, it will close the currently selected annotation.

* Params: `annotationId?: string` (optional)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#selectcommentbyannotationid)

#### onCommentSelectionChange()

Subscribe to comment selection changes.

* Params: none
* Returns: `Observable<CommentSelectionChangeData>`
* React Hook: `useCommentSelectionChangeHandler()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#oncommentselectionchange)

#### enableScrollToComment()

Enable automatic scrolling to comments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablescrolltocomment)

#### enableIdScopedAnchoring()

Place pins whose xpath is rooted at an element id only inside that element. Pass `documentIds` to limit it to specific documents.

* Params: `config?:` [IdScopedAnchoringConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#idscopedanchoringconfig)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableidscopedanchoring)

#### disableIdScopedAnchoring()

Restore the default scored pin anchoring.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableidscopedanchoring)

### DOM Controls

#### allowedElementIds()

Set allowed element IDs for commenting.

* Params: `elementIds: string[]`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#allowedelementids)

#### allowedElementClassNames()

Set allowed element class names for commenting.

* Params: `classNames: string[]`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#allowedelementclassnames)

#### allowedElementQuerySelectors()

Set allowed element query selectors for commenting.

* Params: `selectors: string[]`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#allowedelementqueryselectors)

#### setContextInPageModeComposer()

Set context data and optional target element for page mode composer.

* Params: [`PageModeComposerConfig`](https://velt.dev/docs/api-reference/sdk/models/data-models#pagemodecomposerconfig)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#setcontextinpagemodecomposer)

#### focusPageModeComposer()

Focus the page mode composer input field.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#focuspagemodecomposer)

### AI Categorization

#### enableAutoCategorize()

Enable AI auto-categorization of comments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableautocategorize)

#### setCustomCategory()

Set custom categories for comment categorization.

* Params: `categories: Array<{id: string, name: string, color: string}>`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#setcustomcategory)

### UI

#### updateCommentDialogPosition()

Update position of comment dialog relative to pin.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#updatecommentdialogposition)

#### enableSidebarButtonOnCommentDialog()

Enable sidebar button on comment dialogs.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablesidebarbuttononcommentdialog)

#### onSidebarButtonOnCommentDialogClick()

Subscribe to clicks on comment dialog sidebar button.

* Params: none
* Returns: `Observable<any>`
* React Hook: `useCommentDialogSidebarClickHandler()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#onsidebarbuttononcommentdialogclick)

#### CommentDialogActionService.isSubmitInFlight()

\[!TIP] Advanced — intended for custom-actions hosts that intercept the comment submit flow.
Returns `true` while a real (non-draft) `addComment` call is in flight for the given dialog instance. Use this to guard against duplicate submits or skip auto-draft-save logic during an active submit.

* Params: `dialogInstanceId?: string` — optional; if omitted, returns `false` (the in-flight flag is only tracked when a `dialogInstanceId` is supplied).
* Returns: `boolean`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#commentdialogactionservice)

#### enableDeleteReplyConfirmation()

Enable confirmation dialog before deleting replies.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enabledeletereplyconfirmation)

#### enableMobileMode()

Enable mobile-optimized comment UI.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablemobilemode)

#### enableCommentPinHighlighter()

Enable highlighting outline around comment pins.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablecommentpinhighlighter)

#### enablePinDrag()

Enable dragging of comment pins to reposition them.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#pindrag)

#### disablePinDrag()

Disable dragging of comment pins.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#pindrag)

#### showCommentsOnDom()

Show comments on the DOM.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#showCommentsOnDom)

#### enableDialogOnHover()

Enable showing comment dialog on hover.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enabledialogonhover)

#### enableFloatingCommentDialog()

Enable floating comment dialog next to pins.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablefloatingcommentdialog)

#### showResolvedCommentsOnDom()

Show resolved comments on the DOM.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#showresolvedcommentsondom)

#### enableCollapsedComments()

Enable collapsing of comments in annotations.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablecollapsedcomments)

#### enableShortUserName()

Enable shortening of long user names.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableshortusername)

#### enableSignInButton()

Enable sign in button on comment dialog when user is anonymous or signed out.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablesigninbutton)

#### onSignIn()

Handle sign in button click event.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#onsignin)

### Extra Information

#### enableCommentIndex()

Enable comment index indicators on pins and sidebar.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablecommentindex)

#### enableDeviceInfo()

Enable device type indicators in comment threads.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enabledeviceinfo)

#### enableDeviceIndicatorOnCommentPins()

Enable device type indicators on comment pins.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enabledeviceindicatoroncommentpins)

#### enableGhostComments()

Enable showing ghost comments on the DOM.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableghostcomments)

#### enableGhostCommentsIndicator()

Enable ghost comment labels in the sidebar.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableghostcommentsindicator)

#### enableRestrictTextSearchToAnchor()

Restrict the text-comment highlight search to the anchor element only. The comment ghosts immediately when the anchor text is gone (no body-level fallback).

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#restricttextsearchtoanchor)

#### disableRestrictTextSearchToAnchor()

Allow the wider fallback search (document.body for body-anchored comments, location element for location-scoped ones) before ghosting. Default behavior.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#restricttextsearchtoanchor)

### Special File Type Support

#### enableSvgAsImg()

Treat SVGs as flat images instead of layered elements.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#svgAsImg)

### Keyboard Controls

#### enableHotkey()

Enable hotkeys for comments (e.g. 'c' to enable comment mode).

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablehotkey)

#### enableEnterKeyToSubmit()

Enable using Enter key to submit comments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableentertosubmit)

#### enableDeleteOnBackspace()

Enable deleting comments with backspace key.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enabledeleteonbackspace)

### Moderation

#### enableModeratorMode()

Enable moderator mode for comments requiring approval.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablemoderatormode)

#### enableResolveStatusAccessAdminOnly()

Restrict resolve action to admin users and comment authors.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableresolvestatusaccessadminonly)

#### approveCommentAnnotation()

Approve a comment annotation in moderator mode.

* Params: `ApproveCommentAnnotationRequest`
* Returns: `Promise<ApproveCommentAnnotationEvent>`
* React Hook: `useApproveCommentAnnotation()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#approvecommentannotation)

#### enableSuggestionMode()

Enable suggestion mode for accepting/rejecting comments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablesuggestionmode)

#### acceptSuggestion()

Accept a suggestion annotation (agent- or human-authored), the same action the comment dialog's built-in Accept button performs. Sets `suggestion.status` and flips `annotation.type` to `'comment'`.

* Params: `AcceptSuggestionRequest`
* Returns: `Promise<SuggestionAcceptEvent | null>`
* React Hook: `useAcceptSuggestion()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/suggestions/overview.md#resolvesuggestionsprogrammatically)

#### rejectSuggestion()

Reject a suggestion annotation (agent- or human-authored), the same action the comment dialog's built-in Reject button performs. Sets `suggestion.status` and flips `annotation.type` to `'comment'`.

* Params: `RejectSuggestionRequest`
* Returns: `Promise<SuggestionRejectEvent | null>`
* React Hook: `useRejectSuggestion()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/suggestions/overview.md#resolvesuggestionsprogrammatically)

### Comment Read Status

#### enableSeenByUsers()

Enable "Seen By" feature to show which users have seen each comment.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableseenbyusers)

#### setUnreadIndicatorMode()

Set unread indicator mode to either minimal (dot) or verbose (badge).

* Params: `mode: "minimal" | "verbose"`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#setunreadindicatormode)

### Toggle Comment Types

#### enableAreaComment()

Enable area comments that allow drawing rectangles with comments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableareacomment)

#### enableInboxMode()

Enable inbox mode for comments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableinboxmode)

#### enablePopoverMode()

Enable popover mode for comments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablepopovermode)

#### enableStreamMode()

Enable stream mode for comments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablestreammode)

#### enableTextMode()

Enable text mode for comments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enabletextmode)

#### enableInlineCommentMode()

Enable inline comment mode to show comments under associated text.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableinlinecommentmode)

#### enableMultiThread()

Enable multithreaded comments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablemultithread)

#### enableCollapsedRepliesPreview()

Show the collapsed thread teaser (first comment, "Show N replies…" divider, last comment) in a comment dialog's non-selected preview state. Defaults to disabled.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#collapsedrepliespreview)

#### disableCollapsedRepliesPreview()

Revert to showing only the first comment in a comment dialog's non-selected preview state.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#collapsedrepliespreview)

### Comment Bubble

#### enableGroupMatchedComments()

Enable grouping of multiple comment annotations in Comment Bubble component when multiple annotations match the provided `context` or `targetElementId`.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#groupMatchedComments)

### Comment Tool

#### enableCommentMode()

Enable comment mode to allow attaching comments to DOM elements.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablecommentmode)

#### onCommentModeChange()

Subscribe to changes in comment mode state.

* Params: none
* Returns: `Observable<boolean>`
* React Hook: `useCommentModeState()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#oncommentmodechange)

#### enableCommentTool()

Enable/disable the comment tool button.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablecommenttool)

#### enableChangeDetectionInCommentMode()

Enable DOM change detection while in comment mode.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablechangedetectionincommentmode)

#### enablePersistentCommentMode()

Enable persistent comment mode to continue leaving comments after finishing one.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablepersistentcommentmode)

#### enableForceCloseAllOnEsc()

Force close persistent comment mode when ESC key is pressed, even if a comment thread is active.

* Params: none
* Returns: `void`
* React Hook: `useCommentUtils()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#forcecloseallonesc)

#### disableForceCloseAllOnEsc()

Disable force close behavior for persistent comment mode when ESC key is pressed.

* Params: none
* Returns: `void`
* React Hook: `useCommentUtils()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#forcecloseallonesc)

#### setPinCursorImage()

Set custom cursor image for comment mode.

* Params: `base64ImageString: string`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#setpincursorimage)

### Minimap

#### enableMinimap()

Enable minimap showing comment locations on screen edge.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enableminimap)

### Popover Comments

#### enableDialogOnTargetElementClick()

Enable opening comment dialog on target element click in popover mode.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enabledialogontargetelementclick)

#### enablePopoverTriangleComponent()

Enable triangle indicator on popover comments.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablepopovertrianglecomponent)

### Video Timeline Comments

#### setTotalMediaLength()

Set the total length of media (in frames or seconds) for the timeline.

* Params: `length: number`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#settotalmedialength)

### Comment Pin

#### enableBubbleOnPin()

Show a Comment Bubble when hovering/clicking on Comment Pin instead of Comment Dialog.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablebubbleonpin)

#### enableBubbleOnPinHover()

Show Comment Bubble on hover vs click for Comment Pins.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#enablebubbleonpinhover)

### Component Props

#### VeltComments

Props accepted by the `VeltComments` root component, including edit-mode placeholder overrides. Setting props here propagates to all comment dialogs automatically.

* Params: [`VeltCommentsProps`](https://velt.dev/docs/api-reference/sdk/models/data-models#veltcommentsprops)
* Returns: `N/A`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md)

#### VeltCommentDialog

Props accepted by the `VeltCommentDialog` component, including edit-mode placeholder overrides.

* Params: [`VeltCommentDialogProps`](https://velt.dev/docs/api-reference/sdk/models/data-models#veltcommentdialogprops)
* Returns: `N/A`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md)

#### VeltCommentsSidebar

Props accepted by the `VeltCommentsSidebar` component, including edit-mode placeholder overrides.

* Params: [`VeltCommentsSidebarProps`](https://velt.dev/docs/api-reference/sdk/models/data-models#veltcommentssidebarprops)
* Returns: `N/A`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments-sidebar/v1/customize-behavior.md)

#### VeltInlineCommentsSection

Props accepted by the `VeltInlineCommentsSection` component, including edit-mode placeholder overrides.

* Params: [`VeltInlineCommentsSectionProps`](https://velt.dev/docs/api-reference/sdk/models/data-models#veltinlinecommentssectionprops)
* Returns: `N/A`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md)

# Comments Sidebar

### Custom filtering, sorting and grouping

#### enableSidebarCustomActions()

Enable custom filtering, sorting and grouping actions in the comments sidebar.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments-sidebar/v1/customize-behavior.md#custom-filtering-sorting-and-grouping)

#### setCommentSidebarData()

Set filtered/sorted/grouped data in the comments sidebar.

* Params: `data: CommentSidebarData[], options?: {grouping?: boolean}`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments-sidebar/v1/customize-behavior.md#custom-filtering-sorting-and-grouping)

#### getCustomSidebarDataAnnotationIds()

Returns a snapshot of the deduplicated annotation-ID set most recently passed to `setCommentSidebarData()`.

> [!NOTE]
>
> Advanced / internal — prefer `setCommentSidebarData()` for most use cases.

* Params: none
* Returns: `Set<string> | null` — `null` before any `setCommentSidebarData()` call or after `clearCache()`
* React Hook: `n/a`

> [!NOTE]
>
> `null` indicates no override is active (no `setCommentSidebarData` call yet, or `clearCache` was called); an empty `Set<string>` means the client has explicitly set the visible list to empty (show nothing).

* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments-sidebar/v1/customize-behavior.md#custom-filtering-sorting-and-grouping)

#### getCustomSidebarDataAnnotationIds\$()

Returns an Observable that replays the current annotation-ID set and emits on every `setCommentSidebarData()` call. Structurally equal ID sets are deduplicated (no redundant emissions).

> [!NOTE]
>
> Advanced / internal — prefer `setCommentSidebarData()` for most use cases.

* Params: none
* Returns: `Observable<Set<string> | null>` — emits `null` before any `setCommentSidebarData()` call and after `clearCache()`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments-sidebar/v1/customize-behavior.md#custom-filtering-sorting-and-grouping)

### Navigation

#### onCommentClick()

Listen for comment click events in the sidebar.

* Params: `(event: {documentId: string, location: Object, targetElementId: string, context: Object, annotation: CommentAnnotation}) => void`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments-sidebar/v1/customize-behavior.md#oncommentclick)

#### enableSidebarUrlNavigation()

Enable automatic URL navigation when clicking comments in the sidebar.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments-sidebar/v1/customize-behavior.md#enablesidebarurlnavigation)

### UI

#### openCommentSidebar()

Open the comments sidebar.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments-sidebar/v1/customize-behavior.md#opencommentsidebar)

#### closeCommentSidebar()

Close the comments sidebar.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments-sidebar/v1/customize-behavior.md#openCommentSidebar)

#### toggleCommentSidebar()

Toggle the comments sidebar open/closed state.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments-sidebar/v1/customize-behavior.md#togglecommentsidebar)

#### enableFullScreenInSidebar()

Enable full-screen mode for the Comments Sidebar (only works in default mode).

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments-sidebar/v1/customize-behavior.md#fullscreen)

#### disableFullScreenInSidebar()

Disable full-screen mode for the Comments Sidebar.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments-sidebar/v1/customize-behavior.md#fullscreen)

#### excludeLocationIdsFromSidebar()

Filter out comments from specified locations in the sidebar.

* Params: `locationIds: string[]`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments-sidebar/v1/customize-behavior.md#excludelocationidsfromsidebar)

### System Filters, Sorting and Grouping

#### setCommentSidebarFilters()

Set filters for the comments sidebar programmatically. Included keys replace their selected values while omitted keys are preserved. The values render as checked options and are cleared by Reset — pass a present-but-empty array to clear one field, or an empty object to clear all selections.

* Params: `filters:` [`CommentSidebarFilters`](https://velt.dev/docs/api-reference/sdk/models/data-models#commentsidebarfilters)
* Returns: `void`
* React Hook: `n/a`
* Note: Unknown filter keys are ignored; only valid filter fields affect the list.
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments-sidebar/v2/customize-behavior.md#setcommentsidebarfilters)

#### setSystemFiltersOperator()

Set how selections from different sidebar filter fields are combined. Values within one field always use OR.

* Params: `operator: 'and' | 'or'`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments-sidebar/v2/customize-behavior.md#systemfiltersoperator)

#### setSidebarButtonCountType()

Change what the sidebar button count badge reflects: `'default'` counts comments in open and in-progress states; `'filter'` counts the sidebar's filtered list.

* Params: `type: string`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments-sidebar/v2/customize-behavior.md#sidebarbuttoncounttype)

# Notifications

### Data

#### getNotificationsData()

Get the notifications data for the current user.

* Params:
  * query: Optional. [`GetNotificationsDataQuery`](https://velt.dev/docs/api-reference/sdk/models/data-models#getnotificationsdataquery)
    * `type`: Filter for notification type: all, for you, or documents.
      * `forYou`: returns notifications where the current user is involved.
      * `all` / `documents`: returns all notifications from the documents the user has access to.
* Returns: `Observable<Notification[]>`
* React Hook: `useNotificationsData()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#getnotificationsdata)

#### getUnreadNotificationsCount()

Get count of unread notifications by tab.

* Params: none
* Returns: `Observable<{forYou: number, all: number}>`
* React Hook: `useUnreadNotificationsCount()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#getunreadnotificationscount)

### Event Subscription

#### on()

Subscribe to Notification events.

* Params: `NotificationEventType`. [Here](https://velt.dev/docs/api-reference/sdk/models/data-models.md#notification) is the list of events you can subscribe to.
* Returns: `Observable<NotificationEventTypesMap[T]>`. [Here](https://velt.dev/docs/api-reference/sdk/models/data-models.md#notification) is the list of events object types you can expect to receive.
* React Hook: `useNotificationEventCallback(NotificationEventType)`

#### onNotificationClick()

Listen for notification click events in the Notifications Panel.

* Params: `(notification: Notification) => void`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#onnotificationclick)

### Configuration

#### setTabConfig()

Customize notification tab names and visibility.

* Params: `tabConfig: TabConfig`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#settabconfig)

#### setMaxDays()

Set maximum age in days for displayed notifications.

* Params: `days: number`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#setmaxdays)

#### enableReadNotificationsOnForYouTab()

Show read notifications in the "For You" tab.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#enablereadnotificationsonforyoutab)

#### enableCrossOrganization()

Enable cross-organization "For You" notifications, merging notifications from other orgs the user belongs to. Passing `null` or omitting config opts in with defaults; `{ enabled: false }` disables.

* Params: `config?: `[`CrossOrganizationConfig`](https://velt.dev/docs/api-reference/sdk/models/data-models#crossorganizationconfig)` | null`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#enablecrossorganization)

#### disableCrossOrganization()

Disable cross-organization notifications.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#disablecrossorganization)

#### getCrossOrganizationConfig()

Get the current cross-organization configuration.

* Params: none
* Returns: [`CrossOrganizationConfig`](https://velt.dev/docs/api-reference/sdk/models/data-models#crossorganizationconfig)
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#getcrossorganizationconfig)

#### getCrossOrganizationConfig\$()

Subscribe to changes in the cross-organization configuration.

* Params: none
* Returns: `Observable<`[`CrossOrganizationConfig`](https://velt.dev/docs/api-reference/sdk/models/data-models#crossorganizationconfig)`>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#getcrossorganizationconfig)

#### enableUserScopedNotifications()

Fetch the current user's newest notifications for the current organization, independent of the recently-active-documents window, and merge them into the "For You" tab and unread count. Passing `null` or omitting the config opts in with defaults; `{ enabled: false }` disables and keeps the configured `limit`.

* Params: `config?: `[`UserScopedNotificationsConfig`](https://velt.dev/docs/api-reference/sdk/models/data-models#userscopednotificationsconfig)` | null`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#enableuserscopednotifications)

#### disableUserScopedNotifications()

Disable the user-scoped notifications fetch and return to the recently-active-documents window.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#disableuserscopednotifications)

### Actions

#### setAllNotificationsAsRead()

Mark all notifications as read globally or by tab.

* Params: `options?: {tabId?: string}`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#setallnotificationsasread)

#### markNotificationAsReadById()

Mark a specific notification as read.

* Params: `notificationId: string`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#marknotificationasreadbyid)

### Notification Settings

#### enableSettings()

Enable or disable the settings feature for notifications.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#enablesettings)

#### disableSettings()

Disable the settings feature for notifications.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#enablesettings)

#### enableSettingsAtOrganizationLevel()

Enable organization-level notification settings. Settings apply to all documents in the organization instead of per-document.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#enablesettingsatorganizationlevel)

#### disableSettingsAtOrganizationLevel()

Disable organization-level notification settings. Settings revert to per-document configuration.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#disablesettingsatorganizationlevel)

#### setSettingsInitialConfig()

Set the initial default configuration for notification settings.

* Params: [`NotificationInitialSettingsConfig[]`](https://velt.dev/docs/api-reference/sdk/models/data-models#notificationinitialsettingsconfig)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#setsettingsinitialconfig)

#### muteAllNotifications()

Mute all notifications across all channels for the current user.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#muteallnotifications)

#### setSettings()

Update notification settings configuration for the current user.

* Params: [`NotificationSettingsConfig`](https://velt.dev/docs/api-reference/sdk/models/data-models#notificationsettingsconfig)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#setsettings)

#### getSettings()

Get the current notification settings configuration for the user.

* Params: none
* Returns: [`Observable<NotificationSettingsConfig>`](https://velt.dev/docs/api-reference/sdk/models/data-models#notificationsettingsconfig)
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#getsettings)

#### enableCurrentDocumentOnly()

Filters notifications to show only those from the current document.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#enablecurrentdocumentonly)

#### disableCurrentDocumentOnly()

Shows notifications from all documents, not just the current document.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/notifications/customize-behavior.md#disablecurrentdocumentonly)

# Activity Logs

### Data

#### getAllActivities()

Subscribe to the real-time activity log feed, optionally filtered by document, feature type, or action type.

* Params: `config?:` [`ActivitySubscribeConfig`](https://velt.dev/docs/api-reference/sdk/models/data-models#activitysubscribeconfig)
* Returns: `Observable<ActivityRecord[] | null>`
* React Hook: `useAllActivities(config?)`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/activity/customize-behavior.md#getallactivities)

### Actions

#### createActivity()

Create a custom activity log record for non-Velt events.

* Params: `data:` [`CreateActivityData`](https://velt.dev/docs/api-reference/sdk/models/data-models#createactivitydata) — `targetEntityId` is required only when `featureType` is `'custom'`; it is optional for `comment`, `reaction`, `recorder`, and `crdt`.
* Returns: `Promise<void>`
* React Hook: `useActivityUtils()` (access via `activityElement?.createActivity(data)`)
* [Full Documentation →](https://velt.dev/docs/async-collaboration/activity/customize-behavior.md#createactivity)

### Element Access

#### getActivityElement()

Get the ActivityElement instance from the Velt client.

* Params: none
* Returns: `ActivityElement`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/activity/setup.md)

### React Hooks

#### useAllActivities()

React Hook to subscribe to the activity log feed with optional filtering.

* Params: `config?:` [`ActivitySubscribeConfig`](https://velt.dev/docs/api-reference/sdk/models/data-models#activitysubscribeconfig)
* Returns: [`ActivityRecord[]`](https://velt.dev/docs/api-reference/sdk/models/data-models#activityrecord) `| null`
* React Hook: Yes
* [Full Documentation →](https://velt.dev/docs/async-collaboration/activity/customize-behavior.md#getallactivities)

#### useActivityUtils()

React Hook to access ActivityElement utility methods such as `createActivity()`.

* Params: none
* Returns: `ActivityElement | null`
* React Hook: Yes
* [Full Documentation →](https://velt.dev/docs/async-collaboration/activity/customize-behavior.md#createactivity)

# Recorder

#### downloadLatestVideo()

Downloads the latest version of a recording.

* Params: `recorderId: string`
* Returns: `Promise<boolean>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/recorder/customize-behavior.md#downloadlatestvideo)

#### enableRecordingCountdown()

Controls whether to display a countdown timer before a recording starts.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/recorder/customize-behavior.md#enablerecordingcountdown)

#### enableRecordingTranscription()

Controls whether to enable AI transcription for recordings.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/recorder/customize-behavior.md#enablerecordingtranscription)

#### fetchRecordings()

Fetches recording data.

* Params: [RecorderRequestQuery](https://velt.dev/docs/api-reference/sdk/models/data-models.md#recorderrequestquery)
* Returns: [`Promise<GetRecordingDataResponse>`](https://velt.dev/docs/api-reference/sdk/models/data-models#getrecordingdataresponse)
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/recorder/customize-behavior.md#getrecordingdata)

### RecorderElement Methods

#### setMaxLength()

Sets the maximum recording duration in seconds.

* Params: `value: number`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/recorder/customize-behavior.md#setmaxlength)

#### enablePictureInPicture()

Enables Picture-in-Picture mode for recordings.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/recorder/customize-behavior.md#enablepictureinpicture)

#### disablePictureInPicture()

Disables Picture-in-Picture mode for recordings.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/recorder/customize-behavior.md#disablepictureinpicture)

#### openPictureInPicture()

Opens the Picture-in-Picture window for the current recording.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/recorder/customize-behavior.md#openpictureinpicture)

#### exitPictureInPicture()

Exits the Picture-in-Picture window.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/recorder/customize-behavior.md#exitpictureinpicture)

#### requestScreenPermission()

Requests screen capture permissions for recording preview.

* Params: none
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/recorder/customize-behavior.md#requestscreenpermission)

#### enablePlaybackOnPreviewClick()

Enables click-to-play/pause functionality on recording preview thumbnails.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/recorder/customize-behavior.md#playbackonpreviewclick)

#### disablePlaybackOnPreviewClick()

Disables click-to-play/pause functionality on recording preview thumbnails.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/recorder/customize-behavior.md#playbackonpreviewclick)

### Event Subscription

#### on()

Subscribe to Recorder events.

* Params: `RecorderEventType`. [Here](https://velt.dev/docs/api-reference/sdk/models/data-models.md#recorder) is the list of events you can subscribe to.
* Returns: `Observable<RecorderEventTypesMap[T]>`. [Here](https://velt.dev/docs/api-reference/sdk/models/data-models.md#recorder) is the list of events object types you can expect to receive.
* React Hook: `useRecorderEventCallback(RecorderEventType)`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/recorder/customize-behavior.md#on)

# Inline Reactions

#### setCustomReactions()

Set custom reaction emojis for inline reactions.

* Params: `customReactions: { [reactionId: string]: { url?: string, emoji?: string } }`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/reactions/customize-behavior#setcustomreactions)

# View Analytics

#### getUniqueViewsByUser()

Get unique views by user, optionally filtered by location.

* Params: `locationId?: string`
* Returns: `Observable<ViewsByUser[]>`
* React Hook: `useUniqueViewsByUser()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/view-analytics/customize-behavior.md#getuniqueviewsbyuser)

#### getUniqueViewsByDate()

Get unique views by date, optionally filtered by location.

* Params: `locationId?: string`
* Returns: `Observable<ViewsByDate[]>`
* React Hook: `useUniqueViewsByDate()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/view-analytics/customize-behavior.md#getuniqueviewsbydate)

# Live State Sync

#### getLiveStateData()

Retrieves live state data as an observable based on the provided ID.

* Params: `liveStateDataId?: string`
* Returns: `Observable<any>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/live-state-sync/setup.md)

#### setLiveStateData()

Sets live state data for the provided ID and data.

* Params:
  * `liveStateDataId`: `string`
  * `liveStateData`: `any`
  * `config`: `SetLiveStateDataConfig`
* Returns: `any`
* React Hook: `useSetLiveStateData()`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/live-state-sync/setup.md)

#### fetchLiveStateData()

Fetches live state data as a Promise. Use this when you need to retrieve the current state once, rather than subscribing to ongoing changes.

* Params: `request?:` [FetchLiveStateDataRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#fetchlivestatedatarequest) - Optional. If not provided or if liveStateDataId is not specified, all live state data will be returned.
* Returns: `Promise<T>` - Generic type support allows you to specify the expected data type
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/live-state-sync/setup.md#fetch-live-data)

# Single Editor Mode

#### enableSingleEditorMode()

Enables the single editor mode with an optional configuration.

* Params: `config?: SingleEditorConfig`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/setup.md)

#### disableSingleEditorMode()

Disables the single editor mode.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/setup.md)

#### isUserEditor()

Checks if the current user is an editor. Returns an observable.

* Params: none
* Returns: `Observable<UserEditorAccess | null>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/setup.md)

#### getEditor()

Retrieves the current editor information.

* Params: none
* Returns: `Observable<User | null>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/setup.md)

#### setUserAsEditor()

Sets the current user as an editor.

* Params: none
* Returns: `Promise<SetUserAsEditorResponse | void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/customize-behavior.md#setuseraseditor)

Possible error codes returned in `SetUserAsEditorResponse.error`:

* `same_user_editor_current_tab`
* `same_user_editor_different_tab`
* `another_user_editor`

See types: [SetUserAsEditorResponse](https://velt.dev/docs/api-reference/sdk/models/data-models.md#setuseraseditorresponse), [ErrorEvent](https://velt.dev/docs/api-reference/sdk/models/data-models.md#errorevent)

#### resetUserAccess()

Resets the user access.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/setup.md)

#### singleEditorModeContainerIds()

Disables elements inside specific elements only when single editor mode is on.

* Params: `elementIds: string[]`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/setup.md)

#### enableAutoSyncState()

Enables the autosync state feature.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/setup.md)

#### requestEditorAccess()

Initiates a request for editor access.

* Params: none
* Returns: `Observable<boolean | null>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/setup.md)

#### isEditorAccessRequested()

Checks if editor access has been requested.

* Params: none
* Returns: `Observable<{ requestStatus: string, requestedBy: User } | null>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/setup.md)

#### acceptEditorAccessRequest()

Accepts an editor access request.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/setup.md)

#### rejectEditorAccessRequest()

Rejects an editor access request.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/setup.md)

#### cancelEditorAccessRequest()

Cancels an editor access request.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/setup.md)

#### editCurrentTab()

Edits the current tab.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/setup.md)

#### setEditorAccessTimeout()

Sets a timeout for editor access. (in milliseconds)

* Params: `timeout: number`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/setup.md)

#### enableEditorAccessTransferOnTimeOut()

Enables the transfer of editor access on timeout.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/setup.md)

#### enableDefaultSingleEditorUI()

Enables the default UI for single editor mode.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/setup.md)

#### enableHeartbeat()

Enables the heartbeat mechanism for Single Editor Mode presence detection. This feature is enabled by default when single editor mode is enabled.

* Params: `void`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/customize-behavior.md#heartbeat)

#### disableHeartbeat()

Disables the heartbeat mechanism for Single Editor Mode presence detection. Must be called before enabling single editor mode if you don't want to use the heartbeat functionality.

* Params: `void`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/customize-behavior.md#heartbeat)

# Cursors

#### setInactivityTime()

Set the time it takes for a user's cursor to be marked as inactive.

* Params: `milliseconds: number`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/cursors/customize-behavior.md#setinactivitytime)

#### allowedElementIds()

Set specific element IDs where cursors should be shown.

* Params: `elementIds: string[]`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/cursors/customize-behavior.md#allowedelementids)

#### onCursorUserChange()

Subscribe to cursor position changes for all users.

* Params: `callback: (cursorUsers: CursorUser[]) => void`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/cursors/customize-behavior.md#oncursoruserchange)

# Presence

#### updateUserPresence()

Send a lightweight heartbeat from your host app to Velt. Velt will use that as a fallback in rare edge cases if it fails to detect multi‑tab/device presence. Most apps don’t need this; use only if you see ambiguity in who’s the active editor.

* Params: `userPresence: LiveStateSingleEditorExternalUserPresence`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/single-editor-mode/customize-behavior.md#updateuserpresence)
  See types: [LiveStateSingleEditorExternalUserPresence](https://velt.dev/docs/api-reference/sdk/models/data-models.md#livestatesingleeditorexternaluserpresence)

#### setInactivityTime()

Set the time it takes for a user to be marked as inactive.

* Params: `milliseconds: number`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/presence/customize-behavior.md#setinactivitytime)

#### enableSelf()

Include the current user in the list of presence users.

* Params: `none`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/presence/customize-behavior.md#self)

#### on()

Subscribe to Presence events.

* Params: `PresenceEventType`. [Here](https://velt.dev/docs/api-reference/sdk/models/data-models.md#presence) is the list of events you can subscribe to.
* Returns: `Observable<PresenceEventTypesMap[T]>`. [Here](https://velt.dev/docs/api-reference/sdk/models/data-models.md#presence) is the list of events object types you can expect to receive.
* React Hook: `usePresenceEventCallback(PresenceEventType)`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/presence/customize-behavior.md#on)

#### onPresenceUserChange()

Subscribe to presence changes for all users.

* Params: `callback: (presenceUsers: PresenceUser[]) => void`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/presence/customize-behavior.md#onpresenceuserchange)

#### onPresenceUserClick()

Handle click events on presence avatar circles.

* Params: `callback: (user: User) => void`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/presence/customize-behavior.md#onpresenceuserclick)

#### getData()

Subscribe to presence data.

* Params: `PresenceRequestQuery`
* Returns: `Observable<GetPresenceDataResponse>`
* React Hook: `usePresenceData()`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/presence/customize-behavior.md#getdata)

#### addUser()

Programmatically add a custom user (e.g., AI agent, bot) to the presence list. Set `localOnly: true` to restrict the change to the current client without persisting to the database.

* Params: `{ user: Partial<`[`PresenceUser`](https://velt.dev/docs/api-reference/sdk/models/data-models#presenceuser)`>, localOnly?: boolean }`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/presence/customize-behavior.md#adduser)

#### removeUser()

Programmatically remove a custom user from the presence list. Set `localOnly: true` to restrict the removal to the current client.

* Params: `{ user: Partial<`[`PresenceUser`](https://velt.dev/docs/api-reference/sdk/models/data-models#presenceuser)`>, localOnly?: boolean }`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/presence/customize-behavior.md#removeuser)

# Follow Mode

#### enableFlockMode()

Enable Follow Me mode globally wherever Presence is shown.

* Params: [`options?: FlockOptions`](https://velt.dev/docs/api-reference/sdk/models/data-models#flockoptions)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/presence/customize-behavior.md#flockmode)

#### startFollowingUser()

Start following a specific user.

* Params: `userId: string` (the leader's user ID), `name: string` (the leader's user name)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/flock-mode/customize-behavior.md#startfollowinguser)

#### stopFollowingUser()

Stop following the current user.

* Params: `none`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/flock-mode/customize-behavior.md#stopfollowinguser)

#### onNavigate()

Handle navigation events during Follow Me sessions.

* Params: `callback: (pageInfo: PageInfo) => void`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/flock-mode/customize-behavior.md#onnavigate)

# Huddle

#### enableChat()

Enable the ephemeral chat feature in Huddle.

* Params: `none`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/huddle/customize-behavior.md#chat)

#### enableFlockModeOnAvatarClick()

Enable Follow Me mode when clicking on a user's avatar in Huddle.

* Params: `none`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/huddle/customize-behavior.md#flockmodeonavatarclick)

# Live Selection

#### enableDefaultElementsTracking()

Enable automatic tracking of user presence on default element types (input, textarea, button, contenteditable).

* Params: `none`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/live-selection/customize-behavior.md#enabledefaultelementstracking)

#### enableUserIndicator()

Enable the user indicator (avatar/name label) that appears near selected elements.

* Params: `none`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/live-selection/customize-behavior.md#enableuserindicator)

#### setUserIndicatorPosition()

Set the position of the user indicator globally.

* Params: `position: 'start' | 'end'`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/live-selection/customize-behavior.md#setuserindicatorposition)

#### setUserIndicatorType()

Set the type of user indicator globally.

* Params: `type: 'avatar' | 'label'`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/live-selection/customize-behavior.md#setuserindicatortype)

#### getLiveSelectionData()

Get the live selection data for the current document.

* Params: `none`
* Returns: `Observable<LiveSelectionData>`
* React Hook: `useLiveSelectionDataHandler()`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/live-selection/customize-behavior.md#getliveselectiondata)

#### setInactivityTime()

Set inactivity duration before hiding inactive selections.

* Params: `milliseconds: number`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/live-selection/customize-behavior.md#setinactivitytime)

# AI

### Rewriter

#### enableRewriter()

Enable the rewriter.

* Params: `n/a`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/ai/rewriter/setup.md#step-1-enable-rewriter)

#### on()

Subscribe to Rewriter events. Supports `'textSelected'` to receive [`TextSelectedEvent`](https://velt.dev/docs/api-reference/sdk/models/data-models#textselectedevent) whenever a user selects text in a Rewriter-enabled region.

* Params: `action: 'textSelected'`
* Returns: `Observable<`[`TextSelectedEvent`](https://velt.dev/docs/api-reference/sdk/models/data-models#textselectedevent)`>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/ai/rewriter/setup.md#step-2-subscribe-to-text-selection-events)

#### askAi()

Send a text-generation prompt to any AI model via Velt's proxy. Model is resolved from the name prefix to the configured provider.

* Params: [`RewriterAskAiRequest`](https://velt.dev/docs/api-reference/sdk/models/data-models#rewriteraskairequest)
* Returns: `Promise<`[`RewriterAskAiResponse`](https://velt.dev/docs/api-reference/sdk/models/data-models#rewriteraskairesponse)`>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/ai/rewriter/setup.md#step-3-send-a-prompt-to-ai)

#### replaceText()

Replace the DOM text identified by a [`TextSelectedEvent`](https://velt.dev/docs/api-reference/sdk/models/data-models#textselectedevent) with new text.

* Params: [`RewriterReplaceTextRequest`](https://velt.dev/docs/api-reference/sdk/models/data-models#rewriterreplacetextrequest)
* Returns: `Promise<`[`RewriterReplaceTextResponse`](https://velt.dev/docs/api-reference/sdk/models/data-models#rewriterreplacetextresponse)`>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/ai/rewriter/setup.md#step-4-take-action-on-the-returned-result)

#### addComment()

Create a comment annotation anchored to the text range from a [`TextSelectedEvent`](https://velt.dev/docs/api-reference/sdk/models/data-models#textselectedevent).

* Params: [`RewriterAddCommentRequest`](https://velt.dev/docs/api-reference/sdk/models/data-models#rewriteraddcommentrequest)
* Returns: `Promise<`[`RewriterAddCommentResponse`](https://velt.dev/docs/api-reference/sdk/models/data-models#rewriteraddcommentresponse)`>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/ai/rewriter/setup.md#step-4-take-action-on-the-returned-result)

#### enableDefaultUI()

Show the built-in Velt rewriter toolbar on text selection. This is the default state.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/ai/rewriter/customize-behavior.md#enabledefaultui--disabledefaultui)

#### disableDefaultUI()

Hide the built-in Velt rewriter toolbar; custom UI only. Rewriter events remain active.

* Params: none
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/ai/rewriter/customize-behavior.md#enabledefaultui--disabledefaultui)

# ReactFlow

#### [useVeltReactFlowCrdtExtension()](https://velt.dev/docs/api-reference/sdk/api/api-methods.md#useveltreactflowcrdtextension)

Provides real-time collaborative ReactFlow editor functionality with Yjs and Velt SDK synchronization.

* Signature: useVeltReactFlowCrdtExtension(config: VeltReactFlowCrdtExtensionConfig)
* Params: [VeltReactFlowCrdtExtensionConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#veltreactflowcrdtextensionconfig)
* Returns: [VeltReactFlowCrdtExtensionResponse](https://velt.dev/docs/api-reference/sdk/models/data-models.md#veltreactflowcrdtextensionresponse)
* React Hook: `useVeltReactFlowCrdtExtension()`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/reactflow.md#useveltreactflowcrdtextension)

#### veltReactFlowStore

Create and initialize a collaborative React Flow Zustand store.

* Params: [VeltReactFlowStoreConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#veltreactflowstoreconfig)
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/reactflow.md#apis)

#### onNodesChange

CRDT-aware handler to apply node changes (add/update/remove) that sync across collaborators.

* Params: [NodeChange\[\]](https://velt.dev/docs/api-reference/sdk/models/data-models#nodechange)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/reactflow.md#apis)

#### onEdgesChange

CRDT-aware handler to apply edge changes (add/update/remove) that sync across collaborators.

* Params: [EdgeChange\[\]](https://velt.dev/docs/api-reference/sdk/models/data-models#edgechange)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/reactflow.md#apis)

#### onConnect

CRDT-aware connect handler compatible with React Flow’s `onConnect` prop.

* Params: [Connection](https://velt.dev/docs/api-reference/sdk/models/data-models.md#connection)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/reactflow.md#apis)

#### setNodes

Imperative setter for nodes (useful for non-event updates). Synced via the store.

* Params: [Node\[\]](https://velt.dev/docs/api-reference/sdk/models/data-models#node-react-flow) | ((prev: [Node\[\]](https://velt.dev/docs/api-reference/sdk/models/data-models#node-react-flow)) => [Node\[\]](https://velt.dev/docs/api-reference/sdk/models/data-models#node-react-flow))
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/reactflow.md#apis)

#### setEdges

Imperative setter for edges (useful for non-event updates). Synced via the store.

* Params: [Edge\[\]](https://velt.dev/docs/api-reference/sdk/models/data-models#edge-react-flow) | ((prev: [Edge\[\]](https://velt.dev/docs/api-reference/sdk/models/data-models#edge-react-flow)) => [Edge\[\]](https://velt.dev/docs/api-reference/sdk/models/data-models#edge-react-flow))
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/reactflow.md#apis)

# Encryption

#### setEncryptionProvider(encryptionProvider)

Register a custom encrypt/decrypt provider used by CRDT features.

* Params: `VeltEncryptionProvider`
* Returns: `void`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#encryption)

# CodeMirror

## v2 API

#### [useCollaboration()](https://velt.dev/docs/api-reference/sdk/api/api-methods.md#codemirror-usecollaboration)

Primary React hook for collaborative CodeMirror editing. Creates a CollaborationManager, initializes the CRDT store, and returns collaboration primitives for CodeMirror integration.

* Signature: `useCollaboration(config: UseCollaborationConfig)`
* Params: [UseCollaborationConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#usecollaborationconfig-codemirror)
* Returns: [UseCollaborationReturn](https://velt.dev/docs/api-reference/sdk/models/data-models.md#usecollaborationreturn-codemirror)
* React Hook: `useCollaboration()`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#react-usecollaboration)

#### [createCollaboration()](https://velt.dev/docs/api-reference/sdk/api/api-methods.md#codemirror-createcollaboration)

Non-React factory function that creates a CollaborationManager for CodeMirror, initializes the CRDT store, and returns a ready-to-use instance.

* Signature: `createCollaboration(config: CollaborationConfig): Promise<CollaborationManager>`
* Params: [CollaborationConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#collaborationconfig-codemirror)
* Returns: `Promise<CollaborationManager>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#non-react-createcollaboration)

## CollaborationManager Methods

The `CollaborationManager` is returned by `useCollaboration` (React) via the `manager` property, or directly by `createCollaboration` (non-React). All methods below work in both contexts.

#### manager.getCollaborationPrimitives()

Returns the Yjs primitives (`ytext`, `awareness`, `undoManager`, `doc`) needed to call `yCollab()`. Non-React only — the React hook returns `primitives` directly.

* Params: `none`
* Returns: `CollaborationPrimitives`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#managergetcollaborationprimitives)

#### manager.onStatusChange()

Subscribe to connection status changes. Non-React only — the React hook returns `status` directly.

* Params: `callback: (status: SyncStatus) => void`
* Returns: `Unsubscribe`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#manageronstatuschange)

#### manager.onSynced()

Subscribe to sync state changes. Non-React only — the React hook returns `isSynced` directly.

* Params: `callback: (synced: boolean) => void`
* Returns: `Unsubscribe`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#manageronsynced)

#### manager.initialized

Whether initialization has completed.

* Returns: `boolean`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#managerinitialized)

#### manager.synced

Whether initial sync with the backend has completed.

* Returns: `boolean`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#managersynced)

#### manager.status

Current connection status.

* Returns: `SyncStatus`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#managerstatus)

#### manager.saveVersion()

Save a named snapshot of the document state. Returns the version ID.

* Params: `name: string`
* Returns: `Promise<string>`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#managersaveversion)

#### manager.getVersions()

List all saved versions.

* Params: `none`
* Returns: `Promise<Version[]>`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#managergetversions)

#### manager.restoreVersion()

Restore to a saved version. Returns `true` on success.

* Params: `versionId: string`
* Returns: `Promise<boolean>`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#managerrestoreversion)

#### manager.setStateFromVersion()

Apply a Version object's state locally to the current document.

* Params: `version: Version`
* Returns: `Promise<void>`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#managersetstatefromversion)

#### manager.getDoc()

Get the underlying Yjs document.

* Params: `none`
* Returns: `Y.Doc`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#managergetdoc)

#### manager.getText() / manager.getYText()

Get the Y.Text bound to the document content. React uses `getText()`, non-React uses `getYText()`.

* Params: `none`
* Returns: `Y.Text | null`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#managergettext--managergetytext)

#### manager.getProvider()

Get the sync provider.

* Params: `none`
* Returns: `SyncProvider`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#managergetprovider)

#### manager.getAwareness()

Get the Yjs Awareness instance.

* Params: `none`
* Returns: `Awareness`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#managergetawareness)

#### manager.getStore()

Get the core CRDT Store.

* Params: `none`
* Returns: `Store<string>`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#managergetstore)

#### manager.getUndoManager()

Get the Y.UndoManager for undo/redo operations.

* Params: `none`
* Returns: `Y.UndoManager | null`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#managergetundomanager)

#### manager.destroy()

Full cleanup. Automatic on editor destroy or component unmount. Safe to call multiple times.

* Params: `none`
* Returns: `void`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#managerdestroy)

## v1 API (deprecated)

> [!WARNING]
>
> The v1 API is deprecated. Use `useCollaboration()` (React) or `createCollaboration()` (non-React) for all new integrations.

#### useVeltCodeMirrorCrdtExtension() (deprecated)

Legacy React hook for collaborative CodeMirror editing. Internally delegates to `useCollaboration` via a compatibility wrapper.

* Signature: `useVeltCodeMirrorCrdtExtension(config: VeltCodeMirrorCrdtExtensionConfig)`
* Params: [VeltCodeMirrorCrdtExtensionConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#veltcodemirrorcrdtextensionconfig-deprecated)
* Returns: [VeltCodeMirrorCrdtExtensionResponse](https://velt.dev/docs/api-reference/sdk/models/data-models.md#veltcodemirrorcrdtextensionresponse-deprecated)
* React Hook: `useVeltCodeMirrorCrdtExtension()`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#react-useveltcodemirrorcrdtextension-deprecated)

#### createVeltCodeMirrorCrdtExtension() (deprecated)

Legacy non-React function for collaborative CodeMirror editing using a callback-based pattern.

* Signature: `createVeltCodeMirrorCrdtExtension(config: VeltCodeMirrorStoreConfig, onReady: callback): () => void`
* Params: [VeltCodeMirrorStoreConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#veltcodemirrorstoreconfig-deprecated)
* Returns: `() => void` (cleanup function)
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#non-react-createveltcodemirrorcrdtextension-deprecated)

#### createVeltCodeMirrorStore() (deprecated)

Legacy factory to create and initialize a collaborative CodeMirror store instance.

* Params: `config: VeltCodeMirrorStoreConfig`
* Returns: `Promise<VeltCodeMirrorStore | null>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#legacy-api-v1)

#### store.getStore() (deprecated)

Get the underlying Store that manages state and synchronization.

* Params: `none`
* Returns: `Store<string>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#legacy-api-v1)

#### store.getYDoc() (deprecated)

Access the Yjs document used for collaborative editing.

* Params: `none`
* Returns: `Y.Doc`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#legacy-api-v1)

#### store.getYText() (deprecated)

Get the shared Y.Text bound to the current CodeMirror document.

* Params: `none`
* Returns: `Y.Text | null`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#legacy-api-v1)

#### store.getAwareness() (deprecated)

Access the Yjs Awareness instance associated with the store.

* Params: `none`
* Returns: `Awareness`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#legacy-api-v1)

#### store.getUndoManager() (deprecated)

Access the Yjs UndoManager for collaborative undo/redo.

* Params: `none`
* Returns: `Y.UndoManager`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#legacy-api-v1)

#### store.destroy() (deprecated)

Clean up listeners and release resources.

* Params: `none`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/codemirror.md#legacy-api-v1)

# BlockNote

## v2 API

#### useCollaboration()

Primary React hook for collaborative BlockNote editing. Creates a CollaborationManager, initializes the CRDT store, and returns a BlockNoteCollaborationConfig with cursor support.

* Signature: `useCollaboration(config: UseCollaborationConfig)`
* Params: [UseCollaborationConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#usecollaborationconfig-blocknote)
* Returns: [UseCollaborationReturn](https://velt.dev/docs/api-reference/sdk/models/data-models.md#usecollaborationreturn-blocknote)
* React Hook: `useCollaboration()`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#react-usecollaboration)

#### manager.getCollaborationConfig()

Get the BlockNote collaboration config.

* Params: `none`
* Returns: `BlockNoteCollaborationConfig | null`
* React Hook: `n/a` (accessed via `manager` from `useCollaboration`)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#managergetcollaborationconfig)

#### manager.saveVersion()

Save a named snapshot of the document state.

* Params: `name: string`
* Returns: `Promise<string>` (version ID, or empty string on failure)
* React Hook: `n/a` (also available as first-class `saveVersion` from `useCollaboration`)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#managersaveversion)

#### manager.getVersions()

List all saved versions for this document.

* Params: `none`
* Returns: `Promise<Version[]>` (empty array on failure)
* React Hook: `n/a` (also available as first-class `getVersions` from `useCollaboration`)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#managergetversions)

#### manager.restoreVersion()

Restore the document to a previously saved version. The restored state is pushed to all connected clients.

* Params: `versionId: string`
* Returns: `Promise<boolean>` (`true` on success, `false` on failure)
* React Hook: `n/a` (also available as first-class `restoreVersion` from `useCollaboration`)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#managerrestoreversion)

#### manager.setStateFromVersion()

Apply a Version object's state locally to the current document.

* Params: `version: Version`
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#managersetstatefromversion)

#### manager.getDoc()

Get the underlying Yjs document.

* Params: `none`
* Returns: `Y.Doc | null`
* React Hook: `n/a` (accessed via `manager` from `useCollaboration`)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#managergetdoc)

#### manager.getXmlFragment()

Get the XmlFragment bound to BlockNote's document-store key.

* Params: `none`
* Returns: `Y.XmlFragment | null`
* React Hook: `n/a` (accessed via `manager` from `useCollaboration`)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#managergetxmlfragment)

#### manager.getProvider()

Get the sync provider.

* Params: `none`
* Returns: `SyncProvider | null`
* React Hook: `n/a` (accessed via `manager` from `useCollaboration`)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#managergetprovider)

#### manager.getAwareness()

Get the Yjs Awareness instance.

* Params: `none`
* Returns: `Awareness | null`
* React Hook: `n/a` (accessed via `manager` from `useCollaboration`)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#managergetawareness)

#### manager.getStore()

Get the core CRDT Store.

* Params: `none`
* Returns: `Store<string> | null`
* React Hook: `n/a` (accessed via `manager` from `useCollaboration`)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#managergetstore)

#### manager.destroy()

Full cleanup of the CollaborationManager (automatic on unmount).

* Params: `none`
* Returns: `void`
* React Hook: `n/a` (accessed via `manager` from `useCollaboration`)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#managerdestroy)

## Non-React v2 API

#### createCollaboration()

Factory function that creates a CollaborationManager for BlockNote, initializes the CRDT store, and returns a ready-to-use instance.

* Signature: `createCollaboration(config: CollaborationConfig): Promise<CollaborationManager>`
* Params: [CollaborationConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#collaborationconfig-blocknote)
* Returns: `Promise<CollaborationManager>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#non-react-createcollaboration)

#### manager.getCollaborationConfig()

Returns the BlockNote collaboration config. Pass to `BlockNoteEditor.create({ collaboration: ... })`.

* Params: `options?: { showCursorLabels?: 'activity' | 'always' }`
* Returns: `BlockNoteCollaborationConfig | null`
* React Hook: `n/a` (React hook returns `collaborationConfig` directly)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#managergetcollaborationconfig)

#### manager.onStatusChange()

Subscribe to connection status changes.

* Params: `callback: (status: SyncStatus) => void`
* Returns: `Unsubscribe`
* React Hook: `n/a` (React hook returns `status` directly)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#manageronstatuschange)

#### manager.onSynced()

Subscribe to sync state changes.

* Params: `callback: (synced: boolean) => void`
* Returns: `Unsubscribe`
* React Hook: `n/a` (React hook returns `isSynced` directly)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#manageronsynced)

#### manager.initialized

Whether initialization has completed.

* Returns: `boolean`
* React Hook: `n/a` (React hook returns `isLoading`)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#managerinitialized)

#### manager.synced

Whether initial sync with the backend has completed.

* Returns: `boolean`
* React Hook: `n/a` (React hook returns `isSynced`)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#managersynced)

#### manager.status

Current connection status.

* Returns: `SyncStatus`
* React Hook: `n/a` (React hook returns `status`)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#managerstatus)

## v1 API (deprecated)

> [!WARNING]
>
> The v1 BlockNote API is deprecated. Use `useCollaboration()` (React) or `createCollaboration()` (non-React) for all new integrations.

#### useVeltBlockNoteCrdtExtension() (deprecated)

Legacy React hook for collaborative BlockNote editing. Internally delegates to `useCollaboration` via a compatibility wrapper.

* Signature: `useVeltBlockNoteCrdtExtension(config: VeltBlockNoteCrdtExtensionConfig)`
* Params: [VeltBlockNoteCrdtExtensionConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#veltblocknotecrdtextensionconfig-deprecated)
* Returns: [VeltBlockNoteCrdtExtensionResponse](https://velt.dev/docs/api-reference/sdk/models/data-models.md#veltblocknotecrdtextensionresponse-deprecated)
* React Hook: `useVeltBlockNoteCrdtExtension()`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/blocknote.md#react-useveltblocknotecrdtextension-deprecated)

#### createVeltBlockNoteStore() (deprecated)

Create and initialize a legacy collaborative BlockNote store instance.

* Params: `VeltBlockNoteStoreConfig`
* Returns: `VeltBlockNoteStore | null`
* React Hook: `n/a`

#### store.getStore() (deprecated)

Access the underlying CRDT store.

* Params: `none`
* Returns: `Store`
* React Hook: `n/a`

#### store.getYDoc() (deprecated)

Accessor for the underlying Yjs document.

* Params: `none`
* Returns: `Y.Doc`
* React Hook: `n/a`

#### store.getYXml() (deprecated)

Get the Y.XmlFragment representing the BlockNote document tree.

* Params: `none`
* Returns: `Y.XmlFragment | null`
* React Hook: `n/a`

#### store.destroy() (deprecated)

Tear down the store and clean listeners/resources.

* Params: `none`
* Returns: `void`
* React Hook: `n/a`

# Tiptap

## React v2 API

#### [useCollaboration()](https://velt.dev/docs/api-reference/sdk/api/api-methods.md#usecollaboration)

Primary React hook for collaborative TipTap editing. Creates a CollaborationManager, initializes the CRDT store, and returns a TipTap Extension with cursor support.

* Signature: `useCollaboration(config: UseCollaborationConfig)`
* Params: [UseCollaborationConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#usecollaborationconfig)
* Returns: [UseCollaborationReturn](https://velt.dev/docs/api-reference/sdk/models/data-models.md#usecollaborationreturn)
* React Hook: `useCollaboration()`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#react-usecollaboration)

## Non-React v2 API

#### [createCollaboration()](https://velt.dev/docs/api-reference/sdk/api/api-methods.md#createcollaboration)

Factory function that creates a CollaborationManager, initializes the CRDT store, and returns a ready-to-use instance.

* Signature: `createCollaboration(config: CollaborationConfig): Promise<CollaborationManager>`
* Params: [CollaborationConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#collaborationconfig)
* Returns: `Promise<CollaborationManager>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#non-react-createcollaboration)

#### manager.createExtension()

Returns a single TipTap Extension that bundles Yjs document binding and remote cursor rendering. Non-React only — the React hook returns the extension directly.

* Params: `none`
* Returns: `Extension`
* React Hook: `n/a` (React hook returns extension directly)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#managercreateextension)

## CollaborationManager Methods

Shared methods available on the `CollaborationManager` instance. In React, access via `manager` from the `useCollaboration` hook. In non-React, the manager is returned by `createCollaboration()`.

#### manager.onStatusChange()

Subscribe to connection status changes.

* Params: `callback: (status: SyncStatus) => void`
* Returns: `Unsubscribe`
* React Hook: `n/a` (React hook returns `status` directly)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#manageronstatuschange)

#### manager.onSynced()

Subscribe to sync state changes.

* Params: `callback: (synced: boolean) => void`
* Returns: `Unsubscribe`
* React Hook: `n/a` (React hook returns `isSynced` directly)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#manageronsynced)

#### manager.initialized

Whether initialization has completed.

* Returns: `boolean`
* React Hook: `n/a` (React hook returns `isLoading`)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#managerinitialized)

#### manager.synced

Whether initial sync with the backend has completed.

* Returns: `boolean`
* React Hook: `n/a` (React hook returns `isSynced`)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#managersynced)

#### manager.status

Current connection status.

* Returns: `SyncStatus`
* React Hook: `n/a` (React hook returns `status`)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#managerstatus)

#### manager.saveVersion()

Save a named snapshot of the document state. Returns the version ID.

* Params: `name: string`
* Returns: `Promise<string>`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#managersaveversion)

#### manager.getVersions()

List all saved versions.

* Params: `none`
* Returns: `Promise<Version[]>`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#managergetversions)

#### manager.restoreVersion()

Restore to a saved version. Returns `true` on success.

* Params: `versionId: string`
* Returns: `Promise<boolean>`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#managerrestoreversion)

#### manager.setStateFromVersion()

Apply a Version object's state locally to the current document.

* Params: `version: Version`
* Returns: `Promise<void>`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#managersetstatefromversion)

#### manager.getDoc()

Get the underlying Yjs document.

* Params: `none`
* Returns: `Y.Doc`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#managergetdoc)

#### manager.getXmlFragment()

Get the XmlFragment bound to TipTap content.

* Params: `none`
* Returns: `Y.XmlFragment | null`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#managergetxmlfragment)

#### manager.getProvider()

Get the sync provider.

* Params: `none`
* Returns: `SyncProvider`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#managergetprovider)

#### manager.getAwareness()

Get the Yjs Awareness instance.

* Params: `none`
* Returns: `Awareness`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#managergetawareness)

#### manager.getStore()

Get the core CRDT Store from the CollaborationManager.

* Params: `none`
* Returns: `Store<string>`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#managergetstore)

#### manager.destroy()

Full cleanup of the CollaborationManager (automatic on unmount).

* Params: `none`
* Returns: `void`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#managerdestroy)

## v1 API (deprecated)

> [!WARNING]
>
> The v1 API is deprecated. Use `useCollaboration()` (React) or `createCollaboration()` (non-React) for all new integrations.

#### useVeltTiptapCrdtExtension() (deprecated)

Legacy React hook for collaborative Tiptap editing. Internally delegates to `useCollaboration` via a compatibility wrapper.

* Signature: `useVeltTiptapCrdtExtension(config: VeltTiptapCrdtExtensionConfig)`
* Params: [VeltTiptapCrdtExtensionConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#velttiptapcrdtextensionconfig-deprecated)
* Returns: [VeltTiptapCrdtExtensionResponse](https://velt.dev/docs/api-reference/sdk/models/data-models.md#velttiptapcrdtextensionresponse-react-deprecated)
* React Hook: `useVeltTiptapCrdtExtension()`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#react-usevelttiptapcrdtextension-deprecated)

#### createVeltTiptapCrdtExtension() (deprecated)

Legacy non-React function for collaborative Tiptap editing using a callback-based pattern.

* Signature: `createVeltTiptapCrdtExtension(config: VeltTipTapStoreConfig, onReady: callback): () => void`
* Params: [VeltTipTapStoreConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#velttiptapstoreconfig-deprecated)
* Returns: `() => void` (cleanup function)
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#non-react-createvelttiptapcrdtextension-deprecated)

#### createVeltTipTapStore() (deprecated)

Legacy factory to create and initialize a collaborative Tiptap store instance.

* Params: `config: VeltTipTapStoreConfig`
* Returns: `Promise<VeltTipTapStore | null>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#legacy-api-v1)

#### store.getCollabExtension() (deprecated)

Get the Tiptap collaboration extension bound to the current Yjs document.

* Params: `none`
* Returns: `Extension`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#velttiptapstore-methods-deprecated)

#### store.getStore() (deprecated)

Access the underlying CRDT store managing document state.

* Params: `none`
* Returns: `Store<string>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#velttiptapstore-methods-deprecated)

#### store.destroy() (deprecated)

Tear down the store and clean up listeners/resources.

* Params: `none`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#velttiptapstore-methods-deprecated)

#### store.getYDoc() (deprecated)

Accessor for the underlying Yjs document.

* Params: `none`
* Returns: `Y.Doc`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#velttiptapstore-methods-deprecated)

#### store.getYXml() (deprecated)

Accessor for the XML fragment in the Yjs document.

* Params: `none`
* Returns: `Y.XmlFragment | null`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#velttiptapstore-methods-deprecated)

#### store.setStateFromVersion() (deprecated)

Restores the document to a specific version state.

* Params: `version: Version`
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/tiptap.md#velttiptapstore-methods-deprecated)

# Core

### Client

#### initConfig()

Set up initial configurations for the Velt SDK.

* Params: `apiKey: string, config?:` [`VeltProviderConfig`](https://velt.dev/docs/api-reference/sdk/models/data-models#veltproviderconfig)
* Returns: `void`
* React Hook: `n/a`

#### getVeltInitState()

Subscribe to detect whether Velt is initialized.

* Params: `void`
* Returns: `Observable<boolean>`
* React Hook: `useVeltInitState()`

#### get Velt Client

Access the core Velt client instance to call SDK APIs and subscribe to core events.

* Signature:
  * React: `const { client } = useVeltClient()`
  * Other frameworks: `const client = await initVelt(apiKey)`
  * HTML: `await Velt.init(apiKey)` then use `Velt`
* Params: `none` [Here](https://velt.dev/docs/get-started/advanced.md#client-event-subscriptions) is the list of events you can subscribe to.
* Returns: `Velt` [Here](https://velt.dev/docs/api-reference/sdk/models/data-models.md#client-events) is the list of events object types you can expect to receive.
* React Hook: `useVeltClient()`
* See event payloads: [Core data model](https://velt.dev/docs/api-reference/sdk/models/data-models.md#core-events)
* Overview: [Client Event Subscriptions](https://velt.dev/docs/get-started/advanced.md#client-event-subscriptions)

#### getMetadata()

Get the currently set organization, document and location objects.

* Params: none
* Returns: `Promise<VeltEventMetadata>`
* React Hook: `n/a`

#### getUserPermissions()

Get the current user's access roles across organization, folder, and document scopes.

* Params: [GetUserPermissionsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#getuserpermissionsrequest)
* Returns: [`Promise<GetUserPermissionsResponse>`](https://velt.dev/docs/api-reference/sdk/models/data-models#getuserpermissionsresponse)
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/key-concepts/overview.md#access-control)

**Error handling:** On failure, the response includes an `errorCode` from the [UserPermissionAccessRoleResult](https://velt.dev/docs/api-reference/sdk/models/data-models.md#userpermissionaccessroleresult) enum:

* `does_not_exist`: Resource not found
* `permission_denied`: User lacks access to the resource
* `something_went_wrong`: Unexpected error

#### getCurrentUserPermissions()

Subscribe to current user permissions updates. Returns real-time permission changes for the authenticated user across organization, folder, and document scopes. Useful for debugging and developer tools integration.

* Params: `void`
* Returns: [`Observable<GetUserPermissionsResponse>`](https://velt.dev/docs/api-reference/sdk/models/data-models#getuserpermissionsresponse)
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/key-concepts/overview.md#getcurrentuserpermissions)

#### getHeartbeat()

Subscribe to user-specific heartbeat data. Retrieve heartbeat data for the current user or specify a userId to monitor heartbeats for any user.

* Params: [`HeartbeatConfig`](https://velt.dev/docs/api-reference/sdk/models/data-models#heartbeatconfig) (optional)
* Returns: [`Observable<GetHeartbeatResponse>`](https://velt.dev/docs/api-reference/sdk/models/data-models#getheartbeatresponse)
* React Hook: `useHeartbeat()`

#### enableFirestorePersistentCache()

Enable Firestore offline persistence and multi-tab synchronization. Call before `identify()` to activate offline reads.

* Params: `config?: { ha?: boolean }`
* Returns: `void`
* React Hook: `n/a`

#### disableFirestorePersistentCache()

Disable Firestore offline persistence and revert to the default non-persistent mode.

* Params: `config?: { ha?: boolean }`
* Returns: `void`
* React Hook: `n/a`

### Authentication

#### identify()

Authenticate the client's user with the Velt SDK. When called with organization change, previous document is set unless `setDocuments()` is explicitly called.

* Params: `user: User, userOptions?:` [`Options`](https://velt.dev/docs/api-reference/sdk/models/data-models#options-2)
* Returns: `Promise<unknown>`
* React Hook: `useIdentify()`

#### setPermissionProvider()

Configure Permission Provider for real-time access validation. Supports a client-side dev resolver for local testing via the `dev`, `endpointConfig`, `resolvePermissions`, and `resolveTimeout` fields on [`VeltPermissionProvider`](https://velt.dev/docs/api-reference/sdk/models/data-models#veltpermissionprovider).

* Params: [`VeltPermissionProvider`](https://velt.dev/docs/api-reference/sdk/models/data-models#veltpermissionprovider)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/key-concepts/overview.md#c-real-time-permission-provider)

#### signOutUser()

To sign out a user.

* Params: `void`
* Returns: `any`
* React Hook: `n/a`

#### getUser()

Get the current authenticated user in Velt.

* Params: `void`
* Returns: `User`
* React Hook: `n/a`

#### getCurrentUser()

Subscribe to changes in the current user object.

* Params: `void`
* Returns: `Observable<User | null>`
* React Hook: `useCurrentUser()`
* [Full Documentation →](https://velt.dev/docs/key-concepts/overview.md#get-current-user)

### Collaboration

#### v2 React API

#### [useStore()](https://velt.dev/docs/api-reference/sdk/api/api-methods.md#usestore)

React hook that creates and manages a CRDT store with reactive value, status, and version management.

* Params: [UseStoreConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#usestoreconfig)
* Returns: [UseStoreReturn](https://velt.dev/docs/api-reference/sdk/models/data-models.md#usestorereturn)
* React Hook: `useStore()`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#react-usestore)

#### [useAwareness()](https://velt.dev/docs/api-reference/sdk/api/api-methods.md#useawareness)

React hook for reactive Yjs Awareness state (remote peers and local state).

* Params: `store: Store<any> | null`
* Returns: [UseAwarenessReturn](https://velt.dev/docs/api-reference/sdk/models/data-models.md#useawarenessreturn)
* React Hook: `useAwareness()`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#react-useawareness)

#### Non-React API

#### createVeltStore()

Create and initialize a collaborative CRDT store instance.

* Params: `StoreConfig<T>`
* Returns: `Promise<Store<T> | null>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#non-react-createveltstore)

#### Store Methods

#### update()

Update the store value.

* Params: `newValue: T`
* Returns: `void`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#update)

#### getValue()

Get the current store value.

* Params: `none`
* Returns: `T`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#getvalue)

#### subscribe()

Subscribe to store updates.

* Params: `(newValue: T) => void`
* Returns: `() => void` (unsubscribe)
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#subscribe)

#### getDoc()

Get the underlying Yjs document.

* Params: `none`
* Returns: `Y.Doc`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#getdoc)

#### getProvider()

Get the provider instance for the store.

* Params: `none`
* Returns: `Provider`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#getprovider)

#### getText()

Get the Y.Text instance if store type is 'text'.

* Params: `none`
* Returns: `Y.Text | null`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#gettext)

#### getXml()

Get the Y.XmlFragment instance if store type is 'xml'.

* Params: `none`
* Returns: `Y.XmlFragment | null`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#getxml)

#### getAwareness()

Get the Awareness instance for cursor/presence tracking.

* Params: `none`
* Returns: `Awareness`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#getawareness)

#### destroy()

Destroy the store, cleaning up resources and listeners.

* Params: `none`
* Returns: `void`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#destroy)

#### Version Methods

#### saveVersion()

Save the current state as a named version.

* Params: `versionName: string`
* Returns: `Promise<string>`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#saveversion)

#### getVersions()

Retrieve all saved versions.

* Params: `getVersionsQuery: CrdtGetVersionsQuery` — `{ id: string }`, the CRDT document id.
* Returns: `Promise<Version[]>`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#getversions)

#### getVersionById()

Fetch a specific version by ID.

* Params: `versionId: string`
* Returns: `Promise<Version | null>`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#getversionbyid)

#### restoreVersion()

Restore the store to a specific version by ID.

* Params: `versionId: string`
* Returns: `Promise<boolean>`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#restoreversion)

#### setStateFromVersion()

Restore the state from a given version.

* Params: `version: Version`
* Returns: `Promise<void>`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#setstatefromversion)

#### v1 React API (deprecated)

> [!WARNING]
>
> The v1 `useVeltCrdtStore` hook is deprecated. Use `useStore()` for all new React integrations.

#### useVeltCrdtStore() (deprecated)

Legacy React Hook to create and sync a CRDT store. Internally delegates to `useStore` via a compatibility wrapper.

* Params: `VeltCrdtStoreConfig<T>`
* Returns: `Store<T>`
* React Hook: `useVeltCrdtStore()`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#legacy-api-v1)

#### enableWebhook()

Enable webhook notifications for CRDT data changes.

* Params: `none`
* Returns: `void`
* React Hook: `crdtUtils.enableWebhook()`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#configure-webhooks)

#### disableWebhook()

Disable webhook notifications for CRDT data changes.

* Params: `none`
* Returns: `void`
* React Hook: `crdtUtils.disableWebhook()`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#configure-webhooks)

#### setWebhookDebounceTime()

Configure webhook debounce interval (minimum 5000ms).

* Params: `debounceTime: number`
* Returns: `void`
* React Hook: `crdtUtils.setWebhookDebounceTime()`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#configure-webhooks)

#### setActivityDebounceTime()

Set how long CRDT editor keystrokes are batched before a single activity log record is flushed. Default: 10 minutes. Minimum: 10 seconds (10,000 ms).

* Params: `time: number` (milliseconds)
* Returns: `void`
* React Hook: `crdtUtils.setActivityDebounceTime()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/activity/overview.md#automatic-activity-logging)

#### getCrdtElement()

Get the CRDT element instance from the client.

* Params: `none`
* Returns: `CrdtElement`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#message-stream)

### Message Stream

#### pushMessage()

Push a raw Yjs message into the unified message stream for a document.

* Params: [`CrdtPushMessageQuery`](https://velt.dev/docs/api-reference/sdk/models/data-models#crdtpushmessagequery)
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#message-stream)

#### onMessage()

Subscribe to incoming messages on the unified message stream. Returns an unsubscribe function.

* Params: [`CrdtOnMessageQuery`](https://velt.dev/docs/api-reference/sdk/models/data-models#crdtonmessagequery)
* Returns: `() => void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#message-stream)

#### getMessages()

Retrieve historical messages from the unified message stream.

* Params: [`CrdtGetMessagesQuery`](https://velt.dev/docs/api-reference/sdk/models/data-models#crdtgetmessagesquery)
* Returns: [`Promise<CrdtMessageData[]>`](https://velt.dev/docs/api-reference/sdk/models/data-models#crdtmessagedata)
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#message-stream)

#### getSnapshot()

Retrieve the latest CRDT state snapshot for a document.

* Params: [`CrdtGetSnapshotQuery`](https://velt.dev/docs/api-reference/sdk/models/data-models#crdtgetsnapshotquery)
* Returns: [`Promise<CrdtSnapshotData | null>`](https://velt.dev/docs/api-reference/sdk/models/data-models#crdtsnapshotdata)
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#message-stream)

#### saveSnapshot()

Persist a CRDT state snapshot for a document.

* Params: [`CrdtSaveSnapshotQuery`](https://velt.dev/docs/api-reference/sdk/models/data-models#crdtsavesnapshotquery)
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#message-stream)

#### pruneMessages()

Delete historical messages older than a given timestamp from the message stream.

* Params: [`CrdtPruneMessagesQuery`](https://velt.dev/docs/api-reference/sdk/models/data-models#crdtprunemessagesquery)
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#message-stream)

#### useCrdtUtils()

React Hook to access CRDT utility methods.

* Params: `none`
* Returns: `CrdtUtils`
* React Hook: `Yes`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#configure-webhooks)

#### useCrdtEventCallback()

React Hook to subscribe to CRDT events.

* Params: `eventName: 'updateData'`
* Returns: [`CrdtUpdateDataEvent`](https://velt.dev/docs/api-reference/sdk/models/data-models#crdtupdatedataevent) `| null`
* React Hook: `Yes`
* [Full Documentation →](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#configure-webhooks)

### Debug Info

#### fetchDebugInfo()

Retrieve debug information about the current Velt SDK state as a one-time fetch. Returns a Promise that resolves with comprehensive debug data including SDK version, API key, and server/client state metadata.

* Params: `none`
* Returns: [`Promise<VeltDebugInfo>`](https://velt.dev/docs/api-reference/sdk/models/data-models#veltdebuginfo)
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/get-started/advanced.md#debug-info)

#### getDebugInfo()

Subscribe to debug information updates about the current Velt SDK state. Returns an Observable that emits debug data whenever the SDK state changes.

* Params: `none`
* Returns: [`Observable<VeltDebugInfo>`](https://velt.dev/docs/api-reference/sdk/models/data-models#veltdebuginfo)
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/get-started/advanced.md#debug-info)

### Folders

#### fetchFolders()

Fetch folder metadata and subfolders by organizationId, folderId with pagination.

* Params: `fetchFoldersRequest: FetchFoldersRequest`
* Returns: `Observable<FetchFoldersResponse>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/api-reference/sdk/api/api-methods.md#client)

### Documents

#### setDocuments()

Initialize and subscribe to multiple Documents at once.

* Params:
  * `documents`: [Document\[\]](https://velt.dev/docs/api-reference/sdk/models/data-models#document)
  * `options?`: [SetDocumentsRequestOptions](https://velt.dev/docs/api-reference/sdk/models/data-models.md#setdocumentsrequestoptions)
* Returns: `Promise<void>`
* React Hook: `useSetDocuments()`
* [Full Documentation →](https://velt.dev/docs/key-concepts/overview.md#set-multiple-documents)

> [!NOTE]
>
> **Behavior Update:** This method now filters out documents the user doesn't have access to instead of failing the entire operation. When using the `allDocuments` flag with a folder, only the first 50 documents are retrieved, and any inaccessible documents are automatically filtered out.

> [!NOTE]
>
> **Behavior Update:** Calling this method again with the same documents and options is ignored. Repeated calls on every render no longer re-initialize documents or refetch comments. Passing a different set of documents re-runs, including when you narrow the set. An identical repeat does no work, so it does not refresh permissions.

#### setDocument()

Initialize and subscribe to a single Document.

* Params:
  * `documentId`: string
  * `metadata?`: [DocumentMetadata](https://velt.dev/docs/api-reference/sdk/models/data-models.md#documentmetadata)
* Returns: `Promise<void>`
* React Hook: `useSetDocument()`
* [Full Documentation →](https://velt.dev/docs/key-concepts/overview.md#set-a-single-document)

#### setRootDocument()

Set a different document as the root document when multiple documents are active.

* Params: `document:` [Document](https://velt.dev/docs/api-reference/sdk/models/data-models.md#document)
* Returns: `Promise<void>`
* React Hook: `n/a`

#### unsetDocuments()

Use this to unsubscribe from all documents at once.

* Params: `void`
* Returns: `void`
* React Hook: `useUnsetDocuments()`
* [Full Documentation →](https://velt.dev/docs/key-concepts/overview.md#unset-multiple-documents)

#### fetchDocuments()

Fetch document metadata by `organizationId`, `folderId`, or specific `documentIds`. Supports pagination.

* Params: [FetchDocumentsRequest](https://velt.dev/docs/api-reference/sdk/models/data-models.md#fetchdocumentsrequest)
* Returns: [`Promise<FetchDocumentsResponse>`](https://velt.dev/docs/api-reference/sdk/models/data-models#fetchdocumentsresponse)
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/key-concepts/overview.md#fetch-documents)

#### updateDocuments()

Update document metadata by organizationId, folderId or documentIds.

* Params: `UpdateDocumentsRequest<T = unknown>`
* Returns: `Promise<void>`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/key-concepts/overview.md#update-document-metadata)

### Page Info

#### setPageInfo()

Set custom page info (URL, title, path, etc.) used for all newly created data — comments, reactions, recordings, presence, cursors. Existing saved data is not affected.

* Params:
  * `pageInfo`: [PageInfo](https://velt.dev/docs/api-reference/sdk/models/data-models.md#pageinfo)
  * `options?`: Object:
    * `documentId?`: string — reserved for a future per-document scope; only global page info ships in this release
* Returns: `void`
* React Hook: `useSetPageInfo()`
* [Full Documentation →](https://velt.dev/docs/get-started/advanced.md#set-custom-page-info)

#### clearPageInfo()

Clear custom page info and revert to the SDK's automatic browser-derived page info for newly created data.

* Params:
  * `options?`: Object:
    * `documentId?`: string — reserved for a future per-document scope; only global page info ships in this release
* Returns: `void`
* React Hook: `useClearPageInfo()`
* [Full Documentation →](https://velt.dev/docs/get-started/advanced.md#clear-custom-page-info)

### Location

#### setLocation()

Set the current location context. Used to define specific areas within a document.

* Params: `location: Location, isAdditional?: boolean`
  * `location`: Location object with:
    * `id?`: Unique string or numeric identifier. Optional when `locationName` is provided.
    * `locationName?`: Non-empty display name that identifies the location when `id` is omitted.
    * `version?`: Optional version object with:
      * `id`: Version identifier
      * `name`: Version display name
    * Additional custom key/value pairs
  * `isAdditional?`: Boolean to add additional locations
    * `false` (default): Set this as the root location
    * `true`: Add as additional location
* Returns: `Promise<void>`
* React Hook: `useSetLocation()`
* [Full Documentation →](https://velt.dev/docs/key-concepts/overview.md#set-location)

#### setLocations()

Initialize multiple locations at once. By default, this replaces the existing additional locations. Pass `appendLocation: true` to append instead.

* Params:
  * `locations`: [Location\[\]](https://velt.dev/docs/api-reference/sdk/models/data-models#location)
  * `options?`: [SetLocationsRequestOptions](https://velt.dev/docs/api-reference/sdk/models/data-models.md#setlocationsrequestoptions)
* Returns: `Promise<void>`
* React Hook: `n/a`

#### setRootLocation()

Set a different location as the root location when multiple locations are active.

* Params: `location:` [Location](https://velt.dev/docs/api-reference/sdk/models/data-models.md#location)
* Returns: `Promise<void>`
* React Hook: `n/a`

#### removeLocations()

Remove multiple locations. A location matches by its `id`, even if you set it with more fields.

* Params: `...locations:` [Location\[\]](https://velt.dev/docs/api-reference/sdk/models/data-models#location)
* Returns: `void`
* React Hook: `n/a`
* Note: Calling with no arguments now clears the current location.

#### unsetLocationsIds()

Unset locations by ids or all of them if you don't specify any parameters.

* Params: `ids?: string[]`
  * If no ids provided, removes all locations
  * If ids provided, removes that specific location
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/key-concepts/overview.md#unset-locations)

### Event Subscription

#### on()

Subscribe to Velt core events

* Params: `eventType: string`. [Here](https://velt.dev/docs/api-reference/sdk/models/data-models.md#client) is the list of events you can subscribe to.
* Returns: `Observable<VeltEventTypesMap[T]>`. It will return one of the objects from [here](https://velt.dev/docs/api-reference/sdk/models/data-models.md#client)
* React Hook: `useVeltEventCallback()`

### Self Hosting

#### setDataProviders()

Set the data providers for self hosting data.

* Params: [`VeltDataProvider`](https://velt.dev/docs/api-reference/sdk/models/data-models#veltdataprovider)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/self-hosting/partial/overview.md)

#### setAnonymousUserDataProvider()

Register a provider to resolve email → userId mappings for anonymous users tagged by email in comments.

* Params: [`resolver: AnonymousUserDataProvider`](https://velt.dev/docs/api-reference/sdk/models/data-models#anonymoususerdataprovider), `config?: { ha?: boolean }`
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/comments/customize-behavior.md#setanonymoususerdataprovider)

### UI

#### setUiState()

Set custom state data that can be used in Velt wireframes, Velt if and Velt data components.

* Params: `Record<string, any>`
  * Object containing key-value pairs of custom state data
* Returns: `void`
* React Hook: `n/a`

#### getUiState()

Get the custom UI state data.

* Params: `void`
* Returns: `Observable<Record<string, any>>`
  * Observable that emits the current UI state object
* React Hook: `n/a`

#### injectCustomCss()

To inject custom CSS within Components with Shadow DOM enabled.

* Params: `customCss: CustomCss`
* Returns: `void`
* React Hook: `n/a`

#### setUnstyledMode()

Toggle Velt's built-in visual styling for headless use. Reversible at any time; applies to styles in the page head and shadow roots, including styles injected later.

* Params:
  * `value: boolean` — `true` removes Velt's visual styling; `false` restores it.
  * `config?: { keepFunctionalStyles?: boolean }` — keep layout/positioning styles; defaults to `true`. Set `false` to strip to browser defaults.
* Returns: `void`
* React Hook: `n/a`

#### removeVeltContent()

To remove Velt specific content from provided html content. This is useful when using Velt on a text editor or editable element.

* Params: `htmlContent: string`
* Returns: `string`
* React Hook: `n/a`

#### resetVeltButtonState()

Reset the state of Velt Button components.

* Params: (optional) [VeltResetButtonStateConfig](https://velt.dev/docs/api-reference/sdk/models/data-models.md#veltresetbuttonstateconfig)
* Returns: `void`
* React Hook: `n/a`
* [Full Documentation →](https://velt.dev/docs/ui-customization/wireframes/action-components.md#reset-velt-button-state)

### Feature Utilities

In the modular SDK every `getXElement()` accessor returns a non-blocking lazy facade that kicks off the feature chunk load and returns immediately, preserving the synchronous, never-null contract. Calls made before the chunk finishes are bridged: `void` methods are queued and flushed once the chunk loads; promise-returning methods await the chunk load then delegate with the original args; `on(...)`/observable methods return a `ReplaySubject(1)`-backed proxy stream that bridges once the chunk lands, so subscribing early still delivers events. Each accessor also auto-enables its feature (`ensureFeatureEnabled`). Return types and method surfaces are unchanged, so existing code compiles and runs as-is.

#### getPresenceElement()

Get the Presence Element Object to access the raw presence data.

* Params: `void`
* Returns: `PresenceElement`
* React Hook: `n/a`

#### getCursorElement()

Get the Cursor Element Object to access the raw cursor data.

* Params: `void`
* Returns: `CursorElement`
* React Hook: `n/a`

#### getCommentElement()

Get the Comment Element Object to access the raw comment data.

* Params: `void`
* Returns: `CommentElement`
* React Hook: `useCommentUtils()`

#### getSelectionElement()

Get the Selection Object to enable/disable the feature.

* Params: `void`
* Returns: `SelectionElement`
* React Hook: `n/a`

#### getRecorderElement()

Get the Recorder Object.

* Params: `void`
* Returns: [`RecorderElement`](https://velt.dev/docs/api-reference/sdk/models/data-models#recorderelement)
* React Hook: `n/a`

#### getContactElement()

Get the Contact Object.

* Params: `void`
* Returns: `ContactElement`
* React Hook: `n/a`

#### getRewriterElement()

Get the Rewriter Object.

* Params: `void`
* Returns: `RewriterElement`
* React Hook: `n/a`

#### getLiveStateSyncElement()

Get the LiveStateSync Object.

* Params: `void`
* Returns: `LiveStateSyncElement`
* React Hook: `n/a`

#### getArrowElement()

Get the Arrow Object.

* Params: `void`
* Returns: `ArrowElement`
* React Hook: `n/a`

#### getAreaElement()

Get the Area Element Object.

* Params: `void`
* Returns: `AreaElement`
* React Hook: `n/a`

#### getHuddleElement()

Get the Huddle Element Object.

* Params: `void`
* Returns: `HuddleElement`
* React Hook: `n/a`

#### getNotificationElement()

Get the Notification Element Object.

* Params: `void`
* Returns: `NotificationElement`
* React Hook: `n/a`

#### getReactionElement()

Get the Reaction Element Object.

* Params: `void`
* Returns: `ReactionElement`
* React Hook: `n/a`

#### getTagElement()

Get the Tag Element Object.

* Params: `void`
* Returns: `TagElement`
* React Hook: `n/a`

#### getViewsElement()

Get the Views Element Object.

* Params: `void`
* Returns: `ViewsElement`
* React Hook: `n/a`

#### getSuggestionElement()

Get the singleton `SuggestionElement` instance. Repeat calls return the same object.

* Params: `void`
* Returns: [`SuggestionElement`](https://velt.dev/docs/api-reference/sdk/models/data-models#suggestionelement)
* React Hook: `useSuggestionUtils()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/suggestions/overview.md)

### Feature Gating

#### isUserAllowed\$()

To check if user is allowed in provided document or not.

* Params: `void`
* Returns: `Observable<boolean>`
* React Hook: `n/a`

#### disableFeatures()

Provide a list of features to disable. Provide an empty array to enable all the features.

* Params: `features: Array<FeatureType>`
* Returns: `void`
* React Hook: `n/a`

#### isPlanExpired\$()

To check if plan is expired or not.

* Params: `void`
* Returns: `Observable<boolean>`
* React Hook: `n/a`

### Modular SDK / Chunk Preloading

In the modular SDK each feature is compiled into a lazy chunk fetched on demand. Opt in with the [`Config.featureAllowList`](https://velt.dev/docs/api-reference/sdk/models/data-models#config) init option to preload only the listed feature chunks; omitting `featureAllowList` preserves pre-modular behavior, preloading all chunks in the background. Feature tags placed before their chunk loads render inert and silently upgrade in place once the chunk lands. The `preload*()` methods are idempotent and non-throwing (they log on failure and resolve). Calling `getXElement()` or `preloadX()` for a feature omitted from `featureAllowList` auto-enables it (`ensureFeatureEnabled`), so you are never locked out. The tag-only features `userInvite`, `userRequest`, and `videoPlayer` have no element accessor — load them via `featureAllowList` or the matching `preload*()`.

```js theme={null}
await client.preloadComment();
client.getCommentElement().openCommentSidebar();

// Tag-only feature (no element accessor):
await client.preloadUserRequest();
```

#### preloadComment()

Eagerly fetches the `comment` feature chunk (`velt-comment.js`) and resolves once it is loaded and its custom elements are registered. Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

#### preloadCursor()

Eagerly fetches the `cursor` feature chunk (`velt-cursor.js`) and resolves once it is loaded and its custom elements are registered. Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

#### preloadPresence()

Eagerly fetches the `presence` feature chunk (`velt-presence.js`) and resolves once it is loaded and its custom elements are registered. Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

#### preloadHuddle()

Eagerly fetches the `huddle` feature chunk (`velt-huddle.js`) and resolves once it is loaded and its custom elements are registered. Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

#### preloadRecorder()

Eagerly fetches the `recorder` feature chunk (`velt-recorder.js`) and resolves once it is loaded and its custom elements are registered (including the transcription/subtitle embed elements, which are folded into the recorder chunk). Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

#### preloadNotification()

Eagerly fetches the `notification` feature chunk (`velt-notification.js`) and resolves once it is loaded and its custom elements are registered. Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

#### preloadReaction()

Eagerly fetches the `reaction` feature chunk (`velt-reaction.js`) and resolves once it is loaded and its custom elements are registered. Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

#### preloadArrow()

Eagerly fetches the `arrow` feature chunk (`velt-arrow.js`) and resolves once it is loaded and its custom elements are registered. Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

#### preloadTag()

Eagerly fetches the `tag` feature chunk (`velt-tag.js`) and resolves once it is loaded and its custom elements are registered. Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

#### preloadRewriter()

Eagerly fetches the `rewriter` feature chunk (`velt-rewriter.js`) and resolves once it is loaded and its custom elements are registered. Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

#### preloadSelection()

Eagerly fetches the `selection` feature chunk (`velt-selection.js`) and resolves once it is loaded and its custom elements are registered. Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

#### preloadArea()

Eagerly fetches the `area` feature chunk (`velt-area.js`) and resolves once it is loaded and its custom elements are registered. Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

#### preloadActivity()

Eagerly fetches the `activity` feature chunk (`velt-activity-log.js`) and resolves once it is loaded and its custom elements are registered. Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

#### preloadViews()

Eagerly fetches the `views` feature chunk (`velt-views.js`) and resolves once it is loaded and its custom elements are registered. Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

#### preloadUserInvite()

Eagerly fetches the `userInvite` feature chunk (`velt-user-invite.js`) and resolves once it is loaded and its custom elements are registered. Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

#### preloadUserRequest()

Eagerly fetches the `userRequest` feature chunk (`velt-user-request.js`) and resolves once it is loaded and its custom elements are registered. Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

#### preloadVideoPlayer()

Eagerly fetches the `videoPlayer` feature chunk (`velt-video-player.js`) and resolves once it is loaded and its custom elements are registered. Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

#### preloadCrdt()

Eagerly fetches the `crdt` feature chunk (`velt-crdt.js`) and resolves once it is loaded and its custom elements are registered. Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

#### preloadLiveStateSync()

Eagerly fetches the `liveStateSync` feature chunk (`velt-live-state-sync.js`) and resolves once it is loaded and its custom elements are registered. Idempotent; never throws.

* Params: `void`
* Returns: `Promise<void>`
* React Hook: `n/a`

### Localization

#### setLanguage()

To set the language.

* Params: `language: string`
* Returns: `void`
* React Hook: `n/a`

#### setTranslations()

To set translations for multiple languages.

* Params: `translations: { [language: string]: { [key: string]: string } }`
* Returns: `void`
* React Hook: `n/a`

#### enableAutoTranslation()

To enable automatic translation of text in Velt Components based on User's language preference.

* Params: `void`
* Returns: `void`
* React Hook: `n/a`

#### disableAutoTranslation()

To disable automatic translation of text in Velt Components.

* Params: `void`
* Returns: `void`
* React Hook: `n/a`

### DOM Control

#### setScrollableElementsIds()

Tell us about the scrollable document ids to keep track on its scroll changes.

* Params: `ids: string[]`
* Returns: `void`
* React Hook: `n/a`

#### removeScrollableElementsIds()

To remove document params from a User.

* Params: `void`
* Returns: `void`
* React Hook: `n/a`

# Suggestions

Methods on the [`SuggestionElement`](https://velt.dev/docs/api-reference/sdk/models/data-models#suggestionelement) singleton returned by `client.getSuggestionElement()`. Tag DOM targets with `data-velt-suggestion-target="<targetId>"`.

### Mode Control

#### enableSuggestionMode()

Turn on suggesting mode; users can propose changes to registered targets. By default (`autoCommit: true`), every detected edit on a tagged target is committed as a suggestion automatically. Pass `{ autoCommit: false }` for detect-only mode.

* Params: [`config?: EnableSuggestionModeConfig`](https://velt.dev/docs/api-reference/sdk/models/data-models#enablesuggestionmodeconfig) (optional)
* Returns: `void`
* React Hook: `useEnableSuggestionMode()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/suggestions/overview.md)

#### disableSuggestionMode()

Turn off suggesting mode; targets revert to normal edit behavior. The `autoCommit` flag (including an `autoCommit: false` opt-out) is cleared; re-enabling without config returns to the default auto-commit behavior.

* Params: none
* Returns: `void`
* React Hook: `useDisableSuggestionMode()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/suggestions/overview.md)

#### isSuggestionModeEnabled()

Synchronously check whether suggestion mode is currently active.

* Params: none
* Returns: `boolean`
* React Hook: `useSuggestionModeState()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/suggestions/overview.md)

#### isSuggestionModeEnabled\$()

Reactively observe suggestion mode state changes.

* Params: none
* Returns: `Observable<boolean>`
* React Hook: `useSuggestionModeState()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/suggestions/overview.md)

### Target Management

#### registerTarget()

Associate a getter function with a target ID so the SDK can snapshot complex (non-primitive) values. Remove the registration with `unregisterTarget()`.

* Params: [`config: RegisterTargetConfig<T>`](https://velt.dev/docs/api-reference/sdk/models/data-models#registertargetconfigt)
* Returns: `void`
* React Hook: `useRegisterTarget()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/suggestions/overview.md)

#### unregisterTarget()

Remove a previously registered target and clean up its subscription.

* Params: `targetId: string`
* Returns: `void`
* React Hook: `useUnregisterTarget()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/suggestions/overview.md)

### Suggestion Lifecycle

#### startSuggestion()

Manually capture a snapshot of a target's current value to begin a suggestion.

* Params: `targetId: string`
* Returns: `void`
* React Hook: `useStartSuggestion()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/suggestions/overview.md)

#### commitSuggestion()

Explicitly commit a pending suggestion with a new value. Returns the created suggestion ID.

* Params: [`config: CommitSuggestionConfig<T>`](https://velt.dev/docs/api-reference/sdk/models/data-models#commitsuggestionconfigt)
* Returns: `Promise<{ id: string }>`
* React Hook: `useCommitSuggestion()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/suggestions/overview.md)

### Querying Suggestions

#### getSuggestions()

Return all suggestions matching the optional filter synchronously.

* Params: [`filter?: SuggestionGetSuggestionsFilter`](https://velt.dev/docs/api-reference/sdk/models/data-models#suggestiongetsuggestionsfilter) (optional)
* Returns: [`Suggestion<unknown>[]`](https://velt.dev/docs/api-reference/sdk/models/data-models#suggestiont)
* React Hook: `useSuggestions()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/suggestions/overview.md)

#### getSuggestions\$()

Reactively observe suggestions matching the optional filter.

* Params: [`filter?: SuggestionGetSuggestionsFilter`](https://velt.dev/docs/api-reference/sdk/models/data-models#suggestiongetsuggestionsfilter) (optional)
* Returns: [`Observable<Suggestion<unknown>[]>`](https://velt.dev/docs/api-reference/sdk/models/data-models#suggestiont)
* React Hook: `useSuggestions()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/suggestions/overview.md)

#### getPendingSuggestion()

Return the pending suggestion for a specific target, or `null` if none exists.

* Params: `targetId: string`
* Returns: [`Suggestion<unknown> | null`](https://velt.dev/docs/api-reference/sdk/models/data-models#suggestiont)
* React Hook: `usePendingSuggestion()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/suggestions/overview.md)

#### getPendingSuggestion\$()

Reactively observe the pending suggestion for a specific target.

* Params: `targetId: string`
* Returns: [`Observable<Suggestion<unknown> | null>`](https://velt.dev/docs/api-reference/sdk/models/data-models#suggestiont)
* React Hook: `usePendingSuggestion()`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/suggestions/overview.md)

### Event Subscription

#### on()

Subscribe to a suggestion lifecycle event.

* Params: [`SuggestionEventType`](https://velt.dev/docs/api-reference/sdk/models/data-models#suggestioneventtype) — one of `'suggestionCreated'`, `'suggestionApproved'`, `'suggestionRejected'`, `'suggestionStale'`, `'targetEditStart'`, `'targetEditCommit'`
* Returns: [`Observable<SuggestionEventTypesMap[T]>`](https://velt.dev/docs/api-reference/sdk/models/data-models#suggestioneventtypesmap). [Here](https://velt.dev/docs/api-reference/sdk/models/data-models.md#suggestions) is the list of event payload types you can expect to receive.
* React Hook: `useSuggestionEventCallback(SuggestionEventType)`
* [Full Documentation →](https://velt.dev/docs/async-collaboration/suggestions/overview.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.