Set Contact Draft
curl --request PUT \
--url https://api.example.com/outreach/sequencer/campaigns/{campaign_id}/contacts/{contact_id}/draft \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"node_id": "<string>",
"active": true,
"subject": "<string>",
"body": "<string>",
"source": "<string>",
"step": 123
}
'import requests
url = "https://api.example.com/outreach/sequencer/campaigns/{campaign_id}/contacts/{contact_id}/draft"
payload = {
"node_id": "<string>",
"active": True,
"subject": "<string>",
"body": "<string>",
"source": "<string>",
"step": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
node_id: '<string>',
active: true,
subject: '<string>',
body: JSON.stringify('<string>'),
source: '<string>',
step: 123
})
};
fetch('https://api.example.com/outreach/sequencer/campaigns/{campaign_id}/contacts/{contact_id}/draft', 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.example.com/outreach/sequencer/campaigns/{campaign_id}/contacts/{contact_id}/draft",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'node_id' => '<string>',
'active' => true,
'subject' => '<string>',
'body' => '<string>',
'source' => '<string>',
'step' => 123
]),
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.example.com/outreach/sequencer/campaigns/{campaign_id}/contacts/{contact_id}/draft"
payload := strings.NewReader("{\n \"node_id\": \"<string>\",\n \"active\": true,\n \"subject\": \"<string>\",\n \"body\": \"<string>\",\n \"source\": \"<string>\",\n \"step\": 123\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.example.com/outreach/sequencer/campaigns/{campaign_id}/contacts/{contact_id}/draft")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"node_id\": \"<string>\",\n \"active\": true,\n \"subject\": \"<string>\",\n \"body\": \"<string>\",\n \"source\": \"<string>\",\n \"step\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/outreach/sequencer/campaigns/{campaign_id}/contacts/{contact_id}/draft")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"node_id\": \"<string>\",\n \"active\": true,\n \"subject\": \"<string>\",\n \"body\": \"<string>\",\n \"source\": \"<string>\",\n \"step\": 123\n}"
response = http.request(request)
puts response.read_body{}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Outreach Sequencer
Set Contact Draft
Give one contact their own words for one email, or put them back on the template.
Refused once the campaign is sending, for the same reason the sequence is: children are mid-flight against the copy they planned with, and rewriting it underneath them would send words nobody reviewed.
PUT
/
outreach
/
sequencer
/
campaigns
/
{campaign_id}
/
contacts
/
{contact_id}
/
draft
Set Contact Draft
curl --request PUT \
--url https://api.example.com/outreach/sequencer/campaigns/{campaign_id}/contacts/{contact_id}/draft \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"node_id": "<string>",
"active": true,
"subject": "<string>",
"body": "<string>",
"source": "<string>",
"step": 123
}
'import requests
url = "https://api.example.com/outreach/sequencer/campaigns/{campaign_id}/contacts/{contact_id}/draft"
payload = {
"node_id": "<string>",
"active": True,
"subject": "<string>",
"body": "<string>",
"source": "<string>",
"step": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
node_id: '<string>',
active: true,
subject: '<string>',
body: JSON.stringify('<string>'),
source: '<string>',
step: 123
})
};
fetch('https://api.example.com/outreach/sequencer/campaigns/{campaign_id}/contacts/{contact_id}/draft', 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.example.com/outreach/sequencer/campaigns/{campaign_id}/contacts/{contact_id}/draft",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'node_id' => '<string>',
'active' => true,
'subject' => '<string>',
'body' => '<string>',
'source' => '<string>',
'step' => 123
]),
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.example.com/outreach/sequencer/campaigns/{campaign_id}/contacts/{contact_id}/draft"
payload := strings.NewReader("{\n \"node_id\": \"<string>\",\n \"active\": true,\n \"subject\": \"<string>\",\n \"body\": \"<string>\",\n \"source\": \"<string>\",\n \"step\": 123\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.example.com/outreach/sequencer/campaigns/{campaign_id}/contacts/{contact_id}/draft")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"node_id\": \"<string>\",\n \"active\": true,\n \"subject\": \"<string>\",\n \"body\": \"<string>\",\n \"source\": \"<string>\",\n \"step\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/outreach/sequencer/campaigns/{campaign_id}/contacts/{contact_id}/draft")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"node_id\": \"<string>\",\n \"active\": true,\n \"subject\": \"<string>\",\n \"body\": \"<string>\",\n \"source\": \"<string>\",\n \"step\": 123\n}"
response = http.request(request)
puts response.read_body{}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
One node's copy for one contact.
active is the switch the UI shows. Turning it off keeps the words —
somebody wrote them, and switching a contact back to the common template
should not be the same act as throwing them away.
Response
Successful Response
The response is of type Response Set Contact Draft Outreach Sequencer Campaigns Campaign Id Contacts Contact Id Draft Put · object.