Reply in an outreach conversation
curl --request POST \
--url https://api.snowseo.com/v3/outreach/inbox/threads/{id}/reply \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"body": "<string>"
}
'import requests
url = "https://api.snowseo.com/v3/outreach/inbox/threads/{id}/reply"
payload = { "body": "<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({body: JSON.stringify('<string>')})
};
fetch('https://api.snowseo.com/v3/outreach/inbox/threads/{id}/reply', 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/inbox/threads/{id}/reply",
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([
'body' => '<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/inbox/threads/{id}/reply"
payload := strings.NewReader("{\n \"body\": \"<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/inbox/threads/{id}/reply")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"body\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/outreach/inbox/threads/{id}/reply")
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 \"body\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": {
"id": "<string>",
"direction": "<string>",
"from": {
"name": "<string>",
"email": "<string>"
},
"body": "<string>",
"sentAt": "<string>"
}
}{
"success": true,
"error": "<string>",
"code": "<string>",
"message": "<string>",
"reference": "<string>"
}{
"success": true,
"error": "<string>",
"code": "<string>",
"message": "<string>",
"reference": "<string>"
}Email sending
Reply in a conversation
Send a reply on an existing pitch conversation.
POST
/
v3
/
outreach
/
inbox
/
threads
/
{id}
/
reply
Reply in an outreach conversation
curl --request POST \
--url https://api.snowseo.com/v3/outreach/inbox/threads/{id}/reply \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"body": "<string>"
}
'import requests
url = "https://api.snowseo.com/v3/outreach/inbox/threads/{id}/reply"
payload = { "body": "<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({body: JSON.stringify('<string>')})
};
fetch('https://api.snowseo.com/v3/outreach/inbox/threads/{id}/reply', 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/inbox/threads/{id}/reply",
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([
'body' => '<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/inbox/threads/{id}/reply"
payload := strings.NewReader("{\n \"body\": \"<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/inbox/threads/{id}/reply")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"body\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/outreach/inbox/threads/{id}/reply")
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 \"body\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": {
"id": "<string>",
"direction": "<string>",
"from": {
"name": "<string>",
"email": "<string>"
},
"body": "<string>",
"sentAt": "<string>"
}
}{
"success": true,
"error": "<string>",
"code": "<string>",
"message": "<string>",
"reference": "<string>"
}{
"success": true,
"error": "<string>",
"code": "<string>",
"message": "<string>",
"reference": "<string>"
}Sends a real email immediately to the person on the other end, threaded onto the last message. There is no draft step and it cannot be undone.
Body:
body - Markdown is rendered and newlines are kept as written. The subject and threading headers come from the conversation, so do not restate them.
Read the thread first so the reply answers what was actually said. To start a new pitch to someone not yet contacted, use Queue pitches instead.
POST /v3/outreach/inbox/threads/{id}/draft-reply generates an unsent reply from the conversation for 1 AI credit. Review its returned body before calling the sending endpoint above.
PUT /v3/outreach/inbox/threads/{id}/reply-draft saves what is being typed as the conversation’s unsent reply (body, Markdown). An empty body clears it, and so does sending.Authorizations
bearerAuthapiKey
Your SnowSEO API key (sk_...).
Path Parameters
Conversation ID, from outreach_inbox_threads.
Body
application/json
Body of the reply. Markdown is rendered and newlines are kept as written. The subject and threading headers come from the conversation, so do not restate them.
Required string length:
1 - 50000Was this page helpful?

