API Reference
Complete reference for the Vidurai API.
Core Classes
Vidurai
The main class for interacting with Vidurai's memory system.
from vidurai import Vidurai
memory = Vidurai(
api_key: str = None,
user_id: str = None,
**config
)
Parameters:
api_key(str, optional): API key for cloud storageuser_id(str, optional): Unique user identifier**config: Additional configuration options
Methods
remember()
Store a new memory.
memory.remember(
session_id: str,
content: str,
category: str = "general",
metadata: dict = None,
importance: float = None
) -> Memory
Parameters:
session_id(str): User/session identifiercontent(str): Content to remembercategory(str, optional): Memory category (default: "general")metadata(dict, optional): Additional metadataimportance(float, optional): Manual importance score (0-1)
Returns:
Memory: The stored memory object
Example:
memory.remember(
session_id="user-123",
content="User prefers dark mode",
category="preference",
metadata={"source": "settings_page"},
importance=0.9
)
recall()
Retrieve relevant memories based on a query.
memory.recall(
session_id: str,
query: str,
limit: int = 5,
category: str = None,
min_score: float = 0.0
) -> List[Memory]
Parameters:
session_id(str): User/session identifierquery(str): Search querylimit(int, optional): Maximum memories to return (default: 5)category(str, optional): Filter by categorymin_score(float, optional): Minimum relevance score (default: 0.0)
Returns:
List[Memory]: List of relevant memories, sorted by relevance
Example:
memories = memory.recall(
session_id="user-123",
query="What are user's preferences?",
limit=10,
category="preference",
min_score=0.7
)
for m in memories:
print(f"{m.content} (score: {m.score})")
search()
Search memories with advanced filters.
memory.search(
session_id: str,
category: str = None,
after: datetime = None,
before: datetime = None,
limit: int = 100
) -> List[Memory]
Parameters:
session_id(str): User/session identifiercategory(str, optional): Filter by categoryafter(datetime, optional): Memories after this datebefore(datetime, optional): Memories before this datelimit(int, optional): Maximum results (default: 100)
Returns:
List[Memory]: List of matching memories
Example:
from datetime import datetime, timedelta
# Get last week's conversations
recent = memory.search(
session_id="user-123",
category="conversation",
after=datetime.now() - timedelta(days=7),
limit=50
)
update()
Update an existing memory.
memory.update(
memory_id: str,
content: str = None,
category: str = None,
metadata: dict = None,
importance: float = None
) -> Memory
Parameters:
memory_id(str): ID of memory to updatecontent(str, optional): New contentcategory(str, optional): New categorymetadata(dict, optional): New metadataimportance(float, optional): New importance score
Returns:
Memory: Updated memory object
Example:
memory.update(
memory_id="mem_abc123",
content="User now prefers light mode",
importance=0.95
)
forget()
Delete a specific memory.
memory.forget(
memory_id: str
) -> bool
Parameters:
memory_id(str): ID of memory to delete
Returns:
bool: True if successful
Example:
memory.forget(memory_id="mem_abc123")
forget_all()
Delete all memories for a user.
memory.forget_all(
session_id: str,
category: str = None
) -> int
Parameters:
session_id(str): User/session identifiercategory(str, optional): Only delete from this category
Returns:
int: Number of memories deleted
Example:
# Delete all memories
count = memory.forget_all(session_id="user-123")
print(f"Deleted {count} memories")
# Delete only conversations
count = memory.forget_all(
session_id="user-123",
category="conversation"
)
Data Models
Memory
The Memory object returned by Vidurai methods.
Attributes:
class Memory:
id: str # Unique memory ID
session_id: str # User/session identifier
content: str # Memory content
category: str # Memory category
importance: float # Importance score (0-1)
score: float # Relevance score (for recall)
created_at: datetime # Creation timestamp
updated_at: datetime # Last update timestamp
metadata: dict # Additional metadata
kosha: str # Memory layer (annamaya/manomaya/vijnanamaya)
Methods:
# Convert to dictionary
memory.to_dict() -> dict
# Convert to JSON
memory.to_json() -> str
Categories
Built-in memory categories:
preference: User preferences and settingsconversation: Chat history and interactionsfact: Factual information about the usergoal: User goals and objectivescontext: Contextual informationgeneral: Uncategorized memories
Custom categories:
memory.remember(
session_id="user-123",
content="User completed Python course",
category="education" # Custom category
)
Error Handling
Exceptions
from vidurai.exceptions import (
ViduraiError, # Base exception
AuthenticationError, # Invalid API key
MemoryNotFoundError, # Memory doesn't exist
QuotaExceededError, # Usage limit reached
ValidationError # Invalid parameters
)
Example:
from vidurai import Vidurai
from vidurai.exceptions import AuthenticationError, MemoryNotFoundError
try:
memory = Vidurai(api_key="invalid-key")
memory.remember(
session_id="user-123",
content="Test memory"
)
except AuthenticationError:
print("Invalid API key")
except MemoryNotFoundError:
print("Memory not found")
except ViduraiError as e:
print(f"Error: {e}")
Async API
Asynchronous version of the API:
from vidurai import AsyncVidurai
async def main():
memory = AsyncVidurai(user_id="user-123")
# Store memory
await memory.remember(
session_id="user-123",
content="Async memory"
)
# Retrieve memories
memories = await memory.recall(
session_id="user-123",
query="test"
)
await memory.close()
# Run
import asyncio
asyncio.run(main())
Batch Operations
Process multiple memories efficiently:
# Batch remember
memories = memory.batch_remember(
session_id="user-123",
contents=[
"Memory 1",
"Memory 2",
"Memory 3"
],
category="conversation"
)
# Batch recall
results = memory.batch_recall(
session_id="user-123",
queries=["query1", "query2", "query3"],
limit=5
)
Utilities
Export/Import
# Export memories
data = memory.export(
session_id="user-123",
format="json" # or "csv"
)
# Import memories
memory.import_data(
session_id="user-123",
data=data,
format="json"
)
Statistics
# Get memory statistics
stats = memory.get_stats(session_id="user-123")
print(stats)
# {
# "total_memories": 150,
# "by_category": {"preference": 20, "conversation": 130},
# "by_kosha": {"annamaya": 10, "manomaya": 100, "vijnanamaya": 40},
# "avg_importance": 0.65,
# "storage_size": "2.5 MB"
# }
Next Steps
- Best Practices - Production deployment guide
- Configuration - Customize Vidurai
Questions? Join our Discord community!