Create a space
from memvai import Memv
client = Memv()
# Create a new space
response = client.spaces.create(
name="Personal Assistant",
description="Memories for my AI assistant"
)
space = response.space
print(f"Created space: {space.id}")
import Memv from 'memvai';
const client = new Memv();
// Create a new space
const response = await client.spaces.create({
name: 'Personal Assistant',
description: 'Memories for my AI assistant',
});
const { space } = response;
console.log(`Created space: ${space.id}`);
Response structure
The response contains aspace object with the following fields:
id- Unique space identifiername- Space namedescription- Space descriptioncreated_at- Creation timestampupdated_at- Last update timestamp
List spaces
# List all spaces
response = client.spaces.list()
for space in response.spaces:
print(f"{space.name} ({space.id})")
// List all spaces
const response = await client.spaces.list();
for (const space of response.spaces) {
console.log(`${space.name} (${space.id})`);
}
Retrieve a space
# Get space by ID
response = client.spaces.retrieve(space_id="space_abc123")
space = response.space
print(f"Name: {space.name}")
print(f"Description: {space.description}")
// Get space by ID
const response = await client.spaces.retrieve('space_abc123');
const { space } = response;
console.log(`Name: ${space.name}`);
console.log(`Description: ${space.description}`);
Update a space
# Update space details
response = client.spaces.update(
space_id="space_abc123",
name="Updated Name",
description="Updated description"
)
space = response.space
print(f"Updated: {space.name}")
// Update space details
const response = await client.spaces.update({
space_id: 'space_abc123',
name: 'Updated Name',
description: 'Updated description',
});
console.log(`Updated: ${response.space.name}`);
Delete a space
# Delete a space
response = client.spaces.delete(space_id="space_abc123")
if response.success:
print("Space deleted successfully")
// Delete a space
const response = await client.spaces.delete({
space_id: 'space_abc123',
});
if (response.success) {
console.log('Space deleted successfully');
}
Deleting a space permanently removes all memories, files, and data associated with it. This action cannot be undone.
Get space statistics
# Get space stats
stats = client.spaces.get_stats()
print(f"Total memories: {stats.total_memories}")
print(f"Total files: {stats.total_files}")
print(f"Storage used: {stats.storage_bytes} bytes")
// Get space stats
const stats = await client.spaces.getStats();
console.log(`Total memories: ${stats.total_memories}`);
console.log(`Total files: ${stats.total_files}`);
console.log(`Storage used: ${stats.storage_bytes} bytes`);
Common patterns
Create space if not exists
def get_or_create_space(client: Memv, name: str) -> str:
"""Get existing space by name or create new one."""
# List existing spaces
response = client.spaces.list()
# Find by name
for space in response.spaces:
if space.name == name:
return space.id
# Create new space
response = client.spaces.create(name=name)
return response.space.id
# Usage
space_id = get_or_create_space(client, "My App")
async function getOrCreateSpace(
client: Memv,
name: string
): Promise<string> {
// List existing spaces
const { spaces } = await client.spaces.list();
// Find by name
const existing = spaces.find(s => s.name === name);
if (existing) {
return existing.id;
}
// Create new space
const { space } = await client.spaces.create({ name });
return space.id;
}
// Usage
const spaceId = await getOrCreateSpace(client, 'My App');
Batch operations
def create_multiple_spaces(names: list[str]) -> list[str]:
"""Create multiple spaces."""
space_ids = []
for name in names:
response = client.spaces.create(name=name)
space_ids.append(response.space.id)
return space_ids
# Usage
space_ids = create_multiple_spaces([
"User Preferences",
"Chat History",
"Knowledge Base"
])
async function createMultipleSpaces(
names: string[]
): Promise<string[]> {
const promises = names.map(name =>
client.spaces.create({ name })
);
const responses = await Promise.all(promises);
return responses.map(r => r.space.id);
}
// Usage
const spaceIds = await createMultipleSpaces([
'User Preferences',
'Chat History',
'Knowledge Base',
]);
Best practices
Organize by use case
Organize by use case
Create separate spaces for different use cases or users:
# User-specific spaces
user_space = client.spaces.create(
name=f"User {user_id} - Preferences",
description="User preferences and settings"
)
# Feature-specific spaces
chat_space = client.spaces.create(
name="Chat History",
description="Conversation memories"
)
// User-specific spaces
const userSpace = await client.spaces.create({
name: `User ${userId} - Preferences`,
description: 'User preferences and settings',
});
// Feature-specific spaces
const chatSpace = await client.spaces.create({
name: 'Chat History',
description: 'Conversation memories',
});
Use descriptive names
Use descriptive names
Give spaces clear, descriptive names that indicate their purpose.
Clean up unused spaces
Clean up unused spaces
Regularly delete spaces that are no longer needed to manage costs.
Error handling
import memvai
from memvai import Memv
client = Memv()
try:
response = client.spaces.create(name="My Space")
space_id = response.space.id
print(f"Created: {space_id}")
except memvai.AuthenticationError:
print("Invalid API key")
except memvai.BadRequestError as e:
print(f"Invalid request: {e.message}")
except memvai.APIError as e:
print(f"API error: {e}")
import Memv from 'memvai';
const client = new Memv();
try {
const response = await client.spaces.create({
name: 'My Space',
});
console.log(`Created: ${response.space.id}`);
} catch (error) {
if (error instanceof Memv.AuthenticationError) {
console.error('Invalid API key');
} else if (error instanceof Memv.BadRequestError) {
console.error('Invalid request:', error.message);
} else if (error instanceof Memv.APIError) {
console.error('API error:', error.status, error.message);
}
}
Next steps
Memories
Add memories to your space
Files
Upload files to your space