Job Posting Schema with Pay For Performance (P4P) Extension
This document lists and describes the job fields supported by the Job Posting API.
Foundation Schema
The schema below includes attributes required for posting jobs on LinkedIn. The foundation schema represents the core schema that has to be implemented irrespective of integration type. The partner needs to implement the Foundation schema and can also build any extension schema(s) which are defined in the topics below.
Field | Description | Type | Required |
---|---|---|---|
integrationContext | Represents the unique identifier of the company page on LinkedIn for which this job is posted. Must be in the format urn:li:organization:{company_id} for example, urn:li:organization:1234 . If the company is a LinkedIn customer with access to the onboarding widget, then this field must be used to identify the company, else use companyPageUrl field |
URN | integrationContext or companyPageUrl is a recommended field and must be provided to ensure job postings get associated with correct company page. Provide companyName field value only if you cannot provide value for this or pageUrl field. However, companyName does not guarantee a 100% accurate match with LinkedIn company page and may have an extra latency |
companyApplyUrl | URL for applicants to apply for the jobs | String | Yes |
externalJobPostingId | Represents unique job id within the partner system. Do not send an empty or null string for this field. The maximum allowed length is 200 characters | String | Yes |
jobPostingOperationType | Represents the operation on the job posting. Available operation options are: CREATE, UPDATE, RENEW, CLOSE | String | Yes |
title | Represents the title of the job posting that will be published. Character limit: 200 | String | Yes |
description | Represents the job description including the job basic information, responsibility and so on. Character limit: 100 ~ 25,000, limited set of HTML tags accepted, non-support HTML tags will be ignored. | String | Yes |
listedAt | Represents initial date the job posting was added into the application tracking system. The date is epoch timestamp in milliseconds (UTC) and should not be a future time | Integer | Yes |
location | Represents the geographic location of the job position to hire. Highly recommend keeping the "CITY, STATE/PROVINCE, COUNTRY" format regardless of which country the location is at to pass our standardization process. Other options can be:
|
String | Yes |
alternateLocations | Represents alternate locations for a job with multiple locations. This field takes the locations as input (including the one set in the location field). This field is null if the job has only one location. Maximum up to seven alternate locations are allowed.
|
String Array | Optional |
categories | Represents job functions specific to this job (for example, Accounting, Marketing, Sales). Category names are predefined by LinkedIn and can be retrieved from Job Functions reference table. You can provide upto 3 values.
|
String Array | Yes, if available on career site. |
skillsDescription | Represents description of desired skills and experiences of the job position. The maximum allowed length is 4000 characters. Limited set of HTML tags accepted (details below) | String | No |
companyJobCode | Represents a job posting ID, or a career site ID, within the company’s system for reference. It is now required to provide to keep the job quality throughout multiple API product integrations. If you do not have the job ID from origination, please place the same value as externalJobPostingId |
String | Yes |
workplaceTypes | Represents the workplace nature of the job. Available options are
On-Site should be used when it is mandatory for employee to work only from the designated office.
|
Array of String. Currently accepts single element array with one of the following values On-site , Hybrid , Remote |
Yes, if available on career site. |
industries | Represents industries of this job or company. Array element must be quoted and in URN format: "urn:li:industry:{industry_id}". Industry IDs are predefined by LinkedIn and can be retrieved from Industry Codes reference table. Each company page on LinkedIn is linked to one or multiple industry codes. When posting a job on that company page, the job will default to the industry code(s) defined for the company. Providing an industry code in this field will override the industry code(s) defined on the company page for the job posting. The API will return an error if no industry code exists on the company page and one is not provided in the API request. |
Array of Industry URN | No |
employmentStatus | Represents employment status of the job position. Available options are: FULL_TIME , PART_TIME , CONTRACT , INTERNSHIP , TEMPORARY , VOLUNTEER . If predefined LinkedIn values are provided, they are displayed on the LinkedIn job posting. If a non-standard value is provided, LinkedIn attempts to standardize and match it to the closest pre-defined value. If no values are provided, LinkedIn standardizes to the closest matched value based on other fields in the job posting |
String | Yes, if available on career site. |
experienceLevel | Represents experience level of the job position to hire. Available options are: ENTRY_LEVEL , MID_SENIOR_LEVEL , DIRECTOR , EXECUTIVE , INTERNSHIP , ASSOCIATE , NOT_APPLICABLE . If predefined LinkedIn values are provided, they are displayed on the LinkedIn job posting. If a non-standard value is provided, LinkedIn attempts to standardize and match it to the closest pre-defined value. If no values are provided, LinkedIn standardizes to the closest matched value based on other fields in the job posting |
String | Yes, if available on customer career sites. |
trackingPixelUrl | URL for the tracking pixel to be embedded on the job description. To know more refer to Help Article | String | No |
companyName | The company name for which this job posting is created for. This field should be used in lieu of integrationContext or companyPageUrl only if the customer does not have contract with LinkedIn and cannot access the Customer Onboarding Widget | String | Yes, if integrationContext or companyPageUrl is unavailable. |
companyPageUrl | The URL of the customer’s LinkedIn Company Page they would like their jobs posted to (e.g. https://www.linkedin.com/company/{company_page}/) | String | Yes, if integrationContext is unavailable. |
compensation | Compensation provided by the job poster. | PosterProvidedCompensation | No |
expireAt | The date when a job should expire and no longer be available to users. This date should be greater than the current date. If this field is not provided, the default expiration is 180 days for basic and 30 days for premium jobs. For PREMIUM jobs, the expiration date must be within the range of 1 to 90 days, for invalid date API will return an "Invalid ExpirationDate" error. |
Epoch in Milliseconds (UTC) | No |
listingType | Represents the type of the job posting. Value of PREMIUM should be provided only if integration is build for Premium Job Posting Extension schema. For everything else, value of this field should be BASIC . Default value is BASIC . |
String | No |
Poster Provided Compensation Schema
Field | Description | Type | Required |
---|---|---|---|
compensations | Compensation detail | Array of compensation | Yes |
Compensation Schema
Field | Description | Type | Required |
---|---|---|---|
amount | The amount of compensation. | MoneyAmount | No |
value | The compensation amount, which may be either "range" or "exactAmount" | MoneyAmountRange | Yes |
period | Period in which the amount of compensation is paid. Valid value is YEARLY ,MONTHLY , SEMIMONTHLY , BIWEEKLY ,WEEKLY ,DAILY ,HOURLY |
String | Yes |
type | Type of compensation, valid value are BASE_SALARY ,TIPS ,COMMISSION ,PROFIT_SHARING ,STOCK_OPTIONS ,STOCK ,BONUS ,SIGN_ON_BONUS ,OVER_TIME ,OTHER |
String | Yes |
Money Amount Schema
Field | Description | Type | Required |
---|---|---|---|
currencyCode | ISO currency code. | String | Yes |
amount | The amount of money as a real number string | String | Yes |
Money Amount Range Schema
Field | Description | Type | Required |
---|---|---|---|
start | Represents the inclusive (greater than or equal to) value in which to start the range. This field is optional. An unset field indicates an open range; for example, if end is 5, it means everything less than or equal to 5. | MoneyAmount | Yes |
end | Represents the inclusive (less than or equal to) value in which to end the range. This field is optional. An unset field indicates an open range; for example if start is 2 it means everything greater than or equal to 2. | MoneyAmount | Yes |
Sample Request for compensation
"compensation":{
"compensations":[
{
"period":"YEARLY",
"type":"BASE_SALARY",
"value": {
"range": {
"start":{"amount":"1234", "currencyCode":"USD"},
"end":{"amount":"4567", "currencyCode":"USD"}
}
}
}
]
}
"compensation":{
"compensations":[
{
"period":"YEARLY",
"type":"BASE_SALARY",
"value": {
"exactAmount": {"amount":"4000", "currencyCode":"USD"}
}
}
]
}
Promoted Jobs Extension Schema
Includes additional attributes required or optional for jobs promotion.
Field | Description | Type | Required |
---|---|---|---|
contract | Represents the contract this job posting is published to, which is signed by the customer with LinkedIn to use LinkedIn Recruiter services. Must be in the format urn:li:contract:{contractId}. Only for RAA jobs, this field should not be provided as the RAA jobs are not managed by job-level contracts. | Contract URN | Yes, excluding P4P RAA jobs |
posterEmail | Represents valid email address of the poster who will publish the job. Must be the primary email address of the seat holder as defined in the customer's contract. If not provided, the defaultJobPoster configured by the customer is used |
String | No |
showPosterInfo | Represents whether LinkedIn would display the poster information on job description page. The default value is false (No). For Basic jobs this only works if posterEmail is provided and can be associated to a contract seat holder |
Boolean | No |
Note
It is mandatory to provide the value of listingType
field as PREMIUM.
Pay For Performance (P4P) Jobs JD or ATS Extension Schema
Note
One must have a P4P Promoted Jobs contract to use budget
field.
Includes additional attributes required or optional for p4p jobs promotion.
Field | Description | Type | Required |
---|---|---|---|
budget | Represent a total budget P4P customer wants to spend on the specific job posting. "budget": { "payForPerformanceTotalBudget": { ... } } This field is an Union of two sub-attributes amount and currencyCode . |
PayForPerformanceTotalBudget | Yes |
PayForPerformanceTotalBudget Field Schema
Field | Description | Type | Required |
---|---|---|---|
amount | The total amount of budget you want to spend on. An example can be "200.00" or "200". For PP4P, you must provide a budget amount for the job posting. |
String | Yes |
currencyCode | The 3-alpha ISO 4217 code for amount . currencyCode must match to the currency in your P4P contract(s) with LinkedIn. It defaults to USD/$ if no value presents. |
String | No |
Pay For Performance (P4P) Jobs RAA Extension Schema
Note
One must have a child application {access_token} that was provisioned with a valid contract and campaign.
Includes additional attributes required or optional for p4p jobs promotion.
Field | Description | Type | Required |
---|---|---|---|
partnerJobCampaignId | The campaign id that the job belongs to. The maximum allowed length is 255 characters. | String | Yes |
Pay For Performance (P4P) Jobs XML Extension Schema
Note
One must have a P4P Promoted Jobs contract for Job Campaign partners, such as Recruitment Advertising Agency (RAA), to use this shcema.
Includes additional attributes required or optional for P4P Job Campaign API.
Field | Description | Type | Required |
---|---|---|---|
partnerCustomerId | Partner provided ID that uniquely identifies the specific partner’s customer on the partner side. This identifier will be used to identify the data container for posting paid job. This identifier is same string as the uniqueForeignId . |
String | Yes |
partnerJobCampaignId | Partner provided ID that uniquely identifies the partner side job campaign. It is optional, BUT required for promoting the job. | String | No |
partnerJobState | PROMOTED - publicly visible and paid, in case insufficient budget, it will be the same as LISTED . LISTED - publicly visible and accepting applicants (actual treatment depends on partnership terms). SUSPENDED - not searchable, reachable only by specific job link, not accepting applicants and can go back to PROMOTED /LISTED state. TERMINATED – terminal state and cannot go back to other states. Jobs will not be searchable, nor accept applications and will appear closed to existing applicants. |
String | Yes |
HTML Tags
The following HTML tags are supported for description
and skillsDescription
fields. Other HTML tags will be stripped out, and their contents will be displayed as plain text.
HTML Tag | Description |
---|---|
<b>, <strong> |
Bold / strong |
<u> |
Underline |
<i> |
Italic |
<br> |
Line break |
<p> |
Paragraph |
<ul> |
Unordered list |
<li> |
List element |