Skip to main content
POST
/
v2
/
trigger
/
{workflowUrl}
Trigger Workflow Run
curl --request POST \
  --url https://qstash.upstash.io/v2/trigger/{workflowUrl} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: text/plain' \
  --data '<string>'
{
  "workflowRunId": "<string>",
  "workflowCreatedAt": 123
}

Authorizations

Authorization
string
header
required

QStash authentication token

Headers

Upstash-Workflow-RunId
string

Optional custom run ID for the workflow run. A random ID will be generated if not provided.

Upstash-Forward-*
string

You can send custom headers to your workflow.

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

HeaderForwarded To Destination As
Upstash-Forward-My-Header: my-valueMy-Header: my-value
Upstash-Forward-Authorization: Bearer Authorization: Bearer
Upstash-Retries
integer
default:3

Number of retries for the workflow steps in case of failure.

Upstash-Delay
string

Delay the message delivery.

The format of this header is <value><unit> where value is a number and unit is one of:

  • s for seconds
  • m for minutes
  • h for hours.
  • d for days.
Examples:

"50s"

"1d10h30m"

"10h"

"1d"

Upstash-Not-Before
integer

Delay the message delivery until a certain timestamp in the future.

The format is a unix timestamp in seconds, based on the UTC timezone.

When both Upstash-Not-Before and Upstash-Delay headers are provided, Upstash-Not-Before will take precedence.

Upstash-Label
string

Optional label to attach to the workflow run for easier identification in logs and DLQ.

Upstash-Flow-Control-Key
string

Flow control key to manage concurrency for the workflow run. Steps with the same key will respect the same concurrency limit. Make sure you pass Upstash-Flow-Control-Value header as well to define the limits for the key.

Upstash-Flow-Control-Value
string

Parallelism and rate limit configuration for the flow control key in the format: parallelism=<value>, rate=<value>, period=<value>. See flow control for details.

Upstash-Failure-Callback
string

Failure callback URL to be called if the workflow run fails after all retries. That is when all the defined retries are exhausted. To call the failure function defined on server, this options should be left empty. A url should be given with this header only to call a different endpoint on failure. See failureUrl.

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

You can send custom headers along with your failure callback message. To send a custom header, prefix the header name with Upstash-Failure-Callback-Forward-. We will strip prefix and them to the failure callback URL.

HeaderForwarded To Callback Destination As
Upstash-Failure-Callback-Forward-My-Header: my-valueMy-Header: my-value
Upstash-Failure-Callback-Forward-Authorization: Bearer Authorization: Bearer
Upstash-Retry-Delay
string

Customize the delay between retry attempts when step delivery fails.

By default, Upstash Workflow uses exponential backoff. You can override this by providing a mathematical expressions to compute next delay. This expression is computed after each failed attempt.

You can use the special variable retried, which is how many times the message has been retried. The retried is 0 for the first retry.

Supported functions:

FunctionDescription
pow(x, y)Returns x raised to the power of y
exp(x)Returns e raised to the power of x
sqrt(x)Takes the square root of x
abs(x)Returns the absolute value of x
floor(x)Returns the largest integer less than or equal to x
ceil(x)Returns the smallest integer greater than or equal to x
round(x)Rounds x to the nearest integer
min(x, y)Returns the smaller of x and y
max(x, y)Returns the larger of x and y

Examples:

  • 1000: Fixed 1 second delay
  • 1000 * (1 + retried): Linear backoff
  • pow(2, retried) * 1000: Exponential backoff
  • max(1000, pow(2, retried) * 100): Exponential with minimum 1s delay

Path Parameters

workflowUrl
string
required

The URL of the workflow to trigger.

Body

The raw request payload passed to the workflow endpoints as is. You can access it via requestPayload parameter on the context object.

The body is of type string.

Response

Workflow triggered successfully

workflowRunId
string

The ID of the triggered workflow run.

workflowCreatedAt
number<date-time>

The timestamp when the workflow run was created.