Sync Jobs

LinkedIn's Simple Job Posting API enables authorized third parties to post jobs directly to LinkedIn. This is an asynchronous API and you will receive a task id which you can use to see the status of the job, verify whether it successfully posted to LinkedIn, or see if there was an error during creation and view any details about the error. Currently only non-premium jobs are supported by this API.

Throttle Limits

Throttle Limits Requests Per Day (UTC) Records Per Minute
Application maximum 100,000 10,000

Note

  • Please submit batch calls grouped with no more than 100 records in sequential order.
  • Job Postings submitted via this API can be set to expire up to 3 years from now. If expiration is not specified, the default is 180 days.

Test Job Creation

In order to test these APIs we have set up test organization which you can use to create and update sample jobs. Please note that any jobs created to this page will be frequently closed and you should only expect and jobs created to this test organization to be short lived.

You must reach out to your Partner Engineering representative at LinkedIn to have your API application(s) configured properly to interact with our test environment. Once you have finished testing with the job you have just created, please re-post the job, but set the state equal to closed in order to close the job.

How to Test

To test and view jobs that were successfully posted with an availability set to PUBLIC, use your integrationContext id to view the job here: https://www.linkedin.com/jobs/search/?f_C={id}&locationType=Y. For jobs posted with an availability set to PRIVATE_TO_ATS_INTEGRATION, use the development Recruiter contract and use the 1-Click Export feature.

Create Jobs

Use the following endpoint to submit a task to have one or more jobs created asynchronously:

POST https://api.linkedin.com/v2/simpleJobPostings

Request Body Fields

Field Description Format Required
integrationContext Organization this job posting is created for. Must be in the format urn:li:organization:1234 URN Yes
availability Indicates whether the job will be surfaced to job-seekers on linkedin.com or only visible to the customer in LinkedIn products via Middleware integrations. Must be either "PUBLIC" or "PRIVATE_TO_ATS_INTEGRATION" Defaults to "PUBLIC" String No
companyJobCode Unique job posting id within the company's system String Max 50 characters No
externalJobPostingId Unique job id within the applicant tracking system. String Yes
title Title of this job posting String Max 200 characters Yes
description Custom description of the job posting. String Minimum 100 characters Yes
skillsDescription Description of desired skills and experiences. String No
location Geographic location of the job position. Must be in the format "CITY,STATE" or "CITY,COUNTRY" String Only if countryCode and postalCode are not provided
countryCode Country code of the job position. See Country Code examples String Only if location is not provided
postalCode Postal code of the job position. String Only if location is not provided
requisitionOwnerFirstName First name of the requisition owner String No
requisitionOwnerLastName Last name of the requisition owner String No
requisitionOwnerEmail Email of the requisition owner String No
sourceDomain The web domain where this job posting originates from. (e.g. 'www.[your site].com/careers'). String No
state Defines the current state of the job. Must be either "LISTED" or "CLOSED". String Yes
categories Duties specific to a job (e.g. Accounting, Marketing, Sales). String Array No
employmentStatus Job classification. Must be one of: "FULL_TIME", "PART_TIME", "CONTRACT", "TEMPORARY", "OTHER", or "VOLUNTEER" String No
companyApplyUrl Where to redirect applicants to in order to apply for the job. String Yes
listedAt Date job posting was added to partner's system. Epoch in Milliseconds (UTC) Yes
expireAt The job will expire (and no longer be shown to users) at this date. Can be a maximum of three years from time job is sent to LinkedIn. If no expiration date is passed in, the job will default to 180 days expiration. Epoch in Milliseconds (UTC) No

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

sample request

Headers:

Authorization: Bearer {token}
x-restli-method: batch_create

Request Body:

{
  "elements": [
    {
      "integrationContext": "urn:li:organization:2414183",
      "companyApplyUrl": "http://linkedin.com",
      "description": "We are looking for a passionate Software Engineer to design, develop and install software solutions. Software Engineer responsibilities include gathering user requirements, defining system functionality and writing code in various languages. Our ideal candidates are familiar with the software development life cycle (SDLC) from preliminary system analysis to tests and deployment.",
      "employmentStatus": "PART_TIME",
      "externalJobPostingId": "1234",
      "listedAt": 1440716666,
      "state": "LISTED",
      "title": "Software Engineer",
      "countryCode": "us",
      "postalCode": "94131"
    },
    {
      "integrationContext": "urn:li:organization:2414183",
      "companyApplyUrl": "http://linkedin.com",
      "description": "We are looking for a passionate Senior Software Engineer to design, develop and install software solutions. Software Engineer responsibilities include gathering user requirements, defining system functionality and writing code in various languages. Our ideal candidates are familiar with the software development life cycle (SDLC) from preliminary system analysis to tests and deployment.",
      "employmentStatus": "PART_TIME",
      "externalJobPostingId": "789",
      "listedAt": 1440716666,
      "state": "LISTED",
      "title": "Senior Software Engineer",
      "countryCode": "us",
      "postalCode": "94131"
    }
  ]
}

Sample Response

A successful request will return a 200 OK response code, and you will find the simpleJobPostingTaskIDs in the response body.

sample response body

{
    "elements": [
        {
            "id": "urn:li:simpleJobPostingTask:03ff7ca6-dedf-4d92-b856-10669f8fe5ef",
            "status": 202
        },
        {
            "id": "urn:li:simpleJobPostingTask:01c922a8-96cd-4c32-8cc1-40eea169fe01",
            "status": 202
        }
    ]
}

Note

  • Be sure to check the response for error statuses corresponding to individual entities you submit.
  • Task ids are valid for 24 hours

Update Jobs

In order to update a Simple Job Posting, you can just re-post the job with any changed information.

Check the Job Creation Task Status

After creating job postings, you can use the task ids from the response to track the status of the creation of the job postings. Typically the job creation process should take no longer than 5 minutes and it is suggested that you validate the completion of the job creation at least 5 minutes after your initial call to confirm there were no issues during job creation. The task IDs returned will have a lifespan of 24 hours. Possible status values to be returned: IN_PROGRESS , SUCCEEDED , FAILED.

Throttle Limits

Throttle Limits Daily Call Limit (UTC)
Application maximum 300,000
GET https://api.linkedin.com/v2/simpleJobPostingTasks?ids={simpleJobPostingTaskUrn 1}&ids={simpleJobPostingTaskUrn 2}

Sample Response

{
    "errors": {},
    "results": {
        "urn:li:simpleJobPostingTask:07ae37ab-2216-4d0f-97a0-53a516681c8f": {
            "id": "urn:li:simpleJobPostingTask:07ae37ab-2216-4d0f-97a0-53a516681c8f",
            "status": "SUCCEEDED"
        },
        "urn:li:simpleJobPostingTask:edc75eb8-2c4f-4ac7-a64f-2ee583446f83": {
            "id": "urn:li:simpleJobPostingTask:edc75eb8-2c4f-4ac7-a64f-2ee583446f83",
            "status": "IN_PROGRESS"
        }
    },
    "statuses": {}
}

Note

  • Be sure to check the response for error statuses corresponding to individual entities you submitted.