> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-22654f5b-docs-llms-scoped-indexes.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Properties and Constraints

> Review CometChat properties and constraints for API keys, users, groups, metadata, tags, limits, and supported values.

This page lists the properties and constraints applicable to various CometChat systems.

## API Keys

| **Property** | **Constraints** |
| - | - |
| API key value | System-generated, 40-character hexadecimal string |
| API key name | Max 100 characters, UTF8mb4 (supports all languages and emojis; one emoji = 2 characters) |
| API key scope | `authOnly` — can only create auth tokens for users. Referred to as "Auth Key" in the dashboard and docs. `fullAccess` — can perform all REST API operations (create/update/delete users, groups, messages, etc.). Referred to as "REST API Key" in the dashboard and docs. |
| Maximum API keys per app | 25 |

## Users and Groups

| **Property** | **Constraints** |
| - | - |
| Maximum members per group (all features enabled) | 300 (with delivery/read receipts and typing indicators) |
| Maximum members per group (without receipts and typing indicators) | 100,000 |
| Maximum groups per user | 2,000 |
| Maximum friends per user | 1,000 |
| Maximum auth tokens per user | 100 active (rolling retention — oldest tokens archived when limit exceeded) |
| Maximum groups per app | No limit |
| Maximum unread messages per user | No limit |
| Maximum users per app | No limit |
| Maximum bot users per app | 25 |
| User/Group ID (`uid`, `guid`) | Max 100 characters, alpha-dash (`a-z`, `0-9`, `-`, `_`), no spaces. Automatically lowercased. |
| User/Group name | Max 100 characters, UTF8mb4 (supports all languages and emojis) |
| User/Group avatar | Must be a valid URL, max 3,000 characters. Image is not stored by CometChat — URL must remain accessible. |
| User profile link | Must be a valid URL, max 3,000 characters |
| User/Group metadata | Max 5 KB (within the 10 KB POST request body limit) |
| User/Group tags | Max 25 tags, each up to 100 characters, UTF8mb4 |
| Group password | Max 100 characters |
| Group description | Max 255 characters, UTF8mb4 |
| Presence subscriptions | Active for up to 1,000 concurrent online users per app. Beyond 1,000, presence notifications are not sent. Applies across friends, role-based, and all-user subscriptions. |
| Typing indicators (groups) | Sent for groups with up to 1,000 online members |
| Unread message counts (groups) | Not updated for groups with more than 300 members |
| Delivery/read receipts (groups) | Sent for groups with up to 300 online members |

## Roles

| **Property** | **Constraints** |
| - | - |
| Maximum roles per app | 25 |
| Role ID | Max 100 characters, alpha-dash (`a-z`, `0-9`, `-`, `_`), no spaces. Automatically lowercased. |
| Role name | Max 100 characters, UTF8mb4 (supports all languages and emojis) |
| Role description | Max 255 characters, UTF8mb4 |
| Role metadata | No limit |

## Messages

| **Property** | **Constraints** |
| - | - |
| Maximum file upload size | 100 MB per message (includes file + entire POST body) |
| Maximum message size (including metadata) | 65,536 characters (\~65 KB). Applies to the message JSON payload, not file uploads. |
| Message `data` object | Arbitrary JSON, UTF8mb4. Reserved keys: `text`, `attachments`, `custom_data`, `metadata`. Max 10 KB for the `data` object. Attachment file size is counted separately. |
| Message tags | Max 25 tags, each up to 100 characters, UTF8mb4 |
| Conversation tags | Max 25 tags, each up to 100 characters, UTF8mb4 |
| Pinned messages per conversation | 100 per conversation, whether pinned by users or by the app |
| Saved messages per user | 100 per user. Saved messages are private to the user who saved them. |
| Pinned conversations per user | 5 per user |
| Globally pinned conversations per app | 5 per app, shown at the top for every end user |
| Soft-deleted messages retained | Yes |
| Permanently deleted messages (via API) retained | No |

## Calling

| **Property** | **Constraints** |
| - | - |
| Maximum users per call | 50 |
| Default video frame rate | 30 FPS |
| Video resolution | Min 180p, max 720p (varies by layout and user bandwidth) |
| Media encryption | SRTP |
| Audio codec | OPUS |
| Video codec | H.264 |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.