> ## Documentation Index
> Fetch the complete documentation index at: https://upstash-dependabot-npm-and-yarn-llms-multi-c08e63791c.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Resume

The **Resume** action allows you to continue a failed workflow run from the exact point of failure, preserving all successfully completed steps and their results.

This approach is ideal when:

* The workflow has long-running or resource-intensive steps that have already succeeded.
* You want to preserve progress and avoid re-executing successful operations.
* The failure was a temporary issue that can now be resolved.

<Frame caption="You can retry the failure function of a workflow run if it has failed">
  <img src="https://mintcdn.com/upstash-dependabot-npm-and-yarn-llms-multi-c08e63791c/2bFowDbvDuRiGY2i/img/workflow/resume.png?fit=max&auto=format&n=2bFowDbvDuRiGY2i&q=85&s=026a68a91211c6bff1b06b8c9921caa6" width="2658" height="1976" data-path="img/workflow/resume.png" />
</Frame>

You can perform this action programmatically as well:

<CodeGroup>
  ```typescript TypeScript theme={null}
  import { Client } from "@upstash/workflow";

  const client = new Client({ token: "<WORKFLOW_TOKEN>" });

  await client.dlq.resume({
    dlqId: "dlq-12345",
    retries: 3,
  });
  ```
</CodeGroup>

<Note>
  You can modify workflow code as long as changes occur **after** the failed steps.
  Changes to steps prior to the failure are not allowed and may break the workflow.

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