PUT /v2/chats/{chat_id}/messages/{message_id}/reactions/{emoji}
Sets the caller's reaction. Members only; a public-read group does not grant reacting. Repeating the call changes nothing and emits no frame or notification. A deleted message conflicts with 409. Contract 2 requires ?contract=2, UUID Idempotency-Key and a quoted per-edge If-Match, with an empty body. Identical command replay returns its original transition/edge version with the current authorized summary; changed command intent 409, fresh stale edge 412, malformed contract/header 400. Legacy requests remain unconditional and cannot distinguish delayed fresh intent from retry.
Request
- Base URLhttps://api.arbital.xyz (the document declares no server; this is the origin it was published from)
- URLhttps://api.arbital.xyz/v2/chats/{chat_id}/messages/{message_id}/reactions/{emoji}
- AuthHTTP bearer
Path parameters
Percent-encoded emoji. Exactly one emoji grapheme; normalised server-side (NFC, U+FE0F removed) so both presentations count once.
Query parameters
Explicit reaction contract 2. Omission preserves the legacy unconditional mutation or reactor-list response.
Headers
Required for contract=2. Stable command UUID. Retry the same identity and intent after an uncertain result; a changed intent with this identity returns 409.
Required for contract=2. Quoted caller-edge revision within signed 64-bit range (for example, "0"). Matching command replay resolves before this precondition; a fresh stale command returns 412.
Response
Canonical reaction state; unchanged when the reaction already existed
Changes
No recorded changes to this operation across all 1 revision of this API.