Get a single contact
curl --request GET \
--url https://openapi.enginy.ai/v1/contact/{contactId} \
--header 'x-api-key: <api-key>'import requests
url = "https://openapi.enginy.ai/v1/contact/{contactId}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://openapi.enginy.ai/v1/contact/{contactId}', 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://openapi.enginy.ai/v1/contact/{contactId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <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://openapi.enginy.ai/v1/contact/{contactId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<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://openapi.enginy.ai/v1/contact/{contactId}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://openapi.enginy.ai/v1/contact/{contactId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": "success",
"message": "<string>",
"data": {
"id": 123,
"appUrl": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"jobTitle": "<string>",
"jobFunction": "<string>",
"jobLevel": "<string>",
"linkedInProfileUrl": "<string>",
"professionalEmail": "<string>",
"personalEmails": "<string>",
"mobilePhone": "<string>",
"phones": "<string>",
"imageUrl": "<string>",
"companyId": 123,
"company": {
"id": 123,
"appUrl": "<string>",
"name": "<string>",
"domain": "<string>",
"companyLinkedInUrl": "<string>"
},
"emailVerificationStatus": "<string>",
"contactCountry": "<string>",
"linkedInHeadline": "<string>",
"numberOfConnections": 123,
"contactCRMId": "<string>",
"leadCRMId": "<string>",
"isInCRM": true,
"lastContactedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"smartFieldExplanations": {}
}
}Contacts
Get a single contact
Retrieve a single contact by ID.
Responses include direct Enginy app URLs when available. The returned contact includes an appUrl field, and the associated company includes appUrl when present. MCP agents should return those URLs to users whenever they are present in the response.
Required scope:
CONTACTS_READRate limit: 100 requests per minute
GET
/
v1
/
contact
/
{contactId}
Get a single contact
curl --request GET \
--url https://openapi.enginy.ai/v1/contact/{contactId} \
--header 'x-api-key: <api-key>'import requests
url = "https://openapi.enginy.ai/v1/contact/{contactId}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://openapi.enginy.ai/v1/contact/{contactId}', 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://openapi.enginy.ai/v1/contact/{contactId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <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://openapi.enginy.ai/v1/contact/{contactId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<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://openapi.enginy.ai/v1/contact/{contactId}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://openapi.enginy.ai/v1/contact/{contactId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": "success",
"message": "<string>",
"data": {
"id": 123,
"appUrl": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"jobTitle": "<string>",
"jobFunction": "<string>",
"jobLevel": "<string>",
"linkedInProfileUrl": "<string>",
"professionalEmail": "<string>",
"personalEmails": "<string>",
"mobilePhone": "<string>",
"phones": "<string>",
"imageUrl": "<string>",
"companyId": 123,
"company": {
"id": 123,
"appUrl": "<string>",
"name": "<string>",
"domain": "<string>",
"companyLinkedInUrl": "<string>"
},
"emailVerificationStatus": "<string>",
"contactCountry": "<string>",
"linkedInHeadline": "<string>",
"numberOfConnections": 123,
"contactCRMId": "<string>",
"leadCRMId": "<string>",
"isInCRM": true,
"lastContactedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"smartFieldExplanations": {}
}
}Authorizations
Path Parameters
The contact ID
Query Parameters
Specific contact fields to include in the response (comma-separated or array). Use GET /v1/contacts/fields (MCP tool get_contact_field_metadata) to discover valid contact field names.
⌘I