Person Discovery API
curl --request POST \
--url https://api.peoplecontext.com/v1/person/discover \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"linkedin": "<string>",
"github": "<string>",
"twitter": "<string>",
"url": "<string>"
}
'import requests
url = "https://api.peoplecontext.com/v1/person/discover"
payload = {
"linkedin": "<string>",
"github": "<string>",
"twitter": "<string>",
"url": "<string>"
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({linkedin: '<string>', github: '<string>', twitter: '<string>', url: '<string>'})
};
fetch('https://api.peoplecontext.com/v1/person/discover', 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.peoplecontext.com/v1/person/discover",
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([
'linkedin' => '<string>',
'github' => '<string>',
'twitter' => '<string>',
'url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$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://api.peoplecontext.com/v1/person/discover"
payload := strings.NewReader("{\n \"linkedin\": \"<string>\",\n \"github\": \"<string>\",\n \"twitter\": \"<string>\",\n \"url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
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://api.peoplecontext.com/v1/person/discover")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"linkedin\": \"<string>\",\n \"github\": \"<string>\",\n \"twitter\": \"<string>\",\n \"url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.peoplecontext.com/v1/person/discover")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"linkedin\": \"<string>\",\n \"github\": \"<string>\",\n \"twitter\": \"<string>\",\n \"url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"socials": [
{
"platform": "<string>",
"username": "<string>",
"link": "<string>",
"confidence": 123,
"context": {}
}
]
}Person Endpoints
Person Discovery API
Discover related social media profiles from a LinkedIn, GitHub, or Twitter/X username
POST
/
v1
/
person
/
discover
Person Discovery API
curl --request POST \
--url https://api.peoplecontext.com/v1/person/discover \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"linkedin": "<string>",
"github": "<string>",
"twitter": "<string>",
"url": "<string>"
}
'import requests
url = "https://api.peoplecontext.com/v1/person/discover"
payload = {
"linkedin": "<string>",
"github": "<string>",
"twitter": "<string>",
"url": "<string>"
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({linkedin: '<string>', github: '<string>', twitter: '<string>', url: '<string>'})
};
fetch('https://api.peoplecontext.com/v1/person/discover', 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.peoplecontext.com/v1/person/discover",
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([
'linkedin' => '<string>',
'github' => '<string>',
'twitter' => '<string>',
'url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$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://api.peoplecontext.com/v1/person/discover"
payload := strings.NewReader("{\n \"linkedin\": \"<string>\",\n \"github\": \"<string>\",\n \"twitter\": \"<string>\",\n \"url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
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://api.peoplecontext.com/v1/person/discover")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"linkedin\": \"<string>\",\n \"github\": \"<string>\",\n \"twitter\": \"<string>\",\n \"url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.peoplecontext.com/v1/person/discover")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"linkedin\": \"<string>\",\n \"github\": \"<string>\",\n \"twitter\": \"<string>\",\n \"url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"socials": [
{
"platform": "<string>",
"username": "<string>",
"link": "<string>",
"confidence": 123,
"context": {}
}
]
}Endpoint
POST /v1/person/discover
Authentication
string
required
Bearer token with your API key:
Bearer YOUR_API_KEYRequest Parameters
Request Body (JSON)
Provide exactly one of the following fields:string
LinkedIn username or profile URL.Examples:
"williamhgates", "https://www.linkedin.com/in/williamhgates"string
GitHub username or profile URL.Examples:
"torvalds", "https://github.com/torvalds"string
Twitter/X username or profile URL.Examples:
"elonmusk", "https://x.com/elonmusk"string
A profile URL from any supported platform. The platform is auto-detected from the URL.Examples:
"https://github.com/torvalds", "https://linkedin.com/in/williamhgates", "https://x.com/elonmusk"You must provide exactly one identifier. Sending zero or more than one will return a 400 error.
Response
Success Response (200 OK)
array
Array of discovered social profiles. The input profile is always included first with a confidence of 1.0.
string
Platform identifier:
"github", "linkedin", or "twitter".string
Username on the platform (without URL prefix).
string
Full profile URL.
number
Confidence score from 0.0 to 1.0 that the profile belongs to the same person. The input profile always has confidence 1.0. Only discovered profiles scoring >= 0.45 are returned.
string | null
Rich text summary of the profile, including bio, headline, experience, skills, and other relevant data. Useful for downstream enrichment or display. May be
null if profile data is unavailable.Error Responses
- 400 Bad Request - Must provide exactly one identifier (
linkedin,github,twitter, orurl) - 401 Unauthorized - Missing or invalid API key
- 429 Too Many Requests - Rate limit or quota exceeded
Examples
curl -X POST "https://api.peoplecontext.com/v1/person/discover" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"github": "torvalds"}'
import requests
response = requests.post(
"https://api.peoplecontext.com/v1/person/discover",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"github": "torvalds"}
)
for social in response.json().get("socials", []):
print(f"{social['platform']}: {social['username']} (confidence: {social['confidence']})")
if social.get("context"):
print(f" Context: {social['context'][:100]}...")
const response = await fetch(
'https://api.peoplecontext.com/v1/person/discover',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({ github: 'torvalds' })
}
);
const data = await response.json();
data.socials?.forEach(s =>
console.log(`${s.platform}: ${s.username} (${s.confidence})`)
);
Sample Response
{
"socials": [
{
"platform": "github",
"username": "torvalds",
"link": "https://github.com/torvalds",
"confidence": 1.0,
"context": "name: Linus Torvalds\n- username: torvalds\n- url: github.com/torvalds\n- company: Linux Foundation\n- location: Portland, OR\n..."
},
{
"platform": "linkedin",
"username": "linustorvalds",
"link": "https://linkedin.com/in/linustorvalds",
"confidence": 0.95,
"context": "name: Linus Torvalds\n- headline: Fellow at Linux Foundation\n..."
},
{
"platform": "twitter",
"username": "Linus__Torvalds",
"link": "https://x.com/Linus__Torvalds",
"confidence": 0.87,
"context": "name: Linus Torvalds\n- username: @Linus__Torvalds\n- bio: Creator of Linux and Git\n..."
}
]
}