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.

GET /v1/people/profile
curl -H "ApiKey: $TRIGUNA_API_KEY" \
  "https://api.triguna.ai/v1/people/profile\
?profile_id=rokafor\
&include_contact_details=true"
200 response (excerpt)
{
  "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.

  1. The title is nested. Read experience[0].positions[0].title, not experience[0].title. Reference →
  2. Dates are objects. { year, month, day, iso } with a partial iso such as "2018-03". A strict date parser will throw. Reference →
  3. The include flags are no-ops today. The reference marks them so: network_info and verifications stay null, and contact_info returns 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.