Documentation
The embed reference and every control panel setting, in one place. Search it, or jump from the index.
Nothing matches that search.
Creating a room
Sign up in the control panel, name the room, choose the address it will live on and save. Every room
has a permanent address of the form /chat/<id>, for example /chat/1,
which opens on its own with no embedding at all.
The panel is organised in tabs. Each tab below is documented in the order the panel shows it, and the names match what you see on screen.
Choosing a plan
| Plan | Price | Chat rooms |
|---|---|---|
| Free trial | Nothing for 7 days | 1 chat room on 1 domain |
| Basic | $9 a month | 1 chat room on 1 domain |
| Premium | $19 a month | Up to 15 chat rooms, each on its own domain |
One room runs on one address, whichever plan you are on. Basic runs 1 chat room on 1 domain, Premium allows up to 15. Premium lets the same account run up to fifteen rooms, each one pinned to the domain it was given. Plans are managed from Plans and billing in the panel.
First steps
A room works the moment it exists, so these four things are simply the order most owners follow before they invite anyone.
- Set the room's identity. Name, topic and colours live in Settings, and the address in the Website field is also the domain the room may be embedded from.
- Decide who may enter. Registration, guest entry and the age rules are all on the Members tab of Settings.
- Hand out ranks. Ranks decide who counts as staff, and Permissions decides what each rank may do.
- Put the room on your site. Copy the iframe snippet from the Embed API page, or
link straight to
/chat/<id>.
Nothing here is permanent. Settings, ranks and the embed can all be changed later without moving the room's address.
The embed key
Every room carries one embed key, issued on the Embed API page of the
control panel. It is the credential a page presents when it embeds a room it does not own, sent on
the frame address as ?key=.
One key exists per room and it holds until you regenerate it. Only the panel ever shows it, so it is handled like a password rather than a public value.
The iframe snippet
A room lives at a permanent address of the form /chat/<id>. Drop an iframe on it and
the room fills the frame. This is the form the control panel hands you on the
Embed API page, with the key already in place.
<iframe
src="https://www.chatsocket.net/chat/1?key=YOUR_KEY"
title="Chat room"
width="100%"
height="640"
loading="lazy"
style="border:0;border-radius:12px">
</iframe>
Swap 1 for your room id and YOUR_KEY for the key on the Embed API page.
The frame works inside a page builder, a CMS, a wiki or plain HTML.
Script loader
When the room should fill a container you already have, use the loader instead. It reads the room and key from the tag and sizes the frame to fit.
<div id="chatsocket-room" style="height:640px"></div>
<script src="https://www.chatsocket.net/embed/chatroom.js"
data-room="1"
data-target="chatsocket-room"
data-key="YOUR_KEY"
defer></script>
Attributes on the loader
| Attribute | Required | What it does |
|---|---|---|
data-room | Yes | The room id, taken from the room's own address. |
data-target | No | Id of the element to fill. Without it the loader uses the element the tag sits in. |
data-key | No | Your embed key. Needed unless the page's domain is the room's own domain. |
data-height | No | Frame height in pixels. Falls back to the container, then to 640. |
data-title | No | The frame's accessible title. Defaults to Chat room. |
The loader validates every value before it uses it, so a mistyped attribute produces a message in the browser console instead of a broken frame.
Query parameters
| Name | Type | Notes |
|---|---|---|
key | String | The embed key issued for the room. Send it when the page hosting the frame is not the room's own address. A room with no key configured refuses every keyed request. |
There are no other parameters. Theme, entry policy and moderation are decided in the control panel, so a visitor cannot change how your room runs by editing the URL.
Allowed domain
Each room runs on a single domain: the address in the Website field of its settings. Open Embed API in the control panel to read it and, on Premium, to change it. A frame opened from that address needs no key at all.
Basic runs 1 chat room on 1 domain. Premium allows up to 15, each room on the domain it was given.
Who may embed the room
Before a frame renders, one of these has to hold:
- The key matches. The address carries
?key=and it is the key issued for this room. - The domain is allowed. The address carries no key, and the page comes from your room's own address or from a domain on your allowed list.
Anything else shows the credentials screen instead of the room. An ordinary link to
/chat/1 is never treated as an embed, so sharing the address keeps working.
Sizing
| Situation | What to set |
|---|---|
| Full width in a normal page | width="100%" and a height between 560 and 720. |
| Inside a sidebar or card | Give the container a minimum height rather than a fixed one. |
| Script loader | Set the height on the container and let the frame follow it. |
| Mobile | Keep width="100%". A pixel width will overflow. |
Error screens
Credentials screen
Shown when neither rule above holds. The visitor sees a plain message with the room name, and no part of your chat.
The message itself reads That Chat Cant Work Incorrect Credentials Detected
, so searching for
those words brings whoever is wiring the frame straight to this table.
| Cause | What to do |
|---|---|
| The key in the snippet is missing or wrong | Copy the snippet again from the Embed API page. |
| The frame sits on an address that carries no key and is not the room's domain | Add the key, or point the room at that domain. |
| The key was regenerated after the snippet was copied | Paste the new snippet wherever the room is embedded. |
| The key was copied by hand and lost characters | Copy it from the panel rather than typing it. |
Regenerating the key
The Embed API page has a Regenerate key action. It asks for your account password first, because every site already using the old key stops working immediately. The new key then lands in place and the copy code box shows it without a reload.
- Regenerate the moment a key reaches a public repository or a public ticket.
- Treat it as a breaking change: every site still holding the old snippet stops showing the room.
- Paste the new snippet wherever the room is embedded before you close the panel.
HTTPS and cookies
The room is served over HTTPS, so it only opens on a page served over HTTPS as well. It sets one cookie to remember who is signed in, and there is no tracking script of any kind inside the frame.
Quick reference
| Item | Value |
|---|---|
| Room address | https://www.chatsocket.net/chat/{id} |
| Keyed address | https://www.chatsocket.net/chat/{id}?key={key} |
| Loader | https://www.chatsocket.net/embed/chatroom.js |
| Allowed to embed | Keyed request, or a page on the room's own domain |
| Plain link | Always allowed, with or without a key |
| Minimum sensible height | 480px |
| Issue and rotate a key | Control panel, Embed API |
Dashboard
The dashboard is the command deck for the room. The room card carries the name, the plan badge, the online or paused state, the plan state, how many members are online now and how many accounts need attention.
Under it sit the member counts as live figures: users, muted, banned, admins, moderators, custom ranks and the room's RJ and DJ accounts.
General
| Setting | What it does |
|---|---|
| Name | The room title, shown in the header, in browser tabs and on any embed. |
| Website | The address the room is published on. It is also the one domain the room may be embedded from. |
| Topic | The line under the room name, for what the room is about right now. |
Members
The Members tab decides who may join an account in the room and at what age.
| Setting | What it does |
|---|---|
| Registration | Whether visitors can create an account in the room. |
| Guests | Whether visitors can talk by picking a nickname without an account. |
| Age | The age collected at sign up: a full birth date, or an age picker. |
| Minimum age to register | The youngest age that may create a member account. Guests are not affected. COPPA keeps it at 13 or higher. |
| Maximum age to register | The oldest age that may create a member account. Left at 99 the ceiling stays open. |
| COPPA compliance | Always on. The minimum age stays at 13 and cannot go lower. |
| Child Safety | When on, members under 18 can only reach their own age group: 13 to 15, or 16 to 17. They can never reach adults. Staff can always reach members. |
| Age Lock | When on, a member can edit their age or birth date only once. Their age still updates on every birthday from the saved birth date. |
| Birthday announcements | Shows only with the birth date picker. When on, the room celebrates in chat when a member joins on their birthday, and the member gets a personal greeting. |
| Guest extended login | Keeps a guest signed in across visits for the number of hours set beside it. |
| Accounts per address | How many guest and member accounts may register from one address. Zero means no limit. Set to 1 and one address holds one guest and one member at most. |
| Gender | Sign up offers Male, Female, Other and Rather not say. |
Appearance
| Setting | What it does |
|---|---|
| Colors | Swatches in a grid: primary, header, footer, light base, dark base, icons and head icons. Each has a preset row, a spectrum picker for a custom colour, a hex field and a gradient button on the header and footer. |
| Layout | Single column for the classic chat, side by side for a room with the member list beside the messages. |
| Font | The typeface the room is set in, previewed as you pick it. |
| Icons | The icon set the interface is drawn with. Sets marked solid fill in; sets marked outline are line only, because the pack has no solid version. |
| Style | The pack that dresses the room: glass, cartoon, clay, neo, feed, mono, metro, basic, irc, midnight, sunset, forest, ocean or candy. A pack changes the shape and rhythm of the room, never your colours. |
| Mode | Light, dark, or following the visitor's own system setting. |
| User list | Online and offline in groups, everyone in one list, or a compact list that shows only who is here. |
| Menu | Side menu beside the chat, or a floating menu over it. |
| Lazy Load Images | Pictures fade in over a grey shimmer placeholder instead of popping in half loaded. |
| Main chat dates | Shows when each main chat message was sent. |
| DM dates | Shows when each direct message was sent, beside the seen mark. |
| Date format | Smart counts recent messages down, names the day within a week, and dates older ones. Relative always counts down, Date and time always prints day, month and time. |
| Date position | In chat prints dates beside messages. In the menu hides them behind each message's three dots. |
| ChatSocket watermark | The small version bar at the bottom of the left menu. Premium rooms can hide it; every other plan always shows it. |
Media
| Setting | What it does |
|---|---|
| Radio | The stream the room plays, plus the station name shown on the player. |
| Radio spot | Where the player sits: header or footer. |
Voice
| Setting | What it does |
|---|---|
| Speakers | How many microphones can be open at once. Everyone else hears whoever holds a mic; if the microphones are full, the next person waits for one to free up. |
| TURN | Three fields: the relay Server address, and the Username and Password for it. Leave them all empty unless your host requires them. |
Security
| Setting | What it does |
|---|---|
| Flood control | Three fields: how many messages one account may send before it is muted, how many minutes that mute lasts, and how many hours a guest account is remembered for. |
| Links | Filters messages for links, with an allow list of the domains that may be posted. Turning the filter off lets anything through. |
| Auto-mute | Mutes an account that has just been kicked, for the minutes set beside it. |
| Captcha | Asks for a check on sign up. The provider, site key and secret key are entered under it, and the setting belongs to Premium. |
| Brute force protection | Locks an address out after 2 to 12 wrong passwords, for 1 to 72 hours. The lock shows a warning and lifts itself. 24 hours is the default. |
API Settings
The screen for keys borrowed from other services. It sits beside Settings in the sidebar, and only what is listed here is on it.
| Setting | What it does |
|---|---|
| Provider, GIPHY key, Tenor key | Which service the GIF picker searches, and the key for it. Leave a key empty and that source simply stops offering results. |
| GIFs shown and Stickers shown | How many results a search returns at once. Lower is quicker on slow connections. |
| YouTube | Lets a YouTube link open with its title and thumbnail. Without a key the link still plays, it just carries no artwork. |
| Connection check | Reads where a connection comes from before it is let in, then waits, kicks or bans it. Leave the key empty to switch it off. It applies inside this room only, and the address is never shown to visitors. |
Images
| Setting | What it does |
|---|---|
| Login image | The picture behind the sign in screen. |
| Logo, Icon, Notice icon | The room logo, the browser tab icon and the icon shown beside notices. |
| Kick image and Kick text | The picture and the line shown to someone who was kicked. |
| Ban image and Ban text | The picture and the line shown to someone who was banned. |
| Chat background and Private background | Backdrops for the main chat and for direct messages. |
| Chat background dim | Shows only while a chat background is set. Dims the picture from 1 (almost fully shown, light mode keeps a readability wash) down to 0.1, so messages stay readable. 0.4 is the default. |
| Default avatars | Fallback photos for members, guests, male and female profiles. Used when a profile has no photo of its own. |
Each image has a choose button and a remove button. Removing one returns the room to the default.
Sounds
A list of room events with a sound for each and a switch beside it. Pick a sound from the list, switch it on, and save. Events left switched off stay silent. The list covers messages, direct messages, joins, leaves, kicks, bans, points and the microphone.
Points
| Setting | What it does |
|---|---|
| Per post | Points given for each message sent. |
| Per DM | Points given for each direct message sent. |
| Active mins and Per active | Points given for simply being in the room, checked every few minutes. |
Points are held per account and shown on profiles. The whole feature belongs to the plan, so it can be switched off by the plan itself as well as by these numbers.
Pages
| Setting | What it does |
|---|---|
| Help text | Written here, it replaces every line of the chat help window. Whatever you type is what the help button opens. |
| Kick page | The page shown to someone who was kicked. Upload an HTML file or type markup in the field; the title, the stylesheets and the icon of your file are picked up and used, and scripts are removed when you save. |
| Ban page | The same, for the page shown to someone who was banned. |
On the kick page, #kickTimer receives the countdown until the person can rejoin and
#kickIcon receives the kick image. On the ban page, #banIcon receives the ban
image. Leave those elements out and the page simply shows as written.
Other
| Setting | What it does |
|---|---|
| Language | The interface language of the room, and the language of the control panel. |
| Direct message popup | Whether a new direct message opens a window instead of only showing in the list. |
| Conversation starters | Shows a short list of opening questions in an empty room. |
| Upload (MB) | The largest image or file a member may upload in chat. Pictures are stored as WebP to save space at the same quality. |
| Reactions | When off, every reaction control hides. Rank permissions still apply when on. |
| Message editing | When off, nobody edits messages. Rank permissions still apply when on. |
Saving
Settings are saved from the Save button at the bottom of the panel. The screen stays where it is: the answer comes back as a short notice, so the tab, the scroll position and anything half typed are kept.
Room changes reach the chat within a few seconds. Appearance changes are visible the moment you save, because the room reads them on the next paint.
AI
The AI page runs a bot that sits in the room as a member. Anyone can talk to it by mentioning its name, in the main chat or in a direct message, and it answers in the language each message is written in.
Providers
Switches the bot on, sets the primary provider, and turns on the provider rotator, which tries your providers in order until one answers so a rate limit on one service does not stop the bot.
Keys & Models
One card per provider, each holding an API key and a model pick list. The keys are yours: provider usage bills to your own provider account, and ChatSocket adds no charge on top. The list ends with Another model id for any model the provider offers that is not listed, and a Test connection button checks the key and model before you save. Saved keys are never shown again; leaving the field empty keeps the one already stored.
Bot
The bot's identity and manner: name, avatar, bio, text streaming, the language it answers in and whether it may read feeds for videos and news. Show in member list hides the bot from the list without stopping it answering mentions. Members reach it by writing its name with or without @, or by quoting one of its answers, and every answer quotes the message it replies to. The video and news command words are renamed here; the command list below always shows the live words. A free GNews key gives the room its own news quota instead of the shared feed.
Images
The command members type to have a picture drawn, the image service that draws it, and the key for that service. Rooms generate one picture per minute; faster taps hear when to retry. Cloudflare Workers is the free service: it needs a worker address and key, and the page carries the setup script. Videos arrive as the same preview card members get when they paste a link: thumbnail first, player on click. The news command alone brings the latest headlines; with a topic it narrows the search. A free GNews key gives the room its own news quota instead of the shared feed.
Moderation
Smart moderation checks text and pictures before they appear and holds anything harmful. Text and images can be checked separately, and an optional key is used only for moderation.
Configuration
Temperature, the system prompt that tells the bot how to behave, memory over recent messages, how many messages are kept for context and the token cap on each answer.
Supported providers
- OpenAI
- Anthropic Claude
- DeepSeek
- xAI Grok
- Groq
- OpenRouter
- Cerebras
- Mistral
- Google Gemini
Ranks
Ranks are listed strongest first, and each one is defined by three things only: its order, its name and its icon. Deleting a rank moves its members down to the lowest rank, and a room may hold up to twenty ranks.
The Owner rank cannot be deleted. The Bot rank is system generated for the AI feature and is invisible in the list: it cannot be renamed, deleted, moved or assigned to a member.
Members management
The Members page is a live list of every account in the room with its rank and current state, counts along the top for all, banned, muted and kicked, and a search by username.
The Action button reads the member's state before it offers anything: a banned account is offered Unban, a muted one Unmute, a kicked one Unkick, and an account with nothing on record is offered Mute, Kick or Ban with a duration and a reason. Edit Rank opens a modal that moves the member to any rank, Owner included.
Permissions
The permissions matrix sets what each rank may do, in four blocks: staff actions such as kick, mute, ban, deleting messages and pinning; member actions such as direct messages, voice, calls and uploads; the profile fields a staff rank may edit on somebody else; and messages and media, which holds editing your own chat and DM messages plus posting GIFs, YouTube videos and stickers.
Higher ranks pick up anything ticked for the ranks beneath them, so a permission granted once covers the ranks above it. The Owner row shows full access and is locked.
Editing happens from the message menu: Edit loads the text into the input with an editing ribbon above it. Send saves the change and marks the message edited, the X drops it, and sending the same text simply stops editing. YouTube links are checked wherever they are pasted, and the sticker tray answers to its own switch. Reactions live on messages too: pick one from the menu, tap a badge to join it, and hover a badge to see who is in. The React switch gates the whole feature.
Reaction tray
Five quick emoji sit in front with a plus button. The plus opens 20 more unique ones, never the same five again.
Emojis
The Emojis page holds three tabs. Emojis lists every static picture, Stickers every animated one, and Reactions holds the keyboard characters members can react with, plus any custom one you add. Owners group codes into named categories with icons, and the chat picker shows those categories as tabs with a star for personal favourites.
Members keep their own favourites from the star tab: anything added or removed updates immediately, and removing a favourite never deletes the picture itself.
Action history
Every panel action on a member is recorded with who applied it, what was applied and the reason given, and the record is read from that member's profile.
Reading it is gated by the view_history permission on the Permissions page, and the room owner always has it whatever the matrix says.
Cloud storage
Cloud storage keeps the room's uploads in your own bucket instead of on the server running the chat. One provider is used at a time: Amazon S3 or Cloudflare R2, with the credentials, region and bucket name for it.
Plans
The plans page shows what is running on the room now, lets you activate a plan or move to another one, lists what the current plan includes, and holds one invoice row for every billing month of the room. Features unlock the moment a payment is received. Basic at $9 a month runs one room with the full chat, points, filters, profile music, voice messages, the public listing and the embed key. Premium at $19 a month runs up to 15 rooms and adds captcha, voice broadcast, custom kick and ban pages, watermark removal, sign in with Google, cloud storage, and the AI bot Evan with chat answers, picture generation, news headlines, video search and smart moderation.
Word filters
Three filters run on the way messages and sign ups arrive. Profanity replaces matching words with four asterisks in any language, blocked words are removed from chat altogether, and mail refuses sign ups from addresses outside the domains on your list.
Words you add sit alongside the built-in lists, and each filter has its own switch.
API connect
The Embed API page holds the room's embed key, the copy code box with the iframe snippet, and the domain the room runs on, which can be changed there on Premium.
It also states what happens when a frame arrives without the right credentials, and holds the regenerate action described above.
Logs
The logs page holds two records for the room: the system log, and the moderation actions taken in it, with who applied each one and why.
Website address (SaaS)
The Website address on the SaaS settings page is the public address of the install. Embed code, footers and links use it everywhere, so moving domain means changing it there once. Changing it needs the account password and the current two-factor code, and two-factor must be on first.
Support
Support takes questions by email, with a reply within one working day. Room-down reports jump the queue.
Two-factor authentication
A 6 digit code from an authenticator app stands between a stolen password and your control panel. It is switched on from the Edit Info page, in a modal that shows a QR code to scan and the manual entry key underneath it for anyone who prefers to type the key in.
The key works with Google Authenticator, Twilio Authy and Microsoft Authenticator, and enrolment finishes with the 6 digit code those apps show. Once it is on, every sign in asks for a code, and switching it off asks for the current code first. Codes get five tries per five minutes per account, then the door stays shut a while against guessing.
Sessions
With two-factor authentication on, signing in holds a partial session until the code arrives: a full session is not created until the code proves possession of the app.
The chat control panel and the network console keep separate sessions, so signing into one never opens or closes the other. The room itself sets a single cookie to remember who is signed in, over HTTPS, and carries no tracking script.
Embed key
The embed key is the only credential a page needs to open a room it does not own, so it is handled like a password: it is shown in the control panel alone and no visitor ever sees it.
Regenerating it asks for the account password, because every site already using the old key stops working immediately. Rotate it whenever a key reaches a public repository, then paste the new snippet wherever the room is embedded.