Chats and meetings
Read the chats, messages and meetings from your Knock dashboard.
GET /v1/chats: chats, latest activity first.GET /v1/chats/{contactId}/messages: a chat's messages, oldest first, up to 500. Not paginated.GET /v1/meetings: meetings: booked, completed and cancelled, newest booking first.
API key
Use a key with the Viewer role. Admin, Editor, CRM Admin and AI Manager keys also work. An Enrichment API key gets 403 permissions.denied. See Authentication.
Pagination
Both lists take limit (1–100, default 50) and offset (default 0). Optional fromDate and toDate are inclusive and take YYYY-MM-DD (the whole UTC day) or YYYY-MM-DDTHH:mm[:ss[.sss]], UTC unless followed by Z or ±HH:MM (URL-encode + as %2B). Other formats get 400 validation. Chats filter on lastActivityAt, meetings on updatedAt.
curl "https://app.knock-ai.com/v1/chats?limit=50&offset=0&fromDate=2026-10-01" \
-H "x-api-key: $KNOCK_API_KEY"{
"items": [
{
"contactId": "9b1e4c2a-6f3d-4e8b-a7c5-1d2e3f4a5b6c",
"firstName": "Jane",
"companyDomain": "acme.com",
"channels": ["slack"],
"status": "Qualified",
"intent": "buying",
"lastActivityAt": "2026-10-19T10:00:00.000Z"
}
],
"total": 120,
"limit": 50,
"offset": 0
}Add limit to offset until offset reaches total. A chat with new activity moves to the top of the list, so it can be skipped or repeated while you page: deduplicate by contactId, and start the next sync with fromDate set to when this one started.
Errors
404 external-api.chat.not-found: no chat with thiscontactId, or the dashboard hides it (for example, spam).502 external-api.history.unavailable: temporary. Retry with backoff.
See Errors for the rest.