POST /memories
Save a memory for future agent sessions.
Memories are durable lessons shared across the whole organization — conventions, past decisions, known gotchas that an agent cannot derive from the repository itself. One concise fact per memory; the description is what a reader sees in the index. Creating never overwrites: a path that already exists is a 409, so correcting an existing memory is an explicit edit.
curl -X POST "https://api.ellipsis.dev/v1/memories" \
-H "Authorization: Bearer $ELLIPSIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "...",
"description": "...",
"path": "..."
}'{
"memory": {
"content": "string",
"content_sha256": "string",
"created_at": "2026-01-01T00:00:00Z",
"created_by": {
"id": "string",
"type": "agent_session"
},
"description": "string",
"id": "string",
"path": "string",
"updated_at": "2026-01-01T00:00:00Z",
"updated_by": {
"id": "string",
"type": "agent_session"
}
}
}import os
from ellipsis import Ellipsis
client = Ellipsis(api_key=os.environ["ELLIPSIS_API_TOKEN"])
result = client.memories.create("...", "...", "...")
print(result){
"memory": {
"content": "string",
"content_sha256": "string",
"created_at": "2026-01-01T00:00:00Z",
"created_by": {
"id": "string",
"type": "agent_session"
},
"description": "string",
"id": "string",
"path": "string",
"updated_at": "2026-01-01T00:00:00Z",
"updated_by": {
"id": "string",
"type": "agent_session"
}
}
}import { Ellipsis } from '@ellipsis-dev/sdk';
const client = new Ellipsis({
apiKey: process.env.ELLIPSIS_API_TOKEN!,
});
const result = await client.memories.create(
{ content: '...', description: '...', path: '...' },
);
console.log(result);{
"memory": {
"content": "string",
"content_sha256": "string",
"created_at": "2026-01-01T00:00:00Z",
"created_by": {
"id": "string",
"type": "agent_session"
},
"description": "string",
"id": "string",
"path": "string",
"updated_at": "2026-01-01T00:00:00Z",
"updated_by": {
"id": "string",
"type": "agent_session"
}
}
}{
"properties": {
"content": {
"type": "string"
},
"description": {
"type": "string"
},
"path": {
"type": "string"
}
},
"required": [
"path",
"description",
"content"
],
"type": "object"
}{
"properties": {
"memory": {
"properties": {
"content": {
"type": "string"
},
"content_sha256": {
"type": "string"
},
"created_at": {
"format": "date-time",
"type": "string"
},
"created_by": {
"properties": {
"id": {
"type": "string"
},
"type": {
"enum": [
"agent_session",
"api_key",
"user"
],
"type": "string"
}
},
"required": [
"type",
"id"
],
"type": "object"
},
"description": {
"type": "string"
},
"id": {
"type": "string"
},
"path": {
"type": "string"
},
"updated_at": {
"format": "date-time",
"type": "string"
},
"updated_by": {
"properties": {
"id": {
"type": "string"
},
"type": {
"enum": [
"agent_session",
"api_key",
"user"
],
"type": "string"
}
},
"required": [
"type",
"id"
],
"type": "object"
}
},
"required": [
"id",
"path",
"description",
"content",
"content_sha256",
"created_by",
"updated_by",
"created_at",
"updated_at"
],
"type": "object"
}
},
"required": [
"memory"
],
"type": "object"
}Request
The memory's markdown content, at most 100 KB of UTF-8.
A one-line summary, at most 200 characters and no newlines. This is the only thing a reader sees in the index, so make it say what the memory is for.
Where to store the memory. A memory path is slash-separated segments of [a-z0-9._-], with no leading or trailing slash, no empty segments, no '.' or '..' segments, at most 512 characters, ending in '.md'.