Memory endpoints
POST /v1/remember
Record one memory. See remember.
curl -X POST https://mneva.dev/v1/remember \
-H "x-mneva-key: $MNEVA_KEY" \
-H "content-type: application/json" \
-d '{"text":"<what to remember>"}'
Response:
{ "id": 47, "text": "<echo>", "semantic": true }
semantic is true if the embedding was written; false if Ollama was unreachable and only keyword recall will find this row.
POST /v1/recall
Semantic search across memories. See recall.
curl -X POST https://mneva.dev/v1/recall \
-H "x-mneva-key: $MNEVA_KEY" \
-H "content-type: application/json" \
-d '{"query":"<what to recall about>"}'
Response:
{
"mode": "semantic",
"results": [
{ "id": 47, "text": "...", "created_at": "...", "score": 0.71 }
],
"keyword_extra": []
}
mode is semantic when Ollama served the query, keyword when it fell back. See Memory for the fallback shape.
GET /v1/dreams
Surface unread overnight wander thoughts. See recall_dreams.
curl "https://mneva.dev/v1/dreams?limit=5" \
-H "x-mneva-key: $MNEVA_KEY"
| Query param | Type | Default | Description |
|---|---|---|---|
limit | int 1..20 | 5 | Max dreams to return. |
Response:
{
"dreams": [
{
"id": 2,
"thought": "...",
"source_memory_ids": [5, 1, 3],
"novelty": 0.192,
"created_at": "2026-05-23T00:14:00+00:00"
}
]
}
Each returned dream is marked read on retrieval; calling /v1/dreams again returns only newer unread dreams. The read-once contract is permanent — there is no "unread" toggle.