Auth. HMAC v1 or bearer token — see Authentication.
Status. Live · Idempotent: No (each call posts a fresh tapback).
love ❤, like 👍, dislike 👎, laugh 😂, emphasize ‼, question ❓). The reaction is sent from the same line the original message was sent from, so the recipient sees the tapback attached to the right bubble.
Which id goes in the URL
This is a message-scoped route:{id} is a message_id, not a chat_id. Prefer the Chert-issued message_id returned by POST /api/v1/send, or the message.id returned by POST /api/v1/chats and POST /api/v1/chats/{id}/messages. Chert resolves that id to the underlying iMessage identifier internally before sending the tapback.
For inbound messages and history rows, the
id from GET /api/v1/chats/{id}/messages and inbound message.received webhooks is also accepted.Request
POST /api/v1/messages/{id}/react
Response
Path parameters
The Chert
message_id returned by a send endpoint, or the message id surfaced on chat-message listings and inbound message.received webhook payloads.Body
One of:
love | like | dislike | laugh | emphasize | question. Maps to the six standard iMessage tapbacks.Response fields
Always
"sent" on success.The Chert
message_id the reaction was attached to.Echoed-back normalized reaction value.
Errors
| Code | HTTP | When |
|---|---|---|
1002 | 400 | Invalid reaction value. |
1004 | 400 | Invalid JSON body. |
2003 | 404 | Message not found. |
4001 | 502 | Delivery failed downstream. |

