Marketing
Create / send / schedule a broadcast
status=“draft” saves without sending. status=“sending” dispatches now, or holds until scheduledAt if provided. Dispatch resolves recipients from the audience (subscribed contacts only) and snapshots the template, so later template edits do not affect the send. Marketing sends are metered separately from Outbound (free tier 3000/month).
POST
/
marketing
/
broadcasts
Create / send / schedule a broadcast
curl --request POST \
--url https://api.jetemail.com/marketing/broadcasts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"templateId": "<string>",
"audienceId": "<string>",
"fromName": "<string>",
"fromEmail": "<string>",
"subject": "A gift for you, {{firstName | friend}}",
"scheduledAt": "2023-11-07T05:31:56Z"
}
'import requests
url = "https://api.jetemail.com/marketing/broadcasts"
payload = {
"name": "<string>",
"templateId": "<string>",
"audienceId": "<string>",
"fromName": "<string>",
"fromEmail": "<string>",
"subject": "A gift for you, {{firstName | friend}}",
"scheduledAt": "2023-11-07T05:31:56Z"
}
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({
name: '<string>',
templateId: '<string>',
audienceId: '<string>',
fromName: '<string>',
fromEmail: '<string>',
subject: 'A gift for you, {{firstName | friend}}',
scheduledAt: '2023-11-07T05:31:56Z'
})
};
fetch('https://api.jetemail.com/marketing/broadcasts', 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.jetemail.com/marketing/broadcasts",
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([
'name' => '<string>',
'templateId' => '<string>',
'audienceId' => '<string>',
'fromName' => '<string>',
'fromEmail' => '<string>',
'subject' => 'A gift for you, {{firstName | friend}}',
'scheduledAt' => '2023-11-07T05:31:56Z'
]),
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.jetemail.com/marketing/broadcasts"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"templateId\": \"<string>\",\n \"audienceId\": \"<string>\",\n \"fromName\": \"<string>\",\n \"fromEmail\": \"<string>\",\n \"subject\": \"A gift for you, {{firstName | friend}}\",\n \"scheduledAt\": \"2023-11-07T05:31:56Z\"\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.jetemail.com/marketing/broadcasts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"templateId\": \"<string>\",\n \"audienceId\": \"<string>\",\n \"fromName\": \"<string>\",\n \"fromEmail\": \"<string>\",\n \"subject\": \"A gift for you, {{firstName | friend}}\",\n \"scheduledAt\": \"2023-11-07T05:31:56Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jetemail.com/marketing/broadcasts")
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 \"name\": \"<string>\",\n \"templateId\": \"<string>\",\n \"audienceId\": \"<string>\",\n \"fromName\": \"<string>\",\n \"fromEmail\": \"<string>\",\n \"subject\": \"A gift for you, {{firstName | friend}}\",\n \"scheduledAt\": \"2023-11-07T05:31:56Z\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"id": "<string>",
"recipientCount": 123
}Authorizations
API key for account management endpoints. Use your api_ prefixed token.
Body
application/json
Target audience id (required to send)
Overrides the template subject. Stored with its merge tokens intact and rendered per recipient at send time, from the contact's fields.
Example:
"A gift for you, {{firstName | friend}}"
Available options:
draft, sending ISO timestamp; when set with status=sending the broadcast is scheduled
⌘I
Create / send / schedule a broadcast
curl --request POST \
--url https://api.jetemail.com/marketing/broadcasts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"templateId": "<string>",
"audienceId": "<string>",
"fromName": "<string>",
"fromEmail": "<string>",
"subject": "A gift for you, {{firstName | friend}}",
"scheduledAt": "2023-11-07T05:31:56Z"
}
'import requests
url = "https://api.jetemail.com/marketing/broadcasts"
payload = {
"name": "<string>",
"templateId": "<string>",
"audienceId": "<string>",
"fromName": "<string>",
"fromEmail": "<string>",
"subject": "A gift for you, {{firstName | friend}}",
"scheduledAt": "2023-11-07T05:31:56Z"
}
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({
name: '<string>',
templateId: '<string>',
audienceId: '<string>',
fromName: '<string>',
fromEmail: '<string>',
subject: 'A gift for you, {{firstName | friend}}',
scheduledAt: '2023-11-07T05:31:56Z'
})
};
fetch('https://api.jetemail.com/marketing/broadcasts', 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.jetemail.com/marketing/broadcasts",
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([
'name' => '<string>',
'templateId' => '<string>',
'audienceId' => '<string>',
'fromName' => '<string>',
'fromEmail' => '<string>',
'subject' => 'A gift for you, {{firstName | friend}}',
'scheduledAt' => '2023-11-07T05:31:56Z'
]),
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.jetemail.com/marketing/broadcasts"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"templateId\": \"<string>\",\n \"audienceId\": \"<string>\",\n \"fromName\": \"<string>\",\n \"fromEmail\": \"<string>\",\n \"subject\": \"A gift for you, {{firstName | friend}}\",\n \"scheduledAt\": \"2023-11-07T05:31:56Z\"\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.jetemail.com/marketing/broadcasts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"templateId\": \"<string>\",\n \"audienceId\": \"<string>\",\n \"fromName\": \"<string>\",\n \"fromEmail\": \"<string>\",\n \"subject\": \"A gift for you, {{firstName | friend}}\",\n \"scheduledAt\": \"2023-11-07T05:31:56Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jetemail.com/marketing/broadcasts")
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 \"name\": \"<string>\",\n \"templateId\": \"<string>\",\n \"audienceId\": \"<string>\",\n \"fromName\": \"<string>\",\n \"fromEmail\": \"<string>\",\n \"subject\": \"A gift for you, {{firstName | friend}}\",\n \"scheduledAt\": \"2023-11-07T05:31:56Z\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"id": "<string>",
"recipientCount": 123
}