RealTimeX
Start For Free

RealTimeX

API Documentation

IntroductionAuthenticationBase URLHeadersError codes
Get settingsUpdate settingsEffective settings
Sample requestsSample responsesStatus codesAppendixChangelog

API Reference

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.enabled and calls.configured without reading the secret token.
  • Applying groupPolicy defaults 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

AspectGet SettingsEffective Settings
PurposeAdmin document for Platform → Settings formsResolved values for runtime enforcement
Shape_id, clientId, limits, settingsFlat feature object only (no wrapping settings key)
callsenabled + videoSdkTokenenabled + configured (token never returned)
Write?Pair with Update Settings (PATCH)Read-only

Response Data

The data object is the effective configuration. Key groups:

Feature toggles & limits

FieldDescription
pushNotificationEnabledWhether push notifications are allowed for this tenant.
videoCallEnabledTenant video-call toggle (combine with calls).
audioCallEnabledTenant audio-call toggle (combine with calls).
blockUsersEnabledWhether users may block other users.
canvasEnabledWhether collaborative documents (Canvas) are available (platform ceiling AND tenant toggle).
whiteboardEnabledWhether collaborative drawing boards (Whiteboard) are available (platform ceiling AND tenant toggle).
maxAdminsPerGroupEffective max admins allowed per group.
maxParticipantsPerGroupEffective max participants per group.
maxPinnedMessagesPerConversationEffective max pinned messages per conversation.
groupCreationEnabledWhether chat users may create groups.

calls

FieldDescription
enabledMaster switch for the calling integration.
configuredtrue when a VideoSDK token has been saved (token itself is never returned here).

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.

GET{baseUrl}/api/{apiVersion}/settings/effective

Authentication

Required (Bearer token)

Tenant-scoped

Yes (tenant DB — requires x-client-id)

Request Headers

HeaderValueDescription
AuthorizationBearer <access_token>Client Access Token with tenant admin privileges (Platform panel).
is-tenanttrueTargets the tenant DB ("true", needs x-client-id).
x-client-id{{clientId}}Tenant (client) id. Required when is-tenant=true.

Success Response (HTTP 200 OK)

On success, the API returns the flattened effective settings object.

json
{
  "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

json
{
  "success": false,
  "message": "No token, authorization denied",
  "data": null,
  "error": "Unauthorized"
}

HTTP 403 Forbidden — Tenant admin required

json
{
  "success": false,
  "message": "Access denied: tenant admin privileges required",
  "data": null,
  "error": null
}
CodeReason
401 UnauthorizedAccess Token is missing, invalid, or expired.
403 ForbiddenTenant admin privileges required for Platform Settings.
500 Internal Server ErrorAn unexpected error occurred while fetching effective settings.

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 videoSdkToken here — use calls.configured instead.
  • Honor groupPolicy.locked so group admins cannot override pinned defaults.
  • Validate uploads against effective attachments before 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.

PreviousUpdate settingsNextList Reports

On this page

OverviewWhen to use this endpoint?Effective vs Get SettingsResponse DataRequest HeadersSuccess ResponseCommon ErrorsBest Practices