Microsoft Teams Export APIs and Change Notifications for Chats & Channels will be chargeable
The Microsoft Teams Export APIs were released to Beta around a year ago at Microsoft Ignite 2020, designed for those who want to bulk export 1:1 and group chat messages from Microsoft Teams. Whilst in beta they were free to use but the documentation contained the disclaimer “In the future, Microsoft may require you or your customers to pay additional fees based on the amount of data accessed through the API.“
Those APIs have now moved into the v1.0 namespace and become Generally Available. At the same time, a new charging structure has been placed around these APIs. It’s quite complicated and lots of the charging mechanisms don’t go live immediately and so I’ll try my best to explain what you might in the future be charged to use these.
This new charging structure ALSO applies to Change Notification subscriptions to retrieve chat and channel messages.
This is big news for anyone using the Microsoft Teams Export APIs or change notifications to backup, export or access chat and channel data in bulk.
Disclaimer/Warning: All the information in this blog post has come from the following pages and is believed to be correct at the time of publishing. However, this is new and fast-changing information so you should check any charging information and prices yourself before making purchasing/design decisions.
Model A, Model B, Evaluation
First, there are two separate charging models: Model A and Model B. When calling the Export APIs developers need to define which Model they wish to be charged under by using a query parameter in the call. (model=A, model=B). There is also an Evaluation model: this appears to be the default used if no query parameter is supplied.
Model A is designed for Security & Compliance scenarios, with the documentation noting that this model is “restricted to applications performing security and/or compliance functions”. According to the Commercial Licensing Terms:
“Compliance Application” means a software program or service built exclusively to ensure that an organization is complying with their security-related requirements.
“Security Application” means a software program or service built exclusively to protect and defend the information and technology assets of an enterprise.
It’s not clear how this will be enforced. The model requires all users being exported to have an E5/A5/G5 license. The license includes a “seeded capacity” which can be used to export messages without additional charge. Any usage beyond the seeded capacity is charged on a consumption model.
The exact licenses required for Model A use are (at the time of publishing):
- Microsoft 365 E5/A5/G5
- Microsoft 365 E5 Security
- Microsoft 365 E5 Compliance
- Microsoft 365 E5 Information Protection and Governance
- Microsoft 365 E5 Information Protection & Data Loss Prevention
As of right now, any overage in Model A is not charged but this seems to be just a temporary waiver, with Microsoft saying: “In the future, Microsoft will charge a fee for usage over the seeded capacity. It is not possible yet to associate your app with a payment method.” The price for overage is the same as Model B consumption pricing. Microsoft has said that charging for API usage beyond available seeded capacity will be enabled in CY22, and a 30-day notice will be provided before these charges are in effect.
It is the tenant owner’s responsibility (not the app owner) to ensure users are properly licensed: it’s not clear from the documentation whether non-licensed users will be excluded from notification and export results or not.
What is the Seeded Capacity?
The seeded capacity defines how many messages can be exported each month in Model A without any additional consumption cost. At the time of publishing, this includes:
- ChatMessage change notifications, or conversationMember change notifications – 800 chat messages or conversation member change notifications, per user, per month, per app (shared across both calls)
- Get messages across all chats for users or Get messages across all channels – 1600 messages, per user, per month, per app (shared across both calls)
- Updating a chatMessage policyViolation – 800 messages, per user, per month, per app
There are no license restrictions for Model B usage. Today, Model B is free to use. However, the intent is for this model to be chargeable, based on consumption. Developers should bear this in mind when designing and building applications that use Model B.
Regardless of whether you’re using the Export API or change notifications, the charge is $0.00075 per message or notification.
As an example, for a 1000 person organisation where each user generates 100 chat messages a day = 100,000 messages per day = $75 per day to be notified about every chat message. To perform a one-time export of all chat messages in a week: 1000 x 100 x 7 = 700,000 = $525.
Microsoft considers Teams Backup to be a Model B (not A) scenario, meaning that seeded capacity cannot be used for backup applications.
It’s not entirely clear how Model B will be charged, whether it will be taken from Azure credits or applied to a Microsoft 365 invoice, or some other method of charging. I’ve reached out to Microsoft for clarification and will update here once I know more.
For development, testing and evaluation there is a free tier that has no consumption overages and does not impact any seeded capacity. However, it is capped to 500 messages or change notifications per month, per app. Once this limit is exceeded, 402 error codes will be returned for Export API calls and change notifications will stop sending notifications.
What about my app today? Is there a Grace Period?
Lots of these changes don’t come in immediately. Model B consumption charging and overage charging for Model A isn’t live yet, with no firm start date, so no applications are immediately impacted.
In addition, Microsoft has announced a 6-moth grace period starting October 5th 2021 to ensure users can be correctly moved to the appropriate license. However, any new customers after October 5th will be required to have users on the correct license to benefit from the Model A capacity.
However, if you think that your application might be impacted by these changes and charges then now is the time to start planning for what you do about that so that you (or your customers) are not negatively impacted when these charges start to roll out.