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 entriesYesWIRED_SANDBOX
Get DLQ entry detailsYesWIRED_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.