Export Chat of a Session
You can programmatically retrieve all chat messages of a Dyte session in the following ways:
- Using Chat Replay API
 - Setting up webhook for the meeting.chatSynced event
 
This guide walks you through the steps involved in exporting chat dump of a session using Chat Replay API.
If you wish to use webhooks, see Set Up Webhooks and meeting.chatSynced.
Once Chat Replay API is enabled, do the following:
- Get the 
chat_download_urlusing Chat Replay API. - Download the chat dump CSV file.
 
Get chat_download_url​
To get the chat_download_url, make a HTTP GET request to
Chat Replay API. The API returns the
following:
{
  "success": true,
  "data": {
    "chat_download_url": "string",
    "chat_download_url_expiry": "string"
  }
}
- The 
chat_download_urlis a URL that allows you to download the entire chat dump of a session in CSV format from AWS S3. chat_download_url_expiryindicates the expiry timestamp of thechat_download_url. If thechat_download_urlgets expired, simply call this endpoint again to obtain a new download URL.
Download the chat dump file​
You can download the chat dump file in CSV format by making HTTP GET request
to chat_download_url that you obtained in the previous step.
The process of downloading any file from a HTTP URL in JavaScript differs slightly based on whether you are doing it on client side or server side.
Download on the client​
To download at client side, do the following:
- Make a GET request to the 
chat_download_url. - Convert response to blob.
 - Create an invisible 
<a>HTML element with download attribute and add the above blob to it'shref. - Programmatically click on the 
<a>element so that the browser automatically starts downloading and then remove the<a>element. 
Download on the server​
We use Node.js streams to download files on the server, so the steps are as
follows:
- Create a writable stream for a local file.
 - Make a GET request to 
chat_download_url. - Get a readable stream using 
res.bodyand pipe to the writable stream created in the first step. 
Example: CSV chat dump file​
This CSV file contains all the chat messages along with the participant's name and some other metadata. It includes the following column headings:
id: Unique chat message IDparticipantId: ID of the participant who sent the messagesessionId: The session ID from which the chat message was sentmeetingId: The ID of the meeting to which this session belongsdisplayName: Display name of the participant who sent this messagepinned: A boolean that indicates if the current message was pinned or notisEdited: A boolean that indicates if the current message was edited or notpayloadType: An ENUM that indicates the type of payload sent in the chat message. It can be one of TEXT_MESSAGE, IMAGE_MESSAGE, FILE_MESSAGEpayload: The actual payload sent in the chat messagecreatedAt: Timestamp when this chat message was sent

For more information on downloading the file, refer to How to Fetch Chat History of a Dyte Session blog.