cURL
curl --request POST \
--url https://api.feedspace.io/v3/contacts/{id}/unsubscribe \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"reason": "manual"
}
'import requests
url = "https://api.feedspace.io/v3/contacts/{id}/unsubscribe"
payload = { "reason": "manual" }
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({reason: 'manual'})
};
fetch('https://api.feedspace.io/v3/contacts/{id}/unsubscribe', 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.feedspace.io/v3/contacts/{id}/unsubscribe",
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([
'reason' => 'manual'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"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.feedspace.io/v3/contacts/{id}/unsubscribe"
payload := strings.NewReader("{\n \"reason\": \"manual\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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.feedspace.io/v3/contacts/{id}/unsubscribe")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"reason\": \"manual\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.feedspace.io/v3/contacts/{id}/unsubscribe")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reason\": \"manual\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": 123,
"email": "<string>",
"name": "<string>",
"phone": "<string>",
"primary_source": "<string>",
"country": "<string>",
"state": "<string>",
"city": "<string>",
"zipcode": "<string>",
"company": "<string>",
"date_added": "<string>",
"date_added_label": "<string>",
"is_unsubscribed": true,
"unsubscribe_reason": "<string>",
"unsubscribed_at": "<string>",
"enriched_at": "<string>",
"tag_ids": [
123
],
"has_reviewed": true,
"created_at": "<string>",
"updated_at": "<string>"
}
}Contacts
Unsubscribe Contact
Unsubscribe a contact from email automation. Idempotent: if the contact is already unsubscribed, the existing reason and timestamp are kept.
POST
/
contacts
/
{id}
/
unsubscribe
cURL
curl --request POST \
--url https://api.feedspace.io/v3/contacts/{id}/unsubscribe \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"reason": "manual"
}
'import requests
url = "https://api.feedspace.io/v3/contacts/{id}/unsubscribe"
payload = { "reason": "manual" }
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({reason: 'manual'})
};
fetch('https://api.feedspace.io/v3/contacts/{id}/unsubscribe', 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.feedspace.io/v3/contacts/{id}/unsubscribe",
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([
'reason' => 'manual'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"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.feedspace.io/v3/contacts/{id}/unsubscribe"
payload := strings.NewReader("{\n \"reason\": \"manual\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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.feedspace.io/v3/contacts/{id}/unsubscribe")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"reason\": \"manual\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.feedspace.io/v3/contacts/{id}/unsubscribe")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reason\": \"manual\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": 123,
"email": "<string>",
"name": "<string>",
"phone": "<string>",
"primary_source": "<string>",
"country": "<string>",
"state": "<string>",
"city": "<string>",
"zipcode": "<string>",
"company": "<string>",
"date_added": "<string>",
"date_added_label": "<string>",
"is_unsubscribed": true,
"unsubscribe_reason": "<string>",
"unsubscribed_at": "<string>",
"enriched_at": "<string>",
"tag_ids": [
123
],
"has_reviewed": true,
"created_at": "<string>",
"updated_at": "<string>"
}
}Unsubscribe a contact from email automation. Idempotent — if the contact is already unsubscribed, the existing reason and timestamp are kept.
Authorizations
HTTP Basic Authentication using API Key and Secret Key. The credentials should be Base64 encoded in the format 'api_key:secret_key'. You can obtain your API Key and Secret Key from Feedspace → Automation → API (https://app.feedspace.io/automation/api).
Path Parameters
Numeric contact ID.
Example:
8801
Body
application/json
Why the contact is being unsubscribed.
Available options:
manual, one_click, mailto, spam_report, hard_bounce, complaint Response
200 - application/json
Contact unsubscribed.
Show child attributes
Show child attributes
⌘I