Python SDK API Reference
Complete reference for the LanOnasis Python SDK. This document covers all available methods, parameters, and return types.
MemoryClient
The main client class for interacting with the LanOnasis API.
Constructor
MemoryClient(
api_key: str,
base_url: str = "https://api.lanonasis.com",
timeout: int = 30,
max_retries: int = 3,
retry_delay: float = 1.0,
user_agent: str = "lanonasis-python/1.0"
)
Parameters:
api_key(str): Your LanOnasis API keybase_url(str): API base URL (default: production)timeout(int): Request timeout in secondsmax_retries(int): Maximum retry attemptsretry_delay(float): Delay between retries in secondsuser_agent(str): Custom user agent string
Memory Operations
create_memory
Create a new memory.
def create_memory(
self,
content: str,
metadata: Optional[Dict[str, Any]] = None,
tags: Optional[List[str]] = None,
**kwargs
) -> Memory
Parameters:
content(str): Memory contentmetadata(Dict[str, Any], optional): Additional metadatatags(List[str], optional): Memory tags
Returns: Memory object
Example:
memory = client.create_memory(
content="Important project notes",
metadata={"project": "web-app", "priority": "high"},
tags=["work", "important"]
)
get_memory
Retrieve a specific memory by ID.
def get_memory(self, memory_id: str) -> Memory
Parameters:
memory_id(str): Memory ID
Returns: Memory object
Example:
memory = client.get_memory("mem_1234567890abcdef")
update_memory
Update an existing memory.
def update_memory(
self,
memory_id: str,
content: Optional[str] = None,
metadata: Optional[Dict[str, Any]] = None,
tags: Optional[List[str]] = None,
**kwargs
) -> Memory
Parameters:
memory_id(str): Memory IDcontent(str, optional): New contentmetadata(Dict[str, Any], optional): Updated metadatatags(List[str], optional): Updated tags
Returns: Memory object
Example:
updated_memory = client.update_memory(
memory_id="mem_1234567890abcdef",
content="Updated content",
metadata={"updated": True}
)
delete_memory
Delete a memory.
def delete_memory(self, memory_id: str) -> bool
Parameters:
memory_id(str): Memory ID
Returns: bool - True if successful
Example:
success = client.delete_memory("mem_1234567890abcdef")
list_memories
List memories with optional filtering.
def list_memories(
self,
limit: int = 20,
offset: int = 0,
filters: Optional[Dict[str, Any]] = None,
sort_by: Optional[str] = None,
sort_order: str = "desc"
) -> MemoryList
Parameters:
limit(int): Number of memories to returnoffset(int): Number of memories to skipfilters(Dict[str, Any], optional): Filter criteriasort_by(str, optional): Field to sort bysort_order(str): Sort order ("asc" or "desc")
Returns: MemoryList object
Example:
memories = client.list_memories(
limit=50,
filters={"category": "work"},
sort_by="created_at"
)
Search Operations
search_memories
Search memories using natural language.
def search_memories(
self,
query: str,
limit: int = 10,
filters: Optional[Dict[str, Any]] = None,
include_metadata: bool = True,
**kwargs
) -> SearchResults
Parameters:
query(str): Search querylimit(int): Maximum number of resultsfilters(Dict[str, Any], optional): Additional filtersinclude_metadata(bool): Include metadata in results
Returns: SearchResults object
Example:
results = client.search_memories(
query="project meeting notes",
limit=20,
filters={"category": "work"}
)
generate_embedding
Generate vector embeddings for text.
def generate_embedding(
self,
text: str,
model: str = "text-embedding-3-large",
dimensions: int = 1536,
metadata: Optional[Dict[str, Any]] = None
) -> Embedding
Parameters:
text(str): Text to embedmodel(str): Embedding model to usedimensions(int): Number of dimensionsmetadata(Dict[str, Any], optional): Additional metadata
Returns: Embedding object
Example:
embedding = client.generate_embedding(
text="This is some text to embed",
model="text-embedding-3-large",
dimensions=1536
)
Batch Operations
batch_operations
Perform multiple operations in a single request.
def batch_operations(
self,
operations: List[Dict[str, Any]],
continue_on_error: bool = False,
max_retries: int = 3,
timeout: int = 30000
) -> BatchResult
Parameters:
operations(List[Dict[str, Any]]): List of operationscontinue_on_error(bool): Continue if individual operations failmax_retries(int): Maximum retry attemptstimeout(int): Timeout in milliseconds
Returns: BatchResult object
Example:
operations = [
{
"type": "create",
"data": {
"content": "Memory 1",
"metadata": {"type": "note"}
}
},
{
"type": "create",
"data": {
"content": "Memory 2",
"metadata": {"type": "note"}
}
}
]
result = client.batch_operations(operations)
Real-time Features
create_webhook
Create a webhook for real-time notifications.
def create_webhook(
self,
url: str,
events: List[str],
secret: Optional[str] = None,
active: bool = True,
retry_policy: Optional[Dict[str, Any]] = None,
filters: Optional[Dict[str, Any]] = None
) -> Webhook
Parameters:
url(str): Webhook endpoint URLevents(List[str]): Events to subscribe tosecret(str, optional): Webhook secret for verificationactive(bool): Whether webhook is activeretry_policy(Dict[str, Any], optional): Retry configurationfilters(Dict[str, Any], optional): Event filters
Returns: Webhook object
Example:
webhook = client.create_webhook(
url="https://your-app.com/webhooks/lanonasis",
events=["memory.created", "memory.updated"],
secret="your-webhook-secret"
)
stream_events
Stream real-time events.
async def stream_events(
self,
events: List[str],
filters: Optional[Dict[str, Any]] = None,
heartbeat: int = 30
) -> AsyncIterator[Event]
Parameters:
events(List[str]): Events to subscribe tofilters(Dict[str, Any], optional): Event filtersheartbeat(int): Heartbeat interval in seconds
Returns: AsyncIterator[Event]
Example:
async for event in client.stream_events(
events=["memory.created", "memory.updated"]
):
print(f"Event: {event.type}, Data: {event.data}")
Analytics
get_analytics
Retrieve analytics and metrics.
def get_analytics(
self,
timeframe: Optional[str] = None,
start_date: Optional[str] = None,
end_date: Optional[str] = None,
metrics: Optional[List[str]] = None,
group_by: Optional[str] = None
) -> Analytics
Parameters:
timeframe(str, optional): Time period ("1h", "24h", "7d", "30d", "90d")start_date(str, optional): Start date in ISO 8601 formatend_date(str, optional): End date in ISO 8601 formatmetrics(List[str], optional): Specific metrics to includegroup_by(str, optional): Group results by time period
Returns: Analytics object
Example:
analytics = client.get_analytics(
timeframe="7d",
metrics=["memory_operations", "search_queries"]
)
Data Models
Memory
Represents a memory object.
class Memory:
id: str
content: str
metadata: Dict[str, Any]
tags: List[str]
created_at: datetime
updated_at: datetime
created_by: Optional[str]
updated_by: Optional[str]
SearchResults
Represents search results.
class SearchResults:
results: List[Memory]
total: int
query: str
execution_time: float
filters: Optional[Dict[str, Any]]
Embedding
Represents a vector embedding.
class Embedding:
id: str
vector: List[float]
model: str
dimensions: int
text: str
metadata: Dict[str, Any]
created_at: datetime
Webhook
Represents a webhook configuration.
class Webhook:
id: str
url: str
events: List[str]
secret: str
active: bool
retry_policy: Dict[str, Any]
filters: Optional[Dict[str, Any]]
created_at: datetime
updated_at: datetime
Event
Represents a real-time event.
class Event:
id: str
type: str
data: Dict[str, Any]
created: datetime
webhook_id: Optional[str]
attempt: int
livemode: bool
Error Handling
LanonasisError
Base exception for all LanOnasis API errors.
class LanonasisError(Exception):
code: str
message: str
details: Optional[Dict[str, Any]]
status_code: Optional[int]
Specific Error Types
class AuthenticationError(LanonasisError):
"""Raised when authentication fails"""
class ValidationError(LanonasisError):
"""Raised when request validation fails"""
class RateLimitError(LanonasisError):
"""Raised when rate limit is exceeded"""
class NotFoundError(LanonasisError):
"""Raised when resource is not found"""
class ServerError(LanonasisError):
"""Raised when server error occurs"""
Configuration
Environment Variables
The SDK respects the following environment variables:
LANONASIS_API_KEY: Your API keyLANONASIS_BASE_URL: API base URLLANONASIS_TIMEOUT: Request timeoutLANONASIS_MAX_RETRIES: Maximum retry attempts
Logging
Enable logging for debugging:
import logging
# Enable debug logging
logging.basicConfig(level=logging.DEBUG)
# Or configure specific logger
logger = logging.getLogger('lanonasis')
logger.setLevel(logging.DEBUG)