Messaging

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 URL
    https://api.arbital.xyz (the document declares no server; this is the origin it was published from)
  • URL
    https://api.arbital.xyz/v2/chats/{chat_id}/messages/{message_id}/reactions/{emoji}
  • Auth
    HTTP bearer

Path parameters

chat_idstring uuid required
message_idstring uuid required
emojistring required

Percent-encoded emoji. Exactly one emoji grapheme; normalised server-side (NFC, U+FE0F removed) so both presentations count once.

Query parameters

contract'2'

Explicit reaction contract 2. Omission preserves the legacy unconditional mutation or reactor-list response.

Headers

Idempotency-Keystring uuid

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.

If-Matchstring

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

OR

Changes

No recorded changes to this operation across all 1 revision of this API.