The Jobs service provides superadmin access to the background job queue, allowing you to monitor job status, view statistics, retry failed jobs, and cancel pending ones.
All Jobs API endpoints require superadmin authentication.
Overview
import { SnackBaseClient } from "@snackbase/sdk";
const client = new SnackBaseClient({
baseUrl: "https://api.example.com",
});
// Access the jobs service
const jobs = client.jobs;
Get Job Statistics
View aggregate counts across all job statuses:
const stats = await client.jobs.stats();
console.log(stats.pending); // jobs waiting to execute
console.log(stats.running); // currently executing
console.log(stats.completed); // finished successfully
console.log(stats.failed); // execution failed
console.log(stats.retrying); // waiting to retry
console.log(stats.dead); // retries exhausted
console.log(stats.failure_rate); // (failed + dead) / (completed + failed + dead)
List Jobs
const result = await client.jobs.list();
// result.items - array of jobs
// result.total - total count
With filters:
const result = await client.jobs.list({
status: "failed",
queue: "default",
handler: "webhook_delivery",
limit: 50,
offset: 0,
});
for (const job of result.items) {
console.log(job.handler); // "webhook_delivery", "send_email", etc.
console.log(job.status); // "pending", "running", "completed", "failed", "retrying", "dead"
console.log(job.attempt_number);
console.log(job.error_message);
}
Retry a Job
Manually retry a dead, failed, or retrying job. This resets it to pending with attempt_number reset to 0:
const job = await client.jobs.retry("job-id");
console.log(job.status); // "pending"
Cancel a Job
Cancel a pending job:
await client.jobs.cancel("job-id");
Only jobs in pending status can be cancelled. Jobs that are already running, completed, or failed cannot be cancelled.