Batch Messages
curl --request POST \
--url https://qstash-{region}.upstash.io/v2/batch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
[
{
"destination": "<string>",
"body": "<string>",
"headers": {},
"queue": "<string>"
}
]
'import requests
url = "https://qstash-{region}.upstash.io/v2/batch"
payload = [
{
"destination": "<string>",
"body": "<string>",
"headers": {},
"queue": "<string>"
}
]
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
destination: '<string>',
body: JSON.stringify('<string>'),
headers: {},
queue: '<string>'
}
])
};
fetch('https://qstash-{region}.upstash.io/v2/batch', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://qstash-{region}.upstash.io/v2/batch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
[
'destination' => '<string>',
'body' => '<string>',
'headers' => [
],
'queue' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://qstash-{region}.upstash.io/v2/batch"
payload := strings.NewReader("[\n {\n \"destination\": \"<string>\",\n \"body\": \"<string>\",\n \"headers\": {},\n \"queue\": \"<string>\"\n }\n]")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://qstash-{region}.upstash.io/v2/batch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("[\n {\n \"destination\": \"<string>\",\n \"body\": \"<string>\",\n \"headers\": {},\n \"queue\": \"<string>\"\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("https://qstash-{region}.upstash.io/v2/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "[\n {\n \"destination\": \"<string>\",\n \"body\": \"<string>\",\n \"headers\": {},\n \"queue\": \"<string>\"\n }\n]"
response = http.request(request)
puts response.read_body[
{
"messageId": "<string>",
"deduplicated": true
}
]{
"error": "<string>"
}Messages
Batch Messages
Send multiple messages in a single request
POST
/
v2
/
batch
Batch Messages
curl --request POST \
--url https://qstash-{region}.upstash.io/v2/batch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
[
{
"destination": "<string>",
"body": "<string>",
"headers": {},
"queue": "<string>"
}
]
'import requests
url = "https://qstash-{region}.upstash.io/v2/batch"
payload = [
{
"destination": "<string>",
"body": "<string>",
"headers": {},
"queue": "<string>"
}
]
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
destination: '<string>',
body: JSON.stringify('<string>'),
headers: {},
queue: '<string>'
}
])
};
fetch('https://qstash-{region}.upstash.io/v2/batch', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://qstash-{region}.upstash.io/v2/batch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
[
'destination' => '<string>',
'body' => '<string>',
'headers' => [
],
'queue' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://qstash-{region}.upstash.io/v2/batch"
payload := strings.NewReader("[\n {\n \"destination\": \"<string>\",\n \"body\": \"<string>\",\n \"headers\": {},\n \"queue\": \"<string>\"\n }\n]")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://qstash-{region}.upstash.io/v2/batch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("[\n {\n \"destination\": \"<string>\",\n \"body\": \"<string>\",\n \"headers\": {},\n \"queue\": \"<string>\"\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("https://qstash-{region}.upstash.io/v2/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "[\n {\n \"destination\": \"<string>\",\n \"body\": \"<string>\",\n \"headers\": {},\n \"queue\": \"<string>\"\n }\n]"
response = http.request(request)
puts response.read_body[
{
"messageId": "<string>",
"deduplicated": true
}
]{
"error": "<string>"
}Authorizations
bearerAuthbearerAuthQuery
QStash authentication token
Body
application/json
Destination can either be a valid URL where the message gets sent to, or a URL Group name.
- If the destination is a URL, make sure the URL is prefixed with a valid protocol (http:// or https://)
- If the destination is a URL Group, a new message will be created for each endpoint in the group.
Note that destination must be publicly accessible over the internet. If you are working with local endpoints, consider using QStash local development server or a public tunnel service.
The raw request message passed to the endpoints as is
HTTP headers of the message. You can pass all the headers supported in the single publish API.
Show child attributes
Show child attributes
Queue name to enqueue the message to if desired.
Was this page helpful?