Marketing · Campaigns
Update a campaign with the Marketing API
Updates a campaign mailing. Only the fields you send are changed. PUT is accepted as an equivalent to PATCH.
subject must stay unique within your account. The unsubscribe footer is reapplied to html_part on every save.
Example curl command:
curl -X PATCH \
https://api.paubox.com/v1/marketing/campaign_mailings/123e4567-e89b-12d3-a456-426614174000 \
-H 'authorization: Token token=YOUR_API_KEY' \
-H 'content-type: application/json' \
-d '{
"campaign_mailing": {
"subject": "March newsletter (revised)"
}
}'
PATCH
/
campaign_mailings
/
{campaign_mailing_id}
Update a campaign mailing
curl --request PATCH \
--url https://api.paubox.com/v1/marketing/campaign_mailings/{campaign_mailing_id} \
--header 'Content-Type: application/json' \
--header 'authorization: <api-key>' \
--data '
{
"campaign_mailing": {
"subject": "March newsletter (revised)"
}
}
'import requests
url = "https://api.paubox.com/v1/marketing/campaign_mailings/{campaign_mailing_id}"
payload = { "campaign_mailing": { "subject": "March newsletter (revised)" } }
headers = {
"authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({campaign_mailing: {subject: 'March newsletter (revised)'}})
};
fetch('https://api.paubox.com/v1/marketing/campaign_mailings/{campaign_mailing_id}', 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.paubox.com/v1/marketing/campaign_mailings/{campaign_mailing_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'campaign_mailing' => [
'subject' => 'March newsletter (revised)'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"authorization: <api-key>"
],
]);
$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.paubox.com/v1/marketing/campaign_mailings/{campaign_mailing_id}"
payload := strings.NewReader("{\n \"campaign_mailing\": {\n \"subject\": \"March newsletter (revised)\"\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("authorization", "<api-key>")
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.patch("https://api.paubox.com/v1/marketing/campaign_mailings/{campaign_mailing_id}")
.header("authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"campaign_mailing\": {\n \"subject\": \"March newsletter (revised)\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.paubox.com/v1/marketing/campaign_mailings/{campaign_mailing_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"campaign_mailing\": {\n \"subject\": \"March newsletter (revised)\"\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "<string>"
},
"errors": [
"<string>"
]
}{
"errors": [
{
"message": "401 Unauthorized"
}
]
}{
"errors": [
{
"message": "401 Unauthorized"
}
]
}{
"errors": [
{
"message": "401 Unauthorized"
}
]
}Authorizations
Body
application/json
Response
The updated campaign mailing's ID. If validation fails the response is still 200 but the body contains an errors array instead of data.
⌘I
Update a campaign mailing
curl --request PATCH \
--url https://api.paubox.com/v1/marketing/campaign_mailings/{campaign_mailing_id} \
--header 'Content-Type: application/json' \
--header 'authorization: <api-key>' \
--data '
{
"campaign_mailing": {
"subject": "March newsletter (revised)"
}
}
'import requests
url = "https://api.paubox.com/v1/marketing/campaign_mailings/{campaign_mailing_id}"
payload = { "campaign_mailing": { "subject": "March newsletter (revised)" } }
headers = {
"authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({campaign_mailing: {subject: 'March newsletter (revised)'}})
};
fetch('https://api.paubox.com/v1/marketing/campaign_mailings/{campaign_mailing_id}', 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.paubox.com/v1/marketing/campaign_mailings/{campaign_mailing_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'campaign_mailing' => [
'subject' => 'March newsletter (revised)'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"authorization: <api-key>"
],
]);
$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.paubox.com/v1/marketing/campaign_mailings/{campaign_mailing_id}"
payload := strings.NewReader("{\n \"campaign_mailing\": {\n \"subject\": \"March newsletter (revised)\"\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("authorization", "<api-key>")
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.patch("https://api.paubox.com/v1/marketing/campaign_mailings/{campaign_mailing_id}")
.header("authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"campaign_mailing\": {\n \"subject\": \"March newsletter (revised)\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.paubox.com/v1/marketing/campaign_mailings/{campaign_mailing_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"campaign_mailing\": {\n \"subject\": \"March newsletter (revised)\"\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "<string>"
},
"errors": [
"<string>"
]
}{
"errors": [
{
"message": "401 Unauthorized"
}
]
}{
"errors": [
{
"message": "401 Unauthorized"
}
]
}{
"errors": [
{
"message": "401 Unauthorized"
}
]
}