--- title: Interact with your agents via messages slug: guides/agents/messages --- ## Sending messages You can send message to agents from both the REST API and Python client: ```python # message an agent as a user response = client.send_message( agent_id=agent_state.id, role="user", message="hello" ) print("Usage", response.usage) print("Agent messages", response.messages) ``` You can also send messages with different roles, such as `system`, `assistant`, or `user`: ```python # message a system message (non-user) response = client.send_message( agent_id=agent_state.id, role="system", message="[system] user has logged in. send a friendly message." ) print("Usage", response.usage) print("Agent messages", response.messages) ``` The `response` object contains the following attributes: * `usage`: The usage of the agent after the message was sent (the prompt tokens, completition tokens, and total tokens) * `message`: A list of either `Message` or `LettaMessage` objects, generated by the agent ### Message Types #### `LettaMessage` The `LettaMessage` object is a simplified version of the `Message` object. Since a `Message` can include multiple events like an inner monologue and function return, `LettaMessage` simplifies messages to have the following types: * `inner_monologue`: The inner monologue of the agent * `function_call`: An agent function call * `function_response`: The response to an agent function call * `system_message`: A system message * `user_message`: A user message #### `Message` The `Message` object is the raw MemGPT message representation that is persisted in the database. To have the full `Message` data returns, you can set `include_full_message=True`: ```python response = client.user_message( agent_id=agent_state.id, message="hello!", include_full_message=True ) ``` You can convert a raw `Message` object to a list of `LettaMessage` objects: ```python # Convert a `Message` object to a `LettaMessage` object letta_messages = message.to_letta_message() ```