Reactions
Add and remove emoji reactions on messages.
React to any message with built-in iMessage tapbacks or custom Unicode emoji. Reactions are an iMessage feature — see Protocol Selection for protocol capabilities. See the Reactions API Reference for the full endpoint specification.
Adding a reaction
Section titled “Adding a reaction”curl -X POST https://api.linqapp.com/api/partner/v3/messages/{message_id}/reactions \ -H "Authorization: Bearer $LINQ_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "type": "love", "operation": "add" }'await client.messages.addReaction(messageId, { type: 'love', operation: 'add',});client.messages.add_reaction( message_id, type="love", operation="add",)Built-in reaction types
Section titled “Built-in reaction types”These map to the standard iMessage tapback reactions:
| Type | Description |
|---|---|
love | Heart |
like | Thumbs up |
dislike | Thumbs down |
laugh | Ha ha |
emphasize | Exclamation marks |
question | Question mark |
Custom emoji reactions
Section titled “Custom emoji reactions”Send any Unicode emoji as a reaction:
curl -X POST https://api.linqapp.com/api/partner/v3/messages/{message_id}/reactions \ -H "Authorization: Bearer $LINQ_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "type": "custom", "custom_emoji": "🎉", "operation": "add" }'Targeting multipart messages
Section titled “Targeting multipart messages”For messages with multiple parts, target a specific part using part_index (0-based):
{ "type": "love", "operation": "add", "part_index": 1}This reacts to the second part of the message. If omitted, the reaction applies to the first part.
Removing reactions
Section titled “Removing reactions”Use the same endpoint with "operation": "remove" and the matching type you originally added.
Sticker attachments
Section titled “Sticker attachments”A contact can attach a sticker to any message part in iMessage. This is distinct from a custom sticker reaction — the type is "sticker" and the payload includes image metadata.
Sticker attachments are inbound only; the API does not support sending them.
They appear inside parts[].reactions[] on the message and trigger a reaction.added event:
{ "parts": [ { "type": "text", "value": "Hey yea", "reactions": [ { "type": "sticker", "is_me": false, "custom_emoji": null, "sticker": { "file_name": "sticker-abc123.png", "mime_type": "image/png", "url": "https://cdn.linqapp.com/attachments/550e8400/sticker-abc123.png", "width": 320, "height": 320 }, "handle": { "id": "550e8400-e29b-41d4-a716-446655440011", "handle": "+14155559876", "is_me": false, "service": "iMessage", "status": "active", "joined_at": "2025-11-23T17:30:00.000Z", "left_at": null } } ] } ]}Reaction webhook events
Section titled “Reaction webhook events”| Event | Description |
|---|---|
reaction.added | A reaction was added to a message |
reaction.removed | A reaction was removed from a message |
Webhook payloads include reaction_type, message_id, part_index, and sender information. See Reaction events for full payload details.