Kenso API changelog
Every change to the Kenso API, newest version first. Breaking changes ship only in a new dated version, and your key stays on its version until you move it: see Versioning.
2026-11-02
- Added GET /v1/saved-list-members: search the people and companies on the workspace's own saved lists and lists shared with it (never library lists) by name, title or company with q (2-200 characters). Each result is a member as saved-lists.list-members shows it, plus savedListId, savedListName and savedListKind; a person on two lists comes back once per list. Cursor pagination, no total; a page can hold fewer results than limit, even none, with hasMore true, so keep paging with nextCursor.
- Added the optional q parameter: matches a part of a member's full name, title or company name, any case. Up to 200 characters; shorter than 2 is ignored. With q, includeTotal counts the matches.
- Changed2026-11-02Documentation fix: enum fields in this reference now show the string values the API has always sent and accepted (for example "active"), not integer codes. No request or response changed.
- Added the optional view query parameter to search.search-people. view=summary returns each person with only the fields a list shows (names, headline, LinkedIn URL, photo, current title and company, location, seniority, function, job-change signals, hasKenEmail, kenEmailStatus, lookalike), about 1-2 KB a person instead of 17-28 KB. Without view, or with view=full, the response is unchanged.
- Added optional field data.phoneCountryAssumed to the contacts.get response.
- Added optional field data[].phoneCountryAssumed to the contacts.list response.
- Added optional field data[].phoneCountryAssumed to the contacts.search response.
- Each LinkedIn engagement in the list now carries optional fields: reactionType for a reaction, commentId and parentCommentId for a comment or a reply under one, postText, an intent label on comments and replies (requesting, positive, question, neutral or negative) with its intentReason, and ownPost, which is false when the post was pasted in and is not by a connected seat or your company page. Existing fields are unchanged.
- Added cli-logins.create, which starts a Kenso CLI browser login and returns the code to approve. It answers 404 until Kenso CLI browser login is turned on.
- Added cli-logins.token, which the Kenso CLI polls until its browser login is approved, denied or expired. It answers 404 until Kenso CLI browser login is turned on.
- The response adds data.results: one item per submitted contact, in request order, with its index, status (created, updated, skipped or failed), the contact id when saved, a reason and message when not, and sendable. succeeded and failed are unchanged.
- Documented the request body. customVariables merges into the contact's custom variables; a null or empty value removes that key.
- Documented the items: each is a contactId (required) plus any field contacts.update accepts, customVariables included.
- The response schema it shares with contacts.create now lists data.results. Only contacts.create fills it, so this operation's responses do not change.
- The response schema it shares with contacts.create now lists data.results. Only contacts.create fills it, so this operation's responses do not change.
- The response schema it shares with contacts.create now lists data.results. Only contacts.create fills it, so this operation's responses do not change.
- Documented the JSON and multipart request bodies: source, target, contacts, columnMappings, the uploaded file and the import options. The endpoint already accepted these fields.
- Documented the request body: kind, the campaign, segment and workspace filters, fields and the events range. The endpoint already accepted these fields.
- Added2026-11-02First dated version of the Kenso API. Its shapes are identical to Ken-Version: 1.1, which stays an alias of this version. Send Ken-Version: 2026-11-02 and your integration keeps these shapes until the version retires, 12 months after the next version ships. A request without the header uses the version its API key is pinned to.