Add emails to the unsubscribe list
curl --request POST \
--url https://api.attio.com/v2/sequences/unsubscribed_emails \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"email_addresses": [
"person@example.com"
]
}
}
'import requests
url = "https://api.attio.com/v2/sequences/unsubscribed_emails"
payload = { "data": { "email_addresses": ["person@example.com"] } }
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({data: {email_addresses: ['person@example.com']}})
};
fetch('https://api.attio.com/v2/sequences/unsubscribed_emails', 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.attio.com/v2/sequences/unsubscribed_emails",
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([
'data' => [
'email_addresses' => [
'person@example.com'
]
]
]),
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.attio.com/v2/sequences/unsubscribed_emails"
payload := strings.NewReader("{\n \"data\": {\n \"email_addresses\": [\n \"person@example.com\"\n ]\n }\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.attio.com/v2/sequences/unsubscribed_emails")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"email_addresses\": [\n \"person@example.com\"\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.attio.com/v2/sequences/unsubscribed_emails")
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 \"data\": {\n \"email_addresses\": [\n \"person@example.com\"\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"email_address": "person@example.com",
"created_at": "2026-01-02T15:04:05.000Z"
}
]
}{
"statusCode": 400,
"type": "invalid_request_error",
"code": "validation_type",
"message": "Body payload validation error."
}Sequences
Add emails to the unsubscribe list
Adds email addresses to the workspace’s sequence unsubscribe list. Email addresses on the unsubscribe list cannot be enrolled in any sequence, and any of their active sequence runs are exited. Email addresses that are already on the unsubscribe list are ignored, so this endpoint is safe to retry.
This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.
Required scopes: sequence_unsubscribe:read-write.
POST
/
v2
/
sequences
/
unsubscribed_emails
Add emails to the unsubscribe list
curl --request POST \
--url https://api.attio.com/v2/sequences/unsubscribed_emails \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"email_addresses": [
"person@example.com"
]
}
}
'import requests
url = "https://api.attio.com/v2/sequences/unsubscribed_emails"
payload = { "data": { "email_addresses": ["person@example.com"] } }
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({data: {email_addresses: ['person@example.com']}})
};
fetch('https://api.attio.com/v2/sequences/unsubscribed_emails', 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.attio.com/v2/sequences/unsubscribed_emails",
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([
'data' => [
'email_addresses' => [
'person@example.com'
]
]
]),
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.attio.com/v2/sequences/unsubscribed_emails"
payload := strings.NewReader("{\n \"data\": {\n \"email_addresses\": [\n \"person@example.com\"\n ]\n }\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.attio.com/v2/sequences/unsubscribed_emails")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"email_addresses\": [\n \"person@example.com\"\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.attio.com/v2/sequences/unsubscribed_emails")
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 \"data\": {\n \"email_addresses\": [\n \"person@example.com\"\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"email_address": "person@example.com",
"created_at": "2026-01-02T15:04:05.000Z"
}
]
}{
"statusCode": 400,
"type": "invalid_request_error",
"code": "validation_type",
"message": "Body payload validation error."
}Was this page helpful?
⌘I