Skip to content

Types

All types are exported from @queuebase/nextjs and @queuebase/node (re-exported from @queuebase/core).

type JobStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
type BackoffStrategy = 'linear' | 'exponential';

Options for enqueueing a job. Can be set as defaults on a job definition or passed to .enqueue().

interface EnqueueOptions {
delay?: string | number;
retries?: number;
backoff?: BackoffStrategy;
backoffDelay?: number;
concurrency?: number;
}
FieldTypeDescription
delaystring | numberDelay before running. Strings: '5s', '5m', '1h', '2d'. Numbers: milliseconds.
retriesnumberNumber of retry attempts on failure.
backoffBackoffStrategyBackoff strategy for retries.
backoffDelaynumberBase delay between retries in ms (default: 1000).
concurrencynumberMax concurrent executions of this job type per worker.

A job definition with typed input and output.

interface JobDefinition<TInput = unknown, TOutput = unknown> {
input: z.ZodType<TInput>;
handler: (ctx: JobContext<TInput>) => Promise<TOutput>;
defaults?: EnqueueOptions;
}

Context passed to job handlers.

interface JobContext<TInput = unknown> {
input: TInput;
jobId: string;
attempt: number;
maxAttempts: number;
}
FieldTypeDescription
inputTInputValidated input data
jobIdstringUnique job ID
attemptnumberCurrent attempt (1-indexed)
maxAttemptsnumberMaximum attempts allowed

Returned from .enqueue().

interface EnqueueResult {
jobId: string;
getStatus: () => Promise<JobStatusResponse>;
}

Job status as returned by the API.

interface JobStatusResponse {
publicId: string;
name: string;
status: JobStatus;
attempt: number;
maxAttempts: number;
createdAt: string;
startedAt: string | null;
completedAt: string | null;
result: unknown;
error: string | null;
}

Result of a job execution.

interface JobResult<TOutput = unknown> {
success: boolean;
output?: TOutput;
error?: string;
duration: number;
}

Configuration for Queuebase.

interface QueuebaseConfig {
jobsDir: string;
callbackUrl?: string;
apiKey?: string;
apiUrl?: string;
}