Queue Management API
Overview
The Queue Management API lets you inspect and manage the activity waiting in a user's queue. It's aimed at advanced users who integrate Dux-Soup or STACKED with their CRM or automation platform - for example, checking how many actions are still pending for a Campaign before pushing new profiles, or clearing the queue when an outreach push needs to stop.
All Queue Management API calls are made against your Remote Control endpoint:
https://app.dux-soup.com/xapi/remote/control/{{USERID}}/...
Required fields
All API requests must include a signed X-Dux-Signature header. For POST requests, include a JSON body containing targeturl, timestamp, and userid. For guidance on calculating the signature, please refer to Authenticating API calls.
| Field | Description |
|---|---|
X-Dux-Signature (header) |
HMAC signature calculated from your Authentication Key |
targeturl |
The target URL of the command (should start with https://app.dux-soup.com ) |
userid |
The userid the command is sent to; should match the userid in the target URL |
timestamp |
Current Unix time in milliseconds; must be within 5 minutes of the current time |
You can generate
curlcommands or execute calls directly at https://app.dux-soup.com/web/rc/test - the easiest way to try any endpoint on this page.
Clear the Queue
Removes all queued messages for the user.
URL: https://app.dux-soup.com/xapi/remote/control/{{USERID}}/reset
HTTP method: POST
HTTP body: a JSON object with the required fields only.
Example request
curl -v -XPOST -H 'X-Dux-Signature: {{SIGNATURE}}' -H 'Content-type: application/json' -d '{
"targeturl": "https://app.dux-soup.com/xapi/remote/control/{{USERID}}/reset",
"userid": "{{USERID}}",
"timestamp": 1791549573933,
"params": {}
}' 'https://app.dux-soup.com/xapi/remote/control/{{USERID}}/reset'
Example response
{"result":200}
Clearing the queue removes every queued message - across all Campaigns and all command types - and can't be undone. To see what would be removed first, call Queued Items below.
Queue Size
Returns the number of messages waiting in the queue. Use the optional filters to count only the messages for one Campaign, one profile, or one command type.
URL: https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue/size
HTTP method: GET
Query parameters
| Parameter | Description |
|---|---|
campaignid |
Only count messages for this Campaign ID (optional, String) |
profileid |
Only count messages for this profile, e.g., id.627014336 (optional, String) |
command |
Only count messages of this command type, e.g. visit (optional, String) |
URL with all optional parameters:
https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue/size?campaignid={{CAMPAIGNID}}&profileid={{PROFILEID}}&command={{COMMANDTYPE}}
Example request
curl -v -XGET -H 'X-Dux-Signature: {{SIGNATURE}}' -H 'Content-type: application/json' 'https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue/size?campaignid=visit&command=visit'
Example response
{"result":8}
result is the number of queued messages that match the filters.
Queued Items
Returns the messages currently in the queue, up to a maximum of 100. Accepts the same optional filters as Queue Size.
URL: https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue/items
HTTP method: GET
Query parameters
| Parameter | Description |
|---|---|
campaignid |
Only return messages for this Campaign ID (optional, String) |
profileid |
Only return messages for this profile, e.g. id.627014336 (optional, String) |
command |
Only return messages of this command type, e.g. visit (optional, String) |
URL with all optional parameters:
https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue/items?campaignid={{CAMPAIGNID}}&profileid={{PROFILEID}}&command={{COMMANDTYPE}}
Example request
curl -v -XGET -H 'X-Dux-Signature: {{SIGNATURE}}' -H 'Content-type: application/json' 'https://app.dux-soup.com/xapi/remote/control/{{USERID}}/queue/items?campaignid=visit&command=visit'
Example response (shortened to two items)
[
{
"userid": "{{USERID}}",
"command": "visit",
"params": {
"profile": "https://www.linkedin.com/in/example-profile-1/",
"profileid": "id.627014336",
"campaignid": "visit",
"actionindex": 0,
"attempt": 1
},
"when": "2026-10-09T12:38:19.600Z",
"messageid": "cc781dd7-bbaa-77f747850d7b"
},
{
"userid": "{{USERID}}",
"command": "visit",
"params": {
"profile": "https://www.linkedin.com/in/example-profile-2/",
"profileid": "id.886994516",
"campaignid": "visit",
"actionindex": 0,
"attempt": 1
},
"when": "2026-10-09T12:38:20.600Z",
"messageid": "711a0a74-b8bc-ca9231472166"
}
]
Queued item attributes
| Field | Description |
|---|---|
userid |
The user the message is queued for |
command |
Command type, e.g., visit |
params.profile |
LinkedIn profile URL the command will run on |
params.profileid |
Dux-Soup internal profile ID |
params.campaignid |
Campaign the message belongs to |
params.actionindex |
Position of the action in the Campaign sequence, starting at 0 |
params.attempt |
How many times this message has been attempted |
when |
Scheduled date and time for the message (ISO 8601) |
messageid |
Unique ID of the queued message |
Only the first 100 messages are returned. If Queue Size reports more than 100, use the
campaignid,profileidorcommandfilters to narrow the list.