Add or remove a reaction to a message
Add or remove emoji reactions to messages. Reactions let users express their response to a message without sending a new message.
Supported Reactions:
- love ❤️
- like 👍
- dislike 👎
- laugh 😂
- emphasize ‼️
- question ❓
- custom - any emoji (use
custom_emojifield to specify) - sticker - an image peeled onto the message (use
urlorattachment_id)
Stickers are iMessage-only and cannot be removed — iMessage has no
unpeel operation, so operation: "remove" with type: "sticker" is
rejected. Position, size and rotation are optional via placement, and can
be changed afterwards with
PATCH /v3/messages/{messageId}/reactions/{reactionId}.
Body ParametersJSON
Reference to a sticker image pre-uploaded via POST /v3/attachments.
Only valid when type is “sticker”.
Either url or attachment_id must be provided when type is
“sticker”, but not both.
Optional index of the message part to react to. If not provided, reacts to the entire message (part 0).
Linq attachment URL of the sticker image — the download_url
returned by POST /v3/attachments. Only valid when type is
“sticker”.
Unlike a media part, this does not accept an arbitrary host:
reactions have no download step, so the image must already be
stored. To send a sticker from elsewhere, upload it with
POST /v3/attachments first and pass attachment_id.
Either url or attachment_id must be provided when type is
“sticker”, but not both.
Add or remove a reaction to a message
curl https://api.linqapp.com/api/partner/v3/messages/$MESSAGE_ID/reactions \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $LINQ_API_V3_API_KEY" \
-d '{
"operation": "add",
"type": "love",
"attachment_id": "550e8400-e29b-41d4-a716-446655440000",
"part_index": 1,
"url": "https://cdn.linqapp.com/attachments/example/sticker.png"
}'{
"message": "Reaction processed",
"status": "accepted",
"trace_id": "trace_id"
}{
"error": {
"status": 400,
"code": 1002,
"message": "Phone number must be in E.164 format",
"doc_url": "https://docs.linqapp.com/channel/imessage/error/codes/1xxx/1002/"
},
"success": false
}{
"error": {
"status": 401,
"code": 2004,
"message": "Unauthorized - missing or invalid authentication token",
"doc_url": "https://docs.linqapp.com/channel/imessage/error/codes/2xxx/2004/"
},
"success": false
}{
"error": {
"status": 403,
"code": 2005,
"message": "Access denied - insufficient permissions for this resource",
"doc_url": "https://docs.linqapp.com/channel/imessage/error/codes/2xxx/2005/"
},
"success": false
}{
"error": {
"status": 500,
"code": 3006,
"message": "Internal server error",
"doc_url": "https://docs.linqapp.com/channel/imessage/error/codes/3xxx/3006/"
},
"success": false
}Returns Examples
{
"message": "Reaction processed",
"status": "accepted",
"trace_id": "trace_id"
}{
"error": {
"status": 400,
"code": 1002,
"message": "Phone number must be in E.164 format",
"doc_url": "https://docs.linqapp.com/channel/imessage/error/codes/1xxx/1002/"
},
"success": false
}{
"error": {
"status": 401,
"code": 2004,
"message": "Unauthorized - missing or invalid authentication token",
"doc_url": "https://docs.linqapp.com/channel/imessage/error/codes/2xxx/2004/"
},
"success": false
}{
"error": {
"status": 403,
"code": 2005,
"message": "Access denied - insufficient permissions for this resource",
"doc_url": "https://docs.linqapp.com/channel/imessage/error/codes/2xxx/2005/"
},
"success": false
}{
"error": {
"status": 500,
"code": 3006,
"message": "Internal server error",
"doc_url": "https://docs.linqapp.com/channel/imessage/error/codes/3xxx/3006/"
},
"success": false
}