Skip to content

JobClient

client.jobs is the JobClient. It covers the whole job lifecycle: creating runs, resolving presets, managing schedules, and inspecting progress.

// One-off single-step job
const job = await client.jobs.createSingle('read_gmail', { filter: { label: 'Newsletter' } })
// Lower-level create — arbitrary multi-step chain
await client.jobs.create({ /* job request */ })
// Lifecycle
await client.jobs.get(jobId)
await client.jobs.list({ scheduleName: 'daily-triage' })
await client.jobs.cancel(jobId)
await client.jobs.listPresets() // JobPresetMeta[]
const finished = await client.jobs.waitForCompletion(jobId)
// or poll with your own cadence:
await client.jobs.pollForCompletion(jobId, { intervalMs: 2000, timeoutMs: 60000 })

These take a Job and read its state — no network call:

client.jobs.getProgress(job) // number 0–100
client.jobs.getCurrentStep(job) // string | null
client.jobs.getItemProgress(job) // JobProgress | null
client.jobs.isPending(job)
client.jobs.isRunning(job)
client.jobs.isCompleted(job)
client.jobs.hasFailed(job)
client.jobs.getErrors(job) // string[]
await client.jobs.createSchedule({ slug, preset, cron })
await client.jobs.listSchedules()
await client.jobs.getSchedule(slug)
await client.jobs.runScheduleNow(slug) // { jobId }
await client.jobs.deleteSchedule(slug)
await client.jobs.getQueueStats() // QueueStats[] (admin)

See Scheduling and Monitoring for semantics.