MemoryStackMemoryStack/Documentation

    Memories API

    Create, retrieve, and manage memories

    POST/api/v1/memories

    Create new memories from conversation messages. The system automatically extracts semantic facts and stores them with embeddings.

    Authentication

    Requires API key in Authorization header:

    Authorization: Bearer YOUR_API_KEY

    Request Body

    {
      "messages": [
        {
          "role": "user",
          "content": "I love TypeScript"
        },
        {
          "role": "assistant",
          "content": "TypeScript is great!"
        }
      ],
      "user_id": "user_123",  // Optional
      "metadata": {           // Optional
        "source": "chat",
        "session_id": "sess_xyz"
      }
    }

    Parameters

    FieldTypeRequiredDescription
    messagesarrayYesArray of conversation messages
    user_idstringNoEnd user ID for B2B applications
    metadataobjectNoAdditional context and tags

    Response

    {
      "success": true,
      "memories_created": 2,
      "memory_ids": [
        "69e0deb6-88d8-49a7-9da7-26a9c8f08d4b",
        "8daf534c-2583-43ee-ba5e-2bbcfee110cb"
      ],
      "owner_id": "user_abc123",
      "user_id": "user_123"
    }

    Example Request

    curl -X POST https://your-domain.com/api/v1/memories \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "messages": [
          {
            "role": "user",
            "content": "I love TypeScript"
          },
          {
            "role": "assistant",
            "content": "TypeScript is great!"
          }
        ],
        "user_id": "user_123"
      }'
    GET/api/v1/memories

    List memories with optional filtering and pagination.

    Query Parameters

    ParameterTypeDefaultDescription
    user_idstring-Filter by user ('self', 'all', or specific ID)
    limitnumber20Max results per page (1-100)
    cursorstring-Pagination cursor
    orderstringdescSort order ('asc' or 'desc')
    memory_typestring-Filter by type (preference, fact, etc.)
    min_confidencenumber-Minimum confidence score (0-1)

    Response

    {
      "success": true,
      "count": 2,
      "next_cursor": "eyJpZCI6IjEyMyJ9",
      "results": [
        {
          "id": "69e0deb6-88d8-49a7-9da7-26a9c8f08d4b",
          "owner_clerk_id": "user_abc123",
          "end_user_id": "user_123",
          "content": "The user loves TypeScript.",
          "memory_type": "preference",
          "confidence": 0.90,
          "metadata": {
            "source": "chat"
          },
          "source_type": "text",
          "created_at": "2024-11-15T10:30:00Z",
          "updated_at": "2024-11-15T10:30:00Z"
        }
      ]
    }

    Example Request

    curl -X GET "https://your-domain.com/api/v1/memories?user_id=user_123&limit=20" \
      -H "Authorization: Bearer YOUR_API_KEY"

    Memory Types

    The system automatically classifies memories into types:

    • preference - User preferences and likes
    • fact - Factual information
    • experience - Past experiences and events
    • goal - Future intentions and goals
    • relationship - Connections between entities

    Error Responses

    401 Unauthorized

    {
      "error": "Invalid API key"
    }

    429 Rate Limit Exceeded

    {
      "error": "Monthly API limit exceeded"
    }

    400 Bad Request

    {
      "error": "Invalid request payload",
      "details": {
        "fieldErrors": {
          "messages": ["Required"]
        }
      }
    }