Partager via


Job Posting Schema

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 companyName field URN integrationContext 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 field. However, this does not guarantee a 100% accurate match with LinkedIn company page
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. Please use one of the below recommended formats:
  • "CITY, STATE, COUNTRY"
  • "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 job posting id within the company’s system for reference. Should be used only when the unique ID for a job in your system is different from the unique ID of the job as in the customer's platform where the job originated. Do not send an empty or null string for this field String Yes, if available on career site.
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 only if the customer does not have contract with LinkedIn and cannot access the Customer Onboarding Widget String Yes, if integrationContext or companyPageUrl is not available, and only if none of them is available.
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 or companyName 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} Contract URN Yes
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.

Recruiter System Connect and CRM Connect Extension Schema

Includes additional attributes required or optional for Recruiter System Connect (RSC) and CRM Connect.

Field Description Type Required
accessRestricted Flag indicating whether the job is visible in the Recruiter UI and 1-Click Export dropdown list. For any ATS that does not have the ATS Integration Configuration set to "JOB_POSTING_VIEWERS" or "APPLICATION_VIEWERS":

  • If accessRestricted is set to true, only recruiters in an ACL group tied to the job will see the job in the 1-Click Export dropdown list and be able to view associated associated applications in the LinkedIn Recruiter UI (In-ATS Indicator and ATS Tab).
  • If accessRestricted is set to false, jobs and applications will be visible for all recruiters in 1 Click Export dropdown list and the Recruiter UI respectively.

    For an ATS which has ATS integration configuration "JOB_POSTING_VIEWER" setting as "ALL_PRODUCT_USERS", jobs will be visible for all recruiters in 1 Click Export dropdown list and in the LinkedIn Recruiter UI.

    For an ATS which has ATS IntegrationConfiguration "APPLICATION_VIEWER" setting "ALL_PRODUCT_USERS", associated applications with jobs will be visible for all recruiters in the LinkedIn Recruiter UI.

  • Boolean No
    availability Valid values are PUBLIC or PRIVATE_TO_ATS_INTEGRATION. Must be PUBLIC for Apply Connect and Premium jobs String Yes
    requisitionOwnerEmail Email of the requisition owner String No
    requisitionOwnerLastName Last name of the requisition owner String No
    requisitionOwnerFirstName First name of the requisition owner String No

    Note

    For Partner ATS who have also integrated for Recruiter System Connect, it is a requirement that they make it optional for customers to choose whether to sync jobs as Private(PRIVATE_TO_ATS_INTEGRATION) or Public.

    Apply Connect Extension Schema

    Includes additional attributes required or optional for Apply Connect

    Field Description Type Required
    onsiteApplyConfiguration Information required to configure job applications to be collected on LinkedIn Onsite ApplyConfiguration 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