Person API
Resolve a profile URL into a structured person record
One authenticated GET against /v1/people/profile. Identity,
location, network counts, work history, education, skills, badges, verification, and, when
you ask for it, contact details.
curl -H "ApiKey: $TRIGUNA_API_KEY" \
"https://api.triguna.ai/v1/people/profile\
?profile_id=rokafor\
&include_contact_details=true"
{
"entity_urn": "ACoAAAWEHIQB...",
"public_identifier": "williamhgates",
"first_name": "Bill",
"last_name": "Gates",
"headline": "Chair, Gates Foundation",
"location": { "city": "Seattle", "country_code": "US" },
"experience": [ /* grouped by company */ ],
"skills": ["Philanthropy", "Global Health"]
}
What the record carries
Identity
entity_urn, public_identifier, names, headline,
summary, industry, photo URLs, and profile_url.
Work history
experience[], grouped by company, with a nested positions[]
array so a promotion reads as one employer and several roles.
Education and skills
education[] with degree and field of study, and skills[] as a
plain array of strings.
Network and badges
Badges such as open_to_work and is_hiring. Follower and
connection counts are not populated yet.
Generic sections
Certifications, courses, honors, languages, organizations, patents, projects, publications, test scores, and volunteering: all one shape, one parser.
Contact details
The object is returned, but emails, phones and websites are not populated yet. Design for absence.
Three things that catch parsers
None of these are exotic. All three show up in the first day of an integration.
-
The title is nested. Read
experience[0].positions[0].title, notexperience[0].title. Reference → -
Dates are objects.
{ year, month, day, iso }with a partialisosuch as"2018-03". A strict date parser will throw. Reference → -
The include flags are no-ops today. The reference marks them so:
network_infoandverificationsstay null, andcontact_inforeturns an empty shape. Reference →
Common questions
What identifier does the person API take?
A profile slug, the path segment after /in/ in a profile URL, with any query string, fragment, or trailing slash removed. Display names are not accepted and always return 404.
Where is the job title in a person record?
On experience[0].positions[0].title. The experience array is grouped by company and the title lives on the nested positions array, so experience[0].title is undefined for effectively every record.
Why is contact_info missing from my response?
Pass include_contact_details=true and you get the contact_info object rather than null, but its fields are not populated, so you get the shape rather than the data. include_network_details and get_verification_details are marked no-op in the reference and their sections stay null either way. None of the three is a way to get more data today.
Which key should I store for a person?
entity_urn. It is stable, and it is the one value you can feed straight back in as a profile_id, though it must be passed exactly as returned rather than in a urn:li: prefixed form. The public_identifier slug is user-editable and will break your joins when someone renames their profile.
Map a person record in an afternoon
The guide walks the whole path: slug in, stored row out.