LinkedIn Activity API
Overview
The API is available to users who have an active Dux-Soup Turbo or Cloud license, as well as those using STACKED.
The LinkedIn Activity API allows you to schedule automated LinkedIn actions from external applications. For example, when a new lead is created in your CRM and their LinkedIn profile URL is added, you can automatically schedule a connection request with a personalised message.
This allows you to incorporate LinkedIn outreach into your existing workflows without leaving your CRM or lead management system.
Enabling API command processing
To process commands sent through the LinkedIn Activity API, Remote Control must be enabled for the user.
You can enable it manually under Settings → Connect (available within Expert UI), or programmatically using the User Settings API.

Remote Control is automatically enabled when you click Enroll in Dux-Soup or STACKED.
Using the API to build sequences
If you are building an outreach sequence using the API, enabling Remote Control alone is not sufficient. The following three settings must be enabled:
{
"followupflag": true,
"remotecontrolflag": true,
"messagebridgeflag": true
}
LinkedIn Activity Commands
The LinkedIn Activity API supports a range of LinkedIn actions. When a command is sent to the Dux-Soup API, it is added to the user’s activity queue and waits to be processed. Commands can remain in the queue for up to 365 days.
A successful API call returns the messageidof the queued activity.
If an identical command is submitted more than once, a duplicate queue entry is not created. Instead, the API returns the messageid of the existing queued activity.
The messageid is also included in webhook events generated as the activity is processed. This allows you to correlate the activity originally scheduled through the API with subsequent events generated during its execution.
Visit
This command will open the target profile in a new tab on the remote. After the command has been executed, the tab is closed.
- URL: https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue
- HTTP method: POST
- HTTP body: a JSON object with the following attributes, in addition to the required fields.
| command | "visit" |
|
| params | { |
|
| campaignid | Campaign ID to be assigned to this command ( optional, String ) | |
| profile | Target profile URL (mandatory, String) | |
| force | Force the action, ignoring all exclusion rules ( optional, boolean ) | |
| } |
|
|
| runafter | Schedule the command to run after a set time ( optional, ISO date-string) |
|
Enroll
This command will open the target profile in a new tab and enroll the profile into the specified campaign. After the command has been executed, the tab is closed.
- URL: https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue
- HTTP method: POST
- HTTP body: a JSON object with the following attributes, in addition to the required fields.
| command | "enroll" |
|
| params | { |
|
| campaignid | Campaign ID of the campaign the profile should be enrolled into ( mandatory, String ) | |
| profile | Target profile URL ( mandatory, String ) | |
| force | Force the action, ignoring all exclusion rules ( optional, boolean ) | |
|
|
} |
|
| runafter | Schedule the command to run after a set time ( optional, ISO date-string) |
|
Connect
This will open the target profile in a new tab and will attempt to send a personalised connection request. After the command has been executed, the remote will close the tab.
- URL: https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue
- HTTP method: POST
- HTTP body: a JSON object with the following attributes, in addition to the required fields.
| command | "connect" |
|
| params | { |
|
| campaignid | Campaign ID to be assigned to this command ( optional, String ) | |
| profile | Target profile URL, must be a 2nd or 3rd degree connection ( mandatory, String ) | |
| messagetext | Personalised message to be sent with the invite. Can contain placeholders, e.g. _FN_ ( optional, String ) | |
| force | Force the action, ignoring all exclusion rules ( optional, boolean ) | |
|
|
} |
|
| runafter | Schedule the command to run after a set time ( optional, ISO date-string) |
|
Message
This will open the target profile in a new tab and will attempt to send a direct message. After the command has executed, the tab is closed.
- URL: https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue
- HTTP method: POST
- HTTP body: a JSON object with the following attributes, in addition to the required fields.
| command | "message" |
|
| params | { |
|
| campaignid | Campaign ID to be assigned to this command ( optional, String ) | |
| profile | Target profile URL, must be a 1st degree connection ( mandatory, String ) | |
| messagetext | Personalised message to be sent. Can contain placeholders, e.g. _FN_ ( mandatory, String ) | |
| force | Force the action, ignoring all exclusion rules ( optional, boolean ) | |
|
|
} |
|
| runafter | Schedule the command to run after a set time ( optional, ISO date-string) |
|
InMail
This will open the target profile in a new tab and will attempt to send an InMail message. This requires your LinkedIn account to have InMail credits. After the command has been executed, the tab is closed.
- URL: https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue
- HTTP method: POST
- HTTP body: a JSON object with the following attributes, in addition to the required fields.
| command | "inmail" |
|
| params | { |
|
| campaignid | Campaign ID to be assigned to this command ( optional, String ) | |
| profile | Target profile URL, must be a Sales Navigator or Recruiter URL ( mandatory, String ) | |
| messagesubject | Personalised subject for the InMail. Can contain placeholders, e.g. A message for _FN_ ( mandatory, String ) | |
| messagetext | Personalised message to be sent. Can contain placeholders, e.g. Hi _FN_ ( mandatory, String ) | |
| force | Force the action, ignoring all exclusion rules ( optional, boolean ) | |
|
|
} |
|
| runafter | Schedule the command to run after a set time ( optional, ISO date-string) |
|
Tag
This will open the target profile in a new tab and will apply one or more Dux-Soup tags to the profile. After the command has been executed, the tab is closed.
- URL: https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue
- HTTP method: POST
- HTTP body: a JSON object with the following attributes, in addition to the required fields.
| command | "tag" |
|
| params | { |
|
| campaignid | Campaign ID to be assigned to this command ( optional, String ) | |
| profile | Target profile URL ( mandatory, String ) | |
| tags | List of tags to add ( mandatory, Array of Strings ) | |
| force | Force the action, ignoring all exclusion rules ( optional, boolean ) | |
|
|
} |
|
| runafter | Schedule the command to run after a set time ( optional, ISO date-string) |
|
Untag
This will open the target profile in a new tab and will remove one or more Dux-Soup tags from the profile. After the command has been executed, the tab is closed.
- URL: https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue
- HTTP method: POST
- HTTP body: a JSON object with the following attributes, in addition to the required fields.
| command | "untag" |
|
| params | { |
|
| campaignid | Campaign ID to be assigned to this command ( optional, String ) | |
| profile | Target profile URL ( mandatory, String ) | |
| tags | List of tags to remove ( mandatory, Array of Strings ) | |
| force | Force the action, ignoring all exclusion rules ( optional, boolean ) | |
|
|
} |
|
| runafter | Schedule the command to run after a set time ( optional, ISO date-string) |
|
SaveToPdf
This will open the target profile in a new tab and will save the profile as a PDF. After the command has been executed, the tab is closed.
- URL: https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue
- HTTP method: POST
- HTTP body: a JSON object with the following attributes, in addition to the required fields.
| command | "savetopdf" |
|
| params | { |
|
| campaignid | Campaign ID to be assigned to this command ( optional, String ) | |
| profile | Target profile URL, must be a regular LinkedIn URL ( mandatory, String ) | |
| force | Force the action, ignoring all exclusion rules ( optional, boolean ) | |
|
|
} |
|
| runafter | Schedule the command to run after a set time ( optional, ISO date-string) |
|
Follow
This will open the target profile in a new tab and will 'follow' the profile. After the command has executed, the tab is closed.
- URL: https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue
- HTTP method: POST
- HTTP body: a JSON object with the following attributes, in addition to the required fields.
| command | "follow" |
|
| params | { |
|
| campaignid | Campaign ID to be assigned to this command ( optional, String ) | |
| profile | Target profile URL, must be a regular LinkedIn URL ( mandatory, String ) | |
| force | Force the action, ignoring all exclusion rules ( optional, boolean ) | |
|
|
} |
|
| runafter | Schedule the command to run after a set time ( optional, ISO date-string) |
|
Disconnect
This will open the target profile in a new tab and will disconnect the profile. After the command has been executed, the tab is closed.
- URL: https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue
- HTTP method: POST
- HTTP body: a JSON object with the following attributes, in addition to the required fields.
| command | "disconnect" |
|
| params | { |
|
| campaignid | Campaign ID to be assigned to this command ( optional, String ) | |
| profile | Target profile URL, must be a 1st degree, regular LinkedIn URL ( mandatory, String ) | |
| force | Force the action, ignoring all exclusion rules ( optional, boolean ) | |
|
|
} |
|
| runafter | Schedule the command to run after a set time ( optional, ISO date-string) |
|
Endorse
This will open the target profile in a new window and will attempt to endorse the selected skills. After the command has been executed, the tab is closed.
- URL: https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue
- HTTP method: POST
- HTTP body: a JSON object with the following attributes, in addition to the required fields.
| command | "endorse" |
|
| params | { |
|
| campaignid | Campaign ID to be assigned to this command ( optional, String ) | |
| profile | Target profile URL, must be a 1st degree, regular LinkedIn URL ( mandatory, String ) | |
| count | Number of skills to endorse, e.g. 3 for top 3 or -1 for bottom 1. ( optional, Number, defaults to 3 ) | |
| force | Force the action, ignoring all exclusion rules ( optional, boolean ) | |
|
|
} |
|
| runafter | Schedule the command to run after a set time ( optional, ISO date-string) |
|
SaveAsLead
This will open the target profile in a new window and save the profile to the "My saved lead" list. After the command has been executed, the tab is closed.
- URL: https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue
- HTTP method: POST
- HTTP body: a JSON object with the following attributes, in addition to the required fields.
| command | "saveaslead" |
|
| params | { |
|
| campaignid | Campaign ID to be assigned to this command ( optional, String ) | |
| profile | Target profile URL, must be a Sales Navigator URL ( mandatory, String) | |
| force | Force the action, ignoring all exclusion rules ( optional, boolean ) | |
|
|
} |
|
| runafter | Schedule the command to run after a set time ( optional, ISO date-string) |
|
LikePost
This will open the target profile in a new window and like the most recent profile post. After the command has been executed, the tab is closed.
- URL: https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue
- HTTP method: POST
- HTTP body: a JSON object with the following attributes, in addition to the required fields.
| command | "likepost" |
|
| params | { |
|
| campaignid | Campaign ID to be assigned to this command ( optional, String ) | |
| profile | Target profile URL, must be a regular LinkedIn URL ( mandatory, String ) | |
| force | Force the action, ignoring all exclusion rules ( optional, boolean ) | |
|
|
} |
|
| runafter | Schedule the command to run after a set time ( optional, ISO date-string) |
|
Try the API with Postman
You can explore and test the Dux-Soup API using our public Postman collection.
Open the Dux-Soup Public API in Postman
To start testing the API:
- Open the Dux-Soup Public API workspace in Postman and sign in to your Postman account.
- Select the API collection and click Fork.
- Choose a workspace where you want to save your copy and click Fork Collection.
- Configure the required Dux-Soup API credentials and variables in your fork.
- Select an API request, enter any required parameters or request body, and click Send.
Forking creates your own copy of the collection, allowing you to configure and test requests without modifying the public Dux-Soup collection.
The Dux-Soup API Test Tool
We provide an API testing tool that lets you execute API calls and generate the corresponding curl commands for use from a command line.
Open the API testing tool: