Kenso

LinkedIn accounts

The LinkedIn accounts your campaigns send from, and hosted sessions to connect them.

Deliverability5 endpointsKen-Version: 2026-11-02AuthenticationWorkspacesErrors

Parameters

Name
In
Type
Required
Description
Cursor
In: query
string
optional
Limit
In: query
integer (int32)
optional
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 LinkedInAccountModel. Each item has these fields. The response also carries pagination.

Field
Type
Description
id
integer (int64)
displayName
string
publicIdentifier
string
profileUrl
string
profileImageUrl
string
headline
string
status
string
timezone
string
workingHours
string
dailyInviteCap
integer (int32)
dailyMessageCap
integer (int32)
dailyVisitCap
integer (int32)
createdAt
string (date-time)
createdDatetime
string (date-time)
updatedAt
string (date-time)
unipileAccountId
string
statusChangedAt
string (date-time)
invitesToday
integer (int32)
Invites sent today, on the seat's own day (the trailing 24 hours when rolling seat budgets are on). Compare with Ken.Scraper.API.Canonical.LinkedInAccountModel.DailyInviteCap. Omitted when the counters could not be read.
messagesToday
integer (int32)
Messages and InMails sent today, on the same day as Ken.Scraper.API.Canonical.LinkedInAccountModel.InvitesToday.
visitsToday
integer (int32)
Profile visits today, on the same day as Ken.Scraper.API.Canonical.LinkedInAccountModel.InvitesToday.
invitesSent30d
integer (int32)
Invites sent in the last 30 days (by invite time). Omitted when it could not be read.
acceptRate
number (double)
Share of Ken.Scraper.API.Canonical.LinkedInAccountModel.InvitesSent30d that were accepted, a fraction from 0 to 1. Omitted when no invite was sent in the window.
usedBy
UsedByModel
What an inbox or LinkedIn account is used for: the live campaigns that send through it, and whether the 1:1 Accounts lane does.
lastActionAt
string (date-time)
When the seat last completed an outbound action: the newest confirmed campaign step or Accounts-lane touch . A person's replies from the Inbox do not count. Omitted when the seat has none or it could not be read.
lastActionType
string
The action at Ken.Scraper.API.Canonical.LinkedInAccountModel.LastActionAt: visit, invite, message, inmail, withdraw, follow, reaction, comment or endorse. Omitted with it.
pausedAt
string (date-time)
When a member paused the account, or null when it is not paused. A paused account sends no outreach (invites, messages, InMails, profile visits, withdrawals, approved Accounts notes); it waits and continues on resume, and so do the autonomous reply agent's sends. A person's replies from the Inbox and inbox sync keep running. Independent of status.
connectedByMemberId
integer (int64)
The member who connected the seat. Touches that send from it wait on this member's approval ; null for a seat connected before that was recorded.
importConnections
boolean
The seat's connections are imported into Accounts as people and accounts. Only the member who connected the seat or a workspace admin switches it. Always present.
importConnectionsChangedAt
string (date-time)
When importConnections last changed. Omitted while it never did.
workingHoursSchedule
LinkedInWeeklySchedule
products
LinkedInAccountProductsModel
invitesLast7Days
integer (int32)
Invites sent in the last 7 days, against Ken.Scraper.API.Canonical.LinkedInAccountModel.WeeklyInviteCap. The safety fields are omitted together when they could not be read.
weeklyInviteCap
integer (int32)
Rolling 7-day invite cap, at most 100.
pendingInvites
integer (int32)
Invitations still pending: the larger of Kenso's own and Unipile's count.
pendingInviteCap
integer (int32)
At or above this many pending invitations the seat sends no new invites.
health
LinkedInAccountHealthModel
rampStage
integer (int32)
Ramp stage (0, 1, 2, then full).
rampInviteCap
integer (int32)
Today's invite cap from the ramp: 5, 10, 20, then the seat's daily invite cap.
safetyEnabled
boolean
False while Kenso shows the safety values but does not enforce the weekly, pending and low-acceptance caps yet.
tagIds
array of integer (int64)
Ids of this workspace's tags on the account, ascending; empty when it has none. Set them with POST /v1/tags/{tagId}/assignments and entityType: linkedin_account. Only GET /v1/linkedin-accounts, GET /v1/linkedin-accounts/{linkedinAccountId} and its PATCH carry it, and they omit it when the tags could not be read. Other lists of this model, such as a campaign's LinkedIn accounts, never carry it.
Request
curl -X GET "https://api.ken.so/v1/linkedin-accounts" \
  -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,
      "displayName": "string",
      "publicIdentifier": "string",
      "profileUrl": "https://example.com",
      "profileImageUrl": "https://example.com",
      "headline": "string",
      "status": "string",
      "timezone": "string",
      "workingHours": "string",
      "dailyInviteCap": 1,
      "dailyMessageCap": 1,
      "dailyVisitCap": 1,
      "createdAt": "2026-09-23T15:02:11Z",
      "createdDatetime": "2026-09-23T15:02:11Z",
      "updatedAt": "2026-09-23T15:02:11Z",
      "unipileAccountId": "string",
      "statusChangedAt": "2026-09-23T15:02:11Z",
      "invitesToday": 1,
      "messagesToday": 1,
      "visitsToday": 1,
      "invitesSent30d": 1,
      "acceptRate": 0.5,
      "usedBy": {
        "campaigns": [
          {
            "id": 812,
            "name": "string",
            "status": "string"
          }
        ],
        "accounts": true
      },
      "lastActionAt": "2026-09-23T15:02:11Z",
      "lastActionType": "string",
      "pausedAt": "2026-09-23T15:02:11Z",
      "connectedByMemberId": 812,
      "importConnections": true,
      "importConnectionsChangedAt": "2026-09-23T15:02:11Z",
      "workingHoursSchedule": {
        "mon": {
          "open": true,
          "start": "string",
          "end": "string"
        },
        "tue": {
          "open": true,
          "start": "string",
          "end": "string"
        },
        "wed": {
          "open": true,
          "start": "string",
          "end": "string"
        },
        "thu": {
          "open": true,
          "start": "string",
          "end": "string"
        },
        "fri": {
          "open": true,
          "start": "string",
          "end": "string"
        },
        "sat": {
          "open": true,
          "start": "string",
          "end": "string"
        },
        "sun": {
          "open": true,
          "start": "string",
          "end": "string"
        }
      },
      "products": {
        "premium": true,
        "salesNavigator": true,
        "recruiter": true,
        "checkedAt": "2026-09-23T15:02:11Z"
      },
      "invitesLast7Days": 1,
      "weeklyInviteCap": 1,
      "pendingInvites": 1,
      "pendingInviteCap": 1,
      "health": {
        "status": "string",
        "acceptRate": 0.5,
        "sample": 1,
        "changedAt": "2026-09-23T15:02:11Z"
      },
      "rampStage": 1,
      "rampInviteCap": 1,
      "safetyEnabled": true,
      "tagIds": [
        812
      ]
    }
  ],
  "pagination": {
    "nextCursor": "eyJpZCI6ODE1fQ",
    "hasMore": true,
    "total": 1,
    "isTotalCapped": true
  }
}

Start a hosted connect or reconnect session

POST/v1/linkedin-accounts/connect-sessionslinkedin-accounts.create-connect-session

Try it on developer.ken.so

Omit the account id to connect a new seat. linkedInAccountId or linkedinAccountId reconnects that seat. A client seat (Delivery view, approve_own_sends) connects only its own LinkedIn: reconnecting a seat another member connected is 403 forbidden with not_your_linkedin, and a new seat while it holds one is 409 conflict with reconnect_instead. Requires Delivery edit, or approve_own_sends (declared [WorkspaceMember]; the action decides, DEV-1811). importConnections: true on a new seat imports its connections into Accounts once it connects, while linkedin_connections_import is on (ignored otherwise); a reconnect ignores it and keeps the stored setting.

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
linkedInAccountId
integer (int64)
optional
importConnections
boolean
optional
Import the seat's connections into Accounts once it connects. Read on a connect only, while linkedin_connections_import is on; a reconnect keeps the stored setting.

Response 201

data is a LinkedInConnectSessionModel.

Field
Type
Description
linkedInAccountId
integer (int64)
url
string
Request
curl -X POST "https://api.ken.so/v1/linkedin-accounts/connect-sessions" \
  -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 '{
  "linkedInAccountId": 812,
  "importConnections": true
}'
Response 201
{
  "success": true,
  "data": {
    "linkedInAccountId": 812,
    "url": "https://example.com"
  }
}

Return one LinkedIn account in the current workspace

GET/v1/linkedin-accounts/{linkedinAccountId}linkedin-accounts.get

Try it on developer.ken.so

Parameters

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

Field
Type
Description
id
integer (int64)
displayName
string
publicIdentifier
string
profileUrl
string
profileImageUrl
string
headline
string
status
string
timezone
string
workingHours
string
dailyInviteCap
integer (int32)
dailyMessageCap
integer (int32)
dailyVisitCap
integer (int32)
createdAt
string (date-time)
createdDatetime
string (date-time)
updatedAt
string (date-time)
unipileAccountId
string
statusChangedAt
string (date-time)
invitesToday
integer (int32)
Invites sent today, on the seat's own day (the trailing 24 hours when rolling seat budgets are on). Compare with Ken.Scraper.API.Canonical.LinkedInAccountModel.DailyInviteCap. Omitted when the counters could not be read.
messagesToday
integer (int32)
Messages and InMails sent today, on the same day as Ken.Scraper.API.Canonical.LinkedInAccountModel.InvitesToday.
visitsToday
integer (int32)
Profile visits today, on the same day as Ken.Scraper.API.Canonical.LinkedInAccountModel.InvitesToday.
invitesSent30d
integer (int32)
Invites sent in the last 30 days (by invite time). Omitted when it could not be read.
acceptRate
number (double)
Share of Ken.Scraper.API.Canonical.LinkedInAccountModel.InvitesSent30d that were accepted, a fraction from 0 to 1. Omitted when no invite was sent in the window.
usedBy
UsedByModel
What an inbox or LinkedIn account is used for: the live campaigns that send through it, and whether the 1:1 Accounts lane does.
lastActionAt
string (date-time)
When the seat last completed an outbound action: the newest confirmed campaign step or Accounts-lane touch . A person's replies from the Inbox do not count. Omitted when the seat has none or it could not be read.
lastActionType
string
The action at Ken.Scraper.API.Canonical.LinkedInAccountModel.LastActionAt: visit, invite, message, inmail, withdraw, follow, reaction, comment or endorse. Omitted with it.
pausedAt
string (date-time)
When a member paused the account, or null when it is not paused. A paused account sends no outreach (invites, messages, InMails, profile visits, withdrawals, approved Accounts notes); it waits and continues on resume, and so do the autonomous reply agent's sends. A person's replies from the Inbox and inbox sync keep running. Independent of status.
connectedByMemberId
integer (int64)
The member who connected the seat. Touches that send from it wait on this member's approval ; null for a seat connected before that was recorded.
importConnections
boolean
The seat's connections are imported into Accounts as people and accounts. Only the member who connected the seat or a workspace admin switches it. Always present.
importConnectionsChangedAt
string (date-time)
When importConnections last changed. Omitted while it never did.
workingHoursSchedule
LinkedInWeeklySchedule
products
LinkedInAccountProductsModel
invitesLast7Days
integer (int32)
Invites sent in the last 7 days, against Ken.Scraper.API.Canonical.LinkedInAccountModel.WeeklyInviteCap. The safety fields are omitted together when they could not be read.
weeklyInviteCap
integer (int32)
Rolling 7-day invite cap, at most 100.
pendingInvites
integer (int32)
Invitations still pending: the larger of Kenso's own and Unipile's count.
pendingInviteCap
integer (int32)
At or above this many pending invitations the seat sends no new invites.
health
LinkedInAccountHealthModel
rampStage
integer (int32)
Ramp stage (0, 1, 2, then full).
rampInviteCap
integer (int32)
Today's invite cap from the ramp: 5, 10, 20, then the seat's daily invite cap.
safetyEnabled
boolean
False while Kenso shows the safety values but does not enforce the weekly, pending and low-acceptance caps yet.
tagIds
array of integer (int64)
Ids of this workspace's tags on the account, ascending; empty when it has none. Set them with POST /v1/tags/{tagId}/assignments and entityType: linkedin_account. Only GET /v1/linkedin-accounts, GET /v1/linkedin-accounts/{linkedinAccountId} and its PATCH carry it, and they omit it when the tags could not be read. Other lists of this model, such as a campaign's LinkedIn accounts, never carry it.
Request
curl -X GET "https://api.ken.so/v1/linkedin-accounts/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,
    "displayName": "string",
    "publicIdentifier": "string",
    "profileUrl": "https://example.com",
    "profileImageUrl": "https://example.com",
    "headline": "string",
    "status": "string",
    "timezone": "string",
    "workingHours": "string",
    "dailyInviteCap": 1,
    "dailyMessageCap": 1,
    "dailyVisitCap": 1,
    "createdAt": "2026-09-23T15:02:11Z",
    "createdDatetime": "2026-09-23T15:02:11Z",
    "updatedAt": "2026-09-23T15:02:11Z",
    "unipileAccountId": "string",
    "statusChangedAt": "2026-09-23T15:02:11Z",
    "invitesToday": 1,
    "messagesToday": 1,
    "visitsToday": 1,
    "invitesSent30d": 1,
    "acceptRate": 0.5,
    "usedBy": {
      "campaigns": [
        {
          "id": 812,
          "name": "string",
          "status": "string"
        }
      ],
      "accounts": true
    },
    "lastActionAt": "2026-09-23T15:02:11Z",
    "lastActionType": "string",
    "pausedAt": "2026-09-23T15:02:11Z",
    "connectedByMemberId": 812,
    "importConnections": true,
    "importConnectionsChangedAt": "2026-09-23T15:02:11Z",
    "workingHoursSchedule": {
      "mon": {
        "open": true,
        "start": "string",
        "end": "string"
      },
      "tue": {
        "open": true,
        "start": "string",
        "end": "string"
      },
      "wed": {
        "open": true,
        "start": "string",
        "end": "string"
      },
      "thu": {
        "open": true,
        "start": "string",
        "end": "string"
      },
      "fri": {
        "open": true,
        "start": "string",
        "end": "string"
      },
      "sat": {
        "open": true,
        "start": "string",
        "end": "string"
      },
      "sun": {
        "open": true,
        "start": "string",
        "end": "string"
      }
    },
    "products": {
      "premium": true,
      "salesNavigator": true,
      "recruiter": true,
      "checkedAt": "2026-09-23T15:02:11Z"
    },
    "invitesLast7Days": 1,
    "weeklyInviteCap": 1,
    "pendingInvites": 1,
    "pendingInviteCap": 1,
    "health": {
      "status": "string",
      "acceptRate": 0.5,
      "sample": 1,
      "changedAt": "2026-09-23T15:02:11Z"
    },
    "rampStage": 1,
    "rampInviteCap": 1,
    "safetyEnabled": true,
    "tagIds": [
      812
    ]
  }
}

Update a LinkedIn account

PATCH/v1/linkedin-accounts/{linkedinAccountId}linkedin-accounts.update

Try it on developer.ken.so

Absent fields stay unchanged.

Requires Delivery edit access (owners, admins and editors by default). paused: true pauses outreach from the account (campaign invites, messages, InMails, profile visits, withdrawals, approved Accounts notes) and sets pausedAt (kept when it is already paused); paused: false resumes it and clears pausedAt. Paused actions wait and are never failed or moved to email. The autonomous reply agent's sends are held too. A person's replies from the Inbox and inbox sync keep running. timezone takes an IANA id (empty clears it) and workingHoursSchedule all seven days; invalid values are 400 validation_failed naming the field. importConnections switches the seat's connections import: 400 validation_failed with feature_off while linkedin_connections_import is off, 403 forbidden unless the caller connected the seat or is a workspace admin; importConnectionsChangedAt moves only when the value changes.

Parameters

Name
In
Type
Required
Description
linkedinAccountId
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
displayName
string
optional
timezone
string
optional
An IANA time zone, for example Europe/Bucharest. An empty string clears it (UTC).
workingHours
string
optional
The stored working-hours JSON (keyed mon..sun). Prefer Ken.Scraper.API.Dtos.UpdateLinkedInAccountBody.WorkingHoursSchedule; send one of the two.
workingHoursSchedule
LinkedInWeeklySchedule
optional
dailyInviteCap
integer (int32)
optional
dailyMessageCap
integer (int32)
optional
dailyVisitCap
integer (int32)
optional
paused
boolean
optional
true pauses outreach from the account (campaign invites, messages, InMails, profile visits, withdrawals, approved Accounts notes) and keeps the original pausedAt when it is already paused. false resumes it, and its waiting actions continue where they stopped. The autonomous reply agent's sends wait too. A person's replies from the Inbox and inbox sync keep running while paused. Omit or send null to leave the pause unchanged.
importConnections
boolean
optional
true imports the seat's connections into Accounts as people and accounts; false stops new imports and keeps what was imported. Only the member who connected the seat or a workspace admin may send it, and only while linkedin_connections_import is on. Omit or send null to leave it unchanged.

Response 200

data is a LinkedInAccountModel.

Field
Type
Description
id
integer (int64)
displayName
string
publicIdentifier
string
profileUrl
string
profileImageUrl
string
headline
string
status
string
timezone
string
workingHours
string
dailyInviteCap
integer (int32)
dailyMessageCap
integer (int32)
dailyVisitCap
integer (int32)
createdAt
string (date-time)
createdDatetime
string (date-time)
updatedAt
string (date-time)
unipileAccountId
string
statusChangedAt
string (date-time)
invitesToday
integer (int32)
Invites sent today, on the seat's own day (the trailing 24 hours when rolling seat budgets are on). Compare with Ken.Scraper.API.Canonical.LinkedInAccountModel.DailyInviteCap. Omitted when the counters could not be read.
messagesToday
integer (int32)
Messages and InMails sent today, on the same day as Ken.Scraper.API.Canonical.LinkedInAccountModel.InvitesToday.
visitsToday
integer (int32)
Profile visits today, on the same day as Ken.Scraper.API.Canonical.LinkedInAccountModel.InvitesToday.
invitesSent30d
integer (int32)
Invites sent in the last 30 days (by invite time). Omitted when it could not be read.
acceptRate
number (double)
Share of Ken.Scraper.API.Canonical.LinkedInAccountModel.InvitesSent30d that were accepted, a fraction from 0 to 1. Omitted when no invite was sent in the window.
usedBy
UsedByModel
What an inbox or LinkedIn account is used for: the live campaigns that send through it, and whether the 1:1 Accounts lane does.
lastActionAt
string (date-time)
When the seat last completed an outbound action: the newest confirmed campaign step or Accounts-lane touch . A person's replies from the Inbox do not count. Omitted when the seat has none or it could not be read.
lastActionType
string
The action at Ken.Scraper.API.Canonical.LinkedInAccountModel.LastActionAt: visit, invite, message, inmail, withdraw, follow, reaction, comment or endorse. Omitted with it.
pausedAt
string (date-time)
When a member paused the account, or null when it is not paused. A paused account sends no outreach (invites, messages, InMails, profile visits, withdrawals, approved Accounts notes); it waits and continues on resume, and so do the autonomous reply agent's sends. A person's replies from the Inbox and inbox sync keep running. Independent of status.
connectedByMemberId
integer (int64)
The member who connected the seat. Touches that send from it wait on this member's approval ; null for a seat connected before that was recorded.
importConnections
boolean
The seat's connections are imported into Accounts as people and accounts. Only the member who connected the seat or a workspace admin switches it. Always present.
importConnectionsChangedAt
string (date-time)
When importConnections last changed. Omitted while it never did.
workingHoursSchedule
LinkedInWeeklySchedule
products
LinkedInAccountProductsModel
invitesLast7Days
integer (int32)
Invites sent in the last 7 days, against Ken.Scraper.API.Canonical.LinkedInAccountModel.WeeklyInviteCap. The safety fields are omitted together when they could not be read.
weeklyInviteCap
integer (int32)
Rolling 7-day invite cap, at most 100.
pendingInvites
integer (int32)
Invitations still pending: the larger of Kenso's own and Unipile's count.
pendingInviteCap
integer (int32)
At or above this many pending invitations the seat sends no new invites.
health
LinkedInAccountHealthModel
rampStage
integer (int32)
Ramp stage (0, 1, 2, then full).
rampInviteCap
integer (int32)
Today's invite cap from the ramp: 5, 10, 20, then the seat's daily invite cap.
safetyEnabled
boolean
False while Kenso shows the safety values but does not enforce the weekly, pending and low-acceptance caps yet.
tagIds
array of integer (int64)
Ids of this workspace's tags on the account, ascending; empty when it has none. Set them with POST /v1/tags/{tagId}/assignments and entityType: linkedin_account. Only GET /v1/linkedin-accounts, GET /v1/linkedin-accounts/{linkedinAccountId} and its PATCH carry it, and they omit it when the tags could not be read. Other lists of this model, such as a campaign's LinkedIn accounts, never carry it.
Request
curl -X PATCH "https://api.ken.so/v1/linkedin-accounts/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 '{
  "displayName": "string",
  "timezone": "string",
  "workingHours": "string",
  "workingHoursSchedule": {
    "mon": {
      "open": true,
      "start": "string",
      "end": "string"
    },
    "tue": {
      "open": true,
      "start": "string",
      "end": "string"
    },
    "wed": {
      "open": true,
      "start": "string",
      "end": "string"
    },
    "thu": {
      "open": true,
      "start": "string",
      "end": "string"
    },
    "fri": {
      "open": true,
      "start": "string",
      "end": "string"
    },
    "sat": {
      "open": true,
      "start": "string",
      "end": "string"
    },
    "sun": {
      "open": true,
      "start": "string",
      "end": "string"
    }
  },
  "dailyInviteCap": 1,
  "dailyMessageCap": 1,
  "dailyVisitCap": 1,
  "paused": true,
  "importConnections": true
}'
Response 200
{
  "success": true,
  "data": {
    "id": 812,
    "displayName": "string",
    "publicIdentifier": "string",
    "profileUrl": "https://example.com",
    "profileImageUrl": "https://example.com",
    "headline": "string",
    "status": "string",
    "timezone": "string",
    "workingHours": "string",
    "dailyInviteCap": 1,
    "dailyMessageCap": 1,
    "dailyVisitCap": 1,
    "createdAt": "2026-09-23T15:02:11Z",
    "createdDatetime": "2026-09-23T15:02:11Z",
    "updatedAt": "2026-09-23T15:02:11Z",
    "unipileAccountId": "string",
    "statusChangedAt": "2026-09-23T15:02:11Z",
    "invitesToday": 1,
    "messagesToday": 1,
    "visitsToday": 1,
    "invitesSent30d": 1,
    "acceptRate": 0.5,
    "usedBy": {
      "campaigns": [
        {
          "id": 812,
          "name": "string",
          "status": "string"
        }
      ],
      "accounts": true
    },
    "lastActionAt": "2026-09-23T15:02:11Z",
    "lastActionType": "string",
    "pausedAt": "2026-09-23T15:02:11Z",
    "connectedByMemberId": 812,
    "importConnections": true,
    "importConnectionsChangedAt": "2026-09-23T15:02:11Z",
    "workingHoursSchedule": {
      "mon": {
        "open": true,
        "start": "string",
        "end": "string"
      },
      "tue": {
        "open": true,
        "start": "string",
        "end": "string"
      },
      "wed": {
        "open": true,
        "start": "string",
        "end": "string"
      },
      "thu": {
        "open": true,
        "start": "string",
        "end": "string"
      },
      "fri": {
        "open": true,
        "start": "string",
        "end": "string"
      },
      "sat": {
        "open": true,
        "start": "string",
        "end": "string"
      },
      "sun": {
        "open": true,
        "start": "string",
        "end": "string"
      }
    },
    "products": {
      "premium": true,
      "salesNavigator": true,
      "recruiter": true,
      "checkedAt": "2026-09-23T15:02:11Z"
    },
    "invitesLast7Days": 1,
    "weeklyInviteCap": 1,
    "pendingInvites": 1,
    "pendingInviteCap": 1,
    "health": {
      "status": "string",
      "acceptRate": 0.5,
      "sample": 1,
      "changedAt": "2026-09-23T15:02:11Z"
    },
    "rampStage": 1,
    "rampInviteCap": 1,
    "safetyEnabled": true,
    "tagIds": [
      812
    ]
  }
}

Delete a LinkedIn account

DELETE/v1/linkedin-accounts/{linkedinAccountId}linkedin-accounts.delete

Try it on developer.ken.so

Returns 204. Requires Delivery edit access (owners, admins and editors by default).

Parameters

Name
In
Type
Required
Description
linkedinAccountId
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/linkedin-accounts/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