Skip to content
Select themeSelect language

`GET /api/memories/board` — one server-paginated, filtered + sorted page of the memories board plus the total + the workspace-wide facet chips.

GET
/api/memories/board
curl --request GET \
--url https://example.com/api/memories/board \
--cookie supacloud_session=<supacloud_session>
q
string

Free-text search over the memory body.

scope
string
kind
string

memory_kind filter chip.

source_type
string
include_archived
boolean
sort
string

Whitelisted sort column: salience | updated_at | created_at | importance. Default updated_at.

dir
string

asc | desc (default desc).

limit
integer format: int64
offset
integer format: int64
include_facets
boolean

Recompute the facet chips (default true). The board sends false on a page/sort change since the chip counts are workspace-wide.

One page of memories.

Media typeapplication/json

GET /api/memories/board body — one page of memories + total + facet chips.

object
facets
One of:
null
items
required
Array<object>
object
archived_at
string | null format: date-time
created_at
required
string format: date-time
id
required
string format: uuid
importance
required
number format: double
last_used_at
string | null format: date-time
memory_kind
required
string
pinned
required
boolean
project_id
string | null format: uuid
salience
required
number format: double
scope
required
string
source_id
string | null format: uuid
source_type
required
string
superseded_by
string | null format: uuid
text
required
string
updated_at
required
string format: date-time
user_id
string | null format: uuid
version
required
integer format: int32
workspace_id
required
string format: uuid
total
required
integer format: int64
Examplegenerated
{
"facets": {
"archived": 1,
"by_kind": [
{
"count": 1,
"value": "example"
}
],
"by_scope": [
{
"count": 1,
"value": "example"
}
],
"by_source_type": [
{
"count": 1,
"value": "example"
}
],
"total": 1
},
"items": [
{
"archived_at": "2026-04-15T12:00:00Z",
"created_at": "2026-04-15T12:00:00Z",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"importance": 1,
"last_used_at": "2026-04-15T12:00:00Z",
"memory_kind": "example",
"pinned": true,
"project_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"salience": 1,
"scope": "example",
"source_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"source_type": "example",
"superseded_by": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"text": "example",
"updated_at": "2026-04-15T12:00:00Z",
"user_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"version": 1,
"workspace_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
}
],
"total": 1
}

Structured client error

Media typeapplication/json

The canonical JSON body of every error response — the single source of truth the frontend binds to. Every AppError serializes as this exact shape, and the generated OpenAPI component ApiErrorBody (with its ErrorCode enum) is what the frontend error schema is generated from, so there is no hand-written error schema on either end.

object
code
required

Machine-readable, stable error code.

string
Allowed values: not_found unauthorized forbidden bad_request unprocessable precondition_failed conflict method_not_allowed rate_limited quota_exceeded database_error docker_error vault_error internal_error
details
One of:
null
error
required

Human-readable message (the server’s English text; the client may localize by code).

string
Example
{
"code": "not_found"
}

Authentication required

Media typeapplication/json

The canonical JSON body of every error response — the single source of truth the frontend binds to. Every AppError serializes as this exact shape, and the generated OpenAPI component ApiErrorBody (with its ErrorCode enum) is what the frontend error schema is generated from, so there is no hand-written error schema on either end.

object
code
required

Machine-readable, stable error code.

string
Allowed values: not_found unauthorized forbidden bad_request unprocessable precondition_failed conflict method_not_allowed rate_limited quota_exceeded database_error docker_error vault_error internal_error
details
One of:
null
error
required

Human-readable message (the server’s English text; the client may localize by code).

string
Example
{
"code": "not_found"
}

Permission denied

Media typeapplication/json

The canonical JSON body of every error response — the single source of truth the frontend binds to. Every AppError serializes as this exact shape, and the generated OpenAPI component ApiErrorBody (with its ErrorCode enum) is what the frontend error schema is generated from, so there is no hand-written error schema on either end.

object
code
required

Machine-readable, stable error code.

string
Allowed values: not_found unauthorized forbidden bad_request unprocessable precondition_failed conflict method_not_allowed rate_limited quota_exceeded database_error docker_error vault_error internal_error
details
One of:
null
error
required

Human-readable message (the server’s English text; the client may localize by code).

string
Example
{
"code": "not_found"
}

Structured server error

Media typeapplication/json

The canonical JSON body of every error response — the single source of truth the frontend binds to. Every AppError serializes as this exact shape, and the generated OpenAPI component ApiErrorBody (with its ErrorCode enum) is what the frontend error schema is generated from, so there is no hand-written error schema on either end.

object
code
required

Machine-readable, stable error code.

string
Allowed values: not_found unauthorized forbidden bad_request unprocessable precondition_failed conflict method_not_allowed rate_limited quota_exceeded database_error docker_error vault_error internal_error
details
One of:
null
error
required

Human-readable message (the server’s English text; the client may localize by code).

string
Example
{
"code": "not_found"
}