Use case

Give your nightly jobs a window instead of the same start time.

When every job starts at 03:00, they can all reach for the same database or API at once. Give each HTTP job an allowed window, such as 02:00–04:00, and let Untimely select its start time. You get recurring triggers without adding random-delay code to each handler.

Move the schedule out of the job

Untimely calls your existing HTTP endpoint at a chosen time inside the window. Change the hours or frequency from the dashboard or API without editing a crontab on the machine that runs the work.

For a local script on a machine you already manage, a Bash delay may be all you need. The linked cron guide covers that approach and the differences between cron implementations.

Try it with one nightly job

Create a Webhook event with one trigger per one-day interval and a 02:00–04:00 window. Add your endpoint and authentication header. The API example below uses UTC; supply an IANA timezone if the window should follow local hours.

After the first run, check delivery history and your job’s own logs. A successful HTTP response confirms the request completed, while your handler tracks any background work it started.

Keep the controls that protect your job

Random start times reduce the chance of simultaneous starts, but jobs can still overlap. Keep a lock or concurrency limit where overlap matters, along with retries and monitoring. Untimely supplies the trigger; your existing job keeps control of execution.

API example

Create an API key in dashboard settings, then adapt this request to your endpoint:

curl -sS "https://untimely.app/api/events" \
  -H "authorization: Bearer $UNTIMELY_API_KEY" \
  -H "content-type: application/json" \
  -H "idempotency-key: nightly-maintenance-jitter-001" \
  -d '{
    "name": "Nightly maintenance with jitter",
    "interval": 1,
    "frequency": 1,
    "betweenTimeStart": "02:00",
    "betweenTimeEnd": "04:00",
    "actionType": "WEBHOOK",
    "webhook": {
      "method": "POST",
      "url": "https://example.com/jobs/nightly-maintenance"
    }
  }'

FAQ

Before you set it up

What granularity is the jitter?

The trigger time is chosen inside your window; make the window as wide or narrow as your tolerance allows — from minutes to the whole day.

Can I jitter multiple runs per day?

Yes — frequency up to 5 triggers per interval, each independently placed in the window.

What about jobs that must not overlap?

Untimely schedules and delivers the trigger; concurrency control belongs in your job. Widen the window to reduce collision odds.