Send a message to an existing chat
Send a message to an existing chat. Use this endpoint when you already have a chat ID and want to send additional messages to it.
Message Effects
You can add iMessage effects to make your messages more expressive. Effects are optional and can be either screen effects (full-screen animations) or bubble effects (message bubble animations).
Screen Effects: confetti, fireworks, lasers, sparkles, celebration, hearts, love, balloons, happy_birthday, echo, spotlight
Bubble Effects: slam, loud, gentle, invisible
Only one effect type can be applied per message.
Inline Text Decorations (iMessage only)
Use the text_decorations array on a text part to apply styling and animations to character ranges.
Each decoration specifies a range: [start, end) and exactly one of style or animation.
Styles: bold, italic, strikethrough, underline Animations: big, small, shake, nod, explode, ripple, bloom, jitter
{
"type": "text",
"value": "Hello world",
"text_decorations": [
{ "range": [0, 5], "style": "bold" },
{ "range": [6, 11], "animation": "shake" }
]
}
Note: Style ranges (bold, italic, etc.) may overlap, but animation ranges must not overlap with other animations or styles. Decorations render per recipient, not per message: in a group with both iMessage and SMS/RCS participants, iMessage recipients see the decorations and SMS/RCS recipients receive the same message as plain text.
Inline Stickers (iMessage only)
Use the inline_stickers array on a text part to place stickers inside the text. Each sticker replaces the characters in its range: [start, end) and takes its image from exactly one of url or attachment_id — an image uploaded with POST /v3/attachments.
{
"type": "text",
"value": "Happy birthday 🎂! 🎉🎉",
"inline_stickers": [
{ "range": [15, 17], "attachment_id": "550e8400-e29b-41d4-a716-446655440000" },
{ "range": [19, 21], "attachment_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7" },
{ "range": [21, 23], "attachment_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7" }
]
}
Note: A sticker takes the place of the characters it covers, so they are hidden on iMessage: "Sip cup" with a sticker on cup reads "Sip [sticker]". Those characters are what SMS and RCS recipients receive (the stickers are dropped and value is sent as written) and what VoiceOver reads. To keep a word visible, give the sticker its own placeholder: "Sip cup 🥤" with the range on 🥤. Up to 100 stickers and 10 different images per part; copies of one image count as one.
Request
- Base URL: https://api.linqapp.com/api/partner
- URL: https://api.linqapp.com/api/partner/v3/chats/{chatId}/messages
- Auth: HTTP bearer
Path parameters
Unique identifier of the chat
Request body
Example request
{
"message": {
"experience": {
"name": "agentcard",
"action": "attach_card"
},
"parts": [
{
"type": "text",
"value": "Check this out!"
},
{
"type": "media",
"url": "https://cdn.linqapp.com/attachments/example/photo.jpg"
}
],
"effect": {
"type": "screen",
"name": "confetti"
},
"reply_to": {
"message_id": "550e8400-e29b-41d4-a716-446655440000"
},
"idempotency_key": "msg-abc123xyz",
"preferred_service": "iMessage"
}
}Response
Message accepted for delivery
Example response
{
"chat_id": "550e8400-e29b-41d4-a716-446655440000",
"message": {
"id": "69a37c7d-af4f-4b5e-af42-e28e98ce873a",
"service": "iMessage",
"preferred_service": "iMessage",
"parts": [
{
"type": "text",
"value": "Hello!"
}
],
"created_at": "2025-10-23T13:07:55.019-05:00",
"delivery_status": "pending",
"effect": {
"type": "screen",
"name": "confetti"
},
"from_handle": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"handle": "+15551234567",
"service": "iMessage",
"joined_at": "2025-05-21T15:30:00.000-05:00",
"line_type": "iMessage"
},
"reply_to": {
"message_id": "550e8400-e29b-41d4-a716-446655440000"
}
}
}Changes
No recorded changes to this operation across all 1 revision of this API.