Effective Settings
Overview
Fetch the tenant's resolved settings - the values your Platform UI or product logic should enforce at runtime after plan ceilings and admin configuration are applied.
Unlike Get Settings, this response is a flat effective object: no document id, no separate limits block, and no raw videoSdkToken. Use it to drive feature gates, attachment pickers, group defaults, and edit/delete windows.
When to use this endpoint?
Use Effective Settings when:
- Hydrating runtime toggles (push, calls, block users, group creation) after login or app boot.
- Checking whether calling is ready via
calls.enabledandcalls.configuredwithout reading the secret token. - Applying
groupPolicydefaults and locked flags when creating or constraining groups. - Enforcing message edit/delete windows from
messageTimers. - Validating attachment size, MIME types, and count before upload.
Part of the client Platform Settings module. For editing tenant configuration (including storing a VideoSDK token), use Get Settings + Update Settings instead.
Effective vs Get Settings
Response Data
The data object is the effective configuration. Key groups:
Feature toggles & limits
calls
Treat calling as ready only when calls.enabled and calls.configured are both true, and the relevant videoCallEnabled / audioCallEnabled toggle is on.
groupPolicy / messageTimers / attachments
Same nested shapes as under settings on Get: groupPolicy.defaults + locked, edit/delete minutes, and attachment rules (enabled, maxFileSizeMB, allowedMimeTypes, maxAttachmentsPerMessage). See Get Settings → Response Data for flag-by-flag descriptions.
{baseUrl}/api/{apiVersion}/settings/effective- Authentication
- Required (Bearer token)
- Tenant-scoped
- Yes (tenant DB - requires x-client-id)
Request Headers
Success Response (HTTP 200 OK)
On success, the API returns the flattened effective settings object.
{ "success": true, "message": "Effective settings fetched successfully", "data": { "pushNotificationEnabled": true, "videoCallEnabled": false, "audioCallEnabled": true, "blockUsersEnabled": true, "canvasEnabled": true, "whiteboardEnabled": true, "calls": { "enabled": true, "configured": true }, "groupPolicy": { "defaults": { "onlyAdminCanSendMessage": true, "onlyAdminCanEditInfo": false, "senderCanEditMessage": true, "allowMemberAdd": true, "allowMemberRemove": false, "moderationEnabled": false }, "locked": [ "onlyAdminCanSendMessage" ] }, "messageTimers": { "dmEditMinutes": 15, "dmDeleteMinutes": 10, "groupEditMinutes": 10, "groupDeleteMinutes": 60 }, "attachments": { "enabled": true, "maxFileSizeMB": 10, "allowedMimeTypes": [ "image/*", "application/pdf" ], "maxAttachmentsPerMessage": 10 }, "maxAdminsPerGroup": 5, "maxParticipantsPerGroup": 100, "maxPinnedMessagesPerConversation": 10, "groupCreationEnabled": true }, "error": null}Common Errors
Fetch fails when the token is missing/invalid or the caller is not a tenant admin.
HTTP 401 Unauthorized - No token
{ "success": false, "message": "No token, authorization denied", "data": null, "error": "Unauthorized"}HTTP 403 Forbidden - Tenant admin required
{ "success": false, "message": "Access denied: tenant admin privileges required", "data": null, "error": null}Best Practices
- Prefer Effective for runtime gates; use Get/Update only when editing admin configuration.
- Cache briefly after boot, then refetch after a successful Update so UI matches the server.
- Never expect
videoSdkTokenhere — usecalls.configuredinstead. - Honor
groupPolicy.lockedso group admins cannot override pinned defaults. - Validate uploads against effective
attachmentsbefore requesting presigned URLs.
Effective settings ready
Wire these values into feature gates and validation. To change configuration (including VideoSDK token), use Update Settings, then refetch Effective.