Sync Premium Jobs API
LinkedIn's Premium Job Posting API enables authorized third parties to post premium jobs directly to LinkedIn on the behalf of LinkedIn Recruiter customers. 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.
Job Posting Field Schema
In order to publish a premium job, you need to construct the request body with all required fields. The API also provides many additional fields to post, which would be used for job recommendation. The more information your application can provide, the more candidates can be reached to satisfy customers’ needs.
See this page for full field schema information.
Authentication
All requests below require access tokens obtained via the OAuth 2 Client Credentials flow.
Throttling
Throttle Limits | Requests Per Day (UTC) | Records Per Minute | Records Per Day |
---|---|---|---|
Application maximum | 100,000 | 2,000 | 60,000 |
Rest.li Concepts
APIs below are built on the top of LinkedIn REST framework rest.li , which are similar as standard REST APIs, but provide more rich features, like field projections, extended request methods etc. It’s highly recommended to read these technical details before development.
Topic
- Publish premium jobs
- Update premium jobs
- Close premium jobs
- Renew premium jobs
- Job posting field schema
- Check the job operation task status
Publish premium jobs
Use the following endpoint to submit a task to have one premium job created asynchronously:
POST https://api.linkedin.com/v2/simpleJobPostings
Note that the header for making the request is X-Restli-Method: batch_create
. The maximum number of jobs which can be submitted during one batch call is 100. If you would like to submit more than 100 jobs at a time, please group your jobs in to collections of 100 and make multiple batch calls.
Sample Request
Sample Header
Authorization: Bearer {access token}
X-restli-method: batch_create
Sample Request Body
{
"elements":[
{
"externalJobPostingId":"PremiumJobPostingG1TC1",
"listingType":"PREMIUM",
"title":"Premium Job Posting G1 TC1",
"description":"<b>Objective of the Position</b><br/> <ul> <li>To develop digital content plan, manage and monitor different content executions for social and online platforms to maximize the communication effectiveness and impact</li> <li>To manage, monitor and keep optimizing the performance of social platforms of MB and AMG</li> <li>To monitor and manage internet word of mouth to keep the health of brand and product image</li></ul>",
"contract":"urn:li:contract:{your_contract_id_01}",
"integrationContext":"urn:li:organization:{your_organization_id_01}",
"companyApplyUrl": "http://linkedin.com/jobpostingG1TC1",
"location":"San Francisco, CA",
"listedAt":1513756352000,
"jobPostingOperationType":"CREATE"
},
{
"externalJobPostingId":"PremiumJobPostingG1TC2",
"listingType":"PREMIUM",
"title":"Premium Job Posting G1 TC2",
"description":"<b>G1 TC2: Objective of the Position</b><br/> <ul> <li>To develop digital content plan, manage and monitor different content executions for social and online platforms to maximize the communication effectiveness and impact</li> <li>To manage, monitor and keep optimizing the performance of social platforms of MB and AMG</li> <li>To monitor and manage internet word of mouth to keep the health of brand and product image</li></ul>",
"contract":"urn:li:contract:{your_contract_id_02}",
"industries":["urn:li:industry:4", "urn:li:industry:99"],
"integrationContext":"urn:li:organization:{your_organization_id_02}",
"companyApplyUrl": "http://linkedin.com/jobpostingG1TC2",
"countryCode": "us",
"postalCode": "94131",
"listedAt":1513756352000,
"jobPostingOperationType":"CREATE",
"posterEmail":"stub@your_poster_email_address"
}
]
}
Sample Response
A successful request will return a 200 OK
response code, and you will find the simpleJobPostingTaskIDs
in the 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 30 days.
- Please ensure that requests do not include duplicate updates to the same
externalJobPostingId
.
Update Premium Jobs
In order to update premium job postings, you can just re-post jobs with any changed information. LinkedIn uses externalJobPostingId
to identify whether a job should be created or updated.
Sample Request
Sample Header
Authorization: Bearer {access token}
X-restli-method: batch_create
Sample Request Body
{
"elements":[
{
"externalJobPostingId":"PremiumJobPostingSMM01",
"title":"Social Media Management",
"description":"<b>Objective of the Position</b><br/> <ul> <li>To develop digital content plan, manage and monitor different content executions for social and online platforms to maximize the communication effectiveness and impact</li> <li>To manage, monitor and keep optimizing the performance of social platforms of MB and AMG</li> <li>To monitor and manage internet word of mouth to keep the health of brand and product image</li></ul>",
"contract":"urn:li:contract:{contract_id}",
"integrationContext":"urn:li:company:{company_id}",
"companyApplyUrl": "http://linkedin.com/jobpostingSMM01",
"listingType":"PREMIUM",
"jobPostingOperationType":"UPDATE",
"location":"San Francisco, CA",
"posterEmail":"recruiter_email@yourcompany.com"
}
]
}
Close Premium Jobs
In order to close premium job postings, you can just re-post jobs but set jobPostingOperationType
to CLOSE
.
Note
Please close jobs previously posted by /jobs
API using /jobs
CLOSE call.
Sample Request
Sample Header
Authorization: Bearer {access token}
X-restli-method: batch_create
Sample Request Body
{
"elements":[
{
"externalJobPostingId":"PremiumJobPostingSMM01",
"title":"Social Media Management",
"description":"<b>Objective of the Position</b><br/> <ul> <li>To develop digital content plan, manage and monitor different content executions for social and online platforms to maximize the communication effectiveness and impact</li> <li>To manage, monitor and keep optimizing the performance of social platforms of MB and AMG</li> <li>To monitor and manage internet word of mouth to keep the health of brand and product image</li></ul>",
"contract":"urn:li:contract:{contract_id}",
"integrationContext":"urn:li:company:{company_id}",
"companyApplyUrl": "http://linkedin.com/jobpostingSMM01",
"listingType":"PREMIUM",
"jobPostingOperationType":"CLOSE",
"location":"San Francisco, CA",
"posterEmail":"recruiter_email@yourcompany.com"
}
]
}
Renew premium jobs
There are three ways to renew premium job postings:
- Re-post premium jobs without any change, it would extend published jobs by 30 days.
- Close previous premium jobs, and re-post premium jobs without any changes.
- Publish new premium jobs with different
externalJobPostingId
.
Check the job operation 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 30 days. Possible status values returned are: 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",
"jobPosting": "urn:li:jobPosting:123456789",
"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.