When you publish a message, QStash will deliver it to your chosen destination. This is a brief overview of how a request to your API looks like.


We are forwarding all headers that have been prefixed with Upstash-Forward- to your API. Learn more

In addition to your custom headers, we’re sending these headers as well:

User-AgentWill be set to Upstash-QStash
Content-TypeThe original Content-Type header
Upstash-Topic-NameThe topic name if sent to a topic
Upstash-SignatureThe signature you need to verify See here
Upstash-RetriedHow often the message has been retried so far. Starts with 0.
Upstash-Message-IdThe message id of the message.
Upstash-Schedule-IdThe schedule id of the message if it is related to a schedule.
Upstash-Caller-IpThe IP address of the publisher of this message.


The body is passed as is, we do not modify it at all. If you send a JSON body, you will receive a JSON body. If you send a string, you will receive a string.

Verifying the signature

See here