
However, there is a sentence in the documentation page which caught my eye: A null value or non-existent value indicates that there are no more pages of data to retrieve. To retrieve all the data, you need to keep calling the nextlink URLs until that value is null. For all but the very smallest tenant, that data will be too much information for a single response body, and a nextlink will be provided in the response (a property called That provides the URL to the next set of data. The response from these calls is JSON data representing messages. It’s also worth realising that this API is NOT something which provides all the export data in a single ZIP file or similar.

: enables access to all 1:1 and Group chat messages.Also, it’s classed as a Protected API, so you need to get your application ID validated for that. This API call is still in preview, and on the Beta endpoint. GET /chats/allMessages?$top=50&$filter=lastModifiedDateTime gt T18:03:11.591Z and lastModifiedDateTime lt T21:00:09.413Z Gotchas You can use some basic OData filters as well, such as specifying a date/time period and limiting the number of messages: It has a high throttling bar (200 RPS per app per tenant) and a single endpoint to expose all messages for a user: There is a new API call, designed for those who want to bulk export 1:1 and group chat messages from Microsoft Teams. This was announced at Ignite in passing but with little detail until a Microsoft Documentation post yesterday.

You can now Bulk Export Teams chat data with a dedicated Graph API call
