You're viewing version 3.3 of the OpenSearch documentation. This version is no longer maintained. For the latest version, see the current documentation. For information about OpenSearch version maintenance, see Release Schedule and Maintenance Policy.
Add Agentic Memory API
Introduced 3.3
Use this API to add an agentic memory to a memory container. You can specify different payload types and control inference mode for how OpenSearch processes the memory.
Once an agentic memory is created, provide its memory_id to other APIs.
Endpoints
POST /_plugins/_ml/memory_containers/<memory_container_id>/memories
Path parameters
The following table lists the available path parameters.
| Parameter | Data type | Required/Optional | Description |
|---|---|---|---|
memory_container_id | String | Required | The ID of the memory container to add the memory to. |
Request body fields
The following table lists the available request body fields.
| Field | Data type | Required/Optional | Description |
|---|---|---|---|
messages | Array | Conditional | A list of messages for a conversational payload. Each message must include a content field specified as an array of objects. Each object must contain the type (for example, text) and the corresponding content. Each message may include a role (commonly, user or assistant) when infer is set to true. Required when payload_type is conversational. |
structured_data | Object | Conditional | Structured data content for data memory. Required when payload_type is data. |
binary_data | String | Optional | Binary data content encoded as a Base64 string for binary payloads. |
payload_type | String | Required | The type of payload. Valid values are conversational or data. See Payload types. |
namespace | Object | Optional | The namespace context for organizing memories (for example, user_id, session_id, or agent_id). If session_id is not specified in the namespace field and disable_session: false (default is true), a new session with a new session ID is created. |
metadata | Object | Optional | Additional metadata for the memory (for example, status, branch, or custom fields). |
tags | Object | Optional | Tags for categorizing and organizing memories. |
infer | Boolean | Optional | Whether to use a large language model (LLM) to extract key information from messages. Default is false. When true, the LLM extracts key information from the original text and stores it as a memory. See Inference mode. |
Example request: Conversational payload
POST /_plugins/_ml/memory_containers/SdjmmpgBOh0h20Y9kWuN/memories
{
"messages": [
{
"role": "user",
"content": [
{
"text": "I'm Bob, I really like swimming.",
"type": "text"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "Cool, nice. Hope you enjoy your life.",
"type": "text"
}
]
}
],
"namespace": {
"user_id": "bob"
},
"metadata": {
"status": "checkpoint",
"branch": {
"branch_name": "high",
"root_event_id": "228nadfs879mtgk"
}
},
"tags": {
"topic": "personal info"
},
"infer": true,
"payload_type": "conversational"
}
Example response: Conversation payload
{
"session_id": "XSEuiJkBeh2gPPwzjYVh",
"working_memory_id": "XyEuiJkBeh2gPPwzjYWM"
}
Example request: Data payload
To store agent state in working memory, send the following request:
POST /_plugins/_ml/memory_containers/SdjmmpgBOh0h20Y9kWuN/memories
{
"structured_data": {
"time_range": {
"start": "2025-09-11",
"end": "2025-09-15"
}
},
"namespace": {
"agent_id": "testAgent1"
},
"metadata": {
"status": "checkpoint",
"anyobject": "abc"
},
"tags": {
"topic": "agent_state"
},
"infer": false,
"payload_type": "data"
}
Example response: Data payload
{
"working_memory_id": "Z8xeTpkBvwXRq366l0iA"
}
Example request: Storing tool invocation data
To store agent trace data in working memory, send the following request:
POST /_plugins/_ml/memory_containers/SdjmmpgBOh0h20Y9kWuN/memories
{
"structured_data": {
"tool_invocations": [
{
"tool_name": "ListIndexTool",
"tool_input": {
"filter": "*,-.plugins*"
},
"tool_output": "green open security-auditlog-2025.09.17..."
}
]
},
"namespace": {
"user_id": "bob",
"agent_id": "testAgent1",
"session_id": "123"
},
"metadata": {
"status": "checkpoint",
"branch": {
"branch_name": "high",
"root_event_id": "228nadfs879mtgk"
},
"anyobject": "abc"
},
"tags": {
"topic": "personal info",
"parent_memory_id": "o4-WWJkBFT7urc7Ed9hM",
"data_type": "trace"
},
"infer": false,
"payload_type": "data"
}
Example response: Trace data
{
"working_memory_id": "Z8xeTpkBvwXRq366l0iA"
}
Response body fields
The following table lists all response body fields.
| Field | Data type | Description |
|---|---|---|
session_id | String | The session ID associated with the memory (returned for conversation memory when a session is created or used). |
working_memory_id | String | The unique identifier for the created working memory entry. |