Additional team and channel-related features and issues within Microsoft Teams for business
The error indicates the request is using application permissions. For replying to an existing Teams channel message, that is not supported for normal posting.
For this API:
POST /teams/{team-id}/channels/{channel-id}/messages/{message-id}/replies
The supported permissions are:
- Delegated (work or school account):
ChannelMessage.Sendleast privilege, orGroup.ReadWrite.All - Delegated (personal Microsoft account): Not supported
- Application:
Teamwork.Migrate.Allonly for migration scenarios
Key point:
- Application permissions are only supported for migration/import scenarios for channel message replies.
- For a normal in-house integration that posts replies visible in Teams, the supported approach is delegated authentication with a signed-in work or school user and
ChannelMessage.Send.
Recommended authentication approach:
- Acquire a delegated access token for a signed-in Microsoft Entra work or school user.
- Request
ChannelMessage.Sendas the least-privileged permission. - Call:
POST /teams/{team-id}/channels/{channel-id}/messages/{message-id}/replies - Include a JSON body with at least the
bodyproperty. - Expect
201 Createdon success.
Minimum request requirements:
- Header:
Authorization: Bearer {token} - Body: a
chatMessagepayload wherebodyis required
There is no Microsoft-supported way in the provided documentation to post normal replies to existing Teams channel messages using application permissions. The only documented application-permission path is message migration/import using Teamwork.Migrate.All.
Also note that Microsoft recommends not using the standard create message flow for data migration; migration scenarios should use the import messages flow instead.
Example conclusion for this case:
- If the tool is using client credentials/app-only, that explains the error.
- To post a regular reply, switch to delegated auth and grant
ChannelMessage.Send. - If the requirement is truly app-only posting, the documented support is limited to migration/import, not regular interactive channel replies.