Skip to content

Queue

See Job queue for the full model — handlers (JS onQueueJob or Rust), retry/backoff, and multi-node claim atomicity. Works regardless of settings.queue.enabled: a job just sits pending until an operator turns processing on.

{ "queue": "send-welcome-email", "payload": { "userId": "abc123" }, "maxAttempts": 5, "dedupeKey": "welcome-abc123" }
{ "id": "abc123", "queue": "send-welcome-email", "status": "pending", "runAfter": "2026-01-01 00:00:00.000Z", "deduped": false }

queue/payload required; maxAttempts (default 5), runAt (ISO-8601, or the deprecated runAfter alias), delay (milliseconds from now, ignored if runAt/runAfter is given), dedupeKey, and priority (default 0, higher runs first) are all optional. A matching in-flight dedupeKey returns the existing job with deduped: true instead of inserting a new one. POST /plugins/queue/enqueue is kept as an alias for this same endpoint.

Resets a failed job to pending with attempts cleared to 0. 400 if the job isn’t currently failed; 404 for an unknown id. POST /plugins/queue/jobs/{id}/retry is kept as an alias.

Removes the row outright, whatever its status. 404 for an unknown id. DELETE /plugins/queue/jobs/{id} is kept as an alias.