---
title: "Bulk Delete Failed Workflow Runs"
method: DELETE
path: "/v2/workflows/dlq"
tags: ["DLQ"]
---

# Bulk Delete Failed Workflow Runs

`DELETE /v2/workflows/dlq`

## Request

- Base URL: `https://qstash-eu-central-1.upstash.io`
- URL: `https://qstash-eu-central-1.upstash.io/v2/workflows/dlq`
- Auth: one of:
  - HTTP bearer
  - API key in query parameter `qstash_token`
- TypeScript: <https://skmtc.dev/upstash/apis/upstash-workflow-rest-api/docs/v2/workflows/dlq/delete.ts> (a function with typed inputs; its response is checked against the schema)

Delete multiple failed workflow runs from the DLQ.

When a workflow run fails, it is moved to the DLQ. You can manually remove a failed workflow run from the DLQ using this endpoint. This is useful for cleaning up failed runs that you no longer wish to retry or analyze.

You can either specify specific DLQ IDs to delete, or use filters to delete matching workflows.
When using filters without DLQ IDs, the operation supports pagination via cursor.

## Query parameters

- `dlqIds` string[]
- `cursor` string
- `count` integer
- `fromDate` integer
- `toDate` integer
- `workflowUrl` string[]
- `workflowRunId` string
- `workflowCreatedAt` integer
- `label` string[]
- `failureFunctionState` string[]
- `callerIp` string[]
- `flowControlKey` string[]

## Response `200`

Workflows deleted successfully

- object
  - `deleted` integer: The number of workflow runs that were deleted.
  - `cursor` string: Pagination cursor for the next batch. Only present when using filters without DLQ IDs.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `500`: Internal Server Error

## Changes

- **2026-06-25** `4fcd7653bd06`: 4 info
  - for the `query` request parameter `callerIp`, the type was generalized from `string` to `array`
  - for the `query` request parameter `failureFunctionState`, the type was generalized from `string` to `array`
  - for the `query` request parameter `flowControlKey`, the type was generalized from `string` to `array`
  - for the `query` request parameter `workflowUrl`, the type was generalized from `string` to `array`
- **2026-05-15** `4cbcb5c2eac1`: 1 info
  - for the `query` request parameter `label`, the type was generalized from `string` to `array`

[Operation history](https://skmtc.dev/upstash/apis/upstash-workflow-rest-api/changes/v2/workflows/dlq/delete.md)

---

[API](https://skmtc.dev/upstash/apis/upstash-workflow-rest-api.md) - [All operations](https://skmtc.dev/upstash/apis/upstash-workflow-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/upstash/apis/upstash-workflow-rest-api/revisions/251bee05a7ec?raw)
