Get a contact
curl --request GET \
--url https://public.api.live.turrisfi.com/v2/upstream/contacts/{contactId} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://public.api.live.turrisfi.com/v2/upstream/contacts/{contactId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://public.api.live.turrisfi.com/v2/upstream/contacts/{contactId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": {
"contactId": "6627f2b5c2e0a51b8c0d4e7c",
"firstName": "Jon",
"lastName": "Doe",
"email": "example@test.com",
"isDeliverable": true,
"associations": [
{
"downstreamEntityId": "6610b3d2c2e0a51b8c0d1f02",
"businessRoles": [
"Finance Manager"
],
"isPrimary": true,
"downstreamEntityAssociationId": "6627f1a9c2e0a51b8c0d4e3a"
}
]
},
"requestId": "dev-2c5e7cf2-9acf-4c8c-ab2f-b81f39d775a8",
"timestamp": "2025-11-12T20:49:03.293Z"
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}Contacts
Get Contact
Fetch a single agency contact and their business roles
GET
/
v2
/
upstream
/
contacts
/
{contactId}
Get a contact
curl --request GET \
--url https://public.api.live.turrisfi.com/v2/upstream/contacts/{contactId} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://public.api.live.turrisfi.com/v2/upstream/contacts/{contactId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://public.api.live.turrisfi.com/v2/upstream/contacts/{contactId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": {
"contactId": "6627f2b5c2e0a51b8c0d4e7c",
"firstName": "Jon",
"lastName": "Doe",
"email": "example@test.com",
"isDeliverable": true,
"associations": [
{
"downstreamEntityId": "6610b3d2c2e0a51b8c0d1f02",
"businessRoles": [
"Finance Manager"
],
"isPrimary": true,
"downstreamEntityAssociationId": "6627f1a9c2e0a51b8c0d4e3a"
}
]
},
"requestId": "dev-2c5e7cf2-9acf-4c8c-ab2f-b81f39d775a8",
"timestamp": "2025-11-12T20:49:03.293Z"
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}Returns a single contact by id, including every agency relationship you can see them at and the business roles they hold at each. The shape is identical to a single item from
GET /v2/upstream/contacts: one associations entry per agency, covering both agency-wide and market-specific relationships.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
contactId | string (ObjectId) | Yes | The unique identifier of the contact. This is the contactId returned by GET /v2/upstream/contacts. |
Example
GET /v2/upstream/contacts/6627f2b5c2e0a51b8c0d4e7c
{
"statusCode": 200,
"data": {
"contactId": "6627f2b5c2e0a51b8c0d4e7c",
"firstName": "Jon",
"lastName": "Doe",
"email": "example@test.com",
"isDeliverable": true,
"associations": [
{
"downstreamEntityAssociationId": "6627f1a9c2e0a51b8c0d4e3a",
"downstreamEntityId": "6610b3d2c2e0a51b8c0d1f02",
"businessRoles": ["Finance Manager", "Compliance Officer"],
"isPrimary": true
}
]
},
"timestamp": "2026-06-30T12:00:00.000Z"
}
Response Fields
| Field | Type | Description |
|---|---|---|
contactId | string | Unique contact identifier |
firstName | string | Contact first name |
lastName | string | Contact last name |
email | string | Contact email address |
isDeliverable | boolean | Whether the email has been verified as deliverable |
associations | array | One entry per agency you can see this contact at: downstreamEntityAssociationId? (UDA id, omitted for agency-wide), downstreamEntityId (agency id), businessRoles (string[]), isPrimary (boolean). |
Returns
404 Not Found if the contact does not exist or is not visible to your organization (it has no relationship at an agency you are associated with).Authorizations
bearerrestricted-access-token
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The unique identifier of the contact (the contactId returned by the List Contacts endpoint).
Example:
"507f1f77bcf86cd799439011"
Was this page helpful?