curl --request POST \
--url https://api.birdeye.com/resources/v1/contact/external/preferences/update-feed \
--header 'Content-Type: application/json' \
--data '
{
"end": 1693657040000,
"start": 1693570640000,
"subscriptionStatus": [
"blocked",
"opted-out"
]
}
'import requests
url = "https://api.birdeye.com/resources/v1/contact/external/preferences/update-feed"
payload = {
"end": 1693657040000,
"start": 1693570640000,
"subscriptionStatus": ["blocked", "opted-out"]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
end: 1693657040000,
start: 1693570640000,
subscriptionStatus: ['blocked', 'opted-out']
})
};
fetch('https://api.birdeye.com/resources/v1/contact/external/preferences/update-feed', 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.birdeye.com/resources/v1/contact/external/preferences/update-feed",
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([
'end' => 1693657040000,
'start' => 1693570640000,
'subscriptionStatus' => [
'blocked',
'opted-out'
]
]),
CURLOPT_HTTPHEADER => [
"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.birdeye.com/resources/v1/contact/external/preferences/update-feed"
payload := strings.NewReader("{\n \"end\": 1693657040000,\n \"start\": 1693570640000,\n \"subscriptionStatus\": [\n \"blocked\",\n \"opted-out\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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.birdeye.com/resources/v1/contact/external/preferences/update-feed")
.header("Content-Type", "application/json")
.body("{\n \"end\": 1693657040000,\n \"start\": 1693570640000,\n \"subscriptionStatus\": [\n \"blocked\",\n \"opted-out\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.birdeye.com/resources/v1/contact/external/preferences/update-feed")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"end\": 1693657040000,\n \"start\": 1693570640000,\n \"subscriptionStatus\": [\n \"blocked\",\n \"opted-out\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"emailOptOut": [
{
"id": 1213422,
"firstName": "John",
"lastName": "Doe",
"emailId": "john@yahoo.com",
"phone": "(212) 234-1242",
"optOutFrom": [
"marketing",
"feedback"
]
},
{
"id": 1213423,
"firstName": "Johnny",
"lastName": "Doe",
"emailId": "johnny@yahoo.com",
"phone": "(212) 231-1242",
"optOutFrom": [
"marketing",
"feedback"
]
}
],
"textOptOut": [
{
"id": 1213425,
"firstName": "Jane",
"lastName": "Doe",
"emailId": "john@yahoo.com",
"phone": "(212) 234-1242",
"optOutFrom": [
"marketing",
"feedback"
]
},
{
"id": 1213423,
"firstName": "Johnny",
"lastName": "Doe",
"emailId": "johnny@yahoo.com",
"phone": "(212) 231-1242",
"optOutFrom": [
"marketing",
"feedback"
]
}
],
"blocked": [
{
"id": 1213422,
"firstName": "John",
"lastName": "Doe",
"emailId": "john@yahoo.com",
"phone": "(212) 234-1242",
"optOutFrom": [
"marketing",
"feedback"
]
},
{
"id": 1213423,
"firstName": "Johnny",
"lastName": "Doe",
"emailId": "johnny@yahoo.com",
"phone": "(212) 231-1242",
"optOutFrom": [
"marketing",
"feedback"
]
}
]
}{
"code": 20083,
"message": "End date can't be before start date"
}{
"code": 1011,
"message": "Business id is invalid"
}{
"code": 89,
"message": "Rate limit exceeded"
}Retrieve Opted-Out Contacts
curl --request POST \
--url https://api.birdeye.com/resources/v1/contact/external/preferences/update-feed \
--header 'Content-Type: application/json' \
--data '
{
"end": 1693657040000,
"start": 1693570640000,
"subscriptionStatus": [
"blocked",
"opted-out"
]
}
'import requests
url = "https://api.birdeye.com/resources/v1/contact/external/preferences/update-feed"
payload = {
"end": 1693657040000,
"start": 1693570640000,
"subscriptionStatus": ["blocked", "opted-out"]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
end: 1693657040000,
start: 1693570640000,
subscriptionStatus: ['blocked', 'opted-out']
})
};
fetch('https://api.birdeye.com/resources/v1/contact/external/preferences/update-feed', 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.birdeye.com/resources/v1/contact/external/preferences/update-feed",
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([
'end' => 1693657040000,
'start' => 1693570640000,
'subscriptionStatus' => [
'blocked',
'opted-out'
]
]),
CURLOPT_HTTPHEADER => [
"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.birdeye.com/resources/v1/contact/external/preferences/update-feed"
payload := strings.NewReader("{\n \"end\": 1693657040000,\n \"start\": 1693570640000,\n \"subscriptionStatus\": [\n \"blocked\",\n \"opted-out\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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.birdeye.com/resources/v1/contact/external/preferences/update-feed")
.header("Content-Type", "application/json")
.body("{\n \"end\": 1693657040000,\n \"start\": 1693570640000,\n \"subscriptionStatus\": [\n \"blocked\",\n \"opted-out\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.birdeye.com/resources/v1/contact/external/preferences/update-feed")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"end\": 1693657040000,\n \"start\": 1693570640000,\n \"subscriptionStatus\": [\n \"blocked\",\n \"opted-out\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"emailOptOut": [
{
"id": 1213422,
"firstName": "John",
"lastName": "Doe",
"emailId": "john@yahoo.com",
"phone": "(212) 234-1242",
"optOutFrom": [
"marketing",
"feedback"
]
},
{
"id": 1213423,
"firstName": "Johnny",
"lastName": "Doe",
"emailId": "johnny@yahoo.com",
"phone": "(212) 231-1242",
"optOutFrom": [
"marketing",
"feedback"
]
}
],
"textOptOut": [
{
"id": 1213425,
"firstName": "Jane",
"lastName": "Doe",
"emailId": "john@yahoo.com",
"phone": "(212) 234-1242",
"optOutFrom": [
"marketing",
"feedback"
]
},
{
"id": 1213423,
"firstName": "Johnny",
"lastName": "Doe",
"emailId": "johnny@yahoo.com",
"phone": "(212) 231-1242",
"optOutFrom": [
"marketing",
"feedback"
]
}
],
"blocked": [
{
"id": 1213422,
"firstName": "John",
"lastName": "Doe",
"emailId": "john@yahoo.com",
"phone": "(212) 234-1242",
"optOutFrom": [
"marketing",
"feedback"
]
},
{
"id": 1213423,
"firstName": "Johnny",
"lastName": "Doe",
"emailId": "johnny@yahoo.com",
"phone": "(212) 231-1242",
"optOutFrom": [
"marketing",
"feedback"
]
}
]
}{
"code": 20083,
"message": "End date can't be before start date"
}{
"code": 1011,
"message": "Business id is invalid"
}{
"code": 89,
"message": "Rate limit exceeded"
}Headers
e.g. application/json
e.g. [Required] Partner specific API key provided by Birdeye for data exchange.
e.g. [Required] User assosiated businessNumber
Body
The start date format should be in milliseconds. If the start date is not set and the end date is provided, we will fetch data for 24 hours before the end date. If both are not provided, the latest 24 hours data will be fetched.
The end date format should be in milliseconds. If the end date is not set and the start date is provided, we will fetch data for 24 hours after the start date. If both are not provided, the latest 24 hours data will be fetched.
Type of subscription update feed we want the data for. Like opted-out to get email and text optouts, and blocked for contacts getting blocked. If not provided, only opted-out updates will be returned, by default.
Response
OK
All the contacts grouped under this field, which were opted out from email in the given duration
All the contacts grouped under this field, which were opted out from text in the given duration
All the contacts grouped under this field, which were blockedl in the given duration.

