Skip to main content

DLQ API

The Dead Letter Queue (DLQ) holds failed delivery attempts that could not be delivered to the target after all retry attempts.

Status: WIRED_SANDBOX. This page describes the current contract surface and known non-claims. It is not a production-live availability claim.

Audience​

Customer / developer monitoring and recovering failed deliveries.

What DLQ is​

The DLQ is a filtered view of delivery attempts filtered by status=failed. It is not a separate storage system — it is the same delivery attempt data with a status-based query.

Canonical query​

GET /v1/tenants/{tenant_id}/deliveries?status=failed

Endpoint table​

MethodPathDescriptionRead/WriteStatusAuth/scopesIdempotencyOpenAPI
GET/tenants/{tid}/deliveries?status=failedList DLQ entriesReadWIRED_SANDBOXread:deliveriesNot requiredShared (deliveries)
GET/tenants/{tid}/deliveries/{did}Get DLQ entry detailsReadWIRED_SANDBOXread:deliveriesNot requiredShared (deliveries)

Read/write status​

OperationReadWriteStatus
List DLQ entriesYes—WIRED_SANDBOX
Get DLQ entry detailsYes—WIRED_SANDBOX

DLQ is a query filter over delivery attempts, not a separate writeable store. There is no direct public DLQ write. Mutating DLQ state (retry) is handled through the Retry API.

See Write Safety Model for details.

Query parameters​

ParameterTypeDescription
statusstringMust be failed for DLQ view
destination_idstringFilter by target
event_idstringFilter by event
fromdatetimeStart of time range
todatetimeEnd of time range
limitintegerMax results per page
cursorstringCursor from previous response

List example​

curl -sS -H "Authorization: Bearer <api_key>" \
"https://api.zen-mesh.io/v1/tenants/<tenant_id>/deliveries?status=failed&limit=10"

Retry from DLQ​

To retry a failed delivery from the DLQ, use the event-based retry path:

curl -X POST \
-H "Authorization: Bearer <api_key>" \
-H "Idempotency-Key: <unique_key>" \
"https://api.zen-mesh.io/v1/tenants/<tenant_id>/events/<event_id>/retry"

See Retry API for full documentation.

Error examples​

400 Invalid filter​

{
"type": "https://api.zen-mesh.io/errors/validation-error",
"title": "Validation Error",
"status": 400,
"detail": "status: must be 'failed' for DLQ view",
"instance": "req_abc123"
}

Pagination​

DLQ list supports cursor-based pagination. See Pagination and Filtering.

Auth​

Bearer JWT or API key in Authorization header. Tenant-scoped via path parameter. See Authentication for scope model.

OpenAPI coverage​

Not directly covered — uses the same deliveries endpoint as Delivery Attempts API. See OpenAPI Spec Index.

UI mapping​

Traffic → DLQ

Non-claims​

  • WIRED_SANDBOX: DLQ proof in sandbox/local does not mean all provider production paths are validated.
  • DLQ retention varies by plan: 3 days (Free), 7 days (Pro), 30+ days (Business+).
  • DLQ is a query filter, not a separate storage system.
  • DLQ entries cannot be directly deleted — they expire based on retention policy.