---
title: "Create or update a **personal** memory for the signed-in person (always their personal org, regardless of which org t..."
method: POST
path: "/v1/memories"
tags: ["memories"]
---

# Create or update a \*\*personal\*\* memory for the signed-in person (always their personal org, regardless of which org t...

`POST /v1/memories`

## Request

- Base URL: `https://api.kody.codes`
- URL: `https://api.kody.codes/v1/memories`
- Auth: HTTP bearer

Create or update a **personal** memory for the signed-in person (always their personal org, regardless of which org this connection uses). Agents must run `metaMemoryVerify` first. Do not blindly write durable memory without verification. Do not copy a personal memory into an org package without asking the person first. Shared org knowledge belongs in documented packages and org instructions, not memory. If the candidate is really package- or export-scoped guidance, update package docs or JSDoc instead (see search({ entity: "guide:agent_guidance" })).

Org permission: none (touches no org data).

## Request body

- object
  - `memory_id` string: Optional existing memory id to update. Omit this field to create a new memory record.
  - `category` string: Optional freeform category string. Suggested examples include preference, profile, workflow, relationship, or identifier.
  - `subject` string, required: Short durable subject line for the memory record (max 200 characters).
  - `summary` string, required: Compact durable summary of the memory (max 500 characters).
  - `details` string: Optional supporting details for the durable memory record (max 2000 characters).
  - `tags` string[]: Optional short tags for retrieval and filtering.
  - `source_uris` string[]: Optional canonical source document URLs for the memory. Treat these as opaque references.
  - `dedupe_key` string: Optional stable dedupe key supplied by the agent.
  - `status` 'active' | 'archived': Optional non-deleted status for the memory. Defaults to active.
  - `verified_by_agent` boolean, required: Must be true when writing memory. Agents must run metaMemoryVerify first and then decide whether to upsert.
  - `verification_reference` string: Optional agent-supplied note, run id, or verification reference describing the verify step that preceded this upsert.

## Response `200`

Success.

- object
  - `mode` 'created' | 'updated', required
  - `memory` object, required
    - `id` string, required
    - `category` string, nullable, required
    - `status` 'active' | 'deleted' | 'archived', required
    - `subject` string, required
    - `summary` string, required
    - `details` string, required
    - `tags` string[], required
    - `source_uris` string[]
    - `dedupe_key` string, nullable, required
    - `created_at` string, required
    - `updated_at` string, required
    - `last_accessed_at` string, nullable, required
    - `deleted_at` string, nullable, required
  - `warnings` string[], required

## Other responses

- `400`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `401`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `403`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `404`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `409`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `413`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `429`: Too many requests (edge IP/token limit) or an entitlement / plan-cap limit. Wait at least `Retry-After` seconds before retrying.
- `500`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `503`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `default`: Error envelope `{ "error": { "code", "message", "details"? } }`.

---

[API](https://skmtc.dev/kody/apis/kody-api.md) · [All operations](https://skmtc.dev/kody/apis/kody-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kody/apis/kody-api/revisions/705f4f022728?raw)
