In addition to sending a message once, you can create a schedule, and we will
publish the message in the given period. To create a schedule, you simply need
to add the Upstash-Cron
header to your publish
request.
Schedules can be configured using cron
expressions.
crontab.guru is a great tool for understanding and
creating cron expressions.
By default, we evaluate cron expressions in UTC
.
If you want to run your schedule in a specific timezone, see the section on
Timezones.
The following request would create a schedule that will automatically publish
the message every minute:
import { Client } from "@upstash/qstash";
const client = new Client({ token: "<QSTASH_TOKEN>" });
await client.schedules.create({
destination: "https://example.com",
cron: "* * * * *",
});
All of the other config options
can still be used.
It can take up to 60 seconds for the schedule to be loaded on an active node and
triggered for the first time.
You can see and manage your schedules in the
Upstash Console.
Scheduling to a URL Group
Instead of scheduling a message to a specific URL, you can also create a
schedule, that publishes to a URL Group. Simply use either the URL Group name or its id:
import { Client } from "@upstash/qstash";
const client = new Client({ token: "<QSTASH_TOKEN>" });
await client.schedules.create({
destination: "urlGroupName",
cron: "* * * * *",
});
Scheduling to a Queue
You can schedule an item to be added to a queue at a specified time.
curl -XPOST \
import { Client } from "@upstash/qstash";
const client = new Client({ token: "<QSTASH_TOKEN>" });
await client.schedules.create({
destination: "https://example.com",
cron: "* * * * *",
queueName: "yourQueueName",
});
Overwriting an existing schedule
You can pass scheduleId explicitly to overwrite an existing schedule or just simply create the schedule
with the given schedule id.
import { Client } from "@upstash/qstash";
const client = new Client({ token: "<QSTASH_TOKEN>" });
await client.schedules.create({
destination: "https://example.com",
scheduleId: "existingScheduleId",
cron: "* * * * *",
});
Timezones
By default, cron expressions are evaluated in UTC
.
You can specify a different timezone using the CRON_TZ
prefix directly inside
the cron expression. All IANA timezones
are supported.
For example, this schedule runs every day at 04:00 AM
in New York time:
import { Client } from "@upstash/qstash";
const client = new Client({ token: "<QSTASH_TOKEN>" });
await client.schedules.create({
destination: "https://example.com",
cron: "CRON_TZ=America/New_York 0 4 * * *",
});