Skip to main content
Auth. HMAC v1 or bearer token — see Authentication. Status. Live · Idempotent: No (each call posts a fresh edit; pass new_text you want the bubble to read).
Replaces the text of a previously-sent outbound message. The recipient sees the bubble update in place with an “Edited” marker, matching native iMessage behavior. Apple enforces a 15-minute window from send time — edits attempted after the window return an error.

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 applying the edit.
For outbound messages surfaced by GET /api/v1/chats/{id}/messages, the listed message id is also accepted.

Request

POST /api/v1/messages/{id}/edit

Response

Path parameters

string
required
The Chert message_id returned by a send endpoint, or the outbound message id surfaced on chat-message listings.

Body

string
required
The replacement bubble text. Empty strings are rejected.
integer
default:"0"
For multi-part messages, the zero-based index of the text part to edit. Default 0 (the first text part). Most sends have only one text part.

Response fields

string
Always "edited" on success.
string
Echoed-back message_id of the edited bubble.
string
The text that now appears in the bubble.
string
ISO-8601 timestamp the edit was applied.
array | null
Reserved for future use. May surface previous versions of the bubble when the underlying transport reports them.

Errors

See the full error code reference.

Notes

See also