Unlimited jobs for beta users until November 1

The simplest job scheduling API

Booper is a simple API for scheduling HTTP requests, with support for automatic retries, logging, webhooks, and idempotency.

1# The following command will trigger a toast
2# notification to appear in the lower right corner
3# of this page in 10 seconds. Try it out!
5npx @booper/cli run \
6 POST https://scheduler.booper.dev/api/broadcast \
7 --data 'author=Demo user' \
8 --data 'content=Hello world' \
9 --data 'channel=toast' \
10 --in '10 seconds'

Our goals

Our goal here is pretty simple: we just want to make it extremely easy to schedule a delayed or recurring job.

You should be able to enqueue a new job in seconds. Turn a schedule on or off with the flick of a switch. Edit the cadence of a schedule without redeploying anything. Persist state between jobs without adding a database.

Webhook events? We got you covered. Idempotency? Heck yeah. Logs? So many logs.

These days, it's trivial to hack together a script and deploy it as an API. With tools like Replit, Vercel, and Fly, you can have something written and deployed in minutes, all for free.

Shouldn't scheduling stuff be just as simple?

Easy as 1, 2, 3

Just spin up an API endpoint, create a scheduled job, and start monitoring. All in less than 2 minutes.

1import express from "express";
3const app = express();
4const port = process.env.PORT || 3000;
6const notify = async () => {...};
8app.get("/api/run", async (req, res) => {
9 const response = await fetch(
10 'https://scheduler.booper.dev/api/ping'
11 );
13 if (!response.ok) {
14 await notify("API is down!")
16 return res.json({ ok: false });
17 }
19 const data = await response.json();
21 return res.json({ ok: true, data });
24app.listen(port, () =>
25 console.log("Server running...")
npx @booper/cli run \
GET https://healthcheck.me.repl.co/api/run \
--every "10 seconds"
Job #11483 completed in 482 ms with HTTP status 200
Job #11483 will execute GEThttps://healthcheck.me.repl.co/api/run
Job #11479 cancelled at Sep 21, 12:28:35 pm
Job #11479 is ready to be enqueued

Try it now

See the API in action with a simple scheduled message queue.

Schedule a message

Enter your name and a message to be broadcast to every client connected to this channel at the specified time below.

[demo] Listening for new messages...

Loading jobs...

Built for developers

No setup required

Get started without creating an account with our free public API key.

Flexible scheduling

Create one-off or recurring schedules by specifying a timestamp, a time from now, or a crontab.

Automatic retries

When jobs fail they will be retried again in the future using an exponential backoff algorithm.

Webhook events

Your jobs and the HTTP requests they execute are logged and emitted as webhook events.

Idempotency support

Optionally set idempotency keys on your jobs to ensure they are never run more than once.

Robust API

We offer a simple, robust, and predictable REST API with SDKs in your favorite languages.

Start today

No signup required. Start using the API now with our free public API key.

© 2023 Booper, Inc.