POST
/
v2
/
schedules
/
{destination}

Request

destination
string
required

Destination can either be a topic name or id that you configured in the Upstash console or a valid url where the message gets sent to. If the destination is a URL, make sure the URL is prefixed with a valid protocol (http:// or https://)

Upstash-Cron
string
required

Cron allows you to send this message periodically on a schedule.

Add a Cron expression and we will requeue this message automatically whenever the Cron expression triggers. We offer an easy to use UI for creating Cron expressions in our console or you can check out Crontab.guru.

Note: it can take up to 60 seconds until the schedule is registered on an available qstash node.

Example: */5 * * * *

body
string

The raw request message passed to the endpoints as is

Content-Type
string

ContentType is the MIME type of the message.

We highly recommend sending a Content-Type header along, as this will help your destination API to understand the content of the message.

Set this to whatever data you are sending through QStash, if your message is json, then use application/json. Some frameworks like Next.js will not parse your body correctly if the content type is not correct.

For example application/json, application/xml, application/octet-stream, text/plain

Upstash-Method
string
default: "POST"

The HTTP method to use when sending a webhook to your API.

Upstash-Timeout
string

Timeout value to set how long your endpoint is going to take. This parameter can be used to shorten the default allowed timeout value on your plan. Examples: 1 second = "1s", 5 minutes = "5m", 2 hours = "2h" See Max HTTP Connection Timeout on the pricing page for default values.

Upstash-Retries
int
default: 3

How often should this message be retried in case the destination API is not available.

The total number of deliveries is therefore capped at 1 + retries

Leave this empty to use the default value, (free tier: 3, paid tier: 5)

The backoff duration in seconds is calculated as follows: n is the number of times the task has been retried.

min(86400, e ** (2 * n))

Upstash-Forward-*
string

You can send custom headers along with your message.

To send a custom header, prefix the header name with Upstash-Forward-. We will strip efix and them to the destination API.

example: "Upstash-Forward-My-Header: my-value" -> "My-Header: my-value"

Upstash-Callback
string

You can define a callback url that will be called after each attempt. See the content of what will be delivered to a callback here

  • The callback url must be prefixed with a valid protocol (http:// or https://)
  • Callbacks are charged as a regular message.
  • Callbacks will use the retry setting from the original request.

For the api/llm destination, specifying a callback is required.

Upstash-Callback-*
string

Using the Upstash-Callback- prefix; you can set the timeout duration, number of retries, delay to apply or more for the callback request.

See the Configuring Callbacks section to learn more.

Upstash-Callback-Forward-*
string

If you are using the Upstash-Callback header to define a callback url, you can specify the headers sent along with the callback request using the Upstash-Callback-Forward-* header.

To include a header in the callback request, prefix the header name with Upstash-Callback-Forward-. We will strip this prefix and forward the header to the callback destination..

example: "Upstash-Callback-Forward-My-Header: my-value" -> "My-Header: my-value"

Upstash-Failure-Callback
string

You can define a failure callback url that will be called when a delivery is failed. That is when all the defined retries are exhausted. See the content of what will be delivered to a failure callback here

  • The failure callback url must be prefixed with a valid protocol (http:// or https://)
  • Callbacks are charged as a regular message.
  • Callbacks will use the retry setting from the original request.
Upstash-Failure-Callback-*
string

Using the Upstash-Failure-Callback- prefix; you can set the timeout duration, number of retries, delay to apply or more for the failure callback request.

See the Configuring Callbacks section to learn more.

Upstash-Failure-Callback-Forward-*
string

If are you using the Upstash-Failure-Callback header to define a callback url when the delivery fails, you can specify the headers sent along with the failure callback request using the Upstash-Failure-Callback-Forward-* header.

To include a header in the callback request, add Upstash-Failure-Callback-Forward- prefix to the header name. We will strip this prefix and forward the header to the callback destination.

example: "Upstash-Failure-Callback-Forward-My-Header: my-value" -> "My-Header: my-value"

Upstash-Delay
string

Delay the message delivery.

Delay applies to the delivery of the scheduled messages. For example, with the delay set to 10 minutes for a schedule that runs everyday at 00:00, the scheduled message will be created at 00:00 and it will be delivered at 00:10.

Format for this header is a number followed by duration abbreviation, like 10s. Available durations are s (seconds), m (minutes), h (hours), d (days).

example: ”50s” | “3m” | “10h” | “1d”

Upstash-Schedule-Id
string

Assign a schedule id to the created schedule.

This header allows you to set the schedule id yourself instead of QStash assigning a random id.

If a schedule with the provided id exists, the settings of the existing schedule will be updated with the new settings.

Response

scheduleId
string
required

The unique id of this schedule. You can use it to delete the schedule later.