Documentation

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

PlanPriceChat rooms
Free trialNothing for 7 days1 chat room on 1 domain
Basic$9 a month1 chat room on 1 domain
Premium$19 a monthUp 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.

Two lines, not twenty. The room carries its own styles and scripts inside the frame, so it cannot collide with the CSS or JavaScript of the page around it.

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

AttributeRequiredWhat it does
data-roomYesThe room id, taken from the room's own address.
data-targetNoId of the element to fill. Without it the loader uses the element the tag sits in.
data-keyNoYour embed key. Needed unless the page's domain is the room's own domain.
data-heightNoFrame height in pixels. Falls back to the container, then to 640.
data-titleNoThe 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

NameTypeNotes
keyStringThe 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

SituationWhat to set
Full width in a normal pagewidth="100%" and a height between 560 and 720.
Inside a sidebar or cardGive the container a minimum height rather than a fixed one.
Script loaderSet the height on the container and let the frame follow it.
MobileKeep width="100%". A pixel width will overflow.
Height matters. A frame shorter than roughly 480px hides the message list on a phone. If the room looks empty on mobile, this is the first thing to raise.

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.

CauseWhat to do
The key in the snippet is missing or wrongCopy the snippet again from the Embed API page.
The frame sits on an address that carries no key and is not the room's domainAdd the key, or point the room at that domain.
The key was regenerated after the snippet was copiedPaste the new snippet wherever the room is embedded.
The key was copied by hand and lost charactersCopy 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

ItemValue
Room addresshttps://www.chatsocket.net/chat/{id}
Keyed addresshttps://www.chatsocket.net/chat/{id}?key={key}
Loaderhttps://www.chatsocket.net/embed/chatroom.js
Allowed to embedKeyed request, or a page on the room's own domain
Plain linkAlways allowed, with or without a key
Minimum sensible height480px
Issue and rotate a keyControl panel, Embed API
Snippet not working? The credentials screen names the room it was called for. Sign in to the control panel, open the Embed API page, and copy the snippet from there rather than editing an old one.

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

SettingWhat it does
NameThe room title, shown in the header, in browser tabs and on any embed.
WebsiteThe address the room is published on. It is also the one domain the room may be embedded from.
TopicThe 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.

SettingWhat it does
RegistrationWhether visitors can create an account in the room.
GuestsWhether visitors can talk by picking a nickname without an account.
AgeThe age collected at sign up: a full birth date, or an age picker.
Minimum age to registerThe youngest age that may create a member account. Guests are not affected. COPPA keeps it at 13 or higher.
Maximum age to registerThe oldest age that may create a member account. Left at 99 the ceiling stays open.
COPPA complianceAlways on. The minimum age stays at 13 and cannot go lower.
Child SafetyWhen 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 LockWhen 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 announcementsShows 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 loginKeeps a guest signed in across visits for the number of hours set beside it.
Accounts per addressHow 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.
GenderSign up offers Male, Female, Other and Rather not say.
Three useful pairings. Guests on and registration off gives a room anyone can drop into. Both on lets people try first and register later. Guests off makes the room members only.

Appearance

SettingWhat it does
ColorsSwatches 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.
LayoutSingle column for the classic chat, side by side for a room with the member list beside the messages.
FontThe typeface the room is set in, previewed as you pick it.
IconsThe 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.
StyleThe 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.
ModeLight, dark, or following the visitor's own system setting.
User listOnline and offline in groups, everyone in one list, or a compact list that shows only who is here.
MenuSide menu beside the chat, or a floating menu over it.
Lazy Load ImagesPictures fade in over a grey shimmer placeholder instead of popping in half loaded.
Main chat datesShows when each main chat message was sent.
DM datesShows when each direct message was sent, beside the seen mark.
Date formatSmart 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 positionIn chat prints dates beside messages. In the menu hides them behind each message's three dots.
ChatSocket watermarkThe small version bar at the bottom of the left menu. Premium rooms can hide it; every other plan always shows it.

Media

SettingWhat it does
RadioThe stream the room plays, plus the station name shown on the player.
Radio spotWhere the player sits: header or footer.

Voice

SettingWhat it does
SpeakersHow 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.
TURNThree fields: the relay Server address, and the Username and Password for it. Leave them all empty unless your host requires them.

Security

SettingWhat it does
Flood controlThree 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.
LinksFilters messages for links, with an allow list of the domains that may be posted. Turning the filter off lets anything through.
Auto-muteMutes an account that has just been kicked, for the minutes set beside it.
CaptchaAsks 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 protectionLocks 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.

SettingWhat it does
Provider, GIPHY key, Tenor keyWhich 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 shownHow many results a search returns at once. Lower is quicker on slow connections.
YouTubeLets a YouTube link open with its title and thumbnail. Without a key the link still plays, it just carries no artwork.
Connection checkReads 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

SettingWhat it does
Login imageThe picture behind the sign in screen.
Logo, Icon, Notice iconThe room logo, the browser tab icon and the icon shown beside notices.
Kick image and Kick textThe picture and the line shown to someone who was kicked.
Ban image and Ban textThe picture and the line shown to someone who was banned.
Chat background and Private backgroundBackdrops for the main chat and for direct messages.
Chat background dimShows 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 avatarsFallback 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

SettingWhat it does
Per postPoints given for each message sent.
Per DMPoints given for each direct message sent.
Active mins and Per activePoints 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

SettingWhat it does
Help textWritten here, it replaces every line of the chat help window. Whatever you type is what the help button opens.
Kick pageThe 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 pageThe 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.

Premium. Pages of your own are part of Premium. Without it the panel keeps the stock kick and ban pages, which already follow your room colours.

Other

SettingWhat it does
LanguageThe interface language of the room, and the language of the control panel.
Direct message popupWhether a new direct message opens a window instead of only showing in the list.
Conversation startersShows 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.
ReactionsWhen off, every reaction control hides. Rank permissions still apply when on.
Message editingWhen 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.

← Back to the home page