Receiving Chat Messages

Platform Support

PlatformSupportedNotesLimitations
ZoomChat messages are captured and relayed to your Real-Time Endpoints from the global chat, direct messages to the bot, as well as replies to messages sent to the bot.Receiving chat messages in the Zoom Native Bot is not currently supported
Google Meet
Microsoft TeamsBots can only receive chat messages if the meeting chat is accessible to anonymous participants.
Cisco Webex
Slack Huddles

Setup & Configuration (Real-time)

To receive chat message webhooks, set a Real-Time Webhook Endpoint with the participant_events.chat_message event when calling Create Bot:

curl --request POST \
     --url https://us-east-1.recall.ai/api/v1/bot/ \
     --header "Authorization: $RECALLAI_API_KEY" \
     --header "accept: application/json" \
     --header "content-type: application/json" \
     --data '
{
  "meeting_url": "https://meet.google.com/hzj-adhd-inu",
  "recording_config": {
    "realtime_endpoints": [
      {
        "type": "webhook",
        "url": "https://my-app.com/api/webhook/recall",
        "events": ["participant_events.chat_message"]
      }
    ]
  }
}
'

Then, as long as the bot is in the in_call_recording or in_call_not_recording states, the configured endpoint will receive chat messages as webhook events.


Event Payload

Whenever a message readable by the bot is received in the chat, your endpoint will receive a webhook event with the following payload:

{
  "event": "participant_events.chat_message", // participant_events.join, participant_events.leave, participant_events.speech_on, participant_events.speech_off (& more)
  "data": {
    "data": {
      "participant": {
      	"id": number,
      	"name": string | null,
        "is_host": boolean,
        "platform": string | null,
        "extra_data": object
    	},
      "timestamp": {
        "absolute": string,
        "relative": float
      },
      "data": 
      	{
          "text": string,
          "to": string
        } // populated for `participant_events.chat_message` event
      	| null
    },
    // The real-time endpoint configured to receive data
    "realtime_endpoint": {
      "id": string,
      "metadata": object,
    },
    // The associated ParticipantEvents Resource encapsulating this data
    "participant_events": {
      "id": string,
      "metadata": object
    },
    "recording": {
      "id": string,
      "metadata": object
    },
    // The related bot, if the recording is produced by a bot
    "bot": {
      "id": string,
      "metadata": object
    }
  }
}

Setup & Configuration (Async)

After the call has ended, you can also download all the chat messages that were sent during the meeting via the Retrieve Bot endpoint. In the response from this endpoint, you should access the array of recordings to find the bot's recording. From there, you can download all participant events, including chat messages, by accessing media_shortcuts.participant_events.data.participant_events_download_url.

{
  "id": "f8e9d7c6-b5a4-4321-9876-543210fedcba",
  "media_shortcuts": {
    "participant_events": {
      "id": "a3b2c1d0-e9f8-4567-8901-234567890abc",
      "created_at": "2025-08-15T14:22:17.123456Z",
      "status": {
        "code": "done",
        "sub_code": null,
        "updated_at": "2025-08-15T14:28:33.987654Z"
      },
      "metadata": {},
      "data": {
        "participant_events_download_url": "...",
        ...
      }
    }
  },
  "metadata": {}
}