Memocore API
The REST API reads and writes the same memory your team uses in ChatGPT, Claude and other AI apps. Give a chatbot your knowledge base, save data from your own app or work with table projects from a script.
https://memocore.ai/api/v1
Requests and responses are JSON. Send request bodies with Content-Type: application/json.
Authentication
Every request needs a company API key, sent as a Bearer token in the Authorization header.
Authorization: Bearer YOUR_KEY
API keys come with the Team plan. In your company workspace open Integration, then Catalog, then API key. Choose the projects the key may use and copy the key.
A key sees only the projects you chose for it. Anything outside them answers 404, as if it did not exist.
The key is shown only once, so copy it right away. You can issue as many keys as you need.
Pricing
The API comes with the Team plan at $15 per seat per month. There is no extra charge per request.
Each key can make up to 100 requests per second.
A new company workspace starts with a 30-day free trial, no card needed.
See the Team planErrors and limits
Errors come back with an HTTP status and a short message that says what to fix.
| Status | Meaning |
|---|---|
400 | The request is invalid: a missing field, a wrong type or a value out of range. |
401 | The API key is missing or not valid. |
402 | The team subscription is inactive. Renew it to use API keys. |
404 | Not found, or outside the projects the key may use. |
409 | A conflict: the key covers several projects and the request needs a project_id, the memo is already archived, or a table row repeats a value in a unique column. In the last case the answer carries the memo_id of the existing row. |
429 | More than 100 requests per second with one key. Slow down and try again. |
Memo search, row queries and tag lists take limit (1 to 90, default 30) and skip for paging. The project list comes back whole.
AI apps (MCP)
Connecting an AI app rather than your own code? Add the MCP endpoint to ChatGPT, Claude, Cursor or another app that supports MCP. Setup guides for each app are on the MCP page.
https://memocore.ai/mcp
Search memos
GET/memos
Search the key’s projects by meaning and keywords together. Without a query it lists memos, newest first. Results carry a preview, not the full text: get a memo for its content.
Query parameters
querystringText to search for. Up to 400 characters count toward search by meaning. Omit it to list memos.
project_idstringSearch only these projects. Repeat the parameter for several.
tagsstringTag ids an item must carry, all of them. Repeat the parameter for several.
exclude_tagsstringTag ids to leave out. An item with any of them is skipped. Repeat the parameter for several.
semanticbooleanSet to false for keyword search only. Search by meaning also falls back to keywords on its own when the monthly search budget is used up.
archivedbooleanSet to true to search only archived memos.
limitnumberResults per page, 1 to 90. Default 30.
skipnumberResults to skip, for paging.
curl "https://memocore.ai/api/v1/memos?query=refund%20policy&limit=5" \ -H "Authorization: Bearer YOUR_KEY"
{
"items": [
{
"id": "6a5f648163d783ad68709520",
"title": "Refund policy",
"preview": "Refunds are possible within 30 days of purchase.",
"tags": [{ "id": "6a5f636c63d783ad6870943a", "name": "support" }],
"project": { "id": "6a5f62c463d783ad68709363", "name": "Help center" },
"has_files": false,
"created_at": "2026-10-01T09:30:00.000Z",
"updated_at": "2026-10-12T14:02:00.000Z"
}
],
"count": 1
}Create a memo
POST/memos
Save a memo to one of the key’s projects. For a table project, send the row as fields instead of content.
Body
project_idstringWhere to save the memo. Needed when the key covers several projects: without it the answer is 409 with the projects to choose from.
contentstringThe memo text, up to 100,000 characters. Required unless you send fields.
titlestringTitle of the memo.
previewstringA short summary shown in search results, up to 200 characters. It stays empty unless you send it.
metastringSearch hints: keywords and questions people may ask. Weighted highest in search and never shown.
fieldsobjectFor a table project: the row as column name → value.
tagsstring[]Tag ids from the same project.
expires_instringArchive the memo automatically after this time: 30m, 2h, 3d or 1w, up to 365d. Send none to remove the timer.
changesstringThe line written to the memo’s history and the project activity feed.
curl -X POST "https://memocore.ai/api/v1/memos" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"project_id": "6a5f62c463d783ad68709363",
"title": "Refund policy",
"content": "Refunds are possible within 30 days of purchase.",
"preview": "Refunds are possible within 30 days of purchase.",
"changes": "Added the refund policy"
}'{
"id": "6a5f648163d783ad68709520",
"title": "Refund policy",
"content": "Refunds are possible within 30 days of purchase.",
"preview": "Refunds are possible within 30 days of purchase.",
"tags": [],
"links": [],
"linked_by": [],
"files": [],
"project": { "id": "6a5f62c463d783ad68709363", "name": "Help center" },
"created_at": "2026-10-23T10:00:00.000Z",
"updated_at": "2026-10-23T10:00:00.000Z"
}Get a memo
GET/memos/:id
The full content of one memo, with its tags, links and files.
Path parameters
idstringrequiredMemo id.
curl "https://memocore.ai/api/v1/memos/6a5f648163d783ad68709520" \ -H "Authorization: Bearer YOUR_KEY"
{
"id": "6a5f648163d783ad68709520",
"title": "Refund policy",
"content": "Refunds are possible within 30 days of purchase.",
"preview": "Refunds are possible within 30 days of purchase.",
"tags": [{ "id": "6a5f636c63d783ad6870943a", "name": "support" }],
"links": [],
"linked_by": [],
"files": [],
"project": { "id": "6a5f62c463d783ad68709363", "name": "Help center" },
"created_at": "2026-10-01T09:30:00.000Z",
"updated_at": "2026-10-12T14:02:00.000Z"
}Update a memo
PUT/memos/:id
Change only the fields you send. The edit is recorded in the memo’s history.
Path parameters
idstringrequiredMemo id.
Body
contentstringNew memo text. Cannot be empty.
titlestringTitle of the memo.
previewstringA short summary shown in search results, up to 200 characters. It stays empty unless you send it.
metastringSearch hints: keywords and questions people may ask. Weighted highest in search and never shown.
fieldsobjectFor a table project: the row as column name → value.
tagsstring[]Tag ids from the same project.
expires_instringArchive the memo automatically after this time: 30m, 2h, 3d or 1w, up to 365d. Send none to remove the timer.
changesstringThe line written to the memo’s history and the project activity feed.
curl -X PUT "https://memocore.ai/api/v1/memos/6a5f648163d783ad68709520" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Refunds are possible within 45 days of purchase.",
"changes": "Extended the refund window"
}'{
"id": "6a5f648163d783ad68709520",
"title": "Refund policy",
"content": "Refunds are possible within 45 days of purchase.",
"tags": [{ "id": "6a5f636c63d783ad6870943a", "name": "support" }],
"links": [],
"linked_by": [],
"files": [],
"project": { "id": "6a5f62c463d783ad68709363", "name": "Help center" },
"created_at": "2026-10-01T09:30:00.000Z",
"updated_at": "2026-10-23T10:05:00.000Z"
}Archive a memo
DELETE/memos/:id
Move a memo to the archive. It is erased automatically after 45 days.
Path parameters
idstringrequiredMemo id.
curl -X DELETE "https://memocore.ai/api/v1/memos/6a5f648163d783ad68709520" \ -H "Authorization: Bearer YOUR_KEY"
{
"id": "6a5f648163d783ad68709520",
"status": "archived",
"purge_after": "2026-12-07T10:10:00.000Z"
}List projects
GET/projects
The projects this key may use, with their type: memos or table.
curl "https://memocore.ai/api/v1/projects" \ -H "Authorization: Bearer YOUR_KEY"
{
"items": [
{ "id": "6a5f62c463d783ad68709363", "name": "Help center", "description": "Answers for customers", "type": "memos" },
{ "id": "6a6194601cabf000d5fee17c", "name": "Leads", "description": "Sales pipeline", "type": "table" }
]
}Get a project
GET/projects/:id
One project. For a table project the response includes its columns.
Path parameters
idstringrequiredProject id.
curl "https://memocore.ai/api/v1/projects/6a6194601cabf000d5fee17c" \ -H "Authorization: Bearer YOUR_KEY"
{
"id": "6a6194601cabf000d5fee17c",
"name": "Leads",
"description": "Sales pipeline",
"type": "table",
"columns": [
{ "id": "6a6194601cabf000d5fee17d", "name": "Status", "description": "", "type": "select", "required": true, "unique": false, "options": ["new", "won", "lost"] },
{ "id": "6a6194601cabf000d5fee17e", "name": "Amount", "description": "Deal size in USD", "type": "number", "required": false, "unique": false, "options": [] }
]
}Query table rows
POST/projects/:id/rows/query
Filter, sort and page through the rows of a table project. Send aggregate to get counts and totals instead of rows.
Path parameters
idstringrequiredProject id of a table project.
Body
whereobjectUp to 20 conditions in total, joined by mode: and (all must match, the default) or or (any one is enough). A condition is column, op and value; op is =, !=, >, >=, <, <=, in, contains, empty or not_empty. Conditions can be grouped one level deep.
sortobject[]Up to 3 columns, each with order asc or desc. Default: newest first.
columnsstring[]Return only these columns in each row.
tagsstring[]Tag ids an item must carry, all of them.
exclude_tagsstring[]Tag ids to leave out. An item with any of them is skipped.
archivedbooleanSet to true to query only archived rows.
group_byobject[]With aggregate: up to 2 columns to group by. A datetime column takes a step: day, week, month or year.
aggregateobject[]Up to 5 of count, sum, avg, min and max. Results are keyed like count or sum_Amount, up to 100 groups.
timezonestringIANA timezone for grouping dates, for example Europe/Berlin. Default UTC.
limitnumberRows per page, 1 to 90. Default 30.
skipnumberResults to skip, for paging.
curl -X POST "https://memocore.ai/api/v1/projects/6a6194601cabf000d5fee17c/rows/query" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"where": { "conditions": [{ "column": "Status", "op": "=", "value": "new" }] },
"sort": [{ "column": "Amount", "order": "desc" }],
"limit": 10
}'{
"columns": [ … ],
"rows": [
{
"id": "6ac4bc268fa4c72b3756aef8",
"title": "Acme Inc.",
"fields": { "Status": "new", "Amount": 12000 },
"tags": [],
"created_at": "2026-10-20T08:15:00.000Z",
"updated_at": "2026-10-21T11:40:00.000Z"
}
],
"total": 1
}