
Getting Started
API Reference
Documentation
Usage
Api
Misc Apis
FastComments JavaScript/TypeScript SDK
This is the official JavaScript/TypeScript SDK for FastComments.
Official JavaScript/TypeScript SDK for the FastComments API
Repository
API Documentation 
API Documentation
Full API reference: docs/api/README.md
Browser vs Server Compatibility 
Browser vs Server Compatibility
This SDK uses dual entry points to ensure optimal compatibility and prevent runtime errors:
fastcomments-sdk/browser- Browser-safe version with nativefetchfastcomments-sdk/server- Full Node.js version with SSO supportfastcomments-sdk(default) - Types only, safe to import anywhere
Usage 
Usage
This SDK provides separate entry points for browser and server environments to ensure optimal compatibility and security:
Browser Usage (Client-Side)
For browser/frontend applications, use the browser-safe export that excludes Node.js dependencies:
// Browser-safe import (no Node.js dependencies)
import { createFastCommentsBrowserSDK } from 'fastcomments-sdk/browser';
// Create browser SDK instance
const sdk = createFastCommentsBrowserSDK({
basePath: 'https://fastcomments.com' // optional, defaults to https://fastcomments.com
});
// Use public APIs (no API key needed - safe for browsers)
const comments = await sdk.publicApi.getCommentsPublic({
tenantId: 'your-tenant-id',
urlId: 'page-url-id'
});
Server Usage (Node.js)
For server/backend applications, use the full SDK with SSO and authentication features:
// Server-side import (includes SSO and designed to work with NodeJS)
import { createFastCommentsSDK } from 'fastcomments-sdk/server';
// Create server SDK instance
const sdk = createFastCommentsSDK({
apiKey: 'your-api-key', // Keep this secret on the server!
basePath: 'https://fastcomments.com' // optional, defaults to https://fastcomments.com
});
// Use secured APIs with your API key
const comments = await sdk.defaultApi.getComments({
tenantId: 'your-tenant-id',
urlId: 'page-url-id'
});
Types Only Import
If you only need TypeScript types (no runtime code), use the default import:
// Types only (no runtime dependencies - safe everywhere)
import type {
PublicComment,
CreateCommentParams,
GetCommentsPublic200Response
} from 'fastcomments-sdk';
Using Individual API Classes
Browser Environment
import { PublicApi, Configuration } from 'fastcomments-sdk/browser';
const config = new Configuration({
basePath: 'https://fastcomments.com'
});
const publicApi = new PublicApi(config);
Server Environment
import { DefaultApi, PublicApi, Configuration } from 'fastcomments-sdk/server';
const config = new Configuration({
apiKey: 'your-api-key',
basePath: 'https://fastcomments.com'
});
const defaultApi = new DefaultApi(config);
const publicApi = new PublicApi(config);
Public vs Secured APIs 
Public vs Secured APIs
The SDK provides three main API classes:
DefaultApi- Secured endpoints that require your API key for authentication. Use these for server-side operations.PublicApi- Public endpoints that can be accessed without an API key. These can be called directly from browsers/mobile devices/etc.HiddenApi- Internal/admin endpoints for advanced use cases.
Example: Using Public API (browser-safe)
import { PublicApi } from 'fastcomments-sdk/browser';
const publicApi = new PublicApi();
// Get comments for a page (no API key required)
const response = await publicApi.getCommentsPublic({
tenantId: 'your-tenant-id',
urlId: 'page-url-id'
});
Example: Using Default API (server-side only)
import { DefaultApi, Configuration } from 'fastcomments-sdk/server';
const config = new Configuration({
apiKey: 'your-api-key' // Keep this secret!
});
const defaultApi = new DefaultApi(config);
// Get comments with full admin access
const response = await defaultApi.getComments({
tenantId: 'your-tenant-id',
urlId: 'page-url-id'
});
SSO (Single Sign-On) Integration 
SSO (Single Sign-On) Integration
FastComments supports SSO to integrate with your existing user authentication system. SSO functionality is only available in the server export since it requires Node.js crypto features.
Simple SSO (Server-Side Only)
Simple SSO should be generated server-side and sent to the client:
// Server-side code (Node.js/backend)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';
// Create simple SSO using the built-in helper
const userData = {
username: 'john_doe',
email: 'john@example.com',
displayName: 'John Doe',
avatar: 'https://example.com/avatar.jpg'
};
const sso = FastCommentsSSO.createSimple(userData, {
loginURL: '/login',
logoutURL: '/logout'
});
const ssoToken = sso.createToken();
// Send ssoToken to your client-side code
// Client-side code can then use this token with the browser SDK
Secure SSO (Server-Side, Recommended)
Secure SSO should be implemented server-side and provides better security:
// Server-side code (Node.js/backend)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';
// Create secure SSO using the built-in helper
const userData = {
id: 'user-123',
email: 'john@example.com',
username: 'john_doe',
displayName: 'John Doe',
avatar: 'https://example.com/avatar.jpg',
isAdmin: false,
isModerator: false
};
const sso = FastCommentsSSO.createSecure('your-api-key', userData, {
loginURL: '/login',
logoutURL: '/logout'
});
const ssoConfig = sso.prepareToSend();
// Use with API calls on the server
const publicApi = new PublicApi();
const response = await publicApi.getCommentsPublic({
tenantId: 'your-tenant-id',
urlId: 'page-url-id',
sso: JSON.stringify(ssoConfig)
});
// Or send ssoConfig to client for browser usage
Using SSO from Browser (with Server-Generated Token)
// Client-side code (browser)
import { PublicApi } from 'fastcomments-sdk/browser';
// Get SSO token from your server endpoint
const ssoToken = await fetch('/api/sso-token').then(r => r.json());
const publicApi = new PublicApi();
const response = await publicApi.getCommentsPublic({
tenantId: 'your-tenant-id',
urlId: 'page-url-id',
sso: ssoToken // Use the server-generated SSO token
});
SSO with Comment Creation
// Server-side: Create SSO and comment
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';
const sso = FastCommentsSSO.createSecure('your-api-key', userData);
const ssoConfig = sso.prepareToSend();
const response = await publicApi.createCommentPublic({
tenantId: 'your-tenant-id',
urlId: 'page-url-id',
broadcastId: 'unique-broadcast-id',
commentData: {
comment: 'This is my comment',
date: Date.now(),
commenterName: 'John Doe',
url: 'https://example.com/page',
urlId: 'page-url-id'
},
sso: JSON.stringify(ssoConfig)
});
Common Use Cases 
Common Use Cases
Getting Comments for a Page
const comments = await sdk.publicApi.getCommentsPublic({
tenantId: 'your-tenant-id',
urlId: 'article-123'
});
Creating a Comment
const newComment = await sdk.publicApi.createCommentPublic({
createCommentParams: {
tenantId: 'your-tenant-id',
urlId: 'article-123',
comment: 'Great article!',
commenterName: 'John Doe',
commenterEmail: 'john@example.com'
}
});
Voting on a Comment
const voteResponse = await sdk.publicApi.voteComment({
voteBodyParams: {
commentId: 'comment-id',
direction: 1 // 1 for upvote, -1 for downvote
}
});
User Management (Requires API Key)
// Search for users (requires DefaultApi)
const users = await sdk.defaultApi.searchUsers({
tenantId: 'your-tenant-id',
urlId: 'page-id',
usernameStartsWith: 'john'
});
Live Events (Real-time Updates) 
Live Events (Real-time Updates)
Subscribe to live events to get real-time updates for comments, votes, and other activities.
Page-Level Events
Listen for live events on a specific page (comments, votes, etc.):
import { subscribeToChanges, LiveEvent, LiveEventType } from 'fastcomments-sdk/browser';
const config = {
tenantId: 'your-tenant-id',
urlId: 'page-url-id',
};
// Subscribe to live events for a page
const subscription = subscribeToChanges(
config,
'your-tenant-id', // tenantIdWS
'page-url-id', // urlIdWS
'user-session-id', // userIdWS (get this from getComments response)
(event: LiveEvent) => {
console.log('Live event received:', event);
switch (event.type) {
case LiveEventType.new_comment:
console.log('New comment:', event.comment);
// Update your UI with the new comment
break;
case LiveEventType.new_vote:
console.log('New vote:', event.vote);
// Update vote counts in your UI
break;
case LiveEventType.updated_comment:
console.log('Comment updated:', event.comment);
break;
default:
console.log('Other event type:', event.type);
}
return true; // Return true if event was handled
},
(isConnected: boolean) => {
console.log('Connection status:', isConnected ? 'Connected' : 'Disconnected');
}
);
// Close the subscription when done
subscription.close();
Subscribe to User Events
Listen for user-specific events (notifications, mentions, etc.):
import { subscribeToUserFeed, LiveEvent, LiveEventType } from 'fastcomments-sdk/browser';
const userConfig = {
userIdWS: 'user-session-id', // Get this from getComments response
};
// Subscribe to user's personal feed
const userSubscription = subscribeToUserFeed(
userConfig,
(event: LiveEvent) => {
console.log('User event received:', event);
switch (event.type) {
case LiveEventType.notification:
console.log('New notification:', event.notification);
// Show notification in your UI
break;
case LiveEventType.notification_update:
console.log('Notification updated:', event.notification);
break;
default:
console.log('Other user event:', event.type);
}
return true;
},
(isConnected: boolean) => {
console.log('User feed connection:', isConnected ? 'Connected' : 'Disconnected');
}
);
// Close when done
userSubscription.close();
Getting userIdWS
The userIdWS parameter is required for live events and can be obtained from API responses:
const response = await sdk.publicApi.getCommentsPublic({
tenantId: 'your-tenant-id',
urlId: 'page-id'
});
// Extract userIdWS from the response
const userIdWS = response.data?.userSessionInfo?.userIdWS;
if (userIdWS) {
// Now you can subscribe to live events
const subscription = subscribeToChanges(config, tenantIdWS, urlIdWS, userIdWS, handleEvent);
}
Broadcast IDs 
Broadcast IDs
You'll see you're supposed to pass a broadcastId in some API calls. When you receive events, you'll get this ID back, so you know to ignore the event if you plan to optimistically apply changes on the client (which you'll probably want to do since it offers the best experience). Pass a UUID here. The ID should be unique enough to not occur twice in a browser session.
import { v4 as uuidv4 } from 'uuid';
const response = await sdk.publicApi.createCommentPublic({
createCommentParams: {
tenantId: 'your-tenant-id',
urlId: 'page-id',
comment: 'My comment',
broadcastId: uuidv4() // Unique ID for this operation
}
});
Error Handling 
Error Handling
try {
const comments = await sdk.publicApi.getCommentsPublic({
tenantId: 'your-tenant-id',
urlId: 'page-id'
});
} catch (error) {
if (error.response?.status === 404) {
console.log('Page not found');
} else {
console.error('API Error:', error.message);
}
}
TypeScript Support 
TypeScript Support
The SDK is written in TypeScript and provides complete type definitions for all API methods and response models:
// Import types from the default export (safe everywhere)
import type {
PublicComment,
CreateCommentParams,
GetCommentsPublic200Response
} from 'fastcomments-sdk';
// Use with browser SDK
import { createFastCommentsBrowserSDK } from 'fastcomments-sdk/browser';
const sdk = createFastCommentsBrowserSDK();
const response: GetCommentsPublic200Response = await sdk.publicApi.getCommentsPublic({
tenantId: 'your-tenant-id',
urlId: 'page-id'
});
const comments: PublicComment[] = response.comments || [];
bulkAggregateQuestionResults 
POST /api/v1/question-results-aggregation/bulk
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| bulkAggregateQuestionResultsRequest | BulkAggregateQuestionResultsRequest | Yes | |
| forceRecalculate | boolean | No |
Response
Returns: BulkAggregateQuestionResults200Response
Example

createFeedPost 
POST /api/v1/feed-posts
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| createFeedPostParams | CreateFeedPostParams | Yes | |
| broadcastId | string | No | |
| isLive | boolean | No | |
| doSpamCheck | boolean | No | |
| skipDupCheck | boolean | No |
Response
Returns: CreateFeedPost200Response
Example

blockUserFromComment 
POST /api/v1/comments/{id}/block
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes | |
| blockFromCommentParams | BlockFromCommentParams | Yes | |
| userId | string | No | |
| anonUserId | string | No |
Response
Returns: BlockFromCommentPublic200Response
Example

createSubscription 
POST /api/v1/subscriptions
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| createAPIUserSubscriptionData | CreateAPIUserSubscriptionData | Yes |
Response
Returns: CreateSubscriptionAPIResponse
Example

aggregateQuestionResults 
GET /api/v1/question-results-aggregation
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| questionId | string | No | |
| questionIds | Array |
No | |
| urlId | string | No | |
| timeBucket | AggregateTimeBucket | No | |
| startDate | Date | No | |
| forceRecalculate | boolean | No |
Response
Returns: AggregateQuestionResults200Response
Example

addSSOUser 
POST /api/v1/sso-users
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| createAPISSOUserData | CreateAPISSOUserData | Yes |
Response
Returns: AddSSOUserAPIResponse
Example

addPage 
POST /api/v1/pages
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| createAPIPageData | CreateAPIPageData | Yes |
Response
Returns: AddPageAPIResponse
Example

aggregate 
POST /api/v1/aggregate
Aggregates documents by grouping them (if groupBy is provided) and applying multiple operations. Different operations (e.g. sum, countDistinct, avg, etc.) are supported.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| aggregationRequest | AggregationRequest | Yes | |
| parentTenantId | string | No | |
| includeStats | boolean | No |
Response
Returns: AggregationResponse
Example

combineCommentsWithQuestionResults 
GET /api/v1/question-results-aggregation/combine/comments
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| questionId | string | No | |
| questionIds | Array |
No | |
| urlId | string | No | |
| startDate | Date | No | |
| forceRecalculate | boolean | No | |
| minValue | number | No | |
| maxValue | number | No | |
| limit | number | No |
Response
Returns: CombineCommentsWithQuestionResults200Response
Example

addDomainConfig 
POST /api/v1/domain-configs
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| addDomainConfigParams | AddDomainConfigParams | Yes |
Response
Returns: AddDomainConfig200Response
Example

createUserBadge 
POST /api/v1/user-badges
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| createUserBadgeParams | CreateUserBadgeParams | Yes |
Response
Returns: CreateUserBadge200Response
Example

deleteComment 
DELETE /api/v1/comments/{id}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes | |
| contextUserId | string | No | |
| isLive | boolean | No |
Response
Returns: DeleteComment200Response
Example

deletePage 
DELETE /api/v1/pages/{id}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes |
Response
Returns: DeletePageAPIResponse
Example

deleteSSOUser 
DELETE /api/v1/sso-users/{id}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes | |
| deleteComments | boolean | No | |
| commentDeleteMode | string | No |
Response
Returns: DeleteSSOUserAPIResponse
Example

deleteUserBadge 
DELETE /api/v1/user-badges/{id}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes |
Response
Returns: UpdateUserBadge200Response
Example

flagComment 
POST /api/v1/comments/{id}/flag
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes | |
| userId | string | No | |
| anonUserId | string | No |
Response
Returns: FlagComment200Response
Example

deleteDomainConfig 
DELETE /api/v1/domain-configs/{domain}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| domain | string | Yes |
Response
Returns: DeleteDomainConfig200Response
Example

getComment 
GET /api/v1/comments/{id}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes |
Response
Returns: GetComment200Response
Example

getAuditLogs 
GET /api/v1/audit-logs
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| limit | number | No | |
| skip | number | No | |
| order | SORTDIR | No | |
| after | number | No | |
| before | number | No |
Response
Returns: GetAuditLogs200Response
Example

getDomainConfig 
GET /api/v1/domain-configs/{domain}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| domain | string | Yes |
Response
Returns: GetDomainConfig200Response
Example

deleteSubscription 
DELETE /api/v1/subscriptions/{id}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes | |
| userId | string | No |
Response
Returns: DeleteSubscriptionAPIResponse
Example

getFeedPosts 
GET /api/v1/feed-posts
req tenantId afterId
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| afterId | string | No | |
| limit | number | No | |
| tags | Array |
No |
Response
Returns: GetFeedPosts200Response
Example

getPages 
GET /api/v1/pages
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes |
Response
Returns: GetPagesAPIResponse
Example

getComments 
GET /api/v1/comments
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| page | number | No | |
| limit | number | No | |
| skip | number | No | |
| asTree | boolean | No | |
| skipChildren | number | No | |
| limitChildren | number | No | |
| maxTreeDepth | number | No | |
| urlId | string | No | |
| userId | string | No | |
| anonUserId | string | No | |
| contextUserId | string | No | |
| hashTag | string | No | |
| parentId | string | No | |
| direction | SortDirections | No |
Response
Returns: GetComments200Response
Example

getDomainConfigs 
GET /api/v1/domain-configs
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes |
Response
Returns: GetDomainConfigs200Response
Example

getUserBadge 
GET /api/v1/user-badges/{id}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes |
Response
Returns: GetUserBadge200Response
Example

getSSOUsers 
GET /api/v1/sso-users
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| skip | number | No |
Response
Returns: GetSSOUsers200Response
Example

getPageByURLId 
GET /api/v1/pages/by-url-id
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| urlId | string | Yes |
Response
Returns: GetPageByURLIdAPIResponse
Example

getUserBadgeProgressById 
GET /api/v1/user-badge-progress/{id}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes |
Response
Returns: GetUserBadgeProgressById200Response
Example

getSSOUserByEmail 
GET /api/v1/sso-users/by-email/{email}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| string | Yes |
Response
Returns: GetSSOUserByEmailAPIResponse
Example

getUserBadgeProgressList 
GET /api/v1/user-badge-progress
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| userId | string | No | |
| limit | number | No | |
| skip | number | No |
Response
Returns: GetUserBadgeProgressList200Response
Example

getUserBadgeProgressByUserId 
GET /api/v1/user-badge-progress/user/{userId}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| userId | string | Yes |
Response
Returns: GetUserBadgeProgressById200Response
Example

getUserBadges 
GET /api/v1/user-badges
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| userId | string | No | |
| badgeId | string | No | |
| type | number | No | |
| displayedOnComments | boolean | No | |
| limit | number | No | |
| skip | number | No |
Response
Returns: GetUserBadges200Response
Example

getSSOUserById 
GET /api/v1/sso-users/by-id/{id}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes |
Response
Returns: GetSSOUserByIdAPIResponse
Example

patchDomainConfig 
PATCH /api/v1/domain-configs/{domainToUpdate}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| domainToUpdate | string | Yes | |
| patchDomainConfigParams | PatchDomainConfigParams | Yes |
Response
Returns: GetDomainConfig200Response
Example

getSubscriptions 
GET /api/v1/subscriptions
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| userId | string | No |
Response
Returns: GetSubscriptionsAPIResponse
Example

patchPage 
PATCH /api/v1/pages/{id}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes | |
| updateAPIPageData | UpdateAPIPageData | Yes |
Response
Returns: PatchPageAPIResponse
Example

saveComment 
POST /api/v1/comments
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| createCommentParams | CreateCommentParams | Yes | |
| isLive | boolean | No | |
| doSpamCheck | boolean | No | |
| sendEmails | boolean | No | |
| populateNotifications | boolean | No |
Response
Returns: SaveComment200Response
Example

patchSSOUser 
PATCH /api/v1/sso-users/{id}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes | |
| updateAPISSOUserData | UpdateAPISSOUserData | Yes | |
| updateComments | boolean | No |
Response
Returns: PatchSSOUserAPIResponse
Example

saveCommentsBulk 
POST /api/v1/comments/bulk
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| createCommentParams | Array |
Yes | |
| isLive | boolean | No | |
| doSpamCheck | boolean | No | |
| sendEmails | boolean | No | |
| populateNotifications | boolean | No |
Response
Returns: Array<SaveComment200Response
Example

putDomainConfig 
PUT /api/v1/domain-configs/{domainToUpdate}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| domainToUpdate | string | Yes | |
| updateDomainConfigParams | UpdateDomainConfigParams | Yes |
Response
Returns: GetDomainConfig200Response
Example

unFlagComment 
POST /api/v1/comments/{id}/un-flag
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes | |
| userId | string | No | |
| anonUserId | string | No |
Response
Returns: FlagComment200Response
Example

unBlockUserFromComment 
POST /api/v1/comments/{id}/un-block
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes | |
| unBlockFromCommentParams | UnBlockFromCommentParams | Yes | |
| userId | string | No | |
| anonUserId | string | No |
Response
Returns: UnBlockCommentPublic200Response
Example

updateComment 
PATCH /api/v1/comments/{id}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes | |
| body | PickAPICommentUpdatableCommentFields | Yes | |
| contextUserId | string | No | |
| doSpamCheck | boolean | No | |
| isLive | boolean | No |
Response
Returns: FlagCommentPublic200Response
Example

updateUserBadge 
PUT /api/v1/user-badges/{id}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes | |
| updateUserBadgeParams | UpdateUserBadgeParams | Yes |
Response
Returns: UpdateUserBadge200Response
Example

putSSOUser 
PUT /api/v1/sso-users/{id}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes | |
| updateAPISSOUserData | UpdateAPISSOUserData | Yes | |
| updateComments | boolean | No |
Response
Returns: PutSSOUserAPIResponse
Example

checkedCommentsForBlocked 
GET /check-blocked-comments
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| commentIds | string | Yes | |
| sso | string | No |
Response
Returns: CheckedCommentsForBlocked200Response
Example

createCommentPublic 
POST /comments/{tenantId}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| urlId | string | Yes | |
| broadcastId | string | Yes | |
| commentData | CommentData | Yes | |
| sessionId | string | No | |
| sso | string | No |
Response
Returns: CreateCommentPublic200Response
Example

createFeedPostPublic 
POST /feed-posts/{tenantId}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| createFeedPostParams | CreateFeedPostParams | Yes | |
| broadcastId | string | No | |
| sso | string | No |
Response
Returns: CreateFeedPostPublic200Response
Example

blockFromCommentPublic 
POST /block-from-comment/{commentId}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| commentId | string | Yes | |
| publicBlockFromCommentParams | PublicBlockFromCommentParams | Yes | |
| sso | string | No |
Response
Returns: BlockFromCommentPublic200Response
Example

deleteCommentPublic 
DELETE /comments/{tenantId}/{commentId}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| commentId | string | Yes | |
| broadcastId | string | Yes | |
| editKey | string | No | |
| sso | string | No |
Response
Returns: DeleteCommentPublic200Response
Example

updateFeedPost 
PATCH /api/v1/feed-posts/{id}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| id | string | Yes | |
| feedPost | FeedPost | Yes |
Response
Returns: FlagCommentPublic200Response
Example

getCommentText 
GET /comments/{tenantId}/{commentId}/text
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| commentId | string | Yes | |
| editKey | string | No | |
| sso | string | No |
Response
Returns: GetCommentText200Response
Example

deleteFeedPostPublic 
DELETE /feed-posts/{tenantId}/{postId}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| postId | string | Yes | |
| broadcastId | string | No | |
| sso | string | No |
Response
Returns: DeleteFeedPostPublic200Response
Example

flagCommentPublic 
POST /flag-comment/{commentId}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| commentId | string | Yes | |
| isFlagged | boolean | Yes | |
| sso | string | No |
Response
Returns: FlagCommentPublic200Response
Example

deleteCommentVote 
DELETE /comments/{tenantId}/{commentId}/vote/{voteId}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| commentId | string | Yes | |
| voteId | string | Yes | |
| urlId | string | Yes | |
| broadcastId | string | Yes | |
| editKey | string | No | |
| sso | string | No |
Response
Returns: DeleteCommentVote200Response
Example

getCommentVoteUserNames 
GET /comments/{tenantId}/{commentId}/votes
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| commentId | string | Yes | |
| dir | number | Yes | |
| sso | string | No |
Response
Returns: GetCommentVoteUserNames200Response
Example

getUserNotificationCount 
GET /user-notifications/get-count
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| sso | string | No |
Response
Returns: GetUserNotificationCount200Response
Example

getFeedPostsPublic 
GET /feed-posts/{tenantId}
req tenantId afterId
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| afterId | string | No | |
| limit | number | No | |
| tags | Array |
No | |
| sso | string | No | |
| isCrawler | boolean | No | |
| includeUserInfo | boolean | No |
Response
Returns: GetFeedPostsPublic200Response
Example

getEventLog 
GET /event-log/{tenantId}
req tenantId urlId userIdWS
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| urlId | string | Yes | |
| userIdWS | string | Yes | |
| startTime | number | Yes | |
| endTime | number | Yes |
Response
Returns: GetEventLog200Response
Example

getFeedPostsStats 
GET /feed-posts/{tenantId}/stats
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| postIds | Array |
Yes | |
| sso | string | No |
Response
Returns: GetFeedPostsStats200Response
Example

getGlobalEventLog 
GET /event-log/global/{tenantId}
req tenantId urlId userIdWS
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| urlId | string | Yes | |
| userIdWS | string | Yes | |
| startTime | number | Yes | |
| endTime | number | Yes |
Response
Returns: GetEventLog200Response
Example

getUserReactsPublic 
GET /feed-posts/{tenantId}/user-reacts
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| postIds | Array |
No | |
| sso | string | No |
Response
Returns: GetUserReactsPublic200Response
Example

getUserPresenceStatuses 
GET /user-presence-status
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| urlIdWS | string | Yes | |
| userIds | string | Yes |
Response
Returns: GetUserPresenceStatuses200Response
Example

lockComment 
POST /comments/{tenantId}/{commentId}/lock
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| commentId | string | Yes | |
| broadcastId | string | Yes | |
| sso | string | No |
Response
Returns: LockComment200Response
Example

getUserNotifications 
GET /user-notifications
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| pageSize | number | No | |
| afterId | string | No | |
| includeContext | boolean | No | |
| afterCreatedAt | number | No | |
| unreadOnly | boolean | No | |
| dmOnly | boolean | No | |
| noDm | boolean | No | |
| includeTranslations | boolean | No | |
| sso | string | No |
Response
Returns: GetUserNotifications200Response
Example

getCommentsPublic 
GET /comments/{tenantId}
req tenantId urlId
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| urlId | string | Yes | |
| page | number | No | |
| direction | SortDirections | No | |
| sso | string | No | |
| skip | number | No | |
| skipChildren | number | No | |
| limit | number | No | |
| limitChildren | number | No | |
| countChildren | boolean | No | |
| fetchPageForCommentId | string | No | |
| includeConfig | boolean | No | |
| countAll | boolean | No | |
| includei10n | boolean | No | |
| locale | string | No | |
| modules | string | No | |
| isCrawler | boolean | No | |
| includeNotificationCount | boolean | No | |
| asTree | boolean | No | |
| maxTreeDepth | number | No | |
| useFullTranslationIds | boolean | No | |
| parentId | string | No | |
| searchText | string | No | |
| hashTags | Array |
No | |
| userId | string | No | |
| customConfigStr | string | No | |
| afterCommentId | string | No | |
| beforeCommentId | string | No |
Response
Returns: GetCommentsPublic200Response
Example

reactFeedPostPublic 
POST /feed-posts/{tenantId}/react/{postId}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| postId | string | Yes | |
| reactBodyParams | ReactBodyParams | Yes | |
| isUndo | boolean | No | |
| broadcastId | string | No | |
| sso | string | No |
Response
Returns: ReactFeedPostPublic200Response
Example

searchUsers 
GET /user-search/{tenantId}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| urlId | string | Yes | |
| usernameStartsWith | string | Yes | |
| mentionGroupIds | Array |
No | |
| sso | string | No |
Response
Returns: SearchUsers200Response
Example

pinComment 
POST /comments/{tenantId}/{commentId}/pin
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| commentId | string | Yes | |
| broadcastId | string | Yes | |
| sso | string | No |
Response
Returns: PinComment200Response
Example

resetUserNotifications 
POST /user-notifications/reset
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| afterId | string | No | |
| afterCreatedAt | number | No | |
| unreadOnly | boolean | No | |
| dmOnly | boolean | No | |
| noDm | boolean | No | |
| sso | string | No |
Response
Returns: ResetUserNotifications200Response
Example

setCommentText 
POST /comments/{tenantId}/{commentId}/update-text
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| commentId | string | Yes | |
| broadcastId | string | Yes | |
| commentTextUpdateRequest | CommentTextUpdateRequest | Yes | |
| editKey | string | No | |
| sso | string | No |
Response
Returns: SetCommentText200Response
Example

unBlockCommentPublic 
DELETE /block-from-comment/{commentId}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| commentId | string | Yes | |
| publicBlockFromCommentParams | PublicBlockFromCommentParams | Yes | |
| sso | string | No |
Response
Returns: UnBlockCommentPublic200Response
Example

unPinComment 
POST /comments/{tenantId}/{commentId}/unpin
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| commentId | string | Yes | |
| broadcastId | string | Yes | |
| sso | string | No |
Response
Returns: PinComment200Response
Example

unLockComment 
POST /comments/{tenantId}/{commentId}/unlock
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| commentId | string | Yes | |
| broadcastId | string | Yes | |
| sso | string | No |
Response
Returns: LockComment200Response
Example

updateUserNotificationCommentSubscriptionStatus 
POST /user-notifications/{notificationId}/mark-opted/{optedInOrOut}
Enable or disable notifications for a specific comment.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| notificationId | string | Yes | |
| optedInOrOut | UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum | Yes | |
| commentId | string | Yes | |
| sso | string | No |
Response
Returns: UpdateUserNotificationStatus200Response
Example

updateUserNotificationStatus 
POST /user-notifications/{notificationId}/mark/{newStatus}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| notificationId | string | Yes | |
| newStatus | UpdateUserNotificationStatusNewStatusEnum | Yes | |
| sso | string | No |
Response
Returns: UpdateUserNotificationStatus200Response
Example

resetUserNotificationCount 
POST /user-notifications/reset-count
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| sso | string | No |
Response
Returns: ResetUserNotifications200Response
Example

updateFeedPostPublic 
PUT /feed-posts/{tenantId}/{postId}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| postId | string | Yes | |
| updateFeedPostParams | UpdateFeedPostParams | Yes | |
| broadcastId | string | No | |
| sso | string | No |
Response
Returns: CreateFeedPostPublic200Response
Example

updateUserNotificationPageSubscriptionStatus 
POST /user-notifications/set-subscription-state/{subscribedOrUnsubscribed}
Enable or disable notifications for a page. When users are subscribed to a page, notifications are created for new root comments, and also
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| urlId | string | Yes | |
| url | string | Yes | |
| pageTitle | string | Yes | |
| subscribedOrUnsubscribed | UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum | Yes | |
| sso | string | No |
Response
Returns: UpdateUserNotificationStatus200Response
Example

uploadImage 
POST /upload-image/{tenantId}
Upload and resize an image
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| file | Blob | Yes | |
| sizePreset | SizePreset | No | |
| urlId | string | No |
Response
Returns: UploadImageResponse
Example

voteComment 
POST /comments/{tenantId}/{commentId}/vote
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| tenantId | string | Yes | |
| commentId | string | Yes | |
| urlId | string | Yes | |
| broadcastId | string | Yes | |
| voteBodyParams | VoteBodyParams | Yes | |
| sessionId | string | No | |
| sso | string | No |
Response
Returns: VoteComment200Response
Example

Need Help?
If you encounter any issues or have questions about the JavaScript/TypeScript SDK, please:
Contributing
Contributions are welcome! Please visit the GitHub repository for contribution guidelines.