JobClient
client.jobs is the JobClient. It covers the whole job lifecycle: creating runs, resolving presets, managing schedules, and inspecting progress.
Creating & running jobs
// Start a built-in presetconst job = await client.jobs.startWorkflow('gmail', { filter: 'newer_than:7d' })
// Lower-level createawait client.jobs.create({ /* job request */ })await client.jobs.createSingle(/* one-step job */)await client.jobs.createWorkflow(/* multi-step */)
// Lifecycleawait client.jobs.get(jobId)await client.jobs.list({ scheduleName: 'daily-veille' })await client.jobs.cancel(jobId)await client.jobs.listPresets() // JobPresetMeta[]Waiting for completion
const finished = await client.jobs.waitForCompletion(jobId)// or poll with your own cadence:await client.jobs.pollForCompletion(jobId, { intervalMs: 2000, timeoutMs: 60000 })Progress inspection (pure helpers)
These take a Job and read its state — no network call:
client.jobs.getProgress(job) // number 0–100client.jobs.getCurrentStep(job) // string | nullclient.jobs.getItemProgress(job) // JobProgress | nullclient.jobs.isPending(job)client.jobs.isRunning(job)client.jobs.isCompleted(job)client.jobs.hasFailed(job)client.jobs.getErrors(job) // string[]Schedules & monitoring
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.getScheduleWatermarks(slug) // { lastReadAt }await client.jobs.getQueueStats() // QueueStats[] (admin)See Scheduling and Monitoring for semantics.