POST
/
v2
/
workflows
/
dlq
/
resume
curl -X POST https://qstash.upstash.io/v2/workflows/dlq/resume \
  -H "Authorization: Bearer <token>" \
  -H "Upstash-Flow-Control-Key: custom-key" \
  -H "Upstash-Flow-Control-Value: parallelism=1" \
  -H "Upstash-Retries: 3"
{
  "cursor": "",
  "workflowRuns": [
    {
      "workflowRunId": "wfr_resumed_A",
      "workflowCreatedAt": 1748527971000
    },
    {
      "workflowRunId": "wfr_resumed_B",
      "workflowCreatedAt": 1748527971000
    }
  ]
}

The bulk resume feature allows you to resume multiple failed workflow runs from the Dead Letter Queue (DLQ) in a single request, continuing each run from the point of failure rather than starting over.

This is useful when you want to preserve the progress of long-running workflows that partially succeeded before failing, and resume them all efficiently without losing successful step results.

Each resumed workflow is created as a new run. All successfully completed steps from the original runs are preserved, and only the failed or pending steps are executed again.

A maximum of 50 workflow runs can be resumed per request. If more runs are available, a cursor is returned, which can be used in subsequent requests to continue the operation. When no cursor is returned, all entries have been processed.

You can specify exact DLQ IDs or apply filters to select which workflows to resume.

You may modify the workflow code after the point of failure, but changes before the failed step are not supported and may cause the resume to fail.

For more information, see Handle workflow route code changes.

Request Parameters

dlqIds
array

A list of DLQ IDs corresponding to the failed workflow runs you want to resume.

fromDate
integer

Optional. Resume workflow runs that failed on or after this unix millisecond timestamp.

toDate
integer

Optional. Resume workflow runs that failed on or before this unix millisecond timestamp.

workflowUrl
string

Optional. Resume workflow runs where the workflow URL matches this value.

workflowRunId
string

Optional. Resume workflow runs matching this specific Run ID or ID prefix.

workflowCreatedAt
integer

Optional. Resume workflow runs created at the specified unix millisecond timestamp.

Upstash-Flow-Control-Key
string

Optional. Override the flow control key for the resumed workflows. If not provided, the original key is reused.

Upstash-Flow-Control-Value
string

Optional. Override the flow control value for the resumed workflows. If not provided, the original value is reused.

Upstash-Retries
integer

Optional. Override the retry configuration for the steps in the resumed workflows.

Response

cursor
string

A cursor to paginate through additional matching DLQ entries. If not present, all matching entries have been processed.

workflowRuns
array

A list of resumed workflow runs, each containing a new run ID and creation timestamp.

Request Example

curl -X POST https://qstash.upstash.io/v2/workflows/dlq/resume \
  -H "Authorization: Bearer <token>" \
  -H "Upstash-Flow-Control-Key: custom-key" \
  -H "Upstash-Flow-Control-Value: parallelism=1" \
  -H "Upstash-Retries: 3"
{
  "cursor": "",
  "workflowRuns": [
    {
      "workflowRunId": "wfr_resumed_A",
      "workflowCreatedAt": 1748527971000
    },
    {
      "workflowRunId": "wfr_resumed_B",
      "workflowCreatedAt": 1748527971000
    }
  ]
}