Skip to main content
Appends a new message to a conversation. Each message contains one or more content blocks (text, file, or both) and is attributed to an actor. MemoryLake automatically processes new messages to extract structured facts.
Permission required: project:conv_append

Path Parameters

string
required
Conversation identifier

Request Body

array
required
Array of content blocks that make up the message body. Each block must include a block_type field.Accepted block_type values: TEXT, FILE, IMAGE, THINKING, TOOL_USE, TOOL_RESULT.Text block: { "block_type": "TEXT", "text": "message content" }Image block: { "block_type": "IMAGE", "uri": "drive://...", "mime_type": "image/png" }
string
required
ID of the actor sending this message. Should reference an actor participating in the conversation.
string
ISO 8601 timestamp for when the message originally occurred. Use this when ingesting historical conversations so MemoryLake preserves the original timeline.
object
Arbitrary key-value metadata to attach to the message
string
required
Caller-defined unique identifier for the message within the conversation
string|null
required
ID of the message that comes immediately before this one in the conversation — its predecessor. This is an ordering pointer, not a reply pointer: pass the previous message’s ID even when the new message is not a reply to it. Order is declared by you, never guessed by the server.Send null for the first message of a conversation, which has no predecessor. Every message after that must carry a real ID — the id returned when you appended the previous message, or the conversation’s current_message_id when you resume an existing conversation.That ID must still be the conversation’s latest message when the request arrives. If it is not — a stale ID, or null on a conversation that already has messages — the append fails with 409 and nothing is written. Re-read current_message_id and retry with that value.

Response

object