Enqueue via API. Deliver via webhook. See everything. No Redis, no workers, no complexity.
# Enqueue a job
curl -X POST https://api.dispatchq.dev/v1/jobs \
-H "Authorization: Bearer dq_live_..." \
-d '{"url": "https://myapp.com/process", "payload": {"file": "data.csv"}}'
# Response
{"id": "job_7f3k9...", "status": "pending", "created_at": "2026-03-15T22:00:00Z"} POST a webhook URL, a payload, and an optional delay. DispatchQ handles delivery, retries, and stores the result. No queues to configure, no workers to deploy.
Every job's response is stored and retrievable. No callback endpoints to build, no base64 decoding, no log diving. Just GET /v1/jobs/:id.
MCP server included. Human approval for consequential actions. Your agent enqueues work, checks results later. The async backbone agents need.
Three steps. Five minutes. No infrastructure.
Send a target URL and payload. Optionally add a delay, dedup key, or require human approval. DispatchQ stores it and returns immediately.
curl -X POST https://api.dispatchq.dev/v1/jobs \
-H "Authorization: Bearer dq_live_..." \
-d '{"url": "https://myapp.com/process", "delay": "5m", "payload": {"file": "report.csv"}}' Your webhook receives the payload with a cryptographic signature for verification. If it fails, DispatchQ retries with exponential backoff.
POST /process HTTP/1.1
X-DispatchQ-Signature: sha256=a1b2c3...
X-DispatchQ-Job-Id: job_7f3k9...
{"file": "report.csv"} No callback endpoints to set up. GET the job and see the full response - status code, body, duration. Done when you're ready.
curl https://api.dispatchq.dev/v1/jobs/job_7f3k9
{"status": "completed", "response_code": 200, "response_body": {"rows": 15000}, "duration_ms": 4230} From background processing to AI agents — DispatchQ handles async work so you don't have to.
User uploads a file, your API enqueues a job to process it async. DispatchQ delivers the webhook, retries on failure, and stores the result. Check it whenever you're ready.
POST /v1/jobs
{
"url": "https://myapp.com/transcode",
"payload": { "video_id": "abc123" }
} Set up a cron schedule to hit your reporting endpoint every morning. DispatchQ creates the job on schedule, delivers it reliably, and stores every result for you to query later.
POST /v1/schedules
{
"url": "https://myapp.com/reports",
"cron_expr": "0 9 * * *",
"timezone": "America/Los_Angeles"
} Your agent needs to call an API, wait for results, and decide what to do next. With the MCP server, agents enqueue work, require human approval for sensitive actions, and poll for results — all in natural conversation.
// MCP tool call from your agent
queue_job({
url: "https://api.openai.com/v1/embeddings",
payload: { input: "..." },
requires_approval: true
}) Call flaky external APIs with automatic retries and exponential backoff. Set max attempts, and DispatchQ handles the rest. Never miss a webhook delivery, even when the target is unreliable.
POST /v1/jobs
{
"url": "https://flaky-api.com/webhook",
"payload": { "user_id": 789 },
"max_attempts": 5
} A complete job queue in 10 endpoints. Nothing more, nothing less.
Exponential backoff from 20s to 1h. Configurable max attempts per job.
Standard cron expressions with IANA timezones. Create, update, pause, delete.
Pause jobs for sign-off before execution. Built for agents doing consequential work.
Dedupe keys prevent duplicate jobs. Idempotency headers for safe retries.
9 tools for AI agents. Enqueue, check, approve, schedule - all via MCP.
Every webhook signed with SHA-256 HMAC. Verify requests are from DispatchQ.
Schedule delivery in 30s, 5m, 1h, or 1d. Simple string format, no cron needed.
Optionally get POSTed when a job completes. Simple JSON, not base64-encoded.
QStash is a good product. DispatchQ is simpler.
| DispatchQ | QStash | |
|---|---|---|
| API complexity | 1 endpoint: POST /v1/jobs | Publish vs Enqueue vs Workflow |
| Results | Stored, retrievable via GET | Callbacks only (base64 encoded) |
| Pricing model | Per job - pipeline = 1 job | Per message - steps multiply cost |
| Human approval | ✅ Built-in | - |
| MCP server | ✅ Included | - |
| Dashboard | Standalone, purpose-built | Inside Upstash Console |
| Time to learn | 5-minute quickstart | 50+ pages of docs |
Per job, not per message. No surprise bills.
Perfect for prototypes & hobbies
Get startedFor production apps & startups
Get startedFor growing teams & high volume
Get startedAll plans include webhook delivery, stored results, retries, delayed jobs, deduplication, human approval, and MCP server.
Free tier. No credit card. Ship your first job today.
Get your API key