Partager via


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:
  • "CITY, STATE"
  • "CITY, PROVINCE"
  • "CITY, COUNTRY"
  • "POSTALCODE, COUNTRYCODE"
  • "COUNTRY" (accepted only for Remote jobs)
  • "COUNTRY CLUSTER" (accepted only for Remote jobs)
To know more about
  • COUNTRY CLUSTER, refer to our Help Article.
  • Best practices to use location field, refer to our Help Article. If your application is unable to match one of the suggested formats please provide the raw location details.
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.
  • US locations - City
  • Non-US locations - City, Country/Region (for example, “London, United Kingdom”)
NOTE: Alternate locations are not supported for RSC and CRM Connect
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.
  • If predefined LinkedIn values are provided, they are displayed on the LinkedIn Job Posting
  • If none of the values match our predefined LinkedIn values, we recommend partner to still provide raw values for offline processing. However, they may not be displayed on LinkedIn Job Posting.
  • If no value is provided, then LinkedIn will infer a value by referencing other fields of the Job Posting
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
  • Hybrid
  • Remote
Remote value should be provided when employee is allowed to work remotely. Hybrid should be provided if the employee is expected to work some days from home and some days from the designated office. On-Site should be used when it is mandatory for employee to work only from the designated office.
  • Remote jobs require either Country only, City and Country, or Country Cluster.
  • For On-site and Hybrid jobs, location field should be in either of the following formats "CITY, STATE, COUNTRY", "CITY,STATE", "CITY, PROVINCE", "CITY, COUNTRY" or "POSTALCODE, COUNTRYCODE"
  • It is recommended to default set the value of this field as On-site, if an employer is unsure about the workplace type of a particular job
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"}
            }
        }
    ]
}

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