account_id/contact_id, or omit both to get a single tenant-wide feed across every account and contact, newest first. Use it to understand engagement patterns, build timelines in your CRM, or trigger workflows based on high-intent page visits.
Endpoint
Required Scope
Your API key must have theactivity:read scope (or the broader all:read scope) to call this endpoint.
Parameters
string
The ID of the account whose page visits you want to retrieve. Returns company-level page visits when provided without
contact_id. Omit both account_id and contact_id to get the tenant-wide feed instead (see below).string
The ID of the contact whose page visits you want to retrieve. Returns person-level page visits. If combined with
account_id, contact-level activity is returned. Omit both account_id and contact_id to get the tenant-wide feed instead (see below).integer
default:"50"
The number of activity records to return per page. Accepts values between
1 and 100.string
A pagination cursor returned in a previous response as
next_cursor. Pass this value to retrieve the next page of results.string
Read a direct child tenant’s activity instead of your own (multi-tenant partners only). The
X-Knock-Tenant header takes precedence if both are supplied. See Reading a Child Tenant’s Data.string
Same as
product_slug above, as a header instead of a query param. Naming a slug that isn’t a direct child of your key returns 404, never 403.Tenant-Wide Feed
Omit bothaccount_id and contact_id to receive a single feed merging every account’s and contact’s page visits for the tenant, ordered newest first. This is the recommended way to stay in sync with activity across your whole tenant instead of polling individual contacts.
next_cursor walks backward through history on every branch of this endpoint, including the tenant-wide feed — each page you fetch with it is strictly older than the last, the same as paging back through a list. It is not a since-cursor. To poll this feed for new activity on an interval, call it with no cursor on each poll and compare the returned created_at values against the newest one you’ve already processed client-side, rather than feeding next_cursor back in.
The tenant-wide feed automatically excludes activity for accounts and contacts that have been identified but not yet revealed (locked), or soft-deleted — the same visibility rules that apply when reading those records directly.
Example Requests
Response
Returns anActivityListResponse object containing an array of page-visit events.
Response Fields
array
An array of page-visit event objects.
boolean
true if additional pages of results are available. Pass next_cursor in your next request to retrieve them.string | null
A cursor string to retrieve the next page of results.
null when there are no further pages.