v1
Memory

Add a new memory item to the system with size validation and background processing.

**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**:
- Content-Type: application/json
- X-Client-Type: (e.g., 'papr_plugin', 'browser_extension')

**Role-Based Memory Categories**:
- **User memories**: preference, task, goal, facts, context
- **Assistant memories**: skills, learning

**New Metadata Fields**:
- `metadata.role`: Optional field to specify who generated the memory (user or assistant)
- `metadata.category`: Optional field for memory categorization based on role
- Both fields are stored within metadata at the same level as topics, location, etc.

The API validates content size against MAX_CONTENT_LENGTH environment variable (defaults to 15000 bytes).
post/v1/memory

Request

  • Base URL
    https://memory.papr.ai
  • URL
    https://memory.papr.ai/v1/memory
  • Auth
    • API key in header X-API-Key
    • or HTTP bearer

Query parameters

skip_background_processingboolean

If True, skips adding background tasks for processing

enable_holographicboolean

If True, applies holographic neural transforms and stores in holographic collection

frequency_schema_idstring nullable

Frequency schema for holographic embedding (e.g. 'cosqa', 'scifact'). Required when enable_holographic=True. Call GET /v1/frequencies to see available schemas.

formatstring nullable

Response format. Use 'omo' for Open Memory Object standard format (portable across platforms).

webhook_urlstring nullable

Webhook URL to notify when background processing completes. Receives POST with {event, memory_id, status, completed_at}.

webhook_secretstring nullable

Secret for webhook HMAC authentication. Sent as X-Webhook-Secret header and used to generate X-Webhook-Signature.

Request body

contentstring required

The content of the memory item you want to add to memory

type'text' | 'code_snippet' | 'document'

Valid memory types

organization_idstring nullable

DEPRECATED - Internal only. Auto-populated from API key scope. Do not set manually. The organization is resolved automatically from the API key's associated organization.

namespace_idstring nullable

Optional namespace ID for multi-tenant memory scoping. When provided, memory is associated with this namespace.

external_user_idstring nullable

Your application's user identifier. This is the primary way to identify users. Use this for your app's user IDs (e.g., 'user_alice_123', UUID, email). Papr will automatically resolve or create internal users as needed.

user_idstring nullable

DEPRECATED: Use 'external_user_id' instead. Internal Papr Parse user ID. Most developers should not use this field directly.

Example request

{
  "content": "Meeting with John Smith from Acme Corp about the Q4 project timeline",
  "context": [
    {
      "content": "Let's discuss the Q4 project timeline with John",
      "role": "user"
    },
    {
      "content": "I'll help you prepare for the timeline discussion. What are your key milestones?",
      "role": "assistant"
    }
  ],
  "external_user_id": "user_alice_123",
  "metadata": {
    "conversationId": "conv-123",
    "customMetadata": {
      "meeting_type": "planning",
      "project_id": "q4-roadmap"
    },
    "emoji_tags": [
      "📅",
      "👥",
      "📋"
    ],
    "emotion_tags": [
      "focused",
      "productive"
    ],
    "hierarchical_structures": "Business/Meetings/Project Planning",
    "location": "Conference Room A",
    "sourceUrl": "https://calendar.example.com/meeting/123",
    "topics": [
      "product",
      "planning",
      "meetings"
    ]
  },
  "policy": {
    "acl": {
      "read": [
        "external_user:user_alice_123"
      ],
      "write": [
        "external_user:user_alice_123"
      ]
    },
    "consent": "implicit",
    "graph": {
      "link_to": [
        "Person:name~John Smith",
        "Company:name~Acme Corp",
        "Meeting:title~Q4 project timeline"
      ],
      "mode": "auto"
    },
    "risk": "none",
    "transform_embedding": {
      "domain_id": "general",
      "mode": "auto"
    }
  },
  "type": "text"
}

Response

Memory successfully added

codeinteger

HTTP status code

statusstring

'success' or 'error'

errorstring nullable

Error message if failed

detailsunknown

Changes

    • info

      added the new optional query request parameter enable_holographic

    • info

      added the new optional query request parameter frequency_schema_id

    • warning

      deleted the query request parameter enable_holographic

    • warning

      deleted the query request parameter frequency_schema_id