curl --request GET \
--url https://{your-subdomain}.neetochat.com/api/external/v2/visitors/{contact_id} \
--header 'Accept: <accept>' \
--header 'X-Api-Key: <x-api-key>'const options = {method: 'GET', headers: {'X-Api-Key': '<x-api-key>', Accept: '<accept>'}};
fetch('https://{your-subdomain}.neetochat.com/api/external/v2/visitors/{contact_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{your-subdomain}.neetochat.com/api/external/v2/visitors/{contact_id}"
headers = {
"X-Api-Key": "<x-api-key>",
"Accept": "<accept>"
}
response = requests.get(url, headers=headers)
print(response.text){
"contact": {
"id": "2c79a334-0bc8-44e4-9504-331f59d400ab",
"name": "Sam Brown",
"email": "sam@example.com",
"phone_number": "+14155550123",
"user_identifier": "customer-1042",
"traits": {
"plan": "Pro"
},
"created_at": "2026-10-08T14:35:46.785Z",
"updated_at": "2026-10-08T14:35:46.785Z",
"field_values": [
{
"field_id": "bac73249-2ef5-46f6-b80d-78271914c2a6",
"field_name": "Plan tier",
"value": "Enterprise"
}
]
}
}{
"error": "Insights::Visitor does not exist."
}Get contact details
Retrieves a contact, including the values of its contact fields.
curl --request GET \
--url https://{your-subdomain}.neetochat.com/api/external/v2/visitors/{contact_id} \
--header 'Accept: <accept>' \
--header 'X-Api-Key: <x-api-key>'const options = {method: 'GET', headers: {'X-Api-Key': '<x-api-key>', Accept: '<accept>'}};
fetch('https://{your-subdomain}.neetochat.com/api/external/v2/visitors/{contact_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{your-subdomain}.neetochat.com/api/external/v2/visitors/{contact_id}"
headers = {
"X-Api-Key": "<x-api-key>",
"Accept": "<accept>"
}
response = requests.get(url, headers=headers)
print(response.text){
"contact": {
"id": "2c79a334-0bc8-44e4-9504-331f59d400ab",
"name": "Sam Brown",
"email": "sam@example.com",
"phone_number": "+14155550123",
"user_identifier": "customer-1042",
"traits": {
"plan": "Pro"
},
"created_at": "2026-10-08T14:35:46.785Z",
"updated_at": "2026-10-08T14:35:46.785Z",
"field_values": [
{
"field_id": "bac73249-2ef5-46f6-b80d-78271914c2a6",
"field_name": "Plan tier",
"value": "Enterprise"
}
]
}
}{
"error": "Insights::Visitor does not exist."
}{your-subdomain} with your workspace’s subdomain. Learn how to find your subdomain in Workspace subdomain.
Headers
Use the X-Api-Key header to provide your workspace API key. Refer to Authentication for more information.
Specifies the expected response format. Must be set to application/json for proper API communication.
application/json Path Parameters
Id of the contact. You can get contact_id by listing contacts using our List contacts API, or from the visitor.id of a conversation.
"2c79a334-0bc8-44e4-9504-331f59d400ab"
Response
OK - Request succeeded
Hide child attributes
Hide child attributes
"2c79a334-0bc8-44e4-9504-331f59d400ab"
"Sam Brown"
"sam@example.com"
"+14155550123"
Your own identifier for the contact.
"customer-1042"
Custom attributes stored on the contact.
{ "plan": "Pro" }
"2026-10-08T14:35:46.785Z"
"2026-10-08T14:35:46.785Z"
Values the contact holds for the workspace's contact fields. Fields without a value are left out.
Hide child attributes
Hide child attributes
Id of the contact field.
"bac73249-2ef5-46f6-b80d-78271914c2a6"
Name of the contact field.
"Plan tier"
Value stored for the field. Its type depends on the kind of field, such as a string for a text field or an array for a multi-option field.
"Enterprise"