---
title: "Update a long-term memory"
method: PATCH
path: "/api/memory/{id}"
tags: ["Memory"]
---

# Update a long-term memory

`PATCH /api/memory/{id}`

## Request

- Base URL: `https://api.setluca.com`
- URL: `https://api.setluca.com/api/memory/{id}`
- Auth: one of:
  - API key in cookie `luca.session_token`
  - API key in header `x-api-key`
  - HTTP bearer

Edit a memory's content, confidence, metadata, reason, or evidence. Set `disputed` to flag a fact as wrong, `restore` to bring an archived one back, or `preferred` to make it win over conflicting memories. Provenance and trust fields belong to the server and can't be set here.

**API key scopes:** `memory:write`. You also need an `Idempotency-Key` header.

## Path parameters

- `id` string, uuid, required

## Headers

- `Luca-API-Version` '1'

## Request body

- MemoryPatch
  - `content` string
  - `source` string
  - `sourceRefId` string, nullable
  - `confidence` number
  - `metadata` object
  - `createdByType` 'coach' | 'agent' | 'system'
  - `createdById` string, nullable
  - `reason` string, nullable
  - `evidence` object
  - `trustLevel` 'manual' | 'trusted_pipeline' | 'inferred' | 'disputed'
  - `restore` boolean
  - `disputed` boolean
  - `disputedReason` string, nullable
  - `preferred` boolean
  - `expectedUpdatedAt` string, date-time

## Response `200`

ok

- MemoryRow
  - `id` string, uuid, required
  - `content` string, required
  - `source` string, required
  - `sourceRefId` string, nullable, required
  - `confidence` number, required
  - `metadata` object, required
  - `createdByType` 'coach' | 'agent' | 'system', required
  - `createdById` string, nullable, required
  - `reason` string, nullable, required
  - `evidence` object, required
  - `trustLevel` 'manual' | 'trusted_pipeline' | 'inferred' | 'disputed', required
  - `supersedesMemoryId` string, uuid, nullable, required
  - `supersededAt` string, nullable, required
  - `disputedAt` string, nullable, required
  - `disputedReason` string, nullable, required
  - `leadId` string, uuid, nullable, required
  - `archivedAt` string, nullable, required
  - `factOrigin` 'profile_text' | 'coach_edit' | 'lead_message' | 'null', nullable, required
  - `sourceField` string, nullable, required
  - `createdAt` string, required
  - `updatedAt` string, required

## Other responses

- `400`: bad request
- `401`: unauthorized
- `404`: not found
- `409`: conflict
- `429`: rate limited
- `500`: internal error
- `503`: service unavailable

---

[API](https://skmtc.dev/setluca/apis/luca-api.md) · [All operations](https://skmtc.dev/setluca/apis/luca-api/llms.txt) · [OpenAPI document](https://skmtc.dev/setluca/apis/luca-api/revisions/90a200e4100b?raw)
