Queue outreach pitches for sending
curl --request POST \
--url https://api.snowseo.com/v3/outreach/outbox/queue \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"items": [
{
"prospectEmailId": "<string>",
"subject": "<string>",
"body": "<string>",
"prospectId": "<string>"
}
],
"sendNow": true,
"sendingAccountId": "<string>"
}
'import requests
url = "https://api.snowseo.com/v3/outreach/outbox/queue"
payload = {
"items": [
{
"prospectEmailId": "<string>",
"subject": "<string>",
"body": "<string>",
"prospectId": "<string>"
}
],
"sendNow": True,
"sendingAccountId": "<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({
items: [
{
prospectEmailId: '<string>',
subject: '<string>',
body: JSON.stringify('<string>'),
prospectId: '<string>'
}
],
sendNow: true,
sendingAccountId: '<string>'
})
};
fetch('https://api.snowseo.com/v3/outreach/outbox/queue', 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.snowseo.com/v3/outreach/outbox/queue",
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([
'items' => [
[
'prospectEmailId' => '<string>',
'subject' => '<string>',
'body' => '<string>',
'prospectId' => '<string>'
]
],
'sendNow' => true,
'sendingAccountId' => '<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.snowseo.com/v3/outreach/outbox/queue"
payload := strings.NewReader("{\n \"items\": [\n {\n \"prospectEmailId\": \"<string>\",\n \"subject\": \"<string>\",\n \"body\": \"<string>\",\n \"prospectId\": \"<string>\"\n }\n ],\n \"sendNow\": true,\n \"sendingAccountId\": \"<string>\"\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.snowseo.com/v3/outreach/outbox/queue")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"prospectEmailId\": \"<string>\",\n \"subject\": \"<string>\",\n \"body\": \"<string>\",\n \"prospectId\": \"<string>\"\n }\n ],\n \"sendNow\": true,\n \"sendingAccountId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/outreach/outbox/queue")
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 \"items\": [\n {\n \"prospectEmailId\": \"<string>\",\n \"subject\": \"<string>\",\n \"body\": \"<string>\",\n \"prospectId\": \"<string>\"\n }\n ],\n \"sendNow\": true,\n \"sendingAccountId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"queued": 123,
"queuedConversationIds": [
"<string>"
],
"updated": 123,
"skipped": 123,
"sendNow": true,
"spacingMs": 123
}{
"success": true,
"error": "<string>",
"code": "<string>",
"message": "<string>",
"reference": "<string>"
}{
"success": true,
"error": "<string>",
"code": "<string>",
"message": "<string>",
"reference": "<string>"
}Email sending
Queue Pitches
Queue approved email copy for selected prospect contacts.
POST
/
v3
/
outreach
/
outbox
/
queue
Queue outreach pitches for sending
curl --request POST \
--url https://api.snowseo.com/v3/outreach/outbox/queue \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"items": [
{
"prospectEmailId": "<string>",
"subject": "<string>",
"body": "<string>",
"prospectId": "<string>"
}
],
"sendNow": true,
"sendingAccountId": "<string>"
}
'import requests
url = "https://api.snowseo.com/v3/outreach/outbox/queue"
payload = {
"items": [
{
"prospectEmailId": "<string>",
"subject": "<string>",
"body": "<string>",
"prospectId": "<string>"
}
],
"sendNow": True,
"sendingAccountId": "<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({
items: [
{
prospectEmailId: '<string>',
subject: '<string>',
body: JSON.stringify('<string>'),
prospectId: '<string>'
}
],
sendNow: true,
sendingAccountId: '<string>'
})
};
fetch('https://api.snowseo.com/v3/outreach/outbox/queue', 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.snowseo.com/v3/outreach/outbox/queue",
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([
'items' => [
[
'prospectEmailId' => '<string>',
'subject' => '<string>',
'body' => '<string>',
'prospectId' => '<string>'
]
],
'sendNow' => true,
'sendingAccountId' => '<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.snowseo.com/v3/outreach/outbox/queue"
payload := strings.NewReader("{\n \"items\": [\n {\n \"prospectEmailId\": \"<string>\",\n \"subject\": \"<string>\",\n \"body\": \"<string>\",\n \"prospectId\": \"<string>\"\n }\n ],\n \"sendNow\": true,\n \"sendingAccountId\": \"<string>\"\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.snowseo.com/v3/outreach/outbox/queue")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"prospectEmailId\": \"<string>\",\n \"subject\": \"<string>\",\n \"body\": \"<string>\",\n \"prospectId\": \"<string>\"\n }\n ],\n \"sendNow\": true,\n \"sendingAccountId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/outreach/outbox/queue")
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 \"items\": [\n {\n \"prospectEmailId\": \"<string>\",\n \"subject\": \"<string>\",\n \"body\": \"<string>\",\n \"prospectId\": \"<string>\"\n }\n ],\n \"sendNow\": true,\n \"sendingAccountId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"queued": 123,
"queuedConversationIds": [
"<string>"
],
"updated": 123,
"skipped": 123,
"sendNow": true,
"spacingMs": 123
}{
"success": true,
"error": "<string>",
"code": "<string>",
"message": "<string>",
"reference": "<string>"
}{
"success": true,
"error": "<string>",
"code": "<string>",
"message": "<string>",
"reference": "<string>"
}This endpoint schedules real email to real people. Messages cannot be recalled once sent. Use
sendNow only when immediate sending was explicitly requested.items, each with a prospectEmailId, subject, and Markdown body. Find the address IDs with Outreach Contacts. Optionally choose one sendingAccountId; omit it to rotate across connected mailboxes. An unknown or inactive ID does not error: the first active mailbox is used instead. A 409 means no active mailbox is connected.
The response reports queued, queuedConversationIds, updated, skipped, sendNow, and spacingMs. Compare these counts with the items supplied: incomplete entries and addresses not owned by one of your prospects are skipped, and queueing an address whose pitch is still waiting overwrites its unsent copy (counted in updated) rather than sending a duplicate. A batch is paced even when sendNow is true; immediate sending is limited to one new recipient.
Use Outreach Sending to review messages still in the queue. Those can be removed before sending.Authorizations
bearerAuthapiKey
Your SnowSEO API key (sk_...).
Body
application/json
One entry per recipient.
Required array length:
1 - 200 elementsShow child attributes
Show child attributes
Send immediately instead of pacing across the daily limit. Leave false unless the user asked for it.
Send from one specific mailbox. Omit to rotate across all connected mailboxes.
Was this page helpful?

