---
title: "Retry Failure Callback"
method: POST
path: "/v2/workflows/dlq/callback/{dlqId}"
tags: ["DLQ"]
---

# Retry Failure Callback

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

## Request

- Base URL: `https://qstash-eu-central-1.upstash.io`
- URL: `https://qstash-eu-central-1.upstash.io/v2/workflows/dlq/callback/{dlqId}`
- 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/callback/:dlqId/post.ts> (a function with typed inputs; its response is checked against the schema)

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.

## Path parameters

- `dlqId` string, required

## Response `200`

Failure callback retried successfully

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

## Other responses

- `400`: Bad Request. Workflow doesn't have a failed callback, callback is already in-progress, succeeded, or was canceled
- `401`: Unauthorized
- `404`: DLQ message not found
- `500`: Internal Server Error

---

[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)
