Kenso

Event occurrences

Poll for MCP events after a cursor instead of receiving webhooks.

Webhooks and events1 endpointKen-Version: 2026-11-02AuthenticationWorkspacesErrors

Poll MCP events after a cursor

GET/v1/event-occurrencesevent-occurrences.poll

Try it on developer.ken.so

Read only, any workspace member. Without cursor it returns no events and a cursor at now, and the workspace starts logging its MCP events (each poll keeps that going for 7 days). Pass back cursor unchanged. types is a comma-separated list of MCP event types (omitted: every one you may receive; GET /v1/webhook-event-types marks them mcp). campaignId and classification narrow events that carry them. limit is 1 to 100 (default 50). maxAgeMs skips older events instead of replaying them, with truncated: true. hasMore: true means poll again at once; otherwise wait nextPollMs. Events are kept 7 days. 404 when MCP events are not enabled for the workspace; unsupported for a type that is not an MCP event; 403 for a type whose page you cannot see.

Parameters

Name
In
Type
Required
Description
Cursor
In: query
string
optional
The cursor of the previous poll. Omitted: start from now (no events, a fresh cursor).
Types
In: query
string
optional
Comma-separated MCP event type names. Omitted: every MCP type you may receive.
CampaignId
In: query
integer (int64)
optional
Only events of this campaign.
Classification
In: query
string
optional
Only events with this reply classification, such as interested.
Limit
In: query
integer (int32)
optional
1 to 100, default 50.
MaxAgeMs
In: query
integer (int64)
optional
Skip events older than this many milliseconds instead of replaying them. Ignored without a cursor.
Ken-Version
In: header
string, one of: 2026-11-02, 1.1
required
The API version: a dated version (YYYY-MM-DD), or 1.1, another name for the first dated version. Without it the request uses your API key's pinned version; an unpinned key reaches the legacy shape of the same path. 1.0 selects the legacy shape explicitly.
X-Ken-Workspace-Id
In: header
integer (int64)
optional
Workspace to act in. Required when your credential can reach more than one workspace (otherwise 400 workspace_required).

Response 200

data is a EventOccurrencesModel.

Field
Type
Description
events
array of EventOccurrenceModel
cursor
string
Pass it back unchanged on the next poll. Opaque.
hasMore
boolean
More events are waiting: poll again at once.
truncated
boolean
Events were skipped (older than maxAgeMs, or no longer kept): there is a gap before these.
nextPollMs
integer (int32)
Milliseconds to wait before the next poll.
Request
curl -X GET "https://api.ken.so/v1/event-occurrences" \
  -H "Authorization: Bearer $KEN_API_KEY" \
  -H "Ken-Version: 2026-11-02" \
  -H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID"
Response 200
{
  "success": true,
  "data": {
    "events": [
      {
        "eventId": "string",
        "name": "string",
        "timestamp": "2026-09-23T15:02:11Z",
        "data": null,
        "cursor": "eyJpZCI6ODE1fQ"
      }
    ],
    "cursor": "eyJpZCI6ODE1fQ",
    "hasMore": true,
    "truncated": true,
    "nextPollMs": 1
  }
}