> ## Documentation index
> Fetch the complete documentation index at: https://upstash.com/docs/llms.txt
> Ask it with GET https://upstash.com/docs/ask?q=<keywords or question>. Short keywords rank best.
> Use these to discover all available pages before exploring further.
> Page rating: `GET https://upstash.com/docs/feedback?path=/docs/workflow/api-reference/dlq/resume/resume-single-id&helpful=true` (or `false`) records whether this page helped. An optional `comment` (URL-encoded, at most 500 characters) says what was missing or wrong. It is anonymous and needs no key. Comments hold no code, secrets or personal data.

# Single ID

> Resume one failed Workflow run by its DLQ ID.

`POST /v2/workflows/dlq/resume/{dlqId}`

When a workflow run fails, it's automatically moved to the DLQ (Dead Letter Queue) where it can be analyzed and resumed. 
The resume feature allows you to continue a failed workflow run from exactly where it failed, without re-executing successfully completed steps.

This is particularly useful for long-running workflows where you don't want to lose progress from successful steps when a single step fails.

When a workflow is resumed, it continues execution from the last failed step. A new workflow run ID is generated,
but the workflow maintains the state and results from previously completed steps.

<Note>
  You can make changes to the workflow code as long as these changes come after the failed steps. 
  However, making changes before the failed step will break the code and is not allowed.

  For more details, check out [Handle workflow route code changes](/workflow/howto/changes) page.
</Note>

## OpenAPI

````yaml workflow/openapi.yaml post /v2/workflows/dlq/resume/{dlqId}
openapi: 3.1.0
info:
  title: Upstash Workflow REST API
  description: >
    Upstash Workflow is a serverless workflow orchestration service built on top
    of Upstash QStash and Upstash Redis.
  version: 2.0.0
  contact:
    name: Upstash
    url: https://upstash.com
servers:
  - url: https://qstash-{region}.upstash.io
    description: Regional
    variables:
      region:
        default: eu-central-1
        enum:
          - us-east-1
          - eu-central-1
security:
  - bearerAuth: []
  - bearerAuthQuery: []
paths:
  /v2/workflows/dlq/resume/{dlqId}:
    post:
      tags:
        - DLQ
      summary: Resume Single ID
      x-mint:
        href: /workflow/api-reference/dlq/resume/resume-single-id
        metadata:
          title: Single ID
          sidebarTitle: Single ID
          description: Resume one failed Workflow run by its DLQ ID.
        content: >
          When a workflow run fails, it's automatically moved to the DLQ (Dead
          Letter Queue) where it can be analyzed and resumed. 

          The resume feature allows you to continue a failed workflow run from
          exactly where it failed, without re-executing successfully completed
          steps.


          This is particularly useful for long-running workflows where you don't
          want to lose progress from successful steps when a single step fails.


          When a workflow is resumed, it continues execution from the last
          failed step. A new workflow run ID is generated,

          but the workflow maintains the state and results from previously
          completed steps.


          <Note>
            You can make changes to the workflow code as long as these changes come after the failed steps. 
            However, making changes before the failed step will break the code and is not allowed.

            For more details, check out [Handle workflow route code changes](/workflow/howto/changes) page.
          </Note>
      parameters:
        - in: path
          name: dlqId
          required: true
          schema:
            type: string
          description: The DLQ ID of the workflow run to resume.
        - $ref: "#/components/parameters/DLQOverrideRetries"
        - $ref: "#/components/parameters/DLQOverrideDelay"
        - $ref: "#/components/parameters/DLQOverrideRetryDelay"
        - $ref: "#/components/parameters/DLQOverrideFlowControlKey"
        - $ref: "#/components/parameters/DLQOverrideFlowControlValue"
        - $ref: "#/components/parameters/DLQOverrideLabel"
        - $ref: "#/components/parameters/DLQOverrideFailureCallback"
      responses:
        "200":
          description: Workflow resumed successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  workflowRunId:
                    type: string
                    description: The ID of the resumed workflow run (a new ID is generated for the
                      resumed run).
                  workflowCreatedAt:
                    type: integer
                    format: int64
                    description: The timestamp when the resumed workflow run was created (Unix
                      timestamp in milliseconds).
        "400":
          description: Bad Request - Invalid DLQ ID, not a workflow message, or workflow
            doesn't support resume
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: DLQ message not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: QStash authentication token
    bearerAuthQuery:
      type: apiKey
      in: query
      name: qstash_token
      description: QStash authentication token passed as a query parameter
  schemas:
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: Error message
  parameters:
    DLQOverrideRetries:
      name: Upstash-Retries
      in: header
      schema:
        type: integer
      description: Override the number of retries for the workflow steps.
    DLQOverrideDelay:
      name: Upstash-Delay
      in: header
      schema:
        type: string
      description: Override the delay before executing the workflow. Format is
        `<value><unit>` (for example, `10s` or `5m`).
    DLQOverrideRetryDelay:
      name: Upstash-Retry-Delay
      in: header
      schema:
        type: string
      description: Override the retry delay expression for the workflow steps.
    DLQOverrideFlowControlKey:
      name: Upstash-Flow-Control-Key
      in: header
      schema:
        type: string
      description: Override the flow control key for the workflow.
    DLQOverrideFlowControlValue:
      name: Upstash-Flow-Control-Value
      in: header
      schema:
        type: string
      description: Override the flow control configuration in the format
        `parallelism=<value>, rate=<value>, period=<value>`.
    DLQOverrideLabel:
      name: Upstash-Label
      in: header
      schema:
        type: string
      description: Override the workflow labels. Use a comma-separated list for
        multiple labels, such as `label_1,label_2`.
    DLQOverrideFailureCallback:
      name: Upstash-Failure-Callback
      in: header
      schema:
        type: string
      description: Override the failure callback URL for the workflow.
````
