curl -X POST "http://localhost:8000/api/v2/agents/my-agent/conflicts/resolve" \
-H "X-Session-Token: your_session_token" \
-H "Content-Type: application/json" \
-d '{
"date": "2026-05-08",
"conflict_index": 0,
"action": "keep_new"
}'
curl -X POST "http://localhost:8000/api/v2/agents/my-agent/conflicts/resolve" \
-H "X-Session-Token: your_session_token" \
-H "Content-Type: application/json" \
-d '{
"date": "2026-05-08",
"conflict_index": 0,
"action": "manual",
"manual_content": "We use PostgreSQL for OLTP and MongoDB only for analytics.",
"manual_type": "fact"
}'
{
"agent_id": "my-agent",
"session_id": "sess_982287b6a5f5",
"date": "2026-05-08",
"action": "keep_new",
"deleted": "abc-123",
"status": "resolved"
}
{
"detail": "Missing session token. Use X-Session-Token header."
}
{
"detail": [
{
"type": "missing",
"loc": ["body", "conflict_index"],
"msg": "Field required",
"input": {}
}
]
}
{
"detail": {
"error": "InternalServerError",
"message": "An unexpected error occurred",
"details": {
"original_error": "..."
}
}
}
Data
Resolve Conflict
Resolve one conflict from the conflict report by index.
POST
/
api
/
v2
/
agents
/
{agent_id}
/
conflicts
/
resolve
curl -X POST "http://localhost:8000/api/v2/agents/my-agent/conflicts/resolve" \
-H "X-Session-Token: your_session_token" \
-H "Content-Type: application/json" \
-d '{
"date": "2026-05-08",
"conflict_index": 0,
"action": "keep_new"
}'
curl -X POST "http://localhost:8000/api/v2/agents/my-agent/conflicts/resolve" \
-H "X-Session-Token: your_session_token" \
-H "Content-Type: application/json" \
-d '{
"date": "2026-05-08",
"conflict_index": 0,
"action": "manual",
"manual_content": "We use PostgreSQL for OLTP and MongoDB only for analytics.",
"manual_type": "fact"
}'
{
"agent_id": "my-agent",
"session_id": "sess_982287b6a5f5",
"date": "2026-05-08",
"action": "keep_new",
"deleted": "abc-123",
"status": "resolved"
}
{
"detail": "Missing session token. Use X-Session-Token header."
}
{
"detail": [
{
"type": "missing",
"loc": ["body", "conflict_index"],
"msg": "Field required",
"input": {}
}
]
}
{
"detail": {
"error": "InternalServerError",
"message": "An unexpected error occurred",
"details": {
"original_error": "..."
}
}
}
Overview
Applies a resolution action to a single conflict identified by its index in the full conflict array for that agent and date (same ordering as the JSON report file). This uses the same resolution logic as the Memanto CLI conflict flow (updates Moorcheh memories and marks the row resolved in the report).Authentication
API clients do not send an API key orAuthorization header.
string
required
Session token from Activate Agent. Must match
agent_id.string
required
Must be
application/jsonPath Parameters
string
required
The unique identifier of the agent.
Body
integer
required
Zero-based index into the full conflicts list for that
date (not only unresolved rows). Use the index field returned by List Conflicts — not the conflict’s position in that filtered response. An already-resolved index is rejected.string
required
One of:
keep_old, keep_new, keep_both, remove_both, expire_old,
expire_new, expire_both, manual.The keep_* / remove_both / manual actions delete the losing memory
permanently. The expire_* actions retire it reversibly instead — content is
kept, the memory stays recallable, and it is stamped
expired_by: "conflict-resolution". See
Memory Lifecycle.| Action | Effect |
|---|---|
keep_old | Deletes the new memory |
keep_new | Deletes the old memory |
keep_both | No-op; both stay active |
remove_both | Deletes both |
expire_old | Expires the old memory |
expire_new | Expires the new memory |
expire_both | Expires both |
manual | Deletes both and stores manual_content as a replacement |
string
Report date
YYYY-MM-DD. Defaults to today (UTC) on the server when omitted.string
Required when
action is manual: replacement memory text (both conflicting memories are removed and this content is stored).string
Optional memory type for the manual replacement (defaults follow implementation when omitted).
curl -X POST "http://localhost:8000/api/v2/agents/my-agent/conflicts/resolve" \
-H "X-Session-Token: your_session_token" \
-H "Content-Type: application/json" \
-d '{
"date": "2026-05-08",
"conflict_index": 0,
"action": "keep_new"
}'
curl -X POST "http://localhost:8000/api/v2/agents/my-agent/conflicts/resolve" \
-H "X-Session-Token: your_session_token" \
-H "Content-Type: application/json" \
-d '{
"date": "2026-05-08",
"conflict_index": 0,
"action": "manual",
"manual_content": "We use PostgreSQL for OLTP and MongoDB only for analytics.",
"manual_type": "fact"
}'
{
"agent_id": "my-agent",
"session_id": "sess_982287b6a5f5",
"date": "2026-05-08",
"action": "keep_new",
"deleted": "abc-123",
"status": "resolved"
}
{
"detail": "Missing session token. Use X-Session-Token header."
}
{
"detail": [
{
"type": "missing",
"loc": ["body", "conflict_index"],
"msg": "Field required",
"input": {}
}
]
}
{
"detail": {
"error": "InternalServerError",
"message": "An unexpected error occurred",
"details": {
"original_error": "..."
}
}
}
action, missing conflict report, out-of-range index, or missing manual_content for manual typically surface as 500 with details from the underlying resolver.
Next Steps
- List Conflicts to fetch remaining unresolved rows
- Recall to verify memory state after resolution