Pricing
Start free with 1,000 jobs a day. Flat monthly plans raise the limits — they never gate retries, dead-letter queues, or streaming. Self-hosting the open-source core is free, always.
The same enqueue call on every plan
import { SpooledClient } from '@spooled/sdk';
const client = new SpooledClient({
apiKey: process.env.SPOOLED_API_KEY!,
});
const userId = 'usr_123';
// Create a job
const { id } = await client.jobs.create({
queueName: 'email-notifications',
payload: {
to: 'user@example.com',
subject: 'Welcome!',
template: 'welcome',
},
idempotencyKey: `welcome-${userId}`,
maxRetries: 5,
});
console.log(`Created job: ${id}`);Evaluation and small projects
- 1,000 jobs/day
- 2 queues
- 3-day job retention
- 5 req/s API rate limit
- 64 KB max payload
- No workflows
Steady production traffic
- 10,000 jobs/day
- 10 queues
- 14-day job retention
- 25 req/s API rate limit
- 256 KB max payload
- 5 workflows
Production workloads
- 100,000 jobs/day
- 50 queues
- 30-day job retention
- 100 req/s API rate limit
- 1 MB max payload
- 25 workflows
Scale and compliance
- Unlimited jobs/day
- Unlimited queues
- 90-day job retention
- 500 req/s API rate limit
- 1 MB max payload
- Unlimited workflows
Every plan includes REST + gRPC APIs, bulk operations up to 100 jobs, automatic retries, idempotency keys, dead-letter queues, job tags, real-time streaming (SSE and WebSocket), queue pause/resume, and dashboard access. Full per-plan numbers live on the limits page.
Self-host or cloud
Same code, same API. The difference is who operates the database and keeps the pager.
Self-host — free
- Apache-2.0 core: backend and SDKs
- Your PostgreSQL, your hardware
- No platform limits or quotas
- You run upgrades and backups
Cloud — from $0
- We run Postgres, Redis, and upgrades for you
- Dashboard, metrics, DLQ tooling
- Per-plan quotas, enforced fairly
- Start on Free, upgrade when it hurts