Additional chat-related features and issues within Microsoft Teams for business
Hi @Goncalo Luiz,
I hope you are doing well today.
Thank you for the thorough details regarding adding a custom emoji reaction to a Teams chatMessage through Microsoft Graph using a delegated third party Entra ID application.
Based on the behavior and the error responses you shared, the setReaction action currently accepts only a Unicode emoji value in the reactionType field, and the service will reject non Unicode values such as custom or emoji. Custom reactions can be returned in the reactions collection after they are created by Teams clients, but Microsoft Graph does not currently provide a documented or supported write operation for third party delegated apps to create that same custom reaction shape.
Below are some practical workarounds that will suit your situation, with clear steps for each.
1/ Use Unicode reactions through setReaction as the supported write path
- Choose the Unicode emoji character you want to set, for example 💘 or 👍, and ensure the request body contains the actual Unicode character or a valid Unicode escape sequence.
- Send the request to the supported endpoint for your message location.
For a channel message: POST https://graph.microsoft.com/v1.0/teams/{teamId}/channels/{channelId}/messages/{messageId}/setReaction For a chat message: POST https://graph.microsoft.com/v1.0/chats/{chatId}/messages/{messageId}/setReaction
- Use this JSON body and include Content Type: application/json; charset=utf-8 in headers. Example body: { "reactionType": "💘" }
- Validate by calling GET on the message and confirming the reactions array now includes the Unicode reaction entry created by the calling user.
- Reference: chatMessage: setReaction - Microsoft Graph v1.0 | Microsoft Learn
2/ Provide a custom emoji experience by placing the custom emoji in the message body instead of a reaction
- Post a short follow up message or reply that contains the custom emoji rendered in the HTML body, using the Teams supported <customemoji> element that Graph can represent when reading messages.
- Host the image that will be referenced by the message content using Teams hosted content for the message, then reference that hosted content URL in the source attribute of the <customemoji> tag.
- Send the message with HTML content that includes the <customemoji> element so the user sees the custom emoji inline, achieving the same visual intent as a reaction even though it is not stored as a reaction.
- Confirm in Teams client that the emoji renders, then verify via GET that the message body includes the <customemoji> markup and the hosted content reference.
- Reference: Working with Microsoft Teams messaging APIs in Microsoft Graph - Microsoft Graph | Microsoft Learn
Regarding your four specific questions, please find the answers below.
- There is currently no canonical Graph API request that allows a delegated third-party AAD app to set a custom emoji reaction. The API enforces Unicode validation on the reactionType field, and since "custom" does not meet that requirement, no body shape or additional properties will produce a successful response at this time.
- Custom reactions are not writable through setReaction or any other currently published Microsoft Graph endpoint. The read shape visible in GET responses is populated solely by the Teams client through internal APIs, and there is no alternative external write path available today.
- Based on the response pattern observed across all 13 attempts, the reactions sub-resource path appears to be a registered routing stub that does not yet have an active backend handler. This is why different methods return different error codes without any successful outcome, regardless of the request body provided.
- Writing a custom emoji reaction through Microsoft Graph is not supported for any caller type at this time. While this feature does not yet appear as a published item on the Microsoft 365 Roadmap, the presence of the recognized routing stub suggests development may be underway.
Alternatively, as a forum moderator, I hope you understand that I don’t have the ability to modify or escalate product issues directly. The "New Outlook" is still very much a work in progress, and Microsoft frequently adds back legacy features based on user feedback. However, I strongly recommend submitting your feedback through the Microsoft Teams · Community.This is the most effective way to ensure your voice reaches the product team and can be considered about how company-only contacts are handled in search results, with potential improvements being considered for future improvements.
You've clearly identified a real-world challenge, and your suggestion reflects a deep understanding of user needs - feedback like yours is truly valuable and helps shape the future of Microsoft team.
Once you’ve submitted your feedback, feel free to share the link here. I’d be happy to upvote it to help increase its visibility. Moreover, if you are unable to submit feedback, please inform me at your convenience. In that case, I will gladly assist by submitting it on your behalf to ensure your request is properly captured.
Additionally, as other users have raised similar concerns and may not be aware of where to share their feedback, I hope this response helps clarify the situation and suggests a potential next step. Highlighting this information can make it more visible to others in the community who may be facing the same issue, making it easier for them to find guidance and contribute their feedback as well.
Thank you again for your time and for raising this important usability concern. If you have any further questions or need additional assistance, please don’t hesitate to reach out.
Wishing you a smooth rest of your day.
If the answer is helpful, please click "Accept Answer" and kindly upvote it. If you have any extra questions about this answer, please click "Comment".
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.