Job Lifecycle and Debugging
Inspect, filter, edit, retry, remove, invoke, and create jobs with logs and stack trace analysis.
Start with the failed job's reason, payload, attempts, and logs. Correct the underlying problem before retrying; retries can repeat application side effects, so check your worker's idempotency.
Job List
Queue jobs route context:
/$orgSlug/c/$connectionId/queues/$queueName
Job listing supports:
- status filter
- job name filter
- job ID lookup and payload search
- pagination (
page,pageSize, or indexcursor) for unfiltered API listings
Name and payload searches return all matches for client-side pagination. ID search tries an exact match first, then falls back to substring matches. Searches can be expensive on large queues.
API route:
GET /api/c/:connectionId/queues/:queueName/jobs
Job Detail
Job detail route:
/$orgSlug/c/$connectionId/queues/$queueName/jobs/$jobId
Shows:
- job data payload
- options and retry metadata
- progress/attempt counters
- return value
- failure reason
- timestamps
API route:
GET /api/c/:connectionId/queues/:queueName/jobs/:jobId
Logs and Stacktraces
Logs are paginated via BullMQ log API:
GET /api/c/:connectionId/queues/:queueName/jobs/:jobId/logsDELETE /api/c/:connectionId/queues/:queueName/jobs/:jobId/logsclears all logs for the job (permanent Redis deletion)
Stacktraces are served paginated (application-level slicing):
GET /api/c/:connectionId/queues/:queueName/jobs/:jobId/stacktraces
Important detail:
- BullMQ stores stacktraces in the job hash as an array.
- Pagination reduces transfer cost but still starts from full job retrieval.
Edit data and retry one job
From job detail, use the data editor to correct a payload before retrying. The API exposes:
POST /api/c/:connectionId/queues/:queueName/jobs/:jobId/datawith{ "data": ... }.POST /api/c/:connectionId/queues/:queueName/jobs/:jobId/retrywith{}or{ "data": ... }.
Editing an active job returns 409 because a worker is already processing its old payload.
Single-job retry is allowed only when the job is failed.
Clear logs or stack traces
The Logs and Stack Traces tabs support permanent cleanup with optional retention of the newest N
entries. Use POST .../jobs/:jobId/logs/clear or POST .../jobs/:jobId/stacktraces/clear with
{ "keepMostRecent": N }. Omitting N clears all entries. Cleanup changes the data stored in Redis.
Bulk and Single-Job Actions
The paths below are relative to /api/c/:connectionId/queues/:queueName:
- Retry failed jobs
POST /jobs/retry
- Remove jobs
POST /jobs/remove
- Invoke delayed jobs now (optional data override)
POST /jobs/invoke
- Add new job
POST /jobs
Request safety limits:
- Bulk endpoints cap explicit
jobIdsarrays at 100 per request. - Bulk retry can instead select
statuses:failed,completed, orall; do not send bothjobIdsandstatuses. - State conflicts can produce partial results; inspect the response before retrying a bulk operation.
Scheduled/Repeat Job Removal Nuance
For repeat/scheduled jobs (jobId starts with repeat:):
- removing the job may require removing its scheduler
- UI/API support a "remove scheduler too" behavior to stop future runs