Skip to main content
The List Contacts endpoint returns a paginated list of every individual contact Knock2 has identified visiting your website. Each record includes personal details such as name, job title, and email address alongside the company they belong to, their ICP (Ideal Customer Profile) score, and a summary of their most recent visit activity. Use the account_id parameter to scope results to contacts from a specific company, the email parameter for a direct lookup, or build richer segmentation with filter_set_id or inline filters.

Endpoint


Required Scope

Your API key must have the contacts:read scope (or the broader all:read scope) to call this endpoint.

Request Parameters

integer
default:50
The maximum number of contact records to return in a single response. Must be between 1 and 100. Defaults to 50.
string
An opaque pagination cursor returned by a previous List Contacts response as next_cursor. Omit this parameter on your first request. Pass it on subsequent requests to retrieve the next page of results.
string
A URL-encoded JSON array of filter objects to apply to the results, each with key, keyType, condition, and (usually) value fields. Filters are combined with a logical AND. Can be combined with filter_set_id — see below.Example (before URL encoding):
string
The ID of a saved filter set to apply. Filter sets are created and managed in the Knock2 dashboard or via the Filter Sets API.filters and filter_set_id are not mutually exclusive — when both are provided, the saved filter set’s conditions are used as the base and the inline filters are appended on top (all conditions must match).
string
Filter results to a single contact by their exact email address (e.g. jane@acme.com). Returns at most one record. Use this as a lightweight lookup shortcut instead of constructing a filters query.
string
Filter results to contacts associated with a specific account. Pass the Knock2 account ID (e.g. acc_01HX...) to scope the list to that company’s identified visitors.
string
Read a direct child tenant’s contacts 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. If you also pass filter_set_id, the filter set must belong to the tenant being read.

Example Requests


Response

Returns 200 OK with a paginated list of contact objects.
Example response

Response Fields

array
required
An array of contact objects for the current page.
boolean
required
true if there are additional pages of results after this one. Pass next_cursor as the cursor parameter in your next request to retrieve them.
string | null
required
An opaque string you pass as the cursor parameter in your next request to retrieve the next page. null when has_more is false and you have reached the last page.

Error Responses

401 Unauthorized
422 Invalid Request
429 Rate limit exceeded