REST API for Musu — shared memory for human-agent teams. All endpoints require a Bearer token in the Authorization header.
https://musu.ceylan.worldDownload OpenAPI JSONAuthentication
All endpoints require a valid session token or agent token passed as a Bearer token:
Authorization: Bearer musu_...
Agent tokens can be created in your workspace settings under the Agents tab.
/api/searchPerforms a vector-similarity search over project updates within a workspace. Optionally scoped to a single project. Returns up to 20 ranked results.
Request Body
{
"query": "authentication architecture decisions",
"workspaceId": "<uuid>",
"projectId": "<uuid> (optional)"
}Response (200 OK)
{
"results": [
{
"id": "<uuid>",
"title": "Migrated auth to JWT",
"summary": "Session-based auth replaced with JWT tokens.",
"update_type": "decision",
"importance": "high",
"created_at": "2025-05-01T10:00:00Z",
"project_id": "<uuid>",
"rank": 0.92
}
]
}Error Responses
| Code | Description |
|---|---|
| 400 | Missing query or workspaceId |
| 401 | Unauthorized |
| 403 | Not a workspace member |
| 429 | Rate limit exceeded |
/api/ai/big-pictureStreams an AI-generated summary of the project's current direction, recent changes, open questions, blockers, and recommended next steps. Requires at least 5 active updates. The response is a streaming text body and is persisted as a snapshot after generation completes.
Request Body
{
"projectId": "<uuid>",
"workspaceId": "<uuid>"
}Response (200 OK)
(streaming text/plain — AI-generated object with fields: current_direction, recent_changes, active_ideas, decisions_made, open_questions, blockers, next_recommended_steps, code_status)
Error Responses
| Code | Description |
|---|---|
| 400 | Missing projectId or workspaceId |
| 401 | Unauthorized |
| 403 | Not a workspace member |
| 404 | Project not found |
| 422 | Fewer than 5 active updates |
| 429 | Rate limit exceeded |
/api/ai/structureTakes freeform text from an agent or user and returns a structured update object with title, summary, type, importance, and bullet points. Useful for preprocessing agent-submitted content before storing it. Maximum input size is 20,000 characters.
Request Body
{
"text": "We finished migrating the auth module to JWT. The old session-based auth is now deprecated.",
"workspaceId": "<uuid>"
}Response (200 OK)
{
"title": "Migrated auth module to JWT",
"summary": "Session-based auth replaced; old system deprecated.",
"update_type": "decision",
"importance": "high",
"bullets": [
"JWT migration complete",
"Session-based auth deprecated"
]
}Error Responses
| Code | Description |
|---|---|
| 400 | Missing text or workspaceId |
| 401 | Unauthorized |
| 403 | Not a workspace member |
| 422 | Text exceeds 20,000 characters |
| 429 | Rate limit exceeded |
/api/ai/askRetrieves relevant updates via semantic search and uses an LLM to generate a grounded answer with citations. Useful for agents querying project history. Maximum question length is 500 characters.
Request Body
{
"question": "What was decided about the database schema?",
"workspaceId": "<uuid>",
"projectId": "<uuid>"
}Response (200 OK)
{
"answer": "The team decided to use PostgreSQL with a normalized schema [1]. A migration to add a projects table was approved [2].",
"sources": [
{
"id": "<uuid>",
"title": "Switched to PostgreSQL",
"update_type": "decision",
"created_at": "2025-04-20T09:00:00Z"
}
]
}Error Responses
| Code | Description |
|---|---|
| 400 | Missing question, workspaceId, or projectId |
| 401 | Unauthorized |
| 403 | Not a workspace member |
| 429 | Rate limit exceeded |
/api/ai/check-conflictsCompares a proposed decision against the most recent 20 approved decisions in the project and returns whether a conflict exists, which decision conflicts, and an explanation.
Request Body
{
"projectId": "<uuid>",
"workspaceId": "<uuid>",
"proposedDecision": "We will use PostgreSQL as the primary database."
}Response (200 OK)
{
"hasConflict": false,
"conflictingDecisionId": null,
"explanation": "No existing approved decisions contradict this proposal."
}Error Responses
| Code | Description |
|---|---|
| 400 | Missing required fields |
| 401 | Unauthorized |
| 403 | Not a workspace member |
| 429 | Rate limit exceeded |
/api/export/project/{projectId}Returns a complete JSON export of a project including all updates, ideas, decisions, and open questions. The response is served as a downloadable file attachment.
Response (200 OK)
{
"exported_at": "2025-05-17T12:00:00Z",
"project": {
"id": "<uuid>",
"name": "Musu",
"slug": "musu",
"description": "Shared memory platform",
"current_direction": "Scaling to enterprise teams",
"created_at": "2025-01-01T00:00:00Z"
},
"updates": [
"..."
],
"ideas": [
"..."
],
"decisions": [
"..."
],
"questions": [
"..."
]
}Error Responses
| Code | Description |
|---|---|
| 401 | Unauthorized |
| 403 | Not a workspace member |
| 404 | Project not found |
Musu — Shared memory for human-agent teams. Back to app