---
title: "Get Memory V1"
method: GET
path: "/v1/memory/{memory_id}"
tags: ["v1", "Memory"]
---

# Get Memory V1

`GET /v1/memory/{memory_id}`

Retrieve a memory item by ID.
    
    **Authentication Required**:
    One of the following authentication methods must be used:
    - Bearer token in `Authorization` header
    - API Key in `X-API-Key` header
    - Session token in `X-Session-Token` header
    
    **Required Headers**:
    - X-Client-Type: (e.g., 'papr_plugin', 'browser_extension')

## Path parameters

- `memory_id` string, required

## Query parameters

- `require_consent` boolean — If true, return 404 if the memory has consent='none'. Ensures only consented memories are returned.
- `exclude_flagged` boolean — If true, return 404 if the memory has risk='flagged'. Filters out flagged content.
- `max_risk` string, nullable — Maximum risk level allowed. Values: 'none', 'sensitive', 'flagged'. If memory exceeds this, return 404.

## Response `200`

Memory successfully retrieved

- SearchResponse
  - `code` integer — HTTP status code
  - `status` string — 'success' or 'error'
  - `data` SearchResult — Return type for SearchResult
    - `memories` Memory[], required
      - `id` string, required
      - `content` string, required
      - `title` string, nullable
      - `type` string, required
      - `metadata` union
        - string
        - object
      - `external_user_id` string, nullable
      - `customMetadata` object, nullable
      - `source_type` string
      - `context` ContextItem[], nullable
        - `role` 'user' | 'assistant', required
        - `content` string, required
      - `location` string, nullable
      - `tags` string[]
      - `hierarchical_structures` string
      - `source_url` string
      - `conversation_id` string
      - `topics` string[]
      - `steps` string[]
      - `current_step` string, nullable
      - `role` string, nullable — Role that generated this memory (user or assistant)
      - `category` string, nullable — Memory category based on role
      - `createdAt` string, date-time, nullable
      - `updatedAt` string, date-time, nullable
      - `acl` object, required
      - `user_id` string, required
      - `workspace_id` string, nullable
      - `organization_id` string, nullable — Organization ID that owns this memory
      - `namespace_id` string, nullable — Namespace ID this memory belongs to
      - `source_document_id` string, nullable
      - `source_message_id` string, nullable
      - `page_number` integer, nullable
      - `total_pages` integer, nullable
      - `file_url` string, nullable
      - `filename` string, nullable
      - `page` string, nullable
      - `external_user_read_access` string[], nullable
      - `external_user_write_access` string[], nullable
      - `user_read_access` string[], nullable
      - `user_write_access` string[], nullable
      - `workspace_read_access` string[], nullable
      - `workspace_write_access` string[], nullable
      - `role_read_access` string[], nullable
      - `role_write_access` string[], nullable
      - `namespace_read_access` string[], nullable
      - `namespace_write_access` string[], nullable
      - `organization_read_access` string[], nullable
      - `organization_write_access` string[], nullable
      - `embedding` number[], nullable — Full precision (float32) embedding vector from Qdrant. Typically 2560 dimensions for Qwen4B. Used for CoreML/ANE fp16 models.
      - `embedding_int8` integer[], nullable — Quantized INT8 embedding vector (values -128 to 127). 4x smaller than float32. Default format for efficiency.
      - `similarity_score` number, nullable — Cosine similarity from vector search (0-1). Measures semantic relevance to query.
      - `popularity_score` number, nullable — Popularity signal (0-1): 0.5*cacheConfidenceWeighted30d + 0.5*citationConfidenceWeighted30d. Uses stored EMA fields.
      - `recency_score` number, nullable — Recency signal (0-1): exp(-0.05 * days_since_last_access). Half-life ~14 days.
      - `reranker_score` number, nullable — Reranker relevance (0-1). From cross-encoder (Cohere/Qwen3/BGE) or LLM (GPT-5-nano).
      - `reranker_confidence` number, nullable — Reranker confidence (0-1). Meaningful for LLM reranking; equals reranker_score for cross-encoders.
      - `reranker_type` string, nullable — Reranker type: 'cross_encoder' (Cohere/Qwen3/BGE) or 'llm' (GPT-5-nano/GPT-4o-mini).
      - `relevance_score` number, nullable — Final relevance (0-1). rank_results=False: 0.6*sim + 0.25*pop + 0.15*recency. rank_results=True: RRF-based fusion.
      - `holographic_frequency_scores` object, nullable — Per-frequency-field scores from holographic scoring (e.g. {category: 0.9, topic: 0.7}). Only present when include_frequency_scores=True.
      - `metrics` object, nullable
      - `totalProcessingCost` number, nullable
    - `nodes` Node[], required
      - `label` string, required — Node type label - can be system type (Memory, Person, etc.) or custom type from UserGraphSchema
      - `properties` object, required — Node properties - structure depends on node type and schema
      - `schema_id` string, nullable — Reference to UserGraphSchema ID for custom nodes. Use GET /v1/schemas/{schema_id} to get full schema definition. Null for system nodes.
    - `schemas_used` string[], nullable — List of UserGraphSchema IDs used in this response. Use GET /v1/schemas/{id} to get full schema definitions.
  - `error` string, nullable — Error message if failed
  - `details` unknown
  - `search_id` string, nullable — Unique identifier for this search query, maps to QueryLog objectId in Parse Server

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `404` — Memory not found
- `422` — Validation Error
- `500` — Internal server error

---

[API](https://skmtc.net/papr-ai/apis/papr-memory-api.md) · [All operations](https://skmtc.net/papr-ai/apis/papr-memory-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/papr-ai/papr-memory-api/versions/b553be9aad37/schema)
