curl --request POST \
--url https://app.octavehq.com/api/v2/person/resolve-profile \
--header 'Content-Type: application/json' \
--header 'api_key: <api-key>' \
--data '
{
"email": "jane@acme.com",
"firstName": "<string>",
"lastName": "<string>",
"linkedInProfile": "https://www.linkedin.com/in/jane-doe",
"companyName": "<string>",
"companyDomain": "<string>",
"minConfidence": "LOW",
"effort": "standard"
}
'import requests
url = "https://app.octavehq.com/api/v2/person/resolve-profile"
payload = {
"email": "jane@acme.com",
"firstName": "<string>",
"lastName": "<string>",
"linkedInProfile": "https://www.linkedin.com/in/jane-doe",
"companyName": "<string>",
"companyDomain": "<string>",
"minConfidence": "LOW",
"effort": "standard"
}
headers = {
"api_key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {api_key: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: 'jane@acme.com',
firstName: '<string>',
lastName: '<string>',
linkedInProfile: 'https://www.linkedin.com/in/jane-doe',
companyName: '<string>',
companyDomain: '<string>',
minConfidence: 'LOW',
effort: 'standard'
})
};
fetch('https://app.octavehq.com/api/v2/person/resolve-profile', 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://app.octavehq.com/api/v2/person/resolve-profile",
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([
'email' => 'jane@acme.com',
'firstName' => '<string>',
'lastName' => '<string>',
'linkedInProfile' => 'https://www.linkedin.com/in/jane-doe',
'companyName' => '<string>',
'companyDomain' => '<string>',
'minConfidence' => 'LOW',
'effort' => 'standard'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.octavehq.com/api/v2/person/resolve-profile"
payload := strings.NewReader("{\n \"email\": \"jane@acme.com\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"linkedInProfile\": \"https://www.linkedin.com/in/jane-doe\",\n \"companyName\": \"<string>\",\n \"companyDomain\": \"<string>\",\n \"minConfidence\": \"LOW\",\n \"effort\": \"standard\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("api_key", "<api-key>")
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://app.octavehq.com/api/v2/person/resolve-profile")
.header("api_key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"jane@acme.com\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"linkedInProfile\": \"https://www.linkedin.com/in/jane-doe\",\n \"companyName\": \"<string>\",\n \"companyDomain\": \"<string>\",\n \"minConfidence\": \"LOW\",\n \"effort\": \"standard\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.octavehq.com/api/v2/person/resolve-profile")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api_key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"jane@acme.com\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"linkedInProfile\": \"https://www.linkedin.com/in/jane-doe\",\n \"companyName\": \"<string>\",\n \"companyDomain\": \"<string>\",\n \"minConfidence\": \"LOW\",\n \"effort\": \"standard\"\n}"
response = http.request(request)
puts response.read_body{
"_metadata": {
"requestId": "requestId",
"timestamp": "2021-01-01T00:00:00.000Z",
"usage": 0,
"message": "message"
},
"found": true,
"meetsConfidenceThreshold": true,
"effort": "standard",
"creditsCharged": 123,
"profile": {
"firstName": "Jane",
"lastName": "Doe",
"fullName": "Jane Doe",
"title": "VP of Engineering",
"headline": "<string>",
"seniority": "<string>",
"jobFunction": "<string>",
"linkedInUrl": "https://www.linkedin.com/in/jane-doe",
"linkedInSlug": "jane-doe",
"companyName": "Acme",
"companyDomain": "acme.com",
"companyLinkedInUrl": "<string>",
"location": "San Francisco, CA",
"city": "San Francisco",
"countryCode": "US",
"summary": "<string>",
"photoUrl": "<string>"
},
"confidence": "LOW",
"message": "<string>"
}{
"_metadata": {
"requestId": "requestId",
"timestamp": "2021-01-01T00:00:00.000Z",
"usage": 0,
"message": "message"
},
"message": "<string>"
}Resolve Profile from Email
Resolve a person’s LinkedIn profile, title, company, and location from their email (or name + company / LinkedIn URL) using Octave’s enrichment data. Supports a confidence threshold and an optional thorough effort mode with LLM validation. Charges credits only when a profile is found at or above the requested confidence.
curl --request POST \
--url https://app.octavehq.com/api/v2/person/resolve-profile \
--header 'Content-Type: application/json' \
--header 'api_key: <api-key>' \
--data '
{
"email": "jane@acme.com",
"firstName": "<string>",
"lastName": "<string>",
"linkedInProfile": "https://www.linkedin.com/in/jane-doe",
"companyName": "<string>",
"companyDomain": "<string>",
"minConfidence": "LOW",
"effort": "standard"
}
'import requests
url = "https://app.octavehq.com/api/v2/person/resolve-profile"
payload = {
"email": "jane@acme.com",
"firstName": "<string>",
"lastName": "<string>",
"linkedInProfile": "https://www.linkedin.com/in/jane-doe",
"companyName": "<string>",
"companyDomain": "<string>",
"minConfidence": "LOW",
"effort": "standard"
}
headers = {
"api_key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {api_key: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: 'jane@acme.com',
firstName: '<string>',
lastName: '<string>',
linkedInProfile: 'https://www.linkedin.com/in/jane-doe',
companyName: '<string>',
companyDomain: '<string>',
minConfidence: 'LOW',
effort: 'standard'
})
};
fetch('https://app.octavehq.com/api/v2/person/resolve-profile', 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://app.octavehq.com/api/v2/person/resolve-profile",
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([
'email' => 'jane@acme.com',
'firstName' => '<string>',
'lastName' => '<string>',
'linkedInProfile' => 'https://www.linkedin.com/in/jane-doe',
'companyName' => '<string>',
'companyDomain' => '<string>',
'minConfidence' => 'LOW',
'effort' => 'standard'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.octavehq.com/api/v2/person/resolve-profile"
payload := strings.NewReader("{\n \"email\": \"jane@acme.com\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"linkedInProfile\": \"https://www.linkedin.com/in/jane-doe\",\n \"companyName\": \"<string>\",\n \"companyDomain\": \"<string>\",\n \"minConfidence\": \"LOW\",\n \"effort\": \"standard\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("api_key", "<api-key>")
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://app.octavehq.com/api/v2/person/resolve-profile")
.header("api_key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"jane@acme.com\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"linkedInProfile\": \"https://www.linkedin.com/in/jane-doe\",\n \"companyName\": \"<string>\",\n \"companyDomain\": \"<string>\",\n \"minConfidence\": \"LOW\",\n \"effort\": \"standard\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.octavehq.com/api/v2/person/resolve-profile")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api_key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"jane@acme.com\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"linkedInProfile\": \"https://www.linkedin.com/in/jane-doe\",\n \"companyName\": \"<string>\",\n \"companyDomain\": \"<string>\",\n \"minConfidence\": \"LOW\",\n \"effort\": \"standard\"\n}"
response = http.request(request)
puts response.read_body{
"_metadata": {
"requestId": "requestId",
"timestamp": "2021-01-01T00:00:00.000Z",
"usage": 0,
"message": "message"
},
"found": true,
"meetsConfidenceThreshold": true,
"effort": "standard",
"creditsCharged": 123,
"profile": {
"firstName": "Jane",
"lastName": "Doe",
"fullName": "Jane Doe",
"title": "VP of Engineering",
"headline": "<string>",
"seniority": "<string>",
"jobFunction": "<string>",
"linkedInUrl": "https://www.linkedin.com/in/jane-doe",
"linkedInSlug": "jane-doe",
"companyName": "Acme",
"companyDomain": "acme.com",
"companyLinkedInUrl": "<string>",
"location": "San Francisco, CA",
"city": "San Francisco",
"countryCode": "US",
"summary": "<string>",
"photoUrl": "<string>"
},
"confidence": "LOW",
"message": "<string>"
}{
"_metadata": {
"requestId": "requestId",
"timestamp": "2021-01-01T00:00:00.000Z",
"usage": 0,
"message": "message"
},
"message": "<string>"
}Authorizations
Body
Identifiers to resolve a profile from
Email address to resolve a profile from. The primary identifier for the signup use case.
"jane@acme.com"
Optional first name to improve match accuracy
Optional last name to improve match accuracy
Optional LinkedIn profile URL or slug. When provided it is the strongest identifier.
"https://www.linkedin.com/in/jane-doe"
Optional company name to disambiguate
Optional company domain to disambiguate
Minimum match confidence required for a result to count as found. Matches below this are returned as found=false (no credits charged).
LOW, MEDIUM, HIGH standard does a single exact lookup; thorough adds fallback strategies and an LLM validation pass.
standard, thorough Response
Resolution result (found may be false)
Show child attributes
Show child attributes
Whether a profile met the confidence threshold
Whether the best match's confidence is >= the requested minConfidence
standard, thorough Credits charged for this call (0 if not found)
Show child attributes
Show child attributes
Confidence of the (best) match, if any
LOW, MEDIUM, HIGH, null