Push
Send a Test Push
Send a test push to a device or a contact’s devices
POST
/
api
/
v1
/
push
/
test
Send a Test Push
curl --request POST \
--url https://api.sequenzy.com/api/v1/push/test \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"deviceId": "<string>",
"email": "<string>",
"subscriberId": "<string>",
"title": "<string>",
"body": "<string>",
"url": {},
"imageUrl": {},
"iconUrl": {},
"platforms": [
"<string>"
]
}
'import requests
url = "https://api.sequenzy.com/api/v1/push/test"
payload = {
"deviceId": "<string>",
"email": "<string>",
"subscriberId": "<string>",
"title": "<string>",
"body": "<string>",
"url": {},
"imageUrl": {},
"iconUrl": {},
"platforms": ["<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({
deviceId: '<string>',
email: '<string>',
subscriberId: '<string>',
title: '<string>',
body: JSON.stringify('<string>'),
url: {},
imageUrl: {},
iconUrl: {},
platforms: ['<string>']
})
};
fetch('https://api.sequenzy.com/api/v1/push/test', 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://api.sequenzy.com/api/v1/push/test",
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([
'deviceId' => '<string>',
'email' => '<string>',
'subscriberId' => '<string>',
'title' => '<string>',
'body' => '<string>',
'url' => [
],
'imageUrl' => [
],
'iconUrl' => [
],
'platforms' => [
'<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://api.sequenzy.com/api/v1/push/test"
payload := strings.NewReader("{\n \"deviceId\": \"<string>\",\n \"email\": \"<string>\",\n \"subscriberId\": \"<string>\",\n \"title\": \"<string>\",\n \"body\": \"<string>\",\n \"url\": {},\n \"imageUrl\": {},\n \"iconUrl\": {},\n \"platforms\": [\n \"<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://api.sequenzy.com/api/v1/push/test")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"deviceId\": \"<string>\",\n \"email\": \"<string>\",\n \"subscriberId\": \"<string>\",\n \"title\": \"<string>\",\n \"body\": \"<string>\",\n \"url\": {},\n \"imageUrl\": {},\n \"iconUrl\": {},\n \"platforms\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/push/test")
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 \"deviceId\": \"<string>\",\n \"email\": \"<string>\",\n \"subscriberId\": \"<string>\",\n \"title\": \"<string>\",\n \"body\": \"<string>\",\n \"url\": {},\n \"imageUrl\": {},\n \"iconUrl\": {},\n \"platforms\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"pushSendId": "push_abc",
"deviceCount": 2,
"remainingToday": 198,
"message": "Test push queued for 2 devices."
}
{
"error": "This contact has no active device on a platform that is set up."
}
{
"error": "Invalid API key"
}
{
"error": "API key is missing required scope: campaigns:send"
}
{
"error": "Device not found."
}
{
"error": "Test push limit reached (200 per 24 hours). Try again later."
}
Send a Test Push
Sends a real push to one device (deviceId) or to every active device of a contact (email or subscriberId). Provide title, body, or both. Tests are excluded from stats and limited to 200 per company in a rolling 24-hour window. Requires the campaigns:send scope.
Request
string
One device to notify.
string
Notify every active device of this contact.
string
Notify every active device of this subscriber.
string
Notification title, up to 120 characters. Merge tags such as
{{FIRST_NAME|there}} work.string
Notification message, up to 500 characters. Merge tags work.
string | null
Link opened on tap: an https URL, an app deep link (
myapp://...), or a merge
tag. Browsers only open https links. null clears it.string | null
Optional https image shown in the notification.
string | null
Optional https icon for web push. Defaults to the icon in push settings.
string[]
Limit delivery to
web, ios, and/or android. Omit or pass [] for every
platform.curl -X POST "https://api.sequenzy.com/api/v1/push/test" \
--header "Authorization: Bearer $SEQUENZY_API_KEY" \
--header "Content-Type: application/json" \
--data '{"email":"you@example.com","title":"Test","body":"Hello from Sequenzy"}'
Responses
{
"success": true,
"pushSendId": "push_abc",
"deviceCount": 2,
"remainingToday": 198,
"message": "Test push queued for 2 devices."
}
{
"error": "This contact has no active device on a platform that is set up."
}
{
"error": "Invalid API key"
}
{
"error": "API key is missing required scope: campaigns:send"
}
{
"error": "Device not found."
}
{
"error": "Test push limit reached (200 per 24 hours). Try again later."
}
⌘I
Send a Test Push
curl --request POST \
--url https://api.sequenzy.com/api/v1/push/test \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"deviceId": "<string>",
"email": "<string>",
"subscriberId": "<string>",
"title": "<string>",
"body": "<string>",
"url": {},
"imageUrl": {},
"iconUrl": {},
"platforms": [
"<string>"
]
}
'import requests
url = "https://api.sequenzy.com/api/v1/push/test"
payload = {
"deviceId": "<string>",
"email": "<string>",
"subscriberId": "<string>",
"title": "<string>",
"body": "<string>",
"url": {},
"imageUrl": {},
"iconUrl": {},
"platforms": ["<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({
deviceId: '<string>',
email: '<string>',
subscriberId: '<string>',
title: '<string>',
body: JSON.stringify('<string>'),
url: {},
imageUrl: {},
iconUrl: {},
platforms: ['<string>']
})
};
fetch('https://api.sequenzy.com/api/v1/push/test', 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://api.sequenzy.com/api/v1/push/test",
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([
'deviceId' => '<string>',
'email' => '<string>',
'subscriberId' => '<string>',
'title' => '<string>',
'body' => '<string>',
'url' => [
],
'imageUrl' => [
],
'iconUrl' => [
],
'platforms' => [
'<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://api.sequenzy.com/api/v1/push/test"
payload := strings.NewReader("{\n \"deviceId\": \"<string>\",\n \"email\": \"<string>\",\n \"subscriberId\": \"<string>\",\n \"title\": \"<string>\",\n \"body\": \"<string>\",\n \"url\": {},\n \"imageUrl\": {},\n \"iconUrl\": {},\n \"platforms\": [\n \"<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://api.sequenzy.com/api/v1/push/test")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"deviceId\": \"<string>\",\n \"email\": \"<string>\",\n \"subscriberId\": \"<string>\",\n \"title\": \"<string>\",\n \"body\": \"<string>\",\n \"url\": {},\n \"imageUrl\": {},\n \"iconUrl\": {},\n \"platforms\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/push/test")
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 \"deviceId\": \"<string>\",\n \"email\": \"<string>\",\n \"subscriberId\": \"<string>\",\n \"title\": \"<string>\",\n \"body\": \"<string>\",\n \"url\": {},\n \"imageUrl\": {},\n \"iconUrl\": {},\n \"platforms\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"pushSendId": "push_abc",
"deviceCount": 2,
"remainingToday": 198,
"message": "Test push queued for 2 devices."
}
{
"error": "This contact has no active device on a platform that is set up."
}
{
"error": "Invalid API key"
}
{
"error": "API key is missing required scope: campaigns:send"
}
{
"error": "Device not found."
}
{
"error": "Test push limit reached (200 per 24 hours). Try again later."
}