Documentation

TypeScript SDK

TypeScript SDK

Package @joborc/sdk is the official Node.js / TypeScript client. It speaks HTTP to /v1 only — no direct Postgres or Redis.

Install

example.bash
BASH
pnpm add @joborc/sdk

Create a client

example.ts
TS
import { createJobOrc } from '@joborc/sdk';
const joborc = createJobOrc({
apiKey: process.env.JOBORC_API_KEY!,
});

Namespaces

  • joborc.jobs — enqueue, get, list, cancel, replay
  • joborc.queues — create, list, get, update
  • joborc.schedules — cron CRUD, pause, resume
  • joborc.worker(config) — high-level worker runtime

Enqueue options

example.ts
TS
await joborc.jobs.enqueue('billing.charge', { orderId: '42' }, {
queue: 'payments',
delaySeconds: 60, // XOR with runAt
priority: 10,
maxAttempts: 5,
idempotencyKey: 'charge:42',
});

Configuration env

  • JOBORC_API_KEY — required (project is inferred from the key)
  • JOBORC_BASE_URL — optional (defaults to hosted API; set for local/self-host)
  • JOBORC_PROJECT_ID — optional override (uses nested paths when set)

Localhost http:// is allowed. Non-localhost HTTP requires allowInsecureHttp: true (dev only).

Errors

example.ts
TS
import {
JobOrcRateLimitError,
JobOrcConflictError,
JobOrcValidationError,
} from '@joborc/sdk/errors';
try {
await joborc.jobs.enqueue('billing.charge', { orderId: '42' });
} catch (err) {
if (err instanceof JobOrcRateLimitError) {
console.warn('Retry after', err.retryAfterSeconds);
} else if (err instanceof JobOrcConflictError) {
console.error(err.code, err.message);
} else if (err instanceof JobOrcValidationError) {
console.error(err.fieldErrors);
} else {
throw err;
}
}

Subpath exports

  • @joborc/sdk
  • @joborc/sdk/worker
  • @joborc/sdk/errors
  • @joborc/sdk/webhooks

See Quickstart, Workers, and Webhooks.