List Learnings

Storage and identity

Use a registered database with learning methods. Specify db_id when several databases are available; table also requires db_id. RemoteDb and adapters without learning support return 501.

Human JWT callers are scoped when user isolation is enabled. Non-admin service-account PAT callers always self-scope. Scoped readers can access their own and shared records; other-owned records return 404. Shared records cannot be modified or deleted by a scoped caller (403). Admins and unscoped callers retain access under the deployment's authentication and permission configuration.

Scoped results include the caller's records and shared rows with no owner. A conflicting explicit user_id filter returns 403. Non-admin service-account PAT scoping applies even when JWT user isolation is disabled.

GET/learnings

List learning records with pagination and optional filters. For a scoped (non-admin) caller with user isolation enabled, results are bound to that user and also include records with no owner (user_id IS NULL) — this covers global, agent, team, session, and entity-scoped learnings; passing a user_id that differs from the caller is rejected with 403. Admins and unscoped callers see all records (optionally filtered by user_id).

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Query Parameters

learning_type?|

Filter by learning type

user_id?|

Filter by user ID

agent_id?|

Filter by agent ID

team_id?|

Filter by team ID

session_id?|

Filter by session ID

namespace?|

Filter by namespace

entity_id?|

Filter by entity ID

entity_type?|

Filter by entity type

limit?Limit

Page size

Range1 <= value <= 1000
Default100
page?Page

1-indexed page number

Range1 <= value
Default1
sort_by?|

Field to sort by, e.g. created_at or updated_at (the default). An unrecognised field is ignored (the default ordering is used).

sort_order?|

Sort order (asc or desc)

Default"desc"
db_id?|

Database ID to query

table?|

The database table to use (requires db_id)

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl --request GET 'https://example.com/learnings'
{  "data": [    {      "learning_id": "string",      "learning_type": "string",      "namespace": "string",      "user_id": "string",      "agent_id": "string",      "team_id": "string",      "session_id": "string",      "entity_id": "string",      "entity_type": "string",      "content": {},      "metadata": {},      "created_at": 0,      "updated_at": 0    }  ],  "meta": {    "page": 0,    "limit": 20,    "total_pages": 0,    "total_count": 0,    "search_time_ms": 0  }}