Send an outreach email
curl --request POST \
--url https://app.keupera.com/api/v1/opportunities/{id}/send-email \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"to_email": "editor@target-site.com",
"subject": "Partnership Opportunity — SEO Tools",
"body_text": "Hi John,\n\nI'd love to collaborate...",
"body_html": "<p>Hi John,</p><p>I'd love to collaborate...</p>"
}
EOFimport requests
url = "https://app.keupera.com/api/v1/opportunities/{id}/send-email"
payload = {
"to_email": "editor@target-site.com",
"subject": "Partnership Opportunity — SEO Tools",
"body_text": "Hi John,
I'd love to collaborate...",
"body_html": "<p>Hi John,</p><p>I'd love to collaborate...</p>"
}
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({
to_email: 'editor@target-site.com',
subject: 'Partnership Opportunity — SEO Tools',
body_text: 'Hi John,\n\nI\'d love to collaborate...',
body_html: '<p>Hi John,</p><p>I\'d love to collaborate...</p>'
})
};
fetch('https://app.keupera.com/api/v1/opportunities/{id}/send-email', 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://app.keupera.com/api/v1/opportunities/{id}/send-email",
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([
'to_email' => 'editor@target-site.com',
'subject' => 'Partnership Opportunity — SEO Tools',
'body_text' => 'Hi John,
I\'d love to collaborate...',
'body_html' => '<p>Hi John,</p><p>I\'d love to collaborate...</p>'
]),
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://app.keupera.com/api/v1/opportunities/{id}/send-email"
payload := strings.NewReader("{\n \"to_email\": \"editor@target-site.com\",\n \"subject\": \"Partnership Opportunity — SEO Tools\",\n \"body_text\": \"Hi John,\\n\\nI'd love to collaborate...\",\n \"body_html\": \"<p>Hi John,</p><p>I'd love to collaborate...</p>\"\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://app.keupera.com/api/v1/opportunities/{id}/send-email")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"to_email\": \"editor@target-site.com\",\n \"subject\": \"Partnership Opportunity — SEO Tools\",\n \"body_text\": \"Hi John,\\n\\nI'd love to collaborate...\",\n \"body_html\": \"<p>Hi John,</p><p>I'd love to collaborate...</p>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.keupera.com/api/v1/opportunities/{id}/send-email")
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 \"to_email\": \"editor@target-site.com\",\n \"subject\": \"Partnership Opportunity — SEO Tools\",\n \"body_text\": \"Hi John,\\n\\nI'd love to collaborate...\",\n \"body_html\": \"<p>Hi John,</p><p>I'd love to collaborate...</p>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Email queued for sending. Opportunity status updated to outreach_sent.",
"data": {
"opportunity_id": "uuid",
"to_email": "editor@target-site.com",
"subject": "..."
}
}{
"error": "Missing required field: keywords"
}{
"error": "Invalid or missing API key"
}{
"error": "Resource not found"
}Backlinks
Send an outreach email
Sends an outreach email for an opportunity via your organization’s configured SMTP. Organization SMTP settings must be configured under Settings before sending. Updates the opportunity status to outreach_sent.
POST
/
opportunities
/
{id}
/
send-email
Send an outreach email
curl --request POST \
--url https://app.keupera.com/api/v1/opportunities/{id}/send-email \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"to_email": "editor@target-site.com",
"subject": "Partnership Opportunity — SEO Tools",
"body_text": "Hi John,\n\nI'd love to collaborate...",
"body_html": "<p>Hi John,</p><p>I'd love to collaborate...</p>"
}
EOFimport requests
url = "https://app.keupera.com/api/v1/opportunities/{id}/send-email"
payload = {
"to_email": "editor@target-site.com",
"subject": "Partnership Opportunity — SEO Tools",
"body_text": "Hi John,
I'd love to collaborate...",
"body_html": "<p>Hi John,</p><p>I'd love to collaborate...</p>"
}
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({
to_email: 'editor@target-site.com',
subject: 'Partnership Opportunity — SEO Tools',
body_text: 'Hi John,\n\nI\'d love to collaborate...',
body_html: '<p>Hi John,</p><p>I\'d love to collaborate...</p>'
})
};
fetch('https://app.keupera.com/api/v1/opportunities/{id}/send-email', 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://app.keupera.com/api/v1/opportunities/{id}/send-email",
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([
'to_email' => 'editor@target-site.com',
'subject' => 'Partnership Opportunity — SEO Tools',
'body_text' => 'Hi John,
I\'d love to collaborate...',
'body_html' => '<p>Hi John,</p><p>I\'d love to collaborate...</p>'
]),
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://app.keupera.com/api/v1/opportunities/{id}/send-email"
payload := strings.NewReader("{\n \"to_email\": \"editor@target-site.com\",\n \"subject\": \"Partnership Opportunity — SEO Tools\",\n \"body_text\": \"Hi John,\\n\\nI'd love to collaborate...\",\n \"body_html\": \"<p>Hi John,</p><p>I'd love to collaborate...</p>\"\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://app.keupera.com/api/v1/opportunities/{id}/send-email")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"to_email\": \"editor@target-site.com\",\n \"subject\": \"Partnership Opportunity — SEO Tools\",\n \"body_text\": \"Hi John,\\n\\nI'd love to collaborate...\",\n \"body_html\": \"<p>Hi John,</p><p>I'd love to collaborate...</p>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.keupera.com/api/v1/opportunities/{id}/send-email")
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 \"to_email\": \"editor@target-site.com\",\n \"subject\": \"Partnership Opportunity — SEO Tools\",\n \"body_text\": \"Hi John,\\n\\nI'd love to collaborate...\",\n \"body_html\": \"<p>Hi John,</p><p>I'd love to collaborate...</p>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Email queued for sending. Opportunity status updated to outreach_sent.",
"data": {
"opportunity_id": "uuid",
"to_email": "editor@target-site.com",
"subject": "..."
}
}{
"error": "Missing required field: keywords"
}{
"error": "Invalid or missing API key"
}{
"error": "Resource not found"
}Authorizations
Pass your Keupera API key as a Bearer token: Authorization: Bearer YOUR_KEUPERA_API_KEY. Generate keys from Account → API Keys in your Keupera dashboard.
Path Parameters
Resource ID.
Body
application/json
⌘I