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, replayjoborc.queues— create, list, get, updatejoborc.schedules— cron CRUD, pause, resumejoborc.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.