Update and Renew Jobs
Set the value for for jobPostingOperationType
to UPDATE
or RENEW
to perform the respective job operation.
API Overview
Use the /simpleJobPosting
API to create, update, renew and close jobs on LinkedIn. This wiki describes how to update and renew jobs. To know more about this API, refer to API Overview.
API Endpoint
Use the following endpoint to submit a task to create, close, update, or renew one or more jobs asynchronously:
POST https://api.linkedin.com/v2/simpleJobPostings
API Authorization
All requests below require access tokens obtained via the OAuth2.0 Client Credentials flow.
Important
We strongly recommend to use same access token for all concurrent and consecutive calls. An access token has a lifespan of 30 mins. Only on expiry of the existing token, new token should be generated.
Sample Request for Update Jobs
In order to update a simple job posting, you can just re-post the job with any changed information and jobPostingOperationType
field value set as UPDATE
.
To know the API Endpoint, Authorization and Throttling refer to Post Jobs on LinkedIn
Refer to Check the Job Operation Task Status for finding the status of update call.
Note
For basic jobs synced for Recruiter System Connect, if you need to update the availability
from PUBLIC
to PRIVATE_TO_ATS_INTEGRATION
for a job, please close the existing job and re-open with the desired availability
.
API 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"
}
]
}
Error Codes
Given below is a list possible error codes that can display while updating a job.
One of the following responses is returned, that contains a JSON object with a status and a message about the error for Post on /simpleJobPostings
.
HTTP CODE | RESPONSE STATUS | ERROR MESSAGE | DESCRIPTION | RESOLUTION |
---|---|---|---|---|
200 | 422 | ERROR :: /{mandatory key} :: field is required but not found and has no default value | Required field is missing in the request body | Refer to the schema documentation and make sure all the required fields are present in the request body |
200 | 422 | ERROR :: /{attribute_name} :: {value} cannot be coerced to Long\n, (Why is \n coming in error message) | When value of the attribute does not match the datatype it accepts,for example, title accepts String but we have provided numerical value |
Ensure that the value provided for attribute should match the datatype it accepts. Please refer to schema documentation for data types of the attributes |
200 | 422 | ERROR :: /{attribute_name} :: {value} cannot be coerced to Long\n,(Why is \n coming in error message) | When value of the attribute does not match the datatype it accepts, for example, title accepts String but we have provided numerical value |
Enure the value provided for attribute should match the datatype it accepts. Please refer to schema documentation for data types of the attributes |
200 | 422 | ERROR :: /jobPostingOperationType :: "UPDATED" is not an enum symbol\n | Wrong value provided for the field jobPostingOperationType |
The value should either be one of CREATE , UPDATE or CLOSE |
400 | 400 | Invalid company apply url for job with externalPartnerId <>, taskUrn <> |
The URL specified for the job posting is in an invalid format | Ensure the url specified is in a valid url |
401 | 401 | Invalid access token | Access token is tampered | Regenerate a new access token |
401 | 401 | The token used in the request has expired | The access token used in Authorization header is a valid token but it has expired | Regenerate a new access token |
403 | 403 | Not enough permissions to access: POST /simpleJobPostings | The application does not have enough permissions to use /simpleJobPostings API | Access to /simpleJobPosting is limited and granted only to apps that have a product-relevant use case. Please reach out to LinkedIn via https://linkedin.zendesk.com/ to request access |
403 | 403 | Caller is not authorized to access the jobs for contract: urn:li:contract:{contract_id} | The application used for posting premium job does not belong to the Job posting contract | 1. Ensure that you are using the correct contract details provided in the Premium Job Posting onboarding email. 2. Ensure that you are using the correct application credentials |
409 | 409 | Cannot close job which is already closed or does not exist | The request payload is trying to close a job which either does not exist or is already closed | Ensure that the jobPostingOperationType value is CREATE while creating new job postings |
422 | 422 | ERROR :: /employmentStatus :: {value} is not an enum symbol | Wrong value provided for the field employmentStatus |
The value should either be one of FULL_TIME , PART_TIME , CONTRACT , INTERNSHIP , TEMPORARY , VOLUNTEER or OTHER |
422 | 422 | ERROR :: /experienceLevel :: {value} is not an enum symbol | Wrong value provided for the field experienceLevel |
The value should either be one of ENTRY_LEVEL , MID_SENIOR_LEVEL , DIRECTOR , EXECUTIVE , INTERNSHIP , ASSOCIATE or NOT_APPLICABLE |
422 | 422 | ERROR :: /state :: {value} is not an enum symbol | Wrong value provided for the field state |
The value should either be one of LISTED or CLOSED |
422 | 422 | ERROR :: /{field} :: enum type is not backed by a String | Field expects an enum value in the form of String but the value passed is not a string. For example state : 123 |
|
500 | 500 | Internal Server Error | When incorrect attribute type is given for example, Integer instead of String | Please check if externalJobPostingId datatype is string in request body |
Renew Jobs
To renew a job, re-post it with jobPostingOperationType
field as RENEW
and no other changes. The renewal operation extends the expiration of job posts by 30 days.
To know the API Endpoint, Authorization and Throttling refer to Post Jobs on LinkedIn
There are two alternate ways to renew job postings:
- Close previous jobs, and re-post jobs without any changes
- Publish new jobs with different
externalJobPostingId