# Retry Failure Callback

> If the failure callback for a workflow run has failed, you can use this endpoint to manually trigger the failure callback again. 

## Endpoint

`POST https://qstash-{region}.upstash.io/v2/workflows/dlq/callback/{dlqId}`

If the failure callback for a workflow run has failed, you can use this endpoint to manually trigger the failure callback again. 
This is useful for ensuring that your system is notified of workflow failures even if the original callback attempt did not succeed.

The state of the failure callback for each workflow run is included in the DLQ message response as failureCallbackInfo.state. 
You can filter for all workflow runs with a failed failure callback by using the failureCallbackState filter when listing workflow runs in the DLQ with the `/v2/workflows/dlq` endpoint.


## Parameters

- `dlqId` (path, string, required): The DLQ ID of the failed workflow run whose failure callback should be retried.

## Responses

### 200 - Failure callback retried successfully

- `workflowRunId` (string): The ID of the workflow run.
- `workflowCreatedAt` (integer): The timestamp when the workflow run was created (Unix timestamp in milliseconds).

### 400 - Bad Request. Workflow doesn't have a failed callback, callback is already in-progress, succeeded, or was canceled

- `error` (string, required): Error message

### 401 - Unauthorized

- `error` (string, required): Error message

### 404 - DLQ message not found

- `error` (string, required): Error message

### 500 - Internal Server Error

- `error` (string, required): Error message

## cURL

```bash
curl --request POST \
  --url https://qstash-{region}.upstash.io/v2/workflows/dlq/callback/{dlqId} \
  --header 'Authorization: Bearer <token>'
```
