---
title: "Always run this before writing or deleting **personal** memory (always the signed-in person's personal org, regardles..."
method: POST
path: "/v1/memories/verify"
tags: ["memories"]
---

# Always run this before writing or deleting \*\*personal\*\* memory (always the signed-in person's personal org, regardles...

`POST /v1/memories/verify`

## Request

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

Always run this before writing or deleting **personal** memory (always the signed-in person's personal org, regardless of which org this connection uses). Submit the candidate, review related memories, then decide whether to upsert, delete, both, or do nothing. Do not upsert blindly. 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. 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
  - `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).
  - `category` string: Optional freeform category label for the memory. Suggested examples: preference, identifier, relationship, workflow, project, profile.
  - `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 agent-supplied dedupe key for the memory. Reuse when the agent wants a deterministic durable key.
  - `limit` integer: Maximum related memories to return. Defaults to 5.
  - `conversation_id` string: Optional conversation id used to suppress memories that were already surfaced in the same conversation.
  - `include_suppressed_in_conversation` boolean: When true, include memories even if they were already surfaced for the same conversation id.

## Response `200`

Success.

- object
  - `candidate` object, required
    - `subject` string, required
    - `summary` string, required
    - `category` string, nullable, required
    - `tags` string[], required
    - `source_uris` string[]
    - `dedupe_key` string, nullable, required
  - `related_memories` object[], required
    - `id` string, required
    - `category` string, nullable, required
    - `status` 'active' | 'deleted' | 'archived', required
    - `subject` string, required
    - `summary` string, required
    - `tags` string[], required
    - `source_uris` string[]
    - `dedupe_key` string, nullable, required
    - `score` number, required
  - `recommended_actions` 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)
