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 curl  commands 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 , profileid  or command  filters to narrow the list.