---
title: "Add memories (V3)"
method: POST
path: "/v3/memories/add/"
tags: ["memories"]
---

# Add memories (V3)

`POST /v3/memories/add/`

Extract and store memories from a conversation using the V3 additive pipeline. Entity IDs (`user_id` / `agent_id` / `run_id`) are accepted at the top level. At least one entity ID is required so the memory is scoped to a session.

## Request body

- object
  - `messages` object[], required — Conversation messages to extract memories from.
    - `role` 'user' | 'assistant' | 'system', required
    - `content` string, required
  - `user_id` string — Scope memories to this user.
  - `agent_id` string — Scope memories to this agent.
  - `run_id` string — Scope memories to this session / run.
  - `metadata` object — User-supplied metadata to attach to each extracted memory.
  - `expiration_date` string, date, nullable — Optional expiration date in YYYY-MM-DD format. After this date, memories are hidden from search and get-all unless `show_expired` is true.
  - `custom_instructions` string — Project-level instructions that guide extraction for this call.
  - `custom_categories` object[] — Category catalog for this call. Replaces the project-level list rather than merging with it. Omit to fall back to the project list, then the default catalog.
  - `infer` boolean — When `false`, stores each message verbatim without running the extraction LLM.

## Response `200`

Memory addition queued; returns an event identifier clients can poll via `GET /v1/event/{event_id}/`.

- object
  - `message` string
  - `status` 'PENDING' | 'SUCCEEDED' | 'FAILED'
  - `event_id` string, uuid

## Other responses

- `400` — Validation error, e.g. missing `messages` or no entity ID supplied.
- `401` — Unauthorized: missing or invalid API key.

---

[API](https://skmtc.dev/mem0/apis/mem0-api-docs.md) · [All operations](https://skmtc.dev/mem0/apis/mem0-api-docs/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/mem0/mem0-api-docs/revisions/b925d43ccc95/schema)
