Tags
Remove Tags from Many Subscribers
Remove tags from up to 500 existing subscribers in one request
POST
/
api
/
v1
/
subscribers
/
bulk
/
tags
/
remove
Remove Tags from Many Subscribers
curl --request POST \
--url https://api.sequenzy.com/api/v1/subscribers/bulk/tags/remove \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"tags": [
"<string>"
],
"emails": [
"<string>"
],
"externalIds": [
"<string>"
],
"subscriberIds": [
"<string>"
]
}
'import requests
url = "https://api.sequenzy.com/api/v1/subscribers/bulk/tags/remove"
payload = {
"tags": ["<string>"],
"emails": ["<string>"],
"externalIds": ["<string>"],
"subscriberIds": ["<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({
tags: ['<string>'],
emails: ['<string>'],
externalIds: ['<string>'],
subscriberIds: ['<string>']
})
};
fetch('https://api.sequenzy.com/api/v1/subscribers/bulk/tags/remove', 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.sequenzy.com/api/v1/subscribers/bulk/tags/remove",
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([
'tags' => [
'<string>'
],
'emails' => [
'<string>'
],
'externalIds' => [
'<string>'
],
'subscriberIds' => [
'<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.sequenzy.com/api/v1/subscribers/bulk/tags/remove"
payload := strings.NewReader("{\n \"tags\": [\n \"<string>\"\n ],\n \"emails\": [\n \"<string>\"\n ],\n \"externalIds\": [\n \"<string>\"\n ],\n \"subscriberIds\": [\n \"<string>\"\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.sequenzy.com/api/v1/subscribers/bulk/tags/remove")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"tags\": [\n \"<string>\"\n ],\n \"emails\": [\n \"<string>\"\n ],\n \"externalIds\": [\n \"<string>\"\n ],\n \"subscriberIds\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/subscribers/bulk/tags/remove")
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 \"tags\": [\n \"<string>\"\n ],\n \"emails\": [\n \"<string>\"\n ],\n \"externalIds\": [\n \"<string>\"\n ],\n \"subscriberIds\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"tags": ["derived-churn-risk"],
"requested": 2,
"matched": 2,
"updated": 1,
"unchanged": 1,
"failed": 0,
"notFound": {
"emails": [],
"externalIds": [],
"subscriberIds": []
},
"failures": [],
"message": "Untagged 1 subscriber (1 already in the target state, 0 failed)."
}
{
"success": false,
"error": "Provide emails, externalIds, or subscriberIds"
}
{
"success": false,
"error": "Unauthorized"
}
{
"success": false,
"error": "Internal server error"
}
Remove Tags from Many Subscribers
Remove one or more tags from up to 500 existing subscribers in a single request. Use this to roll back or reconcile a derived-tag backfill. Like Add Tags to Many Subscribers, this endpoint never creates contacts: identifiers that do not match an existing subscriber come back innotFound.
Identify subscribers by emails, externalIds, subscriberIds, or any combination. All identifier lists together must total at most 500 entries.
Request
string[]
required
Tag names to remove from every matched subscriber, up to 25 per request.
string[]
Subscriber emails to untag.
string[]
Your app/customer/user IDs to untag.
string[]
Sequenzy subscriber IDs to untag.
curl -X POST "https://api.sequenzy.com/api/v1/subscribers/bulk/tags/remove" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tags": ["derived-churn-risk"],
"subscriberIds": ["sub_abc123", "sub_def456"]
}'
Responses
{
"success": true,
"tags": ["derived-churn-risk"],
"requested": 2,
"matched": 2,
"updated": 1,
"unchanged": 1,
"failed": 0,
"notFound": {
"emails": [],
"externalIds": [],
"subscriberIds": []
},
"failures": [],
"message": "Untagged 1 subscriber (1 already in the target state, 0 failed)."
}
{
"success": false,
"error": "Provide emails, externalIds, or subscriberIds"
}
{
"success": false,
"error": "Unauthorized"
}
{
"success": false,
"error": "Internal server error"
}
Removing a tag does not trigger sequences. Sequenzy does not currently support
tag_removed automation triggers.⌘I
Remove Tags from Many Subscribers
curl --request POST \
--url https://api.sequenzy.com/api/v1/subscribers/bulk/tags/remove \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"tags": [
"<string>"
],
"emails": [
"<string>"
],
"externalIds": [
"<string>"
],
"subscriberIds": [
"<string>"
]
}
'import requests
url = "https://api.sequenzy.com/api/v1/subscribers/bulk/tags/remove"
payload = {
"tags": ["<string>"],
"emails": ["<string>"],
"externalIds": ["<string>"],
"subscriberIds": ["<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({
tags: ['<string>'],
emails: ['<string>'],
externalIds: ['<string>'],
subscriberIds: ['<string>']
})
};
fetch('https://api.sequenzy.com/api/v1/subscribers/bulk/tags/remove', 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.sequenzy.com/api/v1/subscribers/bulk/tags/remove",
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([
'tags' => [
'<string>'
],
'emails' => [
'<string>'
],
'externalIds' => [
'<string>'
],
'subscriberIds' => [
'<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.sequenzy.com/api/v1/subscribers/bulk/tags/remove"
payload := strings.NewReader("{\n \"tags\": [\n \"<string>\"\n ],\n \"emails\": [\n \"<string>\"\n ],\n \"externalIds\": [\n \"<string>\"\n ],\n \"subscriberIds\": [\n \"<string>\"\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.sequenzy.com/api/v1/subscribers/bulk/tags/remove")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"tags\": [\n \"<string>\"\n ],\n \"emails\": [\n \"<string>\"\n ],\n \"externalIds\": [\n \"<string>\"\n ],\n \"subscriberIds\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/subscribers/bulk/tags/remove")
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 \"tags\": [\n \"<string>\"\n ],\n \"emails\": [\n \"<string>\"\n ],\n \"externalIds\": [\n \"<string>\"\n ],\n \"subscriberIds\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"tags": ["derived-churn-risk"],
"requested": 2,
"matched": 2,
"updated": 1,
"unchanged": 1,
"failed": 0,
"notFound": {
"emails": [],
"externalIds": [],
"subscriberIds": []
},
"failures": [],
"message": "Untagged 1 subscriber (1 already in the target state, 0 failed)."
}
{
"success": false,
"error": "Provide emails, externalIds, or subscriberIds"
}
{
"success": false,
"error": "Unauthorized"
}
{
"success": false,
"error": "Internal server error"
}