aboutsummaryrefslogtreecommitdiff
path: root/apps/docs/memory-api/creation
diff options
context:
space:
mode:
authorDhravya Shah <[email protected]>2025-09-28 16:42:06 -0700
committerDhravya Shah <[email protected]>2025-09-28 16:42:06 -0700
commit2093b316d9ecb9cfa9c550f436caee08e12f5d11 (patch)
tree07b87fbd48b0b38ef26b9d5f839ad8cd61d82331 /apps/docs/memory-api/creation
parentMerge branch 'main' of https://github.com/supermemoryai/supermemory (diff)
downloadsupermemory-2093b316d9ecb9cfa9c550f436caee08e12f5d11.tar.xz
supermemory-2093b316d9ecb9cfa9c550f436caee08e12f5d11.zip
migrate docs to public
Diffstat (limited to 'apps/docs/memory-api/creation')
-rw-r--r--apps/docs/memory-api/creation/adding-memories.mdx376
-rw-r--r--apps/docs/memory-api/creation/status.mdx14
2 files changed, 390 insertions, 0 deletions
diff --git a/apps/docs/memory-api/creation/adding-memories.mdx b/apps/docs/memory-api/creation/adding-memories.mdx
new file mode 100644
index 00000000..9b34b3bb
--- /dev/null
+++ b/apps/docs/memory-api/creation/adding-memories.mdx
@@ -0,0 +1,376 @@
+---
+title: "Adding Memories"
+description: "Learn how to add content to supermemory"
+icon: "plus"
+---
+
+<Accordion title="Best Practices" icon="sparkles">
+1. **Content Organization**
+ - **Use `containerTags` for grouping/partitioning**
+ - Optional tags (array of strings) to group memories.
+ - Can be a user ID, project ID, or any other identifier.
+ - Allows filtering for memories that share specific tags.
+ - Example: `["user_123", "project_alpha"]`
+
+ Read more about [filtering](/memory-api/features/filtering)
+
+2. **Performance Tips**
+ - **Batch Operations**
+ - You can add multiple items in parallel
+ - Use different `containerTags` for different spaces
+ - Don't wait for processing to complete unless needed
+
+ - **Search Optimization**
+ ```json
+ {
+ "q": "error logs",
+ "documentThreshold": 0.7, // Higher = more precise
+ "limit": 5, // Keep it small
+ "onlyMatchingChunks": true // Skip extra context if not needed
+ }
+ ```
+
+3. **URL Content**
+ - Send clean URLs without tracking parameters
+ - Use article URLs, not homepage URLs
+ - Check URL accessibility before sending
+
+</Accordion>
+
+## Basic Usage
+
+To add a memory, send a POST request to `/add` with your content:
+
+<CodeGroup>
+
+```bash cURL
+curl https://api.supermemory.ai/v3/documents \
+ --request POST \
+ --header 'Content-Type: application/json' \
+ --header 'Authorization: Bearer SUPERMEMORY_API_KEY' \
+ --data '{
+ "customId": "xyz-my-db-id",
+ "content": "This is the content of my memory",
+ "metadata": {
+ "category": "technology",
+ "tag_1": "ai",
+ "tag_2": "machine-learning",
+ },
+ "containerTags": ["user_123", "project_xyz"]
+}'
+```
+
+```typescript Typescript
+await client.memory.create({
+ customId: "xyz-mydb-id",
+ content: "This is the content of my memory",
+ metadata: {
+ category: "technology",
+ tag_1": "ai",
+ tag_2": "machine-learning",
+ },
+ containerTags: ["user_123", "project_xyz"]
+})
+```
+
+```python Python
+client.memory.create(
+ customId="xyz-mydb-id",
+ content="documents related to python",
+ metadata={
+ "category": "datascience",
+ "tag_1": "ai",
+ "tag_2": "machine-learning",
+ },
+ containerTags=["user_123", "project_xyz"]
+)
+```
+
+</CodeGroup>
+
+The API will return a response with an ID and initial status:
+
+```json
+{
+ "id": "mem_abc123",
+ "status": "queued"
+}
+```
+
+<CodeGroup>
+
+```bash cURL
+curl https://api.supermemory.ai/v3/documents \
+ --request POST \
+ --header 'Content-Type: application/json' \
+ --header 'Authorization: Bearer SUPERMEMORY_API_KEY' \
+ -d '{
+ "content": "https://example.com/article",
+ "metadata": {
+ "source": "web", # Just example metadata
+ "category": "technology" # NOT required
+ },
+ "containerTags": ["user_456", "research_papers"]
+ }'
+```
+
+```typescript Typescript
+await client.memory.create({
+ content: "https://example.com/article",
+ userId: "user_456",
+ metadata: {
+ source: "web", // Just example metadata
+ category: "technology", // NOT required
+ },
+ containerTags: ["user_456", "research_papers"],
+});
+```
+
+```python Python
+client.memory.create(
+ content="https://example.com/article",
+ userId="user_456",
+ metadata={
+ "source": "web",
+ "category": "technology"
+ },
+ containerTags=["user_456", "research_papers"]
+)
+```
+
+</CodeGroup>
+
+
+## Metadata and Organization
+
+You can add rich metadata to organize your content:
+
+```json
+{
+ "metadata": {
+ "source": "string", // String
+ "priority": 1234, // Custom numeric field
+ "custom_field": "any" // Any custom field
+ }
+}
+```
+
+
+## Partitioning by user
+
+You can attribute and partition your data by providing a `userId`:
+
+<CodeGroup>
+
+```bash cURL
+curl https://api.supermemory.ai/v3/documents \
+ --request POST \
+ --header 'Content-Type: application/json' \
+ --header 'Authorization: Bearer SUPERMEMORY_API_KEY' \
+ -d '{
+ "content": "This is space-specific content",
+ "userId": "space_123",
+ "metadata": {
+ "category": "space-content"
+ }
+ }'
+```
+
+```typescript Typescript
+await client.memory.create({
+ content: "This is space-specific content",
+ userId: "space_123",
+ metadata: {
+ category: "space-content",
+ },
+});
+```
+
+```python Python
+client.memory.create(
+ content="This is space-specific content",
+ userId="space_123",
+ metadata={
+ "category": "space-content"
+ }
+)
+```
+
+</CodeGroup>
+
+<Note>
+ When searching, if you provide a `userId`, only memories from that space will
+ be returned.
+</Note>
+
+## Grouping
+
+You can group memories by providing an array of `containerTags`:
+
+<CodeGroup>
+
+```bash cURL
+curl https://api.supermemory.ai/v3/documents \
+ --request POST \
+ --header 'Content-Type: application/json' \
+ --header 'Authorization: Bearer SUPERMEMORY_API_KEY' \
+ -d '{
+ "content": "This is space-specific content",
+ "containerTags": ["user_123", "project_xyz"]
+ }'
+```
+
+```typescript Typescript
+await client.memory.create({
+ content: "This is space-specific content",
+ containerTags: ["user_123", "project_xyz"],
+});
+```
+
+```python Python
+client.memory.create(
+ content="This is space-specific content",
+ containerTags=["user_123", "project_xyz"]
+)
+```
+
+</CodeGroup>
+
+## Checking Status
+
+Check status using the memory ID:
+
+<CodeGroup>
+
+```bash cURL
+curl https://api.supermemory.ai/v3/documents/mem_abc123 \
+ --request GET \
+ --header 'Content-Type: application/json' \
+ --header 'Authorization: Bearer SUPERMEMORY_API_KEY'
+```
+
+```typescript Typescript
+await client.memory.get("mem_abc123");
+```
+
+```python Python
+client.memory.get("mem_abc123")
+```
+
+</CodeGroup>
+
+<Warning>
+
+Memories are deleted after 2 minutes if an irrecoverable error occurs.
+
+</Warning>
+
+## File Uploads
+
+For file uploads, use the dedicated file upload endpoint. You can include `containerTags` directly in the form data:
+
+<CodeGroup>
+
+```bash cURL
+curl https://api.supermemory.ai/v3/documents/file \
+ --request POST \
+ --header 'Authorization: Bearer SUPERMEMORY_API_KEY' \
+ --form 'file=@/path/to/your/file.pdf' \
+ --form 'containerTags=["user_123", "project_xyz"]'
+```
+
+```typescript Typescript
+const formData = new FormData();
+formData.append("file", fileBlob);
+formData.append("containerTags", JSON.stringify(["user_123", "project_xyz"]));
+
+const response = await fetch("https://api.supermemory.ai/v3/documents/file", {
+ method: "POST",
+ headers: {
+ Authorization: "Bearer SUPERMEMORY_API_KEY",
+ },
+ body: formData,
+});
+```
+
+```python Python
+import requests
+import json
+
+with open('/path/to/your/file.pdf', 'rb') as f:
+ files = {'file': f}
+ data = {'containerTags': json.dumps(["user_123", "project_xyz"])}
+ response = requests.post(
+ 'https://api.supermemory.ai/v3/documents/file',
+ headers={'Authorization': 'Bearer SUPERMEMORY_API_KEY'},
+ files=files,
+ data=data
+ )
+```
+
+</CodeGroup>
+
+### Adding Additional Metadata to Files
+
+If you need to add additional metadata (like title or description) after upload, you can use the PATCH endpoint:
+
+<CodeGroup>
+
+```bash cURL
+curl https://api.supermemory.ai/v3/documents/MEMORY_ID \
+ --request PATCH \
+ --header 'Content-Type: application/json' \
+ --header 'Authorization: Bearer SUPERMEMORY_API_KEY' \
+ --data '{
+ "metadata": {
+ "title": "My Document",
+ "description": "Important project document"
+ }
+ }'
+```
+
+```typescript Typescript
+await fetch(`https://api.supermemory.ai/v3/documents/${memoryId}`, {
+ method: "PATCH",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: "Bearer SUPERMEMORY_API_KEY",
+ },
+ body: JSON.stringify({
+ metadata: {
+ title: "My Document",
+ description: "Important project document",
+ },
+ }),
+});
+```
+
+```python Python
+import requests
+
+requests.patch(
+ f'https://api.supermemory.ai/v3/documents/{memory_id}',
+ headers={
+ 'Content-Type': 'application/json',
+ 'Authorization': 'Bearer SUPERMEMORY_API_KEY'
+ },
+ json={
+ 'metadata': {
+ 'title': 'My Document',
+ 'description': 'Important project document'
+ }
+ }
+)
+```
+
+</CodeGroup>
+
+<Note>
+ The file upload endpoint returns immediately with a memory ID and processing
+ status. The file will be processed asynchronously, and you can check its
+ status using the GET endpoint.
+</Note>
+
+## Next Steps
+
+Explore more advanced features in our [API Reference](/api-reference/manage-memories/add-memory)
diff --git a/apps/docs/memory-api/creation/status.mdx b/apps/docs/memory-api/creation/status.mdx
new file mode 100644
index 00000000..44a53656
--- /dev/null
+++ b/apps/docs/memory-api/creation/status.mdx
@@ -0,0 +1,14 @@
+---
+title: "Processing Status"
+description: "Learn about the stages of content processing"
+---
+
+After adding content, you can check its processing status:
+
+1. `queued`: Content is queued for processing
+2. `extracting`: Extracting content from source
+3. `chunking`: Splitting content into semantic chunks
+4. `embedding`: Generating vector embeddings
+5. `indexing`: Adding to search index
+6. `done`: Processing complete
+7. `failed`: Processing failed \ No newline at end of file