# The job record

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

Every field the jobs 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 jobs](https://platform.metix.ai/docs/api/jobs.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. The posting itself, the employer, where the work is, what it pays, and when it was seen.

```json
{
  "id": "Jb71xKcAoP",
  "title": "Senior Platform Engineer",
  "description": "We are hiring a platform engineer to own our build and deploy story…",
  "url": "https://www.linkedin.com/jobs/view/example",
  "external_url": "https://northwind-analytics.example/careers/platform-engineer",
  "posted": "2 weeks ago",
  "application_active": 1,
  "employment_type": "Full-time",
  "seniority": "Mid-Senior level",
  "functions": ["Engineering", "Information Technology"],
  "industries": ["Software Development"],
  "applicants_count": "48",
  "required_months_of_experience": 60,
  "company_name": "Northwind Analytics",
  "company": {
    "name": "Northwind Analytics",
    "url": "https://www.linkedin.com/company/northwind-analytics",
    "logo_url": "https://cdn.example/northwind.png"
  },
  "city": "Austin",
  "state": "Texas",
  "country": "United States",
  "country_iso_2": "US",
  "location": "Austin, Texas, United States",
  "regions": [{ "region": "North America" }],
  "salary": {
    "min_value": "170000",
    "max_value": "205000",
    "currency": "USD",
    "unit": "YEARLY",
    "string": "$170,000/yr - $205,000/yr"
  },
  "created_at": "2026-08-10",
  "updated_at": "2026-08-18"
}
```

> **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 it is how you reach company_id, which is what carries you from a job to the company behind it.

```json
{
  "job_ids": ["Jb71xKcAoP"],
  "_source": ["id", "title", "company_name", "company_id"]
}
```

A name outside the tables below is refused, so a typo is visible rather than returning a record without the field.

```json
{
  "id": "Jb71xKcAoP",
  "title": "Senior Platform Engineer",
  "company_name": "Northwind Analytics",
  "company_id": "Cm4vTnR2sD"
}
```

## The posting

| Field | Type | What it holds |
| --- | --- | --- |
| `id` | string | The posting's identifier on this API. Send it back to this route to read the record again. |
| `title` | string | The role as advertised. |
| `description` | string | The advert body, often the longest field on the record. |
| `url` | string | The posting on the source platform. |
| `external_url` | string | The employer's own application page, where the posting links to one. |
| `posted` | string | How long ago the posting appeared, as the source words it: "2 weeks ago". Filter on posted with a relative date rather than parsing this. |
| `application_active` | integer | 1 while the posting still accepts applications. |
| `applicants_count` | string | How many people the source says have applied. |
| `created_at``updated_at` | string | When this record was first seen and last refreshed. YYYY-MM-DD. |

## The role

| Field | Type | What it holds |
| --- | --- | --- |
| `seniority` | string | One of seven levels, from Internship to Executive. |
| `employment_type` | string | One of seven, from Full-time to Volunteer. |
| `functions` | string[] | Job functions the posting is filed under. A long vocabulary, so match rather than eq. |
| `industries` | string[] | Industries the posting is filed under. Also a long vocabulary. |
| `required_months_of_experience` | integer | Experience asked for, in months, where the posting states one. |

## The employer

| Field | Type | What it holds |
| --- | --- | --- |
| `company_name` | string | The hiring company, as a name on the posting. |
| `company_id` | string | The same company as an identifier, for the companies route rather than this one. Name it in _source; it is not in the default record. |
| `company.name``company.url``company.logo_url` | string | The company block on the posting: its name, its page on the source platform, and its logo. |

## Where the work is

| Field | Type | What it holds |
| --- | --- | --- |
| `city``state``country` | string | The location as names. country is a full name such as United States. |
| `country_iso_2` | string | Two-letter country code. Note the underscore before the 2 on this dataset. |
| `location` | string | The parts above, formatted for reading. |
| `regions.region` | string | Broad groupings such as North America. |

## Pay

Present only where the posting states a figure, which is a minority of them.

| Field | Type | What it holds |
| --- | --- | --- |
| `salary.min_value``salary.max_value` | string | The band, as strings. Filter on salary_min and salary_max, which are numeric. |
| `salary.currency` | string | Three-letter code. |
| `salary.unit` | string | The period the figures cover, such as YEARLY. |
| `salary.string` | string | The band as the posting displays it. |
