## Edit the content of a message part `client.messages.update(stringmessageID, MessageUpdateParamsbody, RequestOptionsoptions?): Message` **patch** `/v3/messages/{messageId}` Edit the text content of a specific part of a previously sent message. **Note:** A message can be edited up to 5 times, and only within 15 minutes of when it was originally sent. ### Parameters - `messageID: string` - `body: MessageUpdateParams` - `text: string` New text content for the message part - `part_index?: number` Index of the message part to edit. Defaults to 0. ### Returns - `Message` - `id: string` Unique identifier for the message - `chat_id: string` ID of the chat this message belongs to - `created_at: string` When the message was created - `is_delivered: boolean` Whether the message has been delivered - `is_from_me: boolean` Whether this message was sent by the authenticated user - `is_read: boolean` Whether the message has been read - `updated_at: string` When the message was last updated - `delivered_at?: string | null` When the message was delivered - `effect?: MessageEffect | null` iMessage effect applied to a message (screen or bubble effect) - `name?: string` Name of the effect. Common values: - Screen effects: confetti, fireworks, lasers, sparkles, celebration, hearts, love, balloons, happy_birthday, echo, spotlight - Bubble effects: slam, loud, gentle, invisible - `type?: "screen" | "bubble"` Type of effect - `"screen"` - `"bubble"` - `from?: string | null` DEPRECATED: Use from_handle instead. Phone number of the message sender. - `from_handle?: ChatHandle | null` The sender of this message as a full handle object - `id: string` Unique identifier for this handle - `handle: string` Phone number (E.164) or email address of the participant - `joined_at: string` When this participant joined the chat - `service: ServiceType` Messaging service type - `"iMessage"` - `"SMS"` - `"RCS"` - `is_me?: boolean | null` Whether this handle belongs to the sender (your phone number) - `left_at?: string | null` When they left (if applicable) - `status?: "active" | "left" | "removed" | null` Participant status - `"active"` - `"left"` - `"removed"` - `parts?: Array | null` Message parts in order (text, media, and link) - `TextPartResponse` A text message part - `reactions: Array | null` Reactions on this message part - `handle: ChatHandle` - `is_me: boolean` Whether this reaction is from the current user - `type: ReactionType` Type of reaction. Standard iMessage tapbacks are love, like, dislike, laugh, emphasize, question. Custom emoji reactions have type "custom" with the actual emoji in the custom_emoji field. Sticker reactions have type "sticker" with sticker attachment details in the sticker field. - `"love"` - `"like"` - `"dislike"` - `"laugh"` - `"emphasize"` - `"question"` - `"custom"` - `"sticker"` - `custom_emoji?: string | null` Custom emoji if type is "custom", null otherwise - `sticker?: Sticker | null` Sticker attachment details when reaction_type is "sticker". Null for non-sticker reactions. - `file_name?: string` Filename of the sticker - `height?: number` Sticker image height in pixels - `mime_type?: string` MIME type of the sticker image - `url?: string` Presigned URL for downloading the sticker image (expires in 1 hour). - `width?: number` Sticker image width in pixels - `type: "text"` Indicates this is a text message part - `"text"` - `value: string` The text content - `text_decorations?: Array | null` Text decorations applied to character ranges in the value - `range: Array` Character range `[start, end)` in the `value` string where the decoration applies. `start` is inclusive, `end` is exclusive. *Characters are measured as UTF-16 code units. Most characters count as 1; some emoji count as 2.* - `animation?: "big" | "small" | "shake" | 5 more` Animated text effect to apply. Mutually exclusive with `style`. - `"big"` - `"small"` - `"shake"` - `"nod"` - `"explode"` - `"ripple"` - `"bloom"` - `"jitter"` - `style?: "bold" | "italic" | "strikethrough" | "underline"` Text style to apply. Mutually exclusive with `animation`. - `"bold"` - `"italic"` - `"strikethrough"` - `"underline"` - `MediaPartResponse` A media attachment part - `id: string` Unique attachment identifier - `filename: string` Original filename - `mime_type: string` MIME type of the file - `reactions: Array | null` Reactions on this message part - `handle: ChatHandle` - `is_me: boolean` Whether this reaction is from the current user - `type: ReactionType` Type of reaction. Standard iMessage tapbacks are love, like, dislike, laugh, emphasize, question. Custom emoji reactions have type "custom" with the actual emoji in the custom_emoji field. Sticker reactions have type "sticker" with sticker attachment details in the sticker field. - `custom_emoji?: string | null` Custom emoji if type is "custom", null otherwise - `sticker?: Sticker | null` Sticker attachment details when reaction_type is "sticker". Null for non-sticker reactions. - `size_bytes: number` File size in bytes - `type: "media"` Indicates this is a media attachment part - `"media"` - `url: string` Presigned URL for downloading the attachment (expires in 1 hour). - `LinkPartResponse` A rich link preview part - `reactions: Array | null` Reactions on this message part - `handle: ChatHandle` - `is_me: boolean` Whether this reaction is from the current user - `type: ReactionType` Type of reaction. Standard iMessage tapbacks are love, like, dislike, laugh, emphasize, question. Custom emoji reactions have type "custom" with the actual emoji in the custom_emoji field. Sticker reactions have type "sticker" with sticker attachment details in the sticker field. - `custom_emoji?: string | null` Custom emoji if type is "custom", null otherwise - `sticker?: Sticker | null` Sticker attachment details when reaction_type is "sticker". Null for non-sticker reactions. - `type: "link"` Indicates this is a rich link preview part - `"link"` - `value: string` The URL - `preferred_service?: ServiceType | null` Messaging service type - `read_at?: string | null` When the message was read - `reply_to?: ReplyTo | null` Indicates this message is a threaded reply to another message - `message_id: string` The ID of the message to reply to - `part_index?: number` The specific message part to reply to (0-based index). Defaults to 0 (first part) if not provided. Use this when replying to a specific part of a multipart message. - `sent_at?: string | null` When the message was sent - `service?: ServiceType | null` Messaging service type ### Example ```typescript import LinqAPIV3 from '@linqapp/sdk'; const client = new LinqAPIV3({ apiKey: process.env['LINQ_API_V3_API_KEY'], // This is the default and can be omitted }); const message = await client.messages.update('69a37c7d-af4f-4b5e-af42-e28e98ce873a', { text: 'This is the edited message content', }); console.log(message.id); ``` #### Response ```json { "id": "69a37c7d-af4f-4b5e-af42-e28e98ce873a", "chat_id": "94c6bf33-31d9-40e3-a0e9-f94250ecedb9", "created_at": "2024-01-15T10:30:00Z", "is_delivered": true, "is_from_me": true, "is_read": false, "updated_at": "2024-01-15T10:30:00Z", "delivered_at": "2024-01-15T10:30:10Z", "effect": { "name": "confetti", "type": "screen" }, "from": "+12052535597", "from_handle": { "id": "550e8400-e29b-41d4-a716-446655440000", "handle": "+15551234567", "joined_at": "2025-05-21T15:30:00.000-05:00", "service": "iMessage", "is_me": false, "left_at": "2019-12-27T18:11:19.117Z", "status": "active" }, "parts": [ { "reactions": [ { "handle": { "id": "69a37c7d-af4f-4b5e-af42-e28e98ce873a", "handle": "+15551234567", "joined_at": "2025-05-21T15:30:00.000-05:00", "service": "iMessage", "is_me": false, "left_at": "2019-12-27T18:11:19.117Z", "status": "active" }, "is_me": false, "type": "love", "custom_emoji": null, "sticker": { "file_name": "sticker.png", "height": 420, "mime_type": "image/png", "url": "https://cdn.linqapp.com/attachments/a1b2c3d4/sticker.png?signature=...", "width": 420 } } ], "type": "text", "value": "Hello!", "text_decorations": [ { "range": [ 0, 5 ], "animation": "shake", "style": "bold" } ] } ], "preferred_service": "iMessage", "read_at": "2024-01-15T10:35:00Z", "reply_to": { "message_id": "550e8400-e29b-41d4-a716-446655440000", "part_index": 0 }, "sent_at": "2024-01-15T10:30:05Z", "service": "iMessage" } ```