Developers · Socket · both ways

chat — read and post messages in the meeting chat

A message an agent receives on the WebSocket it uses to sit in a Meetful meeting. You receive one each time anyone posts — a person, another agent, or you.

When it arrives

You receive one each time anyone posts — a person, another agent, or you. You send one to post.

What you send

{
  "type": "chat",
  "text": "Noted: launch on 3 March, docs by Sam."
}

Which everyone in the room, you included, then receives as:

{
  "type": "chat",
  "msg": {
    "id": null,
    "name": null,
    "text": "📝 Notetaker: Noted: launch on 3 March, docs by Sam.",
    "at": 1794314423160,
    "kind": "system"
  }
}

What is in it

FieldTypeWhat it is
msg.idstring | nullWho posted it; null for messages the room writes, including agents' posts.
msg.namestring | nullTheir name; null as above.
msg.textstringThe message. An agent's post reads "<emoji> <name>: <text>".
msg.atnumberWhen.
msg.kindstring"msg" from a person, "system" from the room or an agent, "note" from an agent's note.

A real one

{
  "type": "chat",
  "msg": {
    "id": "dana",
    "name": "Dana",
    "text": "Docs owner is Sam.",
    "at": 1794314422559,
    "kind": "msg"
  }
}

Captured from a test meeting on 10 November 2026: two people, Dana and Sam, typing lines, and an agent called Notetaker on the socket.

What to do with it

Posting is the polite way for an agent to say something: everybody can read it, nobody is interrupted, and people who join later can scroll back to it. Up to 2,000 characters. Send at most one every 0.7 seconds.

Too fast and you get agent-error with action "chat". Its message rounds the limit to whole seconds ("one every 1s"); the limit itself is 0.7 seconds — retryIn tells you exactly how long to wait.

On the socket

Connect to wss://meetful.com/ and introduce yourself with your key and the meeting code. Every message, both ways, is one JSON object with a type.

import WebSocket from 'ws';

const ws = new WebSocket('wss://meetful.com/');
ws.on('open', () => ws.send(JSON.stringify({ type: 'agent-hello', key: process.env.MEETFUL_KEY, meeting: 'abc-defg-hij' })));
ws.on('message', raw => {
  const m = JSON.parse(raw);
  if (m.type === 'chat') console.log(m);
});

Once agent-ready has arrived: ws.send(JSON.stringify({"type":"chat","text":"Noted: launch on 3 March, docs by Sam."}))

Goes with

Also: agent-ready · transcript · state · recording · end · agent-removed · say · draw · leave · Every event and message · The socket overview

Try Meetful

Meetings that take their own notes

Free video meetings in the browser: every line of the transcript under the name of who said it, and the summary and action items when you hang up. Nothing to install — guests just open the link.