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.

We use UTC as timezone when evaluating cron expressions.

The following request would create a schedule that will automatically publish the message every minute:

curl -XPOST \
    -H 'Authorization: Bearer XXX' \
    -H "Content-type: application/json" \
    -H "Upstash-Cron: * * * * *" \
    -d '{ "hello": "world" }' \
    'https://qstash.upstash.io/v2/schedules/https://example.com'

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 topic

Instead of scheduling a message to a specific URL, you can also create a schedule, that publishes to a topic. Simply use either the topic name or its id:

curl -XPOST \
    -H 'Authorization: Bearer XXX' \
    -H "Content-type: application/json" \
    -H "Upstash-Cron: * * * * *" \
    -d '{ "hello": "world" }' \
    'https://qstash.upstash.io/v2/schedules/<TOPIC_ID_OR_NAME>'