Kenso

Shares

Share campaigns and results with your clients.

Workspace and credits8 endpointsKen-Version: 2026-11-02AuthenticationWorkspacesErrors

List the workspace's share links, newest first

GET/v1/sharesshares.list

Needs the share feature on your workspace. Until it is on, calls answer 404.

Try it on developer.ken.so

Filters: campaignId, accountId (shares with that account's plan) and status (comma-separated: not_opened, viewed, n_of_m_approved, changes_requested, approved). Revoked shares are left out. changesRequestedCount counts every live share with changes requested, whatever the filters. url is empty unless the caller has Share page edit and the share feature. Requires the Share page.

Parameters

Name
In
Type
Required
Description
Limit
In: query
integer (int32)
optional
Cursor
In: query
string
optional
CampaignId
In: query
integer (int64)
optional
Only the shares of this campaign.
AccountId
In: query
integer (int64)
optional
Only the shares with this account's plan.
Status
In: query
string
optional
Comma-separated: not_opened, viewed, n_of_m_approved, changes_requested, approved.
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 list of ShareModel. Each item has these fields. The response also carries pagination, changesRequestedCount.

Field
Type
Description
id
integer (int64)
name
string
company
string
Who the share is for, shown on the page. Defaults to the workspace name.
url
string
The link to send: https://<app host>/s/<token>.
campaignId
integer (int64)
campaignName
string
accountIds
array of integer (int64)
The accounts of the account plans, in the order picked. Omitted without plans.
kinds
array of string
What is shared, in page order: leads, copy, settings, icp, report, plan.
permission
string
view, comment or approve.
expiry
string
7_days, 30_days or never, counted from creation.
expiresAt
string (date-time)
isExpired
boolean
holdLaunch
boolean
recurringReport
boolean
recipients
array of string
status
string
not_opened, viewed, n_of_m_approved, changes_requested or approved.
approvedCount
integer (int32)
Kinds approved, for "n of m approved". Always 0 on view and comment shares.
kindCount
integer (int32)
changesRequestedCount
integer (int32)
kindStatuses
array of ShareKindStatusModel
viewCount
integer (int32)
firstViewedAt
string (date-time)
lastViewedAt
string (date-time)
submittedAt
string (date-time)
submittedByName
string
lastReportSentAt
string (date-time)
createdByUserId
integer (int64)
createdAt
string (date-time)
lastActivityAt
string (date-time)
The share's latest activity: created, viewed, a decision, a comment, a reminder, a report sent or the review sent.
items
array of ShareItemModel
Detail only.
comments
array of ShareCommentModel
Detail only: the comments left through this share, oldest first.
access
array of ShareAccessRowModel
Detail only: the Access rows ("They can", "Expires", "Launch", "Repeats", "Branding").
activity
array of ShareActivityModel
Detail only: the share's log, newest first, at most 50 entries.
alreadyEmailedRecipients
array of string
Create only: the recipients the link was not emailed to, because a share link email from this workspace reached them in the last 24 hours. Send them the link yourself. Omitted when nobody was left out.
Request
curl -X GET "https://api.ken.so/v1/shares" \
  -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": [
    {
      "id": 812,
      "name": "string",
      "company": "string",
      "url": "https://example.com",
      "campaignId": 812,
      "campaignName": "string",
      "accountIds": [
        812
      ],
      "kinds": [
        "string"
      ],
      "permission": "string",
      "expiry": "string",
      "expiresAt": "2026-09-23T15:02:11Z",
      "isExpired": true,
      "holdLaunch": true,
      "recurringReport": true,
      "recipients": [
        "string"
      ],
      "status": "string",
      "approvedCount": 1,
      "kindCount": 1,
      "changesRequestedCount": 1,
      "kindStatuses": [
        {
          "kind": "string",
          "status": "string"
        }
      ],
      "viewCount": 1,
      "firstViewedAt": "2026-09-23T15:02:11Z",
      "lastViewedAt": "2026-09-23T15:02:11Z",
      "submittedAt": "2026-09-23T15:02:11Z",
      "submittedByName": "string",
      "lastReportSentAt": "2026-09-23T15:02:11Z",
      "createdByUserId": 812,
      "createdAt": "2026-09-23T15:02:11Z",
      "lastActivityAt": "2026-09-23T15:02:11Z",
      "items": [
        {
          "id": 812,
          "kind": "string",
          "title": "string",
          "status": "string",
          "approvalItemId": 812,
          "decidedAt": "2026-09-23T15:02:11Z",
          "decidedByName": "string",
          "decisionComment": "string",
          "commentCount": 1
        }
      ],
      "comments": [
        {
          "id": 812,
          "shareItemId": 812,
          "anchor": "string",
          "body": "string",
          "authorName": "string",
          "createdAt": "2026-09-23T15:02:11Z"
        }
      ],
      "access": [
        {
          "label": "string",
          "value": "string"
        }
      ],
      "activity": [
        {
          "id": 812,
          "type": "string",
          "shareItemId": 812,
          "actorKind": "string",
          "actorName": "string",
          "actorUserId": 812,
          "data": null,
          "createdAt": "2026-09-23T15:02:11Z"
        }
      ],
      "alreadyEmailedRecipients": [
        "string"
      ]
    }
  ],
  "pagination": {
    "nextCursor": "eyJpZCI6ODE1fQ",
    "hasMore": true,
    "total": 1,
    "isTotalCapped": true
  },
  "changesRequestedCount": 1
}

Create a share link

POST/v1/sharesshares.create

Needs the share feature on your workspace. Until it is on, calls answer 404.

Try it on developer.ken.so

Body: items (one or more of leads, copy, settings, icp, report, plan), campaignId (required unless only plans), accountIds (1-100, required with plan), permission (view, comment, approve), expiry (7_days, 30_days default, never), recipients (up to 20), holdLaunch (approve plus leads, copy or settings), recurringReport (with report), optional name (defaults to "<campaign> · <items>") and company (defaults to the workspace name). Freezes each item's snapshot now. Copy is one item and leads one item per active segment; on an approve share they are the workspace's own external approval items, so a decision on the share also satisfies the launch gate. A campaign with no copy or no active segment answers 400 with an items detail coded empty. Every recipient emailed counts against the workspace's daily share email cap: past it the create answers 429 quota_exceeded (detail code share_email_quota) and creates nothing. Requires Share page edit and the share feature.

Parameters

Name
In
Type
Required
Description
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).

Request body

application/json, optional.

Field
Type
Required
Description
name
string
optional
company
string
optional
campaignId
integer (int64)
optional
accountIds
array of integer (int64)
optional
items
array of string
optional
permission
string
optional
expiry
string
optional
recipients
array of string
optional
holdLaunch
boolean
optional
recurringReport
boolean
optional

Response 201

data is a ShareModel.

Field
Type
Description
id
integer (int64)
name
string
company
string
Who the share is for, shown on the page. Defaults to the workspace name.
url
string
The link to send: https://<app host>/s/<token>.
campaignId
integer (int64)
campaignName
string
accountIds
array of integer (int64)
The accounts of the account plans, in the order picked. Omitted without plans.
kinds
array of string
What is shared, in page order: leads, copy, settings, icp, report, plan.
permission
string
view, comment or approve.
expiry
string
7_days, 30_days or never, counted from creation.
expiresAt
string (date-time)
isExpired
boolean
holdLaunch
boolean
recurringReport
boolean
recipients
array of string
status
string
not_opened, viewed, n_of_m_approved, changes_requested or approved.
approvedCount
integer (int32)
Kinds approved, for "n of m approved". Always 0 on view and comment shares.
kindCount
integer (int32)
changesRequestedCount
integer (int32)
kindStatuses
array of ShareKindStatusModel
viewCount
integer (int32)
firstViewedAt
string (date-time)
lastViewedAt
string (date-time)
submittedAt
string (date-time)
submittedByName
string
lastReportSentAt
string (date-time)
createdByUserId
integer (int64)
createdAt
string (date-time)
lastActivityAt
string (date-time)
The share's latest activity: created, viewed, a decision, a comment, a reminder, a report sent or the review sent.
items
array of ShareItemModel
Detail only.
comments
array of ShareCommentModel
Detail only: the comments left through this share, oldest first.
access
array of ShareAccessRowModel
Detail only: the Access rows ("They can", "Expires", "Launch", "Repeats", "Branding").
activity
array of ShareActivityModel
Detail only: the share's log, newest first, at most 50 entries.
alreadyEmailedRecipients
array of string
Create only: the recipients the link was not emailed to, because a share link email from this workspace reached them in the last 24 hours. Send them the link yourself. Omitted when nobody was left out.
Request
curl -X POST "https://api.ken.so/v1/shares" \
  -H "Authorization: Bearer $KEN_API_KEY" \
  -H "Ken-Version: 2026-11-02" \
  -H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "company": "string",
  "campaignId": 812,
  "accountIds": [
    812
  ],
  "items": [
    "string"
  ],
  "permission": "string",
  "expiry": "string",
  "recipients": [
    "string"
  ],
  "holdLaunch": true,
  "recurringReport": true
}'
Response 201
{
  "success": true,
  "data": {
    "id": 812,
    "name": "string",
    "company": "string",
    "url": "https://example.com",
    "campaignId": 812,
    "campaignName": "string",
    "accountIds": [
      812
    ],
    "kinds": [
      "string"
    ],
    "permission": "string",
    "expiry": "string",
    "expiresAt": "2026-09-23T15:02:11Z",
    "isExpired": true,
    "holdLaunch": true,
    "recurringReport": true,
    "recipients": [
      "string"
    ],
    "status": "string",
    "approvedCount": 1,
    "kindCount": 1,
    "changesRequestedCount": 1,
    "kindStatuses": [
      {
        "kind": "string",
        "status": "string"
      }
    ],
    "viewCount": 1,
    "firstViewedAt": "2026-09-23T15:02:11Z",
    "lastViewedAt": "2026-09-23T15:02:11Z",
    "submittedAt": "2026-09-23T15:02:11Z",
    "submittedByName": "string",
    "lastReportSentAt": "2026-09-23T15:02:11Z",
    "createdByUserId": 812,
    "createdAt": "2026-09-23T15:02:11Z",
    "lastActivityAt": "2026-09-23T15:02:11Z",
    "items": [
      {
        "id": 812,
        "kind": "string",
        "title": "string",
        "status": "string",
        "approvalItemId": 812,
        "decidedAt": "2026-09-23T15:02:11Z",
        "decidedByName": "string",
        "decisionComment": "string",
        "commentCount": 1
      }
    ],
    "comments": [
      {
        "id": 812,
        "shareItemId": 812,
        "anchor": "string",
        "body": "string",
        "authorName": "string",
        "createdAt": "2026-09-23T15:02:11Z"
      }
    ],
    "access": [
      {
        "label": "string",
        "value": "string"
      }
    ],
    "activity": [
      {
        "id": 812,
        "type": "string",
        "shareItemId": 812,
        "actorKind": "string",
        "actorName": "string",
        "actorUserId": 812,
        "data": null,
        "createdAt": "2026-09-23T15:02:11Z"
      }
    ],
    "alreadyEmailedRecipients": [
      "string"
    ]
  }
}

Preview a share before creating it, as the reviewer will see it

POST/v1/shares/previewshares.preview-draft

Needs the share feature on your workspace. Until it is on, calls answer 404.

Try it on developer.ken.so

Takes the body of POST /v1/shares and answers the public payload of GET /v1/public/shares/{token} for the share it would create, from the same snapshot builders: copy rendered for sample leads, the lead lists, settings, ICP, report and account plans. Saves nothing and emails no one. Items are numbered from 1 and not reviewed, except copy and lead lists of an approve share whose version is already approved. Answers what create answers for a bad body. Requires Share page edit and the share feature.

Parameters

Name
In
Type
Required
Description
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).

Request body

application/json, optional.

Field
Type
Required
Description
name
string
optional
company
string
optional
campaignId
integer (int64)
optional
accountIds
array of integer (int64)
optional
items
array of string
optional
permission
string
optional
expiry
string
optional
recipients
array of string
optional
holdLaunch
boolean
optional
recurringReport
boolean
optional

Response 200

data is a SharePublicModel.

Field
Type
Description
brand
SharePublicBrandModel
workspaceName
string
workspaceLogoUrl
string
The workspace's wide Logo, else its square Icon. Omitted when it has neither.
workspaceIconUrl
string
The workspace's square Icon, else its wide Logo. Omitted when it has neither.
shareName
string
company
string
senderName
string
The member who created the share. Omitted when unknown.
campaignName
string
permission
string
view, comment or approve.
expiresAt
string (date-time)
holdLaunch
boolean
isSubmitted
boolean
submittedAt
string (date-time)
submittedByName
string
status
string
not_opened, viewed, n_of_m_approved, changes_requested or approved.
approvedCount
integer (int32)
kindCount
integer (int32)
items
array of SharePublicItemModel
Request
curl -X POST "https://api.ken.so/v1/shares/preview" \
  -H "Authorization: Bearer $KEN_API_KEY" \
  -H "Ken-Version: 2026-11-02" \
  -H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "company": "string",
  "campaignId": 812,
  "accountIds": [
    812
  ],
  "items": [
    "string"
  ],
  "permission": "string",
  "expiry": "string",
  "recipients": [
    "string"
  ],
  "holdLaunch": true,
  "recurringReport": true
}'
Response 200
{
  "success": true,
  "data": {
    "brand": {
      "productName": "string",
      "logoUrl": "https://example.com",
      "faviconUrl": "https://example.com"
    },
    "workspaceName": "string",
    "workspaceLogoUrl": "https://example.com",
    "workspaceIconUrl": "https://example.com",
    "shareName": "string",
    "company": "string",
    "senderName": "string",
    "campaignName": "string",
    "permission": "string",
    "expiresAt": "2026-09-23T15:02:11Z",
    "holdLaunch": true,
    "isSubmitted": true,
    "submittedAt": "2026-09-23T15:02:11Z",
    "submittedByName": "string",
    "status": "string",
    "approvedCount": 1,
    "kindCount": 1,
    "items": [
      {
        "id": 812,
        "kind": "string",
        "title": "string",
        "status": "string",
        "canUndo": true,
        "decidedAt": "2026-09-23T15:02:11Z",
        "decidedByName": "string",
        "decisionComment": "string",
        "snapshot": null,
        "comments": [
          {
            "id": 812,
            "shareItemId": 812,
            "anchor": "string",
            "body": "string",
            "authorName": "string",
            "createdAt": "2026-09-23T15:02:11Z"
          }
        ]
      }
    ]
  }
}

Get a share link with its items, comments, access rows and log

GET/v1/shares/{shareId}shares.get

Needs the share feature on your workspace. Until it is on, calls answer 404.

Try it on developer.ken.so

url is empty unless the caller has Share page edit and the share feature. Requires the Share page.

Parameters

Name
In
Type
Required
Description
shareId
In: path
integer (int64)
required
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 ShareModel.

Field
Type
Description
id
integer (int64)
name
string
company
string
Who the share is for, shown on the page. Defaults to the workspace name.
url
string
The link to send: https://<app host>/s/<token>.
campaignId
integer (int64)
campaignName
string
accountIds
array of integer (int64)
The accounts of the account plans, in the order picked. Omitted without plans.
kinds
array of string
What is shared, in page order: leads, copy, settings, icp, report, plan.
permission
string
view, comment or approve.
expiry
string
7_days, 30_days or never, counted from creation.
expiresAt
string (date-time)
isExpired
boolean
holdLaunch
boolean
recurringReport
boolean
recipients
array of string
status
string
not_opened, viewed, n_of_m_approved, changes_requested or approved.
approvedCount
integer (int32)
Kinds approved, for "n of m approved". Always 0 on view and comment shares.
kindCount
integer (int32)
changesRequestedCount
integer (int32)
kindStatuses
array of ShareKindStatusModel
viewCount
integer (int32)
firstViewedAt
string (date-time)
lastViewedAt
string (date-time)
submittedAt
string (date-time)
submittedByName
string
lastReportSentAt
string (date-time)
createdByUserId
integer (int64)
createdAt
string (date-time)
lastActivityAt
string (date-time)
The share's latest activity: created, viewed, a decision, a comment, a reminder, a report sent or the review sent.
items
array of ShareItemModel
Detail only.
comments
array of ShareCommentModel
Detail only: the comments left through this share, oldest first.
access
array of ShareAccessRowModel
Detail only: the Access rows ("They can", "Expires", "Launch", "Repeats", "Branding").
activity
array of ShareActivityModel
Detail only: the share's log, newest first, at most 50 entries.
alreadyEmailedRecipients
array of string
Create only: the recipients the link was not emailed to, because a share link email from this workspace reached them in the last 24 hours. Send them the link yourself. Omitted when nobody was left out.
Request
curl -X GET "https://api.ken.so/v1/shares/812" \
  -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": {
    "id": 812,
    "name": "string",
    "company": "string",
    "url": "https://example.com",
    "campaignId": 812,
    "campaignName": "string",
    "accountIds": [
      812
    ],
    "kinds": [
      "string"
    ],
    "permission": "string",
    "expiry": "string",
    "expiresAt": "2026-09-23T15:02:11Z",
    "isExpired": true,
    "holdLaunch": true,
    "recurringReport": true,
    "recipients": [
      "string"
    ],
    "status": "string",
    "approvedCount": 1,
    "kindCount": 1,
    "changesRequestedCount": 1,
    "kindStatuses": [
      {
        "kind": "string",
        "status": "string"
      }
    ],
    "viewCount": 1,
    "firstViewedAt": "2026-09-23T15:02:11Z",
    "lastViewedAt": "2026-09-23T15:02:11Z",
    "submittedAt": "2026-09-23T15:02:11Z",
    "submittedByName": "string",
    "lastReportSentAt": "2026-09-23T15:02:11Z",
    "createdByUserId": 812,
    "createdAt": "2026-09-23T15:02:11Z",
    "lastActivityAt": "2026-09-23T15:02:11Z",
    "items": [
      {
        "id": 812,
        "kind": "string",
        "title": "string",
        "status": "string",
        "approvalItemId": 812,
        "decidedAt": "2026-09-23T15:02:11Z",
        "decidedByName": "string",
        "decisionComment": "string",
        "commentCount": 1
      }
    ],
    "comments": [
      {
        "id": 812,
        "shareItemId": 812,
        "anchor": "string",
        "body": "string",
        "authorName": "string",
        "createdAt": "2026-09-23T15:02:11Z"
      }
    ],
    "access": [
      {
        "label": "string",
        "value": "string"
      }
    ],
    "activity": [
      {
        "id": 812,
        "type": "string",
        "shareItemId": 812,
        "actorKind": "string",
        "actorName": "string",
        "actorUserId": 812,
        "data": null,
        "createdAt": "2026-09-23T15:02:11Z"
      }
    ],
    "alreadyEmailedRecipients": [
      "string"
    ]
  }
}

Update a share link

PATCH/v1/shares/{shareId}shares.update

Needs the share feature on your workspace. Until it is on, calls answer 404.

Try it on developer.ken.so

Absent fields stay unchanged.

Fields: name, company, recipients (replaces the list), expiry (counted from creation), holdLaunch, recurringReport. What is shared and the permission are fixed: create a new share to change them. Each email address recipients adds counts against the workspace's daily share email cap, since it gets the later reminders and weekly reports: past it the update answers 429 quota_exceeded (share_email_quota) and changes nothing. Requires Share page edit and the share feature.

Parameters

Name
In
Type
Required
Description
shareId
In: path
integer (int64)
required
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).

Request body

application/json, optional.

Field
Type
Required
Description
name
string
optional
company
string
optional
recipients
array of string
optional
expiry
string
optional
holdLaunch
boolean
optional
recurringReport
boolean
optional

Response 200

data is a ShareModel.

Field
Type
Description
id
integer (int64)
name
string
company
string
Who the share is for, shown on the page. Defaults to the workspace name.
url
string
The link to send: https://<app host>/s/<token>.
campaignId
integer (int64)
campaignName
string
accountIds
array of integer (int64)
The accounts of the account plans, in the order picked. Omitted without plans.
kinds
array of string
What is shared, in page order: leads, copy, settings, icp, report, plan.
permission
string
view, comment or approve.
expiry
string
7_days, 30_days or never, counted from creation.
expiresAt
string (date-time)
isExpired
boolean
holdLaunch
boolean
recurringReport
boolean
recipients
array of string
status
string
not_opened, viewed, n_of_m_approved, changes_requested or approved.
approvedCount
integer (int32)
Kinds approved, for "n of m approved". Always 0 on view and comment shares.
kindCount
integer (int32)
changesRequestedCount
integer (int32)
kindStatuses
array of ShareKindStatusModel
viewCount
integer (int32)
firstViewedAt
string (date-time)
lastViewedAt
string (date-time)
submittedAt
string (date-time)
submittedByName
string
lastReportSentAt
string (date-time)
createdByUserId
integer (int64)
createdAt
string (date-time)
lastActivityAt
string (date-time)
The share's latest activity: created, viewed, a decision, a comment, a reminder, a report sent or the review sent.
items
array of ShareItemModel
Detail only.
comments
array of ShareCommentModel
Detail only: the comments left through this share, oldest first.
access
array of ShareAccessRowModel
Detail only: the Access rows ("They can", "Expires", "Launch", "Repeats", "Branding").
activity
array of ShareActivityModel
Detail only: the share's log, newest first, at most 50 entries.
alreadyEmailedRecipients
array of string
Create only: the recipients the link was not emailed to, because a share link email from this workspace reached them in the last 24 hours. Send them the link yourself. Omitted when nobody was left out.
Request
curl -X PATCH "https://api.ken.so/v1/shares/812" \
  -H "Authorization: Bearer $KEN_API_KEY" \
  -H "Ken-Version: 2026-11-02" \
  -H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "company": "string",
  "recipients": [
    "string"
  ],
  "expiry": "string",
  "holdLaunch": true,
  "recurringReport": true
}'
Response 200
{
  "success": true,
  "data": {
    "id": 812,
    "name": "string",
    "company": "string",
    "url": "https://example.com",
    "campaignId": 812,
    "campaignName": "string",
    "accountIds": [
      812
    ],
    "kinds": [
      "string"
    ],
    "permission": "string",
    "expiry": "string",
    "expiresAt": "2026-09-23T15:02:11Z",
    "isExpired": true,
    "holdLaunch": true,
    "recurringReport": true,
    "recipients": [
      "string"
    ],
    "status": "string",
    "approvedCount": 1,
    "kindCount": 1,
    "changesRequestedCount": 1,
    "kindStatuses": [
      {
        "kind": "string",
        "status": "string"
      }
    ],
    "viewCount": 1,
    "firstViewedAt": "2026-09-23T15:02:11Z",
    "lastViewedAt": "2026-09-23T15:02:11Z",
    "submittedAt": "2026-09-23T15:02:11Z",
    "submittedByName": "string",
    "lastReportSentAt": "2026-09-23T15:02:11Z",
    "createdByUserId": 812,
    "createdAt": "2026-09-23T15:02:11Z",
    "lastActivityAt": "2026-09-23T15:02:11Z",
    "items": [
      {
        "id": 812,
        "kind": "string",
        "title": "string",
        "status": "string",
        "approvalItemId": 812,
        "decidedAt": "2026-09-23T15:02:11Z",
        "decidedByName": "string",
        "decisionComment": "string",
        "commentCount": 1
      }
    ],
    "comments": [
      {
        "id": 812,
        "shareItemId": 812,
        "anchor": "string",
        "body": "string",
        "authorName": "string",
        "createdAt": "2026-09-23T15:02:11Z"
      }
    ],
    "access": [
      {
        "label": "string",
        "value": "string"
      }
    ],
    "activity": [
      {
        "id": 812,
        "type": "string",
        "shareItemId": 812,
        "actorKind": "string",
        "actorName": "string",
        "actorUserId": 812,
        "data": null,
        "createdAt": "2026-09-23T15:02:11Z"
      }
    ],
    "alreadyEmailedRecipients": [
      "string"
    ]
  }
}

Revoke a share link

DELETE/v1/shares/{shareId}shares.revoke

Needs the share feature on your workspace. Until it is on, calls answer 404.

Try it on developer.ken.so

The link then answers 410 share_inactive. Decisions already made stay. Returns 204. Requires Share page edit and the share feature.

Parameters

Name
In
Type
Required
Description
shareId
In: path
integer (int64)
required
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 204

Request
curl -X DELETE "https://api.ken.so/v1/shares/812" \
  -H "Authorization: Bearer $KEN_API_KEY" \
  -H "Ken-Version: 2026-11-02" \
  -H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID"
Response 204
HTTP/1.1 204 No Content

Remind the share's recipients

POST/v1/shares/{shareId}/remindersshares.remind

Needs the share feature on your workspace. Until it is on, calls answer 404.

Try it on developer.ken.so

Emails the link to every recipient that is an email address again and logs share_reminder_sent. Returns 202 with recipientCount, the addresses emailed. An expired share answers 410 share_expired; a share without recipients 400; a share whose recipients are only names 409 no_email_recipients. One reminder per share every 24 hours: another within that answers 429 quota_exceeded (detail code reminder_cooldown) with Retry-After, and so does a reminder past the workspace's daily share email cap (share_email_quota). Nothing is sent then. Requires Share page edit and the share feature.

Parameters

Name
In
Type
Required
Description
shareId
In: path
integer (int64)
required
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 202

data is a ShareReminderModel.

Field
Type
Description
shareId
integer (int64)
recipientCount
integer (int32)
The recipients emailed: those that are email addresses, less Ken.Scraper.API.Canonical.ShareReminderModel.AlreadyEmailedRecipients. Names are never emailed.
remindedAt
string (date-time)
alreadyEmailedRecipients
array of string
The recipients left out because a share link email from this workspace reached them in the last 24 hours.
Request
curl -X POST "https://api.ken.so/v1/shares/812/reminders" \
  -H "Authorization: Bearer $KEN_API_KEY" \
  -H "Ken-Version: 2026-11-02" \
  -H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID"
Response 202
{
  "success": true,
  "data": {
    "shareId": 812,
    "recipientCount": 1,
    "remindedAt": "2026-09-23T15:02:11Z",
    "alreadyEmailedRecipients": [
      "string"
    ]
  }
}

Preview the share as the reviewer sees it

GET/v1/shares/{shareId}/previewshares.preview

Needs the share feature on your workspace. Until it is on, calls answer 404.

Try it on developer.ken.so

The public payload of GET /v1/public/shares/{token}, without counting a view. Works on an expired share. Requires the Share page.

Parameters

Name
In
Type
Required
Description
shareId
In: path
integer (int64)
required
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 SharePublicModel.

Field
Type
Description
brand
SharePublicBrandModel
workspaceName
string
workspaceLogoUrl
string
The workspace's wide Logo, else its square Icon. Omitted when it has neither.
workspaceIconUrl
string
The workspace's square Icon, else its wide Logo. Omitted when it has neither.
shareName
string
company
string
senderName
string
The member who created the share. Omitted when unknown.
campaignName
string
permission
string
view, comment or approve.
expiresAt
string (date-time)
holdLaunch
boolean
isSubmitted
boolean
submittedAt
string (date-time)
submittedByName
string
status
string
not_opened, viewed, n_of_m_approved, changes_requested or approved.
approvedCount
integer (int32)
kindCount
integer (int32)
items
array of SharePublicItemModel
Request
curl -X GET "https://api.ken.so/v1/shares/812/preview" \
  -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": {
    "brand": {
      "productName": "string",
      "logoUrl": "https://example.com",
      "faviconUrl": "https://example.com"
    },
    "workspaceName": "string",
    "workspaceLogoUrl": "https://example.com",
    "workspaceIconUrl": "https://example.com",
    "shareName": "string",
    "company": "string",
    "senderName": "string",
    "campaignName": "string",
    "permission": "string",
    "expiresAt": "2026-09-23T15:02:11Z",
    "holdLaunch": true,
    "isSubmitted": true,
    "submittedAt": "2026-09-23T15:02:11Z",
    "submittedByName": "string",
    "status": "string",
    "approvedCount": 1,
    "kindCount": 1,
    "items": [
      {
        "id": 812,
        "kind": "string",
        "title": "string",
        "status": "string",
        "canUndo": true,
        "decidedAt": "2026-09-23T15:02:11Z",
        "decidedByName": "string",
        "decisionComment": "string",
        "snapshot": null,
        "comments": [
          {
            "id": 812,
            "shareItemId": 812,
            "anchor": "string",
            "body": "string",
            "authorName": "string",
            "createdAt": "2026-09-23T15:02:11Z"
          }
        ]
      }
    ]
  }
}