API Reference

Reference 10 min read Updated May 2026

Overview

The GrooveOS API lets you integrate team memory into your own applications, scripts, and agents. Read and write memory items, search your team's knowledge, and manage conversations — all programmatically.

Base URL: https://api.grooveos.app

Authentication

# All requests need:
Authorization: Bearer {your-api-token}
X-Team-Scope: {your-team-slug}

Getting your API token

Get your API token from your profile page at chat.grooveos.appSettings → API tokens. Tokens are team-scoped — one token works for your team only. Treat your token like a password: do not commit it to version control.

Quick start

# Test your token
curl https://api.grooveos.app/v1/me \
  -H "Authorization: Bearer $TOKEN"

# Search team memory
curl "https://api.grooveos.app/v1/memory/search?q=Q2+target" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-Team-Scope: your-team"

Core endpoints

Health

GET /v1/healthz — No auth required. Returns {"status": "ok"} when the API is up.

Your profile

GET /v1/me — Returns your user info and team memberships. Useful for verifying your token and resolving your team slug.

Search memory

GET /v1/memory/search?q={query} — Semantic search across your team's memory. Results are ranked by relevance and filtered to your team scope automatically.

Parameter Type Description
q string Search query (semantic — natural language works)
project_scope string Filter by project slug
truth_level_min string Minimum truth level, e.g. WORKING
limit int Results per page (default 10, max 100)
curl "https://api.grooveos.app/v1/memory/search?q=fundraising+target&truth_level_min=WORKING&limit=5" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-Team-Scope: your-team"

Write a memory item

POST /v1/memory/upsert — Save a fact to your team's memory. If an item with the same content and source already exists, it is updated rather than duplicated.

curl -X POST https://api.grooveos.app/v1/memory/upsert \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-Team-Scope: your-team" \
  -H "Content-Type: application/json" \
  -d '{
    "item": {
      "content": "The Q2 fundraising target is 2M€",
      "team_scope": "your-team",
      "project_scope": "fundraising",
      "visibility": "team",
      "confidence": 0.9,
      "truth_level": "WORKING",
      "source": "api:my-script",
      "validation_status": "pending"
    }
  }'
# Returns: {"id": "mem_abc123..."}

All 7 tagging fields are required

Every memory item must include: team_scope, project_scope, visibility, confidence, truth_level, source, and validation_status. Missing any field returns HTTP 422.

Get a memory item

GET /v1/memory/{item_id} — Retrieve a specific item by its ID. Returns the full item including all tagging fields, timestamps, and audit history.

Conversations

GET /v1/conversations — List your team's conversations, ordered by most recent. Paginate with ?limit= and ?offset=.

POST /v1/conversations — Create a conversation record manually (useful for importing conversations from external tools).

GET /v1/conversations/{id} — Get a specific conversation including all messages and extracted memory items.

Graph neighbors

GET /v1/graph/neighbors?entity={name} — Get entities related to a person, project, or concept in your team's knowledge graph. Useful for exploring connections without writing Cypher queries.

curl "https://api.grooveos.app/v1/graph/neighbors?entity=Alice" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-Team-Scope: your-team"
# Returns people, projects, and concepts connected to Alice

System prompt

GET /v1/system-prompt — Get your team's CANONICAL facts formatted and ready for LLM injection. Use this as the system prompt in your own AI integrations so your models always know your team's ground truth.

curl https://api.grooveos.app/v1/system-prompt \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-Team-Scope: your-team"
# Returns: "Team knowledge:\n- Q2 target: 2M€\n- Tech lead: Alice..."

Error codes

Code Meaning
400 Validation error or team_scope mismatch
401 Invalid or missing token
403 Insufficient permissions (e.g., non-admin writing CANONICAL)
404 Item not found in your team
405 Cannot directly change truth_level — use the promotions workflow
422 Missing required tagging field(s)

Rate limits

Plan Limit
Free 60 requests / minute
Team 300 requests / minute
Enterprise Custom limits

Building an agent or automation?

If your use case needs higher rate limits — for example, a background agent that continuously writes memory items — contact us at team@excalibur.game for Enterprise pricing.

SDKs

Official SDKs are coming soon. For now, use the REST API directly with curl, requests (Python), or fetch (JavaScript).

Python example

import requests

def search_memory(query: str, team: str, token: str):
    response = requests.get(
        "https://api.grooveos.app/v1/memory/search",
        params={"q": query, "truth_level_min": "WORKING"},
        headers={
            "Authorization": f"Bearer {token}",
            "X-Team-Scope": team
        }
    )
    return response.json()

results = search_memory("Q2 target", "your-team", "your-token")

JavaScript example

async function searchMemory(query, team, token) {
  const params = new URLSearchParams({ q: query, truth_level_min: "WORKING" });
  const res = await fetch(
    `https://api.grooveos.app/v1/memory/search?${params}`,
    {
      headers: {
        "Authorization": `Bearer ${token}`,
        "X-Team-Scope": team
      }
    }
  );
  return res.json();
}

const results = await searchMemory("Q2 target", "your-team", "your-token");

What's next