all.sourceall.source

HTTP API

Use Prime from any language via REST. Start the server and call endpoints with curl, fetch, or any HTTP client.

Start the Server

allsource-prime --mode http --port 3905 --data-dir ~/.prime/memory

The server binds to 0.0.0.0:3905 by default. All data is persisted to the specified data directory.

Create a Node

POST /api/v1/prime/nodes

curl -X POST http://localhost:3905/api/v1/prime/nodes \
  -H "Content-Type: application/json" \
  -d '{
    "type": "person",
    "name": "Alice",
    "domain": "engineering",
    "properties": {
      "role": "Lead Engineer",
      "started": "2026-01"
    }
  }'
{
  "id": "node_a1b2c3d4",
  "type": "person",
  "name": "Alice",
  "domain": "engineering",
  "properties": { "role": "Lead Engineer", "started": "2026-01" },
  "created_at": "2026-03-22T10:00:00Z"
}

Get a Node

GET /api/v1/prime/nodes/:id

curl http://localhost:3905/api/v1/prime/nodes/node_a1b2c3d4
{
  "id": "node_a1b2c3d4",
  "type": "person",
  "name": "Alice",
  "domain": "engineering",
  "properties": { "role": "Lead Engineer", "started": "2026-01" },
  "created_at": "2026-03-22T10:00:00Z"
}

Delete a Node

DELETE /api/v1/prime/nodes/:id

curl -X DELETE http://localhost:3905/api/v1/prime/nodes/node_a1b2c3d4
{ "deleted": true, "id": "node_a1b2c3d4" }

Deletes are soft — the node is removed from the active graph but preserved in the event history.

Create an Edge

POST /api/v1/prime/edges

curl -X POST http://localhost:3905/api/v1/prime/edges \
  -H "Content-Type: application/json" \
  -d '{
    "source": "node_a1b2c3d4",
    "target": "node_e5f6g7h8",
    "relation": "leads"
  }'
{
  "source": "node_a1b2c3d4",
  "target": "node_e5f6g7h8",
  "relation": "leads",
  "created_at": "2026-03-22T10:01:00Z"
}

Get Neighbors

GET /api/v1/prime/nodes/:id/neighbors

curl http://localhost:3905/api/v1/prime/nodes/node_a1b2c3d4/neighbors
{
  "neighbors": [
    {
      "node": { "id": "node_e5f6g7h8", "type": "project", "name": "Prime" },
      "relation": "leads",
      "direction": "outgoing"
    }
  ],
  "count": 1
}

Hybrid Recall

POST /api/v1/prime/recall — combines vector similarity, graph expansion, and temporal recency.

curl -X POST http://localhost:3905/api/v1/prime/recall \
  -H "Content-Type: application/json" \
  -d '{
    "query": "Who leads the Prime project?",
    "top_k": 5
  }'
{
  "results": [
    {
      "node": { "id": "node_a1b2c3d4", "type": "person", "name": "Alice" },
      "score": 0.92,
      "context": [
        { "relation": "leads", "target": "Prime" }
      ]
    }
  ],
  "query": "Who leads the Prime project?"
}

Compressed Index

GET /api/v1/prime/index — returns the auto-generated markdown knowledge map.

curl http://localhost:3905/api/v1/prime/index
{
  "index": "# Knowledge Index\n_2 nodes, 1 domain_\n\n## engineering\n- **Nodes:** 2 (person, project)\n- **Examples:** Alice, Prime",
  "node_count": 2,
  "domain_count": 1
}

Combined Context

POST /api/v1/prime/context — recall + index scaffolding for cross-domain questions.

curl -X POST http://localhost:3905/api/v1/prime/context \
  -H "Content-Type: application/json" \
  -d '{ "query": "How does engineering relate to revenue?" }'
{
  "index_excerpt": "## engineering\n- ...",
  "recall_results": [...],
  "cross_references": [
    { "from_domain": "engineering", "to_domain": "revenue", "edges": 3 }
  ]
}

Graph Stats

GET /api/v1/prime/stats

curl http://localhost:3905/api/v1/prime/stats
{
  "nodes": 42,
  "edges": 67,
  "domains": ["engineering", "product", "revenue"],
  "vectors": 128,
  "events_total": 312
}

Health Check

GET /health

curl http://localhost:3905/health
{ "status": "ok" }

Note: the health endpoint is at the root path, not under /api/v1/.

CORS Configuration

The HTTP server enables CORS for all origins by default in development. For production, set the PRIME_CORS_ORIGINS environment variable to a comma-separated list of allowed origins:

PRIME_CORS_ORIGINS="https://app.example.com,https://admin.example.com" \
  allsource-prime --mode http --port 3905 --data-dir /data/prime