curl --request GET \
--url https://api.extole.io/v5/persons/{person_id}/relationships \
--header 'Authorization: <api-key>'import requests
url = "https://api.extole.io/v5/persons/{person_id}/relationships"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.extole.io/v5/persons/{person_id}/relationships', 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.extole.io/v5/persons/{person_id}/relationships",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.extole.io/v5/persons/{person_id}/relationships"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.extole.io/v5/persons/{person_id}/relationships")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.extole.io/v5/persons/{person_id}/relationships")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"campaign_id": "<string>",
"cause_event_id": "<string>",
"container": "<string>",
"created_date": "2025-10-24T02:00:00-07:00",
"data": {},
"id": "<string>",
"my_role": "ADVOCATE",
"other_person": {
"id": "<string>",
"identity_key": {
"name": "<string>"
},
"identity_key_value": "<string>"
},
"other_person_id": "<string>",
"person_id": "<string>",
"program": "<string>",
"root_event_id": "<string>",
"updated_date": "2025-10-24T02:00:00-07:00"
}
]List person relationships
Returns the referral relationships for the specified person, showing advocate-friend connections created through campaign participation. Each entry carries the requested person’s my_role (ADVOCATE or FRIEND) and the other_person_id on the other side, rather than being split into fixed advocate and friend collections.
Each entry also carries other_person, resolving that person to this client’s identity_key and identity_key_value, so a whole network can be labelled from one request rather than one request per related person. A relationship always names another person, so other_person is always present.
A relationship whose other person was deleted or cannot be found is left out. The offset and limit apply before it is left out, so a page can hold fewer than limit entries.
Relationships are de-duplicated by identity, keeping the most recent one per related person, unless include_duplicate_identities is set. When collapsing persons yourself, key on identity_key_value, falling back to other_person_id when the person has no identity key value yet. Never key on email: clients whose identity key is not email routinely have many distinct persons sharing an email or having none, so collapsing on email under-reports the network.
curl --request GET \
--url https://api.extole.io/v5/persons/{person_id}/relationships \
--header 'Authorization: <api-key>'import requests
url = "https://api.extole.io/v5/persons/{person_id}/relationships"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.extole.io/v5/persons/{person_id}/relationships', 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.extole.io/v5/persons/{person_id}/relationships",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.extole.io/v5/persons/{person_id}/relationships"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.extole.io/v5/persons/{person_id}/relationships")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.extole.io/v5/persons/{person_id}/relationships")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"campaign_id": "<string>",
"cause_event_id": "<string>",
"container": "<string>",
"created_date": "2025-10-24T02:00:00-07:00",
"data": {},
"id": "<string>",
"my_role": "ADVOCATE",
"other_person": {
"id": "<string>",
"identity_key": {
"name": "<string>"
},
"identity_key_value": "<string>"
},
"other_person_id": "<string>",
"person_id": "<string>",
"program": "<string>",
"root_event_id": "<string>",
"updated_date": "2025-10-24T02:00:00-07:00"
}
]Authorizations
Path Parameters
The Extole unique profile identifier of this user at Extole.
Query Parameters
Optional roles filter for the current person in the relationship. Will include journeys that match at least one of the roles. Eligible values are FRIEND, ADVOCATE.
ADVOCATE, FRIEND Optional container filter, defaults to all containers. Will include relationships that match at least one of the containers.
Optional program label filter. Will include relationships that match at least one of the programs.
Optional campaign id filter. Will include relationships that match at least one of the campaign ids.
Optional filter for existence of specific data keys with non-empty values. Will include relationships that have at least one of the data keys.
Optional filter for existence of specific data values. Will include relationships that have at least one of the specified data name-value pair. Valid format is name:value.
Optional flag to exclude relationships with anonymous persons.
Optional flag to return all relationships, not de-duplicate by identity. Default behavior (or when flag is set to false) returns last relationship per person.
Optional flag to include self referrals.
Optional offset filter, defaults to 0.
Optional limit filter, defaults to 100.
Response
Successful response
Extole campaign id associated with this relationship. Absent when no campaign is linked.
Id of the direct cause event for this relationship.
Campaign container in which the relationship was established.
RFC 3339 or RFC 9557 date-time with a numeric UTC offset and an optional IANA time-zone suffix in square brackets. Precision up to milliseconds.
^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,3})?(Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9])(\[[^\]]+\])?$"2025-10-24T02:00:00-07:00"
Named data parameters attached to this relationship.
Show child attributes
Show child attributes
Extole-assigned unique identifier for this relationship.
This person's role in the relationship (ADVOCATE or FRIEND).
ADVOCATE, FRIEND The other party in a relationship, identified by this client's identity key.
Show child attributes
Show child attributes
Extole person id of the other party in the relationship.
Extole person id of the person in the relationship.
Program key associated with this relationship. Absent for relationships with no program context.
Id of the root event that initiated this relationship.
RFC 3339 or RFC 9557 date-time with a numeric UTC offset and an optional IANA time-zone suffix in square brackets. Precision up to milliseconds.
^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,3})?(Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9])(\[[^\]]+\])?$"2025-10-24T02:00:00-07:00"
Was this page helpful?
