API Documentation
Integrate MemorySpace with your applications using our REST API. Manage spaces, upload transcriptions, and access your knowledge base programmatically.
Authentication
All API requests require authentication using an API key. Include your API key in theAuthorizationheader.
curl -X GET "https://memoryspace.ai/api/v1/spaces" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json"
Keep your API key secure
Never expose your API key in client-side code or public repositories. Rotate keys regularly and use environment variables.
Getting an API Key
- Go to your Settings > API Keys
- Click "Create API Key"
- Give your key a name and select the required scopes
- Copy and securely store your key (it won't be shown again)
API Scopes
API keys are created with specific scopes that control access. Request only the scopes you need.
read:spacesRead access to spaces/categorieswrite:spacesCreate and modify spacesread:transcriptionsRead access to transcription jobs and contentwrite:transcriptionsCreate transcription jobsread:documentsRead access to knowledge base documentswrite:documentsUpload and modify documentsSpaces
Manage your knowledge spaces
/api/v1/spacesread:spacesQuery Parameters
limit(number)- Max results (default: 50, max: 100)offset(number)- Pagination offsetinclude_system(boolean)- Include system spacesResponse
{
"success": true,
"data": {
"spaces": [
{
"id": "uuid",
"name": "My Space",
"description": "Space description",
"is_active": true,
"created_at": "2024-01-01T00:00:00Z"
}
],
"pagination": { "total": 10, "limit": 50, "offset": 0 }
}
}/api/v1/spaceswrite:spacesRequest Body
name(string)description(string)- Space descriptiontemplate_id(string)- Template ID to applyResponse
{
"success": true,
"data": {
"id": "uuid",
"name": "My Space",
"description": "Space description",
"created_at": "2024-01-01T00:00:00Z"
}
}Transcriptions
Upload audio and manage transcriptions
/api/v1/transcriptionsread:transcriptionsQuery Parameters
limit(number)- Max results (default: 50, max: 100)offset(number)- Pagination offsetstatus(string)- Filter by status (pending, processing, completed, failed)category_id(string)- Filter by space IDResponse
{
"success": true,
"data": {
"transcriptions": [
{
"id": "uuid",
"file_name": "meeting.mp3",
"status": "completed",
"duration_seconds": 3600,
"created_at": "2024-01-01T00:00:00Z"
}
],
"pagination": { "total": 10, "limit": 50, "offset": 0 }
}
}/api/v1/transcriptionswrite:transcriptionsRequest Body
file_url(string)file_name(string)category_id(string)- Space ID to organize underlanguage(string)- Language code (default: auto)Response
{
"success": true,
"data": {
"id": "uuid",
"file_name": "meeting.mp3",
"status": "pending",
"created_at": "2024-01-01T00:00:00Z"
}
}/api/v1/transcriptions/:idread:transcriptionsResponse
{
"success": true,
"data": {
"id": "uuid",
"file_name": "meeting.mp3",
"status": "completed",
"duration_seconds": 3600,
"transcript": {
"text": "Full transcript text...",
"srt": "SRT format...",
"vtt": "VTT format..."
}
}
}Documents
Manage knowledge base documents
/api/v1/documentsread:documentsQuery Parameters
limit(number)- Max results (default: 50, max: 100)offset(number)- Pagination offsetcategory_id(string)- Filter by space IDstatus(string)- Filter by statusResponse
{
"success": true,
"data": {
"documents": [
{
"id": "uuid",
"file_name": "report.pdf",
"file_type": "pdf",
"status": "completed",
"created_at": "2024-01-01T00:00:00Z"
}
],
"pagination": { "total": 10, "limit": 50, "offset": 0 }
}
}/api/v1/documentswrite:documentsRequest Body
category_id(string)file_name(string)file_url(string)- URL to file (for remote files)text_content(string)- Direct text contentfile_type(string)- File type (pdf, txt, md, etc.)Response
{
"success": true,
"data": {
"id": "uuid",
"file_name": "report.pdf",
"file_type": "pdf",
"status": "pending",
"created_at": "2024-01-01T00:00:00Z"
}
}Error Handling
The API uses standard HTTP status codes. Errors return a consistent JSON structure:
{
"success": false,
"error": "Error message describing what went wrong"
}Common Status Codes
200Success201Created successfully400Bad request - invalid parameters401Unauthorized - invalid or missing API key403Forbidden - insufficient scope permissions404Not found - resource doesn't exist409Conflict - resource already exists429Rate limited - too many requests500Internal server errorRate Limits
API requests are rate limited based on your subscription tier:
Free
100
requests/hour
Pro
1,000
requests/hour
Enterprise
Custom
Contact sales
Rate limit headers are included in all responses:X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset