API Reference
Capture, search, and query your memory programmatically. Four endpoints. One auth header.
https://reattend.comThe Reattend API lets you capture anything to your memory, search it semantically, and ask questions grounded in what you've saved. It's the same API used by the MCP server and GitHub Action.
All endpoints require a Bearer token. Get yours from Settings → API Token. Tokens start with rat_.
Authorization: Bearer rat_your_token_hereTokens are workspace-scoped. Keep them secret — treat them like a password.
/api/tray/captureSave any text to your Reattend memory. Supports deduplication — if you send the same content twice within a short window, the second call is a no-op.
| Parameter | Type | Required | Description |
|---|---|---|---|
text | string | required | The content to save. Min 15 characters. |
source | string | optional | Label for the source. Defaults to "api". Examples: "github", "slack", "notion". |
metadata | object | optional | Arbitrary key/value pairs attached to the memory. Shown in the detail view. |
curl -X POST https://reattend.com/api/tray/capture \
-H "Authorization: Bearer rat_your_token" \
-H "Content-Type: application/json" \
-d '{
"text": "Decided to migrate auth to Clerk. Reason: better session management and built-in MFA.",
"source": "notion",
"metadata": { "page": "Architecture Decisions", "author": "partha" }
}'{
"status": "saved", // "saved" | "deduped" | "filtered"
"id": "rec_abc123"
}/api/tray/searchSemantic search over your memory. Returns the most relevant results using vector similarity.
| Parameter | Type | Required | Description |
|---|---|---|---|
q | string | required | Search query. |
limit | number | optional | Max results. Defaults to 10, max 50. |
curl "https://reattend.com/api/tray/search?q=auth+decisions&limit=5" \
-H "Authorization: Bearer rat_your_token"{
"results": [
{
"id": "rec_abc123",
"title": "Auth migration decision",
"summary": "Decided to migrate auth to Clerk for better session management.",
"type": "decision",
"source": "notion",
"createdAt": "2025-03-20T10:00:00.000Z",
"score": 0.91
}
]
}/api/tray/askAsk a natural-language question and get an AI answer grounded in your saved memories. Uses RAG — retrieves relevant context, then generates a response.
| Parameter | Type | Required | Description |
|---|---|---|---|
q | string | required | The question to answer. |
curl "https://reattend.com/api/tray/ask?q=Why+did+we+choose+Clerk+for+auth%3F" \
-H "Authorization: Bearer rat_your_token"{
"answer": "You chose Clerk for auth because it offers better session management and built-in MFA support, as noted in your architecture decisions from March 2025.",
"sources": [
{
"id": "rec_abc123",
"title": "Auth migration decision",
"createdAt": "2025-03-20T10:00:00.000Z"
}
]
}/api/tray/recentReturns the most recently saved memories, sorted by creation time descending.
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | number | optional | Number of results. Defaults to 10, max 50. |
curl "https://reattend.com/api/tray/recent?limit=20" \
-H "Authorization: Bearer rat_your_token"{
"memories": [
{
"id": "rec_xyz789",
"title": "Weekly standup — March 27",
"summary": "Discussed Q2 roadmap, auth migration, and API docs.",
"type": "meeting",
"source": "slack",
"createdAt": "2025-03-27T09:00:00.000Z"
}
]
}| HTTP status | Meaning |
|---|---|
| 400 | Bad request — missing or invalid parameters. |
| 401 | Unauthorized — missing or invalid token. |
| 429 | Rate limited — too many requests. |
| 500 | Server error. |
A 200 response from /api/tray/capture includes a status field:
| Status | Meaning |
|---|---|
saved | Memory was saved successfully. |
deduped | Identical or near-identical content was already saved recently. No duplicate created. |
filtered | Content was too short or low-signal. Not saved. |