List all failed workflow runs currently inside the Dead Letter Queue.
Request
By providing a cursor you can paginate through all of the workflow runs in the DLQ
Filter DLQ workflow runs by workflow run id.
Filter DLQ workflow runs by workflow url.
Filter DLQ workflow runs by starting date, in milliseconds (Unix timestamp). This is inclusive.
Filter DLQ workflow runs by ending date, in milliseconds (Unix timestamp). This is inclusive.
Filter DLQ workflow runs by HTTP response status code.
Filter DLQ workflow runs by IP address of the publisher.
Filter DLQ workflow runs by the state of failure callback (failure function or failure URL)
The number of workflow runs to return. Default and maximum is 100.
Filter workflow run by the label assigned by the user.
Response
A cursor which you can use in subsequent requests to paginate through all
workflow runs. If no cursor is returned, you have reached the end of the workflow runs.
Unique identifier for the DLQ message.
The URL of the workflow endpoint.
HTTP method used for the request.
Initial request headers for workflow run, including the configuration headers.
Request payload of the workflow run (if UTF-8).
Request body (base64-encoded, if not UTF-8).
Maximum number of retries for the workflow run.
Earliest time (Unix ms) the message could be processed.
Timestamp (Unix ms) when the message was created.
Failure callback URL (if set).
Failure callback request headers.
IP address of the publisher.
Workflow run ID (if applicable).
Timestamp (Unix ms) when the workflow run was created.
Flow control key (if set).
HTTP response status code of the last failed delivery attempt.
HTTP response headers of the last failed delivery attempt.
HTTP response body (if UTF-8).
HTTP response body (base64-encoded, if not UTF-8).
Detailed information about the failure callback, including state, response body, response status and response headers.
The label of the run assigned by the user.
curl https://qstash.upstash.io/v2/workflows/dlq \
-H "Authorization: Bearer <token>"
{
"cursor" : "1752570296426-0" ,
"messages" :[
{
"messageId" : "msg_26hZCxZCuWyyTWPmSVBrNC1RADwpgWxPcak2rQD51EMjFMuzcW7qYXpPiDyw8Gd" ,
"url" : "https://my.app/workflow" ,
"method" : "POST" ,
"header" :{
"Content-Type" :[
"application/json"
]
},
"maxRetries" : 10 ,
"notBefore" : 1752829294505 ,
"createdAt" : 1752829294505 ,
"failureCallback" : "https://my.app/workflow" ,
"callerIP" : "88.240.188.2" ,
"workflowRunId" : "wfr_5XAx4IJergqkGK1v23VzR" ,
"workflowCreatedAt" : 1752829293531 ,
"workflowUrl" : "https://my.app/workflow" ,
"responseStatus" : 489 ,
"responseHeader" :{
"Content-Type" :[
"text/plain;charset=UTF-8"
]
},
"responseBody" : "{ \" error \" : \" WorkflowNonRetryableError \" , \" message \" : \" this workflow has stopped \" }" ,
"failureCallbackInfo" :{
"state" : "CALLBACK_SUCCESS" ,
"responseStatus" : 200 ,
"responseBody" : "{ \" workflowRunId \" : \" wfr_Q_khHG-a414M-xKRh2kNI \" }" ,
"responseHeaders" :{
"Content-Type" :[
"text/plain;charset=UTF-8"
]
}
},
"dlqId" : "1752829295505-0"
}
]
}