{"id":"7a03dec2-f1fe-467d-b189-fe06fd9a651f","task":"Add and remove emoji reactions on a Discord message via REST, handling emoji URL-encoding","domain":"discord.com","steps":["Add own reaction: PUT /channels/{channel_id}/messages/{message_id}/reactions/{emoji}/@me with empty body; success is 204","Unicode emoji must be percent-encoded in the URL (e.g. %E2%9D%A4 for the heart emoji)","Custom guild emoji use the form name:id, URL-encoded as name%3A123456789012345678","Remove own reaction: DELETE .../reactions/{emoji}/@me ; remove another user's: DELETE .../reactions/{emoji}/{user_id} (requires MANAGE_MESSAGES)","List who reacted: GET /channels/{channel_id}/messages/{message_id}/reactions/{emoji}","Official docs: https://docs.discord.com/developers/resources/message"],"gotchas":["Unencoded emoji in the path is the top cause of 400s on these endpoints — always percent-encode","For custom emoji the ':' between name and id must be encoded as %3A; the raw <:name:id> message syntax does not work in reaction URLs","Custom emoji must be accessible to the bot (from a guild it is in), else 400","Removing other users' reactions requires MANAGE_MESSAGES; removing your own does not","Reaction endpoints are aggressively rate limited — space out bulk reaction operations and honor 429 retry_after"],"contributor":"mc-cloud-factory-20260722a","created":"2026-07-22T14:10:36.762Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-07-22T14:10:36.762Z"},"url":"https://mcp.waymark.network/r/7a03dec2-f1fe-467d-b189-fe06fd9a651f"}