From e3e758a8c0c5fcb292f507e1ff498bb39132b03d Mon Sep 17 00:00:00 2001 From: jnjpng Date: Wed, 14 Jan 2026 16:18:41 -0800 Subject: [PATCH] feat: add retrieve message endpoint and to client sdk (#8719) * base * generate openapi * try again * now --- letta/server/rest_api/routers/v1/messages.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/letta/server/rest_api/routers/v1/messages.py b/letta/server/rest_api/routers/v1/messages.py index fa622fb2..6d084a90 100644 --- a/letta/server/rest_api/routers/v1/messages.py +++ b/letta/server/rest_api/routers/v1/messages.py @@ -15,6 +15,7 @@ from letta.schemas.message import Message, MessageSearchRequest, MessageSearchRe from letta.server.rest_api.dependencies import HeaderParams, get_headers, get_letta_server from letta.server.server import SyncServer from letta.settings import settings +from letta.validators import MessageId router = APIRouter(prefix="/messages", tags=["messages"]) @@ -57,6 +58,22 @@ async def list_all_messages( ) +@router.get("/{message_id}", response_model=MessagesResponse, operation_id="retrieve_message") +async def retrieve_message( + message_id: MessageId, + server: SyncServer = Depends(get_letta_server), + headers: HeaderParams = Depends(get_headers), +): + """ + Retrieve a message by ID. + """ + actor = await server.user_manager.get_actor_or_default_async(actor_id=headers.actor_id) + message = await server.message_manager.get_message_by_id_async(message_id=message_id, actor=actor) + if message is None: + raise HTTPException(status_code=404, detail=f"Message with id {message_id} not found.") + return message.to_letta_messages() + + @router.post("/search", response_model=List[LettaMessageSearchResult], operation_id="search_all_messages") async def search_all_messages( request: SearchAllMessagesRequest = Body(...),