Skip to main content
POST
/
api
/
v2
/
memory
/
update
Edit a memory's text or move memories between buckets
curl --request POST \
  --url https://www.memoryplugin.com/api/v2/memory/update \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "memoryId": "<string>",
  "text": "<string>",
  "bucketId": 123,
  "bucketName": "<string>"
}
'
{
  "success": true,
  "memory": {
    "id": "<string>",
    "text": "<string>",
    "bucketId": 123,
    "version": 123,
    "updatedAt": "2023-11-07T05:31:56Z",
    "createdAt": "2023-11-07T05:31:56Z"
  }
}

Overview

Update a memory’s text, move a memory to a different bucket, or do both in a single request. You can also move up to 100 memories into one bucket at once with the bulk form. This is the REST equivalent of the update_or_move_memories MCP tool. Both share the same behaviour.

Authentication

Send your API key as a bearer token:
Authorization: Bearer YOUR_API_KEY

Single memory update

Provide a memoryId plus at least one of text, bucketId, or bucketName. If you send only a memoryId with none of these fields, the request is rejected.
curl -X POST https://www.memoryplugin.com/api/v2/memory/update \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "memoryId": "mem-abc-123",
    "text": "User moved to San Francisco and now works at Stripe",
    "bucketName": "Work"
  }'
The response returns the updated memory:
{
  "success": true,
  "memory": {
    "id": "mem-abc-123",
    "text": "User moved to San Francisco and now works at Stripe",
    "bucketId": 65,
    "version": 3,
    "updatedAt": "2026-07-04T10:30:00Z",
    "createdAt": "2026-04-06T10:30:00Z"
  }
}
Changing a memory’s text re-embeds it, so search stays accurate against the new wording. Each text or bucket change increments the memory’s version and records a snapshot in its edit history, so you can see what changed and when.

Bulk move

To move several memories into the same bucket, send a memoryIds array (1 to 100 IDs) with either bucketId or bucketName. Bulk requests move memories only; they do not change text.
curl -X POST https://www.memoryplugin.com/api/v2/memory/update \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "memoryIds": ["mem-id-1", "mem-id-2", "mem-id-3"],
    "bucketName": "Work"
  }'
{
  "success": true,
  "updated": 3,
  "bucketId": 65
}
Bulk moves are all-or-nothing. If any ID in the list cannot be found, the whole request is rejected with a 404 and the unresolved IDs are returned so you can retry:
{
  "error": "Some memory IDs could not be resolved",
  "rejectedIds": ["mem-id-2"]
}

Targeting a bucket

You can point at a destination bucket two ways:
  • bucketId: a numeric bucket ID. The bucket must already exist, and you need write access to it.
  • bucketName: a bucket name. If no bucket with that name exists, it is created for you and the memory is moved into it.
Send one or the other, not both. Provide either memoryId (single) or memoryIds (bulk) in a request, never both.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
memoryId
string
required

Encoded memory ID to update

text
string

New text content for the memory

bucketId
integer

Target bucket ID to move the memory to

bucketName
string

Target bucket name (auto-creates if it does not exist)

Response

Memory updated or moved successfully

success
boolean
memory
object