Papr Memory API (1.0.0)

API for managing personal memory items with authentication and user-specific data.

Authentication

This API supports three authentication methods:

  • API Key: Include your API key in the X-API-Key header
    X-API-Key: <your-api-key>
  • Session Token: Include your session token in the X-Session-Token header
    X-Session-Token: <your-session-token>
  • Bearer Token: Include your bearer token in the Authorization header
    Authorization: Bearer <token>

All endpoints require one of these authentication methods.

Download OpenAPI description
Languages
Servers
Papr Memory API
https://platform.papr.ai/_mock/apis/
Production server
https://memory.papr.ai/

v1

Operations

Create User Batch

Request

Create multiple users or link existing users to developer, and add each to the developer's workspace (if one exists).

Headers
X-API-Keystring(X-Api-Key)required
Bodyapplication/jsonrequired
usersArray of objects(Users)required
Example: [{"email":"user@example.com","external_id":"user123","metadata":{"name":"John Doe","preferences":{"theme":"dark"}},"type":"developerUser"}]
users[].​emailEmail (string) or Email (null)(Email)
Example: "user@example.com"
Any of:
string(email)(Email)
users[].​external_idstring(External Id)required
Example: "user123"
users[].​metadataMetadata (object) or Metadata (null)(Metadata)
Example: {"name":"John Doe","preferences":{"theme":"dark"}}
Any of:
users[].​typestring(UserType)
Default "developerUser"
Enum"developerUser""user""agent"
Example: "developerUser"
curl -i -X POST \
  https://platform.papr.ai/_mock/apis/v1/user/batch \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: string' \
  -d '{
    "users": [
      {
        "email": "user@example.com",
        "external_id": "user123",
        "metadata": {
          "name": "John Doe",
          "preferences": {
            "theme": "dark"
          }
        },
        "type": "developerUser"
      }
    ]
  }'

Responses

Successful Response

Bodyapplication/json
codeinteger(Code)required

HTTP status code

Example: 200
statusstring(Status)required

'success' or 'error'

Example: "success"
dataArray of Data (objects) or Data (null)(Data)
Example: [{"created_at":"2024-03-20T10:00:00.000Z","email":"user1@example.com","external_id":"user123","metadata":{"name":"John Doe","preferences":{"theme":"dark"}},"updated_at":"2024-03-20T10:00:00.000Z","user_id":"abc123"}]
Any of:
totalTotal (integer) or Total (null)(Total)
Example: 1
Any of:
integer(Total)
pagePage (integer) or Page (null)(Page)
Example: 1
Any of:
integer(Page)
page_sizePage Size (integer) or Page Size (null)(Page Size)
Example: 10
Any of:
integer(Page Size)
errorError (string) or Error (null)(Error)
Any of:
string(Error)
detailsDetails (any) or Details (null)(Details)
Any of:
any(Details)
Response
application/json
{ "code": 200, "data": [ {} ], "page": 1, "page_size": 10, "status": "success", "total": 1 }

Submit Feedback V1

Request

Submit feedback on search results to help improve model performance.

This endpoint allows developers to provide feedback on:

  • Overall answer quality (thumbs up/down, ratings)
  • Specific memory relevance and accuracy
  • User engagement signals (copy, save, create document actions)
  • Corrections and improvements

The feedback is used to train and improve:

  • Router model tier predictions
  • Memory retrieval ranking
  • Answer generation quality
  • Agentic graph search performance

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')
Bodyapplication/jsonrequired
search_idstring(Search Id)required

The search_id from SearchResponse that this feedback relates to

Example: "abc123def456"
feedbackDataobject(FeedbackData)required

The feedback data containing all feedback information

Example: {"assistantMessage":{"__type":"Pointer","className":"PostMessage","objectId":"abc123def456"},"citedMemoryIds":["mem_123","mem_456"],"citedNodeIds":["node_123","node_456"],"feedbackImpact":"positive","feedbackProcessed":true,"feedbackScore":1,"feedbackSource":"inline","feedbackText":"This answer was very helpful and accurate","feedbackType":"thumbs_up","feedbackValue":"helpful","userMessage":{"__type":"Pointer","className":"PostMessage","objectId":"abc123def456"}}
feedbackData.​userMessageParsePointer (object) or null
Example: {"__type":"Pointer","className":"PostMessage","objectId":"abc123def456"}
Any of:

A pointer to a Parse object

feedbackData.​assistantMessageParsePointer (object) or null
Example: {"__type":"Pointer","className":"PostMessage","objectId":"abc123def456"}
Any of:

A pointer to a Parse object

feedbackData.​feedbackTypestring(FeedbackType)required

Types of feedback that can be provided

Enum"thumbs_up""thumbs_down""rating""correction""report""copy_action""save_action""create_document""memory_relevance""answer_quality"
Example: "thumbs_up"
feedbackData.​feedbackValueFeedbackvalue (string) or Feedbackvalue (null)(Feedbackvalue)
Example: "helpful"
Any of:
string(Feedbackvalue)
feedbackData.​feedbackScoreFeedbackscore (number) or Feedbackscore (null)(Feedbackscore)
Example: 1
Any of:
number(Feedbackscore)
feedbackData.​feedbackTextFeedbacktext (string) or Feedbacktext (null)(Feedbacktext)
Example: "This answer was very helpful and accurate"
Any of:
string(Feedbacktext)
feedbackData.​feedbackSourcestring(FeedbackSource)required

Where the feedback was provided from

Enum"inline""post_query""session_end""memory_citation""answer_panel"
Example: "inline"
feedbackData.​citedMemoryIdsArray of Citedmemoryids (strings) or Citedmemoryids (null)(Citedmemoryids)
Example: ["mem_123","mem_456"]
Any of:
feedbackData.​citedNodeIdsArray of Citednodeids (strings) or Citednodeids (null)(Citednodeids)
Example: ["node_123","node_456"]
Any of:
feedbackData.​feedbackProcessedFeedbackprocessed (boolean) or Feedbackprocessed (null)(Feedbackprocessed)
Example: true
Any of:
boolean(Feedbackprocessed)
feedbackData.​feedbackImpactFeedbackimpact (string) or Feedbackimpact (null)(Feedbackimpact)
Example: "positive"
Any of:
string(Feedbackimpact)
user_idUser Id (string) or User Id (null)(User Id)

Internal user ID (if not provided, will be resolved from authentication)

Example: "abc123def456"
Any of:

Internal user ID (if not provided, will be resolved from authentication)

string(User Id)

Internal user ID (if not provided, will be resolved from authentication)

external_user_idExternal User Id (string) or External User Id (null)(External User Id)

External user ID for developer API keys acting on behalf of end users

Example: "dev_api_key_123"
Any of:

External user ID for developer API keys acting on behalf of end users

string(External User Id)

External user ID for developer API keys acting on behalf of end users

curl -i -X POST \
  https://platform.papr.ai/_mock/apis/v1/feedback \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: YOUR_API_KEY_HERE' \
  -d '{
    "external_user_id": "dev_api_key_123",
    "feedbackData": {
      "assistantMessage": {
        "__type": "Pointer",
        "className": "PostMessage",
        "objectId": "abc123def456"
      },
      "citedMemoryIds": [
        "mem_123",
        "mem_456"
      ],
      "citedNodeIds": [
        "node_123",
        "node_456"
      ],
      "feedbackImpact": "positive",
      "feedbackProcessed": true,
      "feedbackScore": 1,
      "feedbackSource": "inline",
      "feedbackText": "This answer was very helpful and accurate",
      "feedbackType": "thumbs_up",
      "feedbackValue": "helpful",
      "userMessage": {
        "__type": "Pointer",
        "className": "PostMessage",
        "objectId": "abc123def456"
      }
    },
    "search_id": "abc123def456",
    "user_id": "abc123def456"
  }'

Responses

Feedback submitted successfully

Bodyapplication/json
codeinteger(Code)required

HTTP status code

statusstring(Status)required

'success' or 'error'

feedback_idFeedback Id (string) or Feedback Id (null)(Feedback Id)

Unique feedback ID

Any of:

Unique feedback ID

string(Feedback Id)

Unique feedback ID

messagestring(Message)required

Human-readable message

errorError (string) or Error (null)(Error)

Error message if status is 'error'

Any of:

Error message if status is 'error'

string(Error)

Error message if status is 'error'

detailsDetails (object) or Details (null)(Details)

Additional error details

Any of:

Additional error details

Response
application/json
{ "code": 200, "status": "success", "feedback_id": "fb_123456789", "message": "Feedback submitted successfully and will be processed for model improvement" }

Submit Batch Feedback V1

Request

Submit multiple feedback items in a single request.

Useful for submitting session-end feedback or bulk feedback collection. Each feedback item is processed independently, so partial success is possible.

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')
Bodyapplication/jsonrequired
feedback_itemsArray of objects(Feedback Items)[ 1 .. 100 ] itemsrequired

List of feedback items to submit

Example: [{"external_user_id":"dev_api_key_123","feedbackData":{"assistantMessage":{"__type":"Pointer","className":"PostMessage","objectId":"abc123def456"},"citedMemoryIds":["mem_123","mem_456"],"citedNodeIds":["node_123","node_456"],"feedbackImpact":"positive","feedbackProcessed":true,"feedbackScore":1,"feedbackSource":"inline","feedbackText":"This answer was very helpful and accurate","feedbackType":"thumbs_up","feedbackValue":"helpful","userMessage":{"__type":"Pointer","className":"PostMessage","objectId":"abc123def456"}},"search_id":"abc123def456","user_id":"abc123def456"}]
feedback_items[].​search_idstring(Search Id)required

The search_id from SearchResponse that this feedback relates to

Example: "abc123def456"
feedback_items[].​feedbackDataobject(FeedbackData)required

The feedback data containing all feedback information

Example: {"assistantMessage":{"__type":"Pointer","className":"PostMessage","objectId":"abc123def456"},"citedMemoryIds":["mem_123","mem_456"],"citedNodeIds":["node_123","node_456"],"feedbackImpact":"positive","feedbackProcessed":true,"feedbackScore":1,"feedbackSource":"inline","feedbackText":"This answer was very helpful and accurate","feedbackType":"thumbs_up","feedbackValue":"helpful","userMessage":{"__type":"Pointer","className":"PostMessage","objectId":"abc123def456"}}
feedback_items[].​feedbackData.​userMessageParsePointer (object) or null
Example: {"__type":"Pointer","className":"PostMessage","objectId":"abc123def456"}
Any of:

A pointer to a Parse object

feedback_items[].​feedbackData.​assistantMessageParsePointer (object) or null
Example: {"__type":"Pointer","className":"PostMessage","objectId":"abc123def456"}
Any of:

A pointer to a Parse object

feedback_items[].​feedbackData.​feedbackTypestring(FeedbackType)required

Types of feedback that can be provided

Enum"thumbs_up""thumbs_down""rating""correction""report""copy_action""save_action""create_document""memory_relevance""answer_quality"
Example: "thumbs_up"
feedback_items[].​feedbackData.​feedbackValueFeedbackvalue (string) or Feedbackvalue (null)(Feedbackvalue)
Example: "helpful"
Any of:
string(Feedbackvalue)
feedback_items[].​feedbackData.​feedbackScoreFeedbackscore (number) or Feedbackscore (null)(Feedbackscore)
Example: 1
Any of:
number(Feedbackscore)
feedback_items[].​feedbackData.​feedbackTextFeedbacktext (string) or Feedbacktext (null)(Feedbacktext)
Example: "This answer was very helpful and accurate"
Any of:
string(Feedbacktext)
feedback_items[].​feedbackData.​feedbackSourcestring(FeedbackSource)required

Where the feedback was provided from

Enum"inline""post_query""session_end""memory_citation""answer_panel"
Example: "inline"
feedback_items[].​feedbackData.​citedMemoryIdsArray of Citedmemoryids (strings) or Citedmemoryids (null)(Citedmemoryids)
Example: ["mem_123","mem_456"]
Any of:
feedback_items[].​feedbackData.​citedNodeIdsArray of Citednodeids (strings) or Citednodeids (null)(Citednodeids)
Example: ["node_123","node_456"]
Any of:
feedback_items[].​feedbackData.​feedbackProcessedFeedbackprocessed (boolean) or Feedbackprocessed (null)(Feedbackprocessed)
Example: true
Any of:
boolean(Feedbackprocessed)
feedback_items[].​feedbackData.​feedbackImpactFeedbackimpact (string) or Feedbackimpact (null)(Feedbackimpact)
Example: "positive"
Any of:
string(Feedbackimpact)
feedback_items[].​user_idUser Id (string) or User Id (null)(User Id)

Internal user ID (if not provided, will be resolved from authentication)

Example: "abc123def456"
Any of:

Internal user ID (if not provided, will be resolved from authentication)

string(User Id)

Internal user ID (if not provided, will be resolved from authentication)

feedback_items[].​external_user_idExternal User Id (string) or External User Id (null)(External User Id)

External user ID for developer API keys acting on behalf of end users

Example: "dev_api_key_123"
Any of:

External user ID for developer API keys acting on behalf of end users

string(External User Id)

External user ID for developer API keys acting on behalf of end users

session_contextSession Context (object) or Session Context (null)(Session Context)

Session-level context for batch feedback

Any of:

Session-level context for batch feedback

curl -i -X POST \
  https://platform.papr.ai/_mock/apis/v1/feedback/batch \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: YOUR_API_KEY_HERE' \
  -d '{
    "feedback_items": [
      {
        "external_user_id": "dev_api_key_123",
        "feedbackData": {
          "assistantMessage": {
            "__type": "Pointer",
            "className": "PostMessage",
            "objectId": "abc123def456"
          },
          "citedMemoryIds": [
            "mem_123",
            "mem_456"
          ],
          "citedNodeIds": [
            "node_123",
            "node_456"
          ],
          "feedbackImpact": "positive",
          "feedbackProcessed": true,
          "feedbackScore": 1,
          "feedbackSource": "inline",
          "feedbackText": "This answer was very helpful and accurate",
          "feedbackType": "thumbs_up",
          "feedbackValue": "helpful",
          "userMessage": {
            "__type": "Pointer",
            "className": "PostMessage",
            "objectId": "abc123def456"
          }
        },
        "search_id": "abc123def456",
        "user_id": "abc123def456"
      }
    ],
    "session_context": {}
  }'

Responses

Batch feedback processed successfully

Bodyapplication/json
codeinteger(Code)required

HTTP status code

statusstring(Status)required

'success' or 'error'

feedback_idsArray of strings(Feedback Ids)

List of feedback IDs

successful_countinteger(Successful Count)

Number of successfully processed feedback items

Default 0
failed_countinteger(Failed Count)

Number of failed feedback items

Default 0
errorsArray of objects(Errors)

List of error details

messagestring(Message)required

Human-readable message

errorError (string) or Error (null)(Error)

Error message if status is 'error'

Any of:

Error message if status is 'error'

string(Error)

Error message if status is 'error'

Response
application/json
{ "code": 200, "status": "success", "feedback_ids": [ "fb_123", "fb_456" ], "successful_count": 2, "failed_count": 0, "errors": [], "message": "Processed 2 feedback items successfully" }

Memory

Operations

User

Operations

Feedback

Operations