# The profile record

Section: API reference
Source: https://platform.metix.ai/docs/api/people/record
Every page in one file: https://platform.metix.ai/llms-full.txt

Every field the people detail route returns, what each one holds, and a whole record to read. Values here are invented; the shape is the one the API returns.

- [Search people](https://platform.metix.ai/docs/api/people.md)
- [Query Spec](https://platform.metix.ai/docs/api/query-spec.md)

## What comes back

Send the ids and nothing else and you get the record below. Identity, location, the current title, skills and credentials, and the full work and education history.

```json
{
  "profile_id": "kR3nQv8xTm",
  "full_name": "Dana Whitfield",
  "first_name": "Dana",
  "last_name": "Whitfield",
  "linkedin_url": "https://www.linkedin.com/in/dana-whitfield-example",
  "active_experience_title": "Staff Data Engineer",
  "is_working": true,
  "is_decision_maker": false,
  "address": {
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "country_iso3": "USA",
    "regions": ["North America"],
    "full": "Austin, Texas, United States"
  },
  "skills": ["Python", "Airflow", "dbt"],
  "certifications": ["AWS Certified Data Analytics"],
  "courses": [],
  "awards": [],
  "publications": [],
  "patents": [],
  "experience": [
    {
      "title": "Staff Data Engineer",
      "role": "Data Engineer",
      "level": "Senior",
      "industry": "Technology, Information and Media",
      "company_name": "Northwind Analytics",
      "company_type": "Privately Held",
      "company_size_range": 4,
      "is_current": true,
      "duration_months": 29,
      "start_time": "2024-04-01",
      "end_time": null,
      "address_city": "Austin",
      "address_state": "Texas",
      "address_country": "United States"
    }
  ],
  "education": [
    {
      "institution_name": "University of Texas at Austin",
      "major": "Computer Science",
      "degree_level": 5,
      "begin_year": 2016,
      "end_year": 2020,
      "is_current": false
    }
  ]
}
```

> **Empty is not missing**
>
> A field with no value comes back as `null` or an empty array rather than being left out, so a record's shape does not change with how complete it is. Read the value, not the presence of the key.

## Asking for more, or less

`_source` takes an array of field names and returns exactly those. It is how you make a response smaller, and The rest of the record is reached by naming it. Everything below arrives this way and not otherwise.

```json
{
  "profile_ids": ["kR3nQv8xTm"],
  "_source": ["profile_id", "full_name", "summary", "github_url"]
}
```

A name outside the tables below is refused, so a typo is visible rather than returning a record without the field. Naming a container returns the fields under it, so ["experience"] is shorthand for the work history as it appears above; name a leaf such as experience.description to reach one field inside it.

```json
{
  "profile_id": "kR3nQv8xTm",
  "headline": "Staff Data Engineer · building reliable pipelines",
  "summary": "Twelve years turning messy source systems into models analysts trust.",
  "github_url": "https://github.com/example-dana",
  "website": "https://example.com/dana",
  "twitter_url": null,
  "connections_count": 1840,
  "followers_count": 2205,
  "total_experience_duration_months": 149,
  "last_graduation_date": 2020,
  "education_degrees": ["Bachelor"],
  "active_experience_department": "Engineering and Technical",
  "active_experience_management_level": "Senior",
  "github_repos_summary": [
    { "name": "pipeline-toolkit", "stars": 412, "contributions_count": 137,
      "summary": "Helpers for incremental dbt models." }
  ],
  "experience": [
    {
      "description": "Owned the ingestion layer and the contracts around it.",
      "company_id": "Cm4vTnR2sD",
      "company_website": "https://northwind-analytics.example",
      "company_employees_count": 320,
      "company_is_b2b": true,
      "company_categories_and_keywords": ["analytics", "data infrastructure"]
    }
  ],
  "education": [
    { "description": "Focus on distributed systems.",
      "institution_url": "https://www.utexas.edu",
      "institution_rank": 38 }
  ]
}
```

## Identity

| Field | Type | What it holds |
| --- | --- | --- |
| `profile_id` | string | The person's identifier on this API. Send it back to this route to read the record again. Stable across calls. |
| `full_name` | string | The name as the source shows it. |
| `first_name``last_name``middle_name` | string | The parts of it. middle_name is often null. |
| `first_name_initial``last_name_initial``middle_name_initial` | string | Single letters, for display where a full name is too much. On request. |
| `linkedin_url` | string | The person's profile page. |
| `github_url``twitter_url``facebook_url``crunchbase_url``website` | string | Links the person published about themselves. Usually null; most records list none. On request. |

## The person

| Field | Type | What it holds |
| --- | --- | --- |
| `headline` | string | The one-line self-description under their name, around 60 characters. On request. |
| `summary` | string | The longer self-description, around 500 characters when present. On request. |
| `address.city``address.state``address.country` | string | Where the person is, as names. country is a full name such as United States. |
| `address.country_iso2``address.country_iso3` | string | The same country as US and USA. |
| `address.regions` | string[] | Broad groupings such as North America. |
| `address.full` | string | The parts above, formatted for reading. Filter on the parts rather than on this. |
| `country_code` | string | Two-letter code alongside the address block. On request. |
| `skills` | string[] | Self-reported. The longest list on most records. |
| `certifications``courses``awards``publications``patents` | string[] | Credentials and output, as free text. |
| `organizations``projects``services` | string[] | Memberships, side work and offered services. Rarely populated. On request. |
| `is_working` | boolean | Whether a current job is on the record. |
| `is_decision_maker` | boolean | Whether the current title suggests budget authority. |
| `active_experience_title` | string | The current job title, lifted to the top level so it can be read without walking the array. |
| `active_experience_department``active_experience_management_level` | string | The current job's department and seniority, from fixed sets. On request. |
| `total_experience_duration_months` | integer | Months of work history across every role. On request. |
| `last_graduation_date` | integer | Year of the most recent qualification. On request. |
| `education_degrees` | string[] | Degree names across the education history. On request. |
| `connections_count``followers_count` | integer | Audience counts from the source platform. On request. |
| `github_contributions_count` | integer | Public contribution count, where a GitHub account is linked. On request. |
| `github_repos_summary.name``github_repos_summary.stars``github_repos_summary.contributions_count``github_repos_summary.summary` | object[] | The person's notable public repositories. On request. |

## Experience

An array, most recent first, one entry per job.

| Field | Type | What it holds |
| --- | --- | --- |
| `experience.title` | string | The title as written on the record. |
| `experience.role``experience.level` | string | The normalised job family and seniority. |
| `experience.industry` | string | The employer's industry, from a fixed set of twenty. |
| `experience.description` | string | What the person wrote about the job. On request. |
| `experience.is_current` | boolean | Whether this is a current role. |
| `experience.start_time``experience.end_time` | string | YYYY-MM-DD. end_time is null while the role is current. |
| `experience.duration_months` | integer | Length of this role. |
| `experience.order_in_profile` | integer | Position in the array, zero-based. On request. |
| `experience.company_name``experience.company_type` | string | The employer and its legal form. |
| `experience.company_id` | string | The employer's identifier. It belongs to the companies route, not this one. On request. |
| `experience.company_size_range``experience.company_employees_count` | integer | Size band and headcount. On request. |
| `experience.company_is_b2b` | boolean | Whether the employer sells to businesses. On request. |
| `experience.company_website``experience.company_linkedin_url``experience.company_logo_url` | string | The employer's links. On request. |
| `experience.company_categories_and_keywords` | string[] | What the employer does, as tags. On request. |
| `experience.address_city``experience.address_state``experience.address_country` | string | Where this job was, which may differ from where the person is. |
| `experience.address_full` | string | The same location formatted for reading. On request. |

## Education

An array, one entry per qualification.

| Field | Type | What it holds |
| --- | --- | --- |
| `education.institution_name` | string | The school or university. |
| `education.major` | string | Field of study, as written. |
| `education.degree_level` | integer | Ranked level, so gte and lte compare qualifications rather than spellings. |
| `education.begin_year``education.end_year` | integer | Years, not dates. |
| `education.is_current` | boolean | Whether the person is still studying this. |
| `education.description` | string | What the person wrote about it. On request. |
| `education.order_in_profile` | integer | Position in the array, zero-based. On request. |
| `education.institution_rank` | integer | Ranking position, where one is known. On request. |
| `education.institution_url``education.institution_logo_url` | string | The institution's links. On request. |
| `education.institution_country_iso2``education.institution_country_iso3``education.institution_regions` | string | Where the institution is. On request. |
