Skip to content

FluxbaseJobs

Jobs client for submitting and monitoring background jobs

For admin operations (create job functions, manage workers, view all jobs), use client.admin.jobs

new FluxbaseJobs(fetch): FluxbaseJobs

ParameterType
fetchFluxbaseFetch

FluxbaseJobs

cancel(jobId): Promise<object>

Cancel a pending or running job

ParameterTypeDescription
jobIdstringJob ID to cancel

Promise<object>

Promise resolving to { data, error } tuple

NameType
datanull
errornull | Error
const { error } = await client.jobs.cancel('550e8400-e29b-41d4-a716-446655440000')
if (!error) {
console.log('Job cancelled successfully')
}

get(jobId): Promise<object>

Get status and details of a specific job

ParameterTypeDescription
jobIdstringJob ID

Promise<object>

Promise resolving to { data, error } tuple with job details

NameType
datanull | Job
errornull | Error
const { data: job, error } = await client.jobs.get('550e8400-e29b-41d4-a716-446655440000')
if (job) {
console.log('Status:', job.status)
console.log('Progress:', job.progress_percent + '%')
console.log('Result:', job.result)
console.log('Logs:', job.logs)
}

getLogs(jobId, afterLine?): Promise<object>

Get execution logs for a job

Returns logs for the specified job. Only returns logs for jobs owned by the authenticated user (unless using service_role).

ParameterTypeDescription
jobIdstringJob ID
afterLine?numberOptional line number to get logs after (for polling/streaming)

Promise<object>

Promise resolving to { data, error } tuple with execution logs

NameType
datanull | ExecutionLog[]
errornull | Error
// Get all logs for a job
const { data: logs, error } = await client.jobs.getLogs('550e8400-e29b-41d4-a716-446655440000')
if (logs) {
for (const log of logs) {
console.log(`[${log.level}] ${log.message}`)
}
}
// Backfill + stream pattern
const { data: logs } = await client.jobs.getLogs(jobId)
let lastLine = Math.max(...(logs?.map(l => l.line_number) ?? []), 0)
const channel = client.realtime
.executionLogs(jobId, 'job')
.onLog((log) => {
if (log.line_number > lastLine) {
displayLog(log)
lastLine = log.line_number
}
})
.subscribe()

list(filters?): Promise<object>

List jobs submitted by the current user

ParameterTypeDescription
filters?objectOptional filters (status, namespace, limit, offset)
filters.includeResult?boolean-
filters.limit?number-
filters.namespace?string-
filters.offset?number-
filters.status?string-

Promise<object>

Promise resolving to { data, error } tuple with array of jobs

NameType
datanull | Job[]
errornull | Error
// List all your jobs
const { data: jobs, error } = await client.jobs.list()
// Filter by status
const { data: running } = await client.jobs.list({
status: 'running'
})
// Paginate
const { data: page } = await client.jobs.list({
limit: 20,
offset: 40
})

retry(jobId): Promise<object>

Retry a failed job

Creates a new job execution with the same parameters

ParameterTypeDescription
jobIdstringJob ID to retry

Promise<object>

Promise resolving to { data, error } tuple with new job

NameType
datanull | Job
errornull | Error
const { data: newJob, error } = await client.jobs.retry('550e8400-e29b-41d4-a716-446655440000')
if (newJob) {
console.log('Job retried, new ID:', newJob.id)
}

submit(jobName, payload?, options?): Promise<object>

Submit a new job for execution

ParameterTypeDescription
jobNamestringName of the job function to execute
payload?unknownJob input data
options?objectAdditional options (priority, namespace, scheduled time, onBehalfOf)
options.namespace?string-
options.onBehalfOf?OnBehalfOfSubmit job on behalf of another user (service_role only). The job will be created with the specified user’s identity, allowing them to see the job and its logs via RLS.
options.priority?number-
options.scheduled?string-

Promise<object>

Promise resolving to { data, error } tuple with submitted job details

NameType
datanull | Job
errornull | Error
// Submit a simple job
const { data, error } = await client.jobs.submit('send-email', {
to: 'user@example.com',
subject: 'Hello',
body: 'Welcome!'
})
if (data) {
console.log('Job submitted:', data.id)
console.log('Status:', data.status)
}
// Submit with priority
const { data } = await client.jobs.submit('high-priority-task', payload, {
priority: 10
})
// Schedule for later
const { data } = await client.jobs.submit('scheduled-task', payload, {
scheduled: '2025-01-01T00:00:00Z'
})
// Submit on behalf of a user (service_role only)
const { data } = await serviceClient.jobs.submit('user-task', payload, {
onBehalfOf: {
user_id: 'user-uuid',
user_email: 'user@example.com'
}
})