Overview
Reactions allow users to respond to content and chat messages with emoji. The platform supports 15 emoji types that can be applied to both content items (posts) and chat messages (comments/replies).
Supported Emoji
| Identifier | Emoji |
|---|---|
grinning | 😀 |
crying | 😭 |
heart_eyes | 😍 |
party | 🥳 |
angry | 😡 |
exploding_head | 🤯 |
rocket | 🚀 |
star_eyes | 🤩 |
sunglasses | 😎 |
hugging | 🤗 |
heart | ❤️ |
praying | 🙏 |
raising_hands | 🙌 |
fire | 🔥 |
thumbs_up | 👍 |
Reaction Targets
Reactions can be applied to two types of objects:
- Content items (posts) — via
/api/content/:id/react - Chat messages (comments and replies) — via
/api/chat/:id/reactions
How Reactions Are Returned
Reaction data is returned in two ways:
Inline on list/detail endpoints
When you fetch posts or chat messages, reaction data is already included in each item:
-
Posts (
GET /api/posts,GET /api/posts/:id) include:reactionCounts— array of{ emoji, count }objectsmyReactions— array of emoji identifiers the authenticated user has used
-
Chat messages (
GET /api/chat,GET /api/replies) include:reactions— array of{ emoji, count }objectsmyReactions— array of emoji identifiers the authenticated user has used
Dedicated endpoints
GET /api/content/:id/reactions— returns aggregated counts for a specific content item, with optional filtering by emoji to get the list of reactor users (id, name, photoUrl).GET /api/chat/:id/reactions— same pattern for chat messages.
Uniqueness
Each user can only react once per emoji per target. Attempting to add a duplicate reaction on content returns 200 with alreadyExists: true. On chat messages, the toggle endpoint automatically removes an existing reaction.
Error Handling
| Status Code | Description |
|---|---|
| 400 | Missing or invalid emoji parameter |
| 401 | Authentication required (write endpoints) |
| 403 | User does not have access to the content item |
| 404 | Content item or chat message not found |