You can either use JSON or XML. Depending on your choice of endpoint the submitted data should follow the same format. It will be the same for the returned data. Available endpoints are following:
| XML endpoint | https://api.whatjobs.com/api/v1/jobs/submit/xml |
| JSON endpoint | https://api.whatjobs.com/api/v1/jobs/submit/json |
The API access is restricted to those with an access token. This token must be passed in an HTTP custom header
x-feed-token.
To retrieve your Authentication Token please contact us.
| Name | Required | Description |
|---|---|---|
| data | Yes | The XML or JSON attached to the body of the request. Make sure that data in the POST body matches the endpoint you’re making requests to. The table below goes into more details on what’s accepted. |
Below are the fields that can be used in the request when the command is
set to
add.
| Field name | Required | Type | Additional info |
|---|---|---|---|
| command | Yes | Fixed | Expected value: add
|
| countryCode | Yes | String | Expected value: Use country codes in the ISO 3166-1 alpha-2 format (e.g.,
US for United States, IN for India, GB for
United Kingdom).
|
| jobIdent | Yes | Numeric | This is the unique identifier for each job posting. The same key should be used when updating, pausing, or activating a job. |
| cpcValue | No | Numeric | Expected value: Accepts positive decimal values. (e.g.,1.06,10.45). |
| cpaValue | No | Numeric | Expected value: Accepts positive decimal values (e.g.,5.06,12.50). |
| jobTitle | Yes | String | Cannot be updated once job is set LIVE;
Free text,
Minlength 3
and
Maxlength 120
char, Should be shown with this label
Job Title in the post a job page of employer dashboard.
|
| jobWorkFrom | Yes | Numeric | Cannot be updated once job is set LIVE;
Should be shown with this label
Work From in the post a job page with option values 1 - Home 2 - Office 3 - Hybrid 4 - Remote 5 - Onsite |
| jobLocationAddress | Yes, if jobWorkFrom is not set to Remote |
String | Cannot be updated once job is set LIVE;
Free text,
MinLength 5
Maxlength 64
, Should be shown with this label
Street Address (Optional) in post a job page.
|
| city | Yes, if jobWorkFrom is not set to Remote |
String | Cannot be updated once job is set LIVE;
Free text, Shows cities of respective state, Should be shown with this label
City in post a job page.
|
| state | Yes, if jobWorkFrom is not set to Remote |
String | Cannot be updated once job is set LIVE;
Free text, Onchange of state, cities are shown based on that, Should be shown with
this label
State in post a job page.
|
| zip | Yes, if jobWorkFrom is not set to Remote |
String | Cannot be updated once job is set LIVE;
Free
text, 3
Maxlength 9
, Should be shown with this label
ZIP Code (Optional) in post a job page.
|
| salaryDisplayType | No | Numeric | Should be shown with this label
Salary Visibility in the post a job page with option values 1 - Negotiable 2 - Not disclosed 99 - Disclose |
| jobPaymentRangeFrom | Yes, if
Salary Visibility is set to Disclose
|
String | Should be shown with this label
Minimum in the post a job page under Salary section;Should be always
less than Maximum.
|
| jobPaymentRangeTo | Yes, if
Salary Visibility is set to Disclose
|
String | Should be shown with this label
Maximum in the post a job page under Salary section; Should be always
greater that Minimum.
|
| jobPaymentRangeType | Yes, if
Salary Visibility is set to Disclose
|
Numeric | Should be shown with this label
Rate in the post a job page under Salary section with option values
1 - per day 2 - per month 3 - per year 4 - per week 5 - per hour |
| jobSupplementPayOptions | No | Numeric | Should be shown with this label
Additional (Optional) in the post a job page with values to select 2 - Bonus Scheme 3 - Tips 4 - Commission Pay 5 - Performance Bonus |
| jobStartType | Yes | Numeric |
Should be shown with this label
Start Date in the post a job page with option values 1 - To be agreed upon acceptance 2 - As soon as possible 3 - Specific Date |
| jobStartByDate | Yes, if
Start Date is selected to Specific Date
|
Date | Should be shown with this label
Select a date in the post a job page
|
| jobEmploymentType | Yes | Numeric |
Should be shown Under label
Job Type in the post a job page with option values 1 - Full time 2 - Part Time |
| jobEmploymentSubType | Yes | Numeric |
Should be shown Under label
Job Type in the post a job page with option values 1 - Contract 2 - Seasonal 3 - Temporary 4 - Permanent 5 - Freelance 6 - Apprenticeship 7 - Graduate 8 - Maternity cover |
| jobPeriod | Yes,
jobEmploymentSubType is set to 1 (Contract)
|
Numeric |
Should be shown Under label
Contract Durationas Job Period in the post a job page
with option values 1 - Days 2 - Months 3 - Year |
| jobLength | Yes,
jobEmploymentSubType is set to 1 (Contract)
|
Numeric |
Should be shown Under label
Contract Duration as Job Length in the post a job page
with option values |
| jobScheduleType | Yes | Numeric |
Should be shown with label
Job Schedule in the post a job page with option values 1 - 8 hour shift 10 - No weekends 11 - Overtime 12 - Other 2 - 10 hour shift 3 - 12 hour shift 4 - Day shift 5 - Night shift 6 - Monday to Friday 7 - Holiday 8 - Weekend availability 9 - Weekends only |
| jobScheduleTypeOther | Yes, if
Job Schedule is selected to Other
|
String | The field accepts data as paragraph for description purpose, Minimum accepted words 30 and Maximum accepted words 300 |
| jobSector | Yes | String | The accepted list of industries / job sectors can be found here .
Should be shown with label Job Sector in the post a job page.
|
| jobDescription | Yes | String | Free text, additional job description. Should be shown with label
Main Job Description in the post a job page, Minimum desc words 150 , Maximum desc words 1000 , Maximum uppercase Percentage 20 |
| jobSkills | No | String | Suggests to add skills with years of experience, Should be shown with label
Skills (Recommended) (Optional) in the post a job page
|
| jobOpeningCount | Yes | String | Minimum input value
is 1 and
maximum is 100
, Should be shown with label
How many people do you want to hire for this opening? in the post a job
page
|
| jobApplicationType | Yes | Numeric |
Should be shown with label
Application Requirements in the post a job page with option values 1 - Yes, a CV is required 2 - Apply URL |
| jobCommunicationMail | Yes, if
Application Requirements is 1
|
String |
Should be shown with label
Send application updates for this job to in the post a job page, when
Application Requirements is selected to - Yes, a CV is required
|
| jobCommunicationURL | Yes, if
Application Requirements is 2
|
String |
Should be shown with label
Application URL in the post a job page, when Application Requirements
is selected to - Apply URL
|
| jobReferenceId | No | String |
Should be shown with label
Job Reference ID (Optional) in the post a job page
|
| companyName | No | String | |
| companyDescription | No | String |
<?xml version="1.0" encoding="UTF-8"?>
<jobs>
<job>
<command><![CDATA[add]]></command>
<countryCode><![CDATA[US]]></countryCode>
<jobIdent><![CDATA[435]]></jobIdent>
<jobTitle><![CDATA[Sample Account Manager]]></jobTitle>
<city><![CDATA[New York]]></city>
<state><![CDATA[New York]]></state>
<jobLocationAddress><![CDATA[Sample Street]]></jobLocationAddress>
<zip><![CDATA[28153]]></zip>
<jobPaymentRangeFrom><![CDATA[50000]]></jobPaymentRangeFrom>
<jobPaymentRangeTo><![CDATA[70000]]></jobPaymentRangeTo>
<jobPaymentRangeType><![CDATA[3]]></jobPaymentRangeType>
<jobSupplementPayOptions><![CDATA[4]]></jobSupplementPayOptions>
<jobWorkFrom><![CDATA[5]]></jobWorkFrom>
<jobStartType><![CDATA[2]]></jobStartType>
<jobStartByDate><![CDATA[2024-08-01]]></jobStartByDate>
<jobEmploymentType><![CDATA[1]]></jobEmploymentType>
<jobEmploymentSubType><![CDATA[4]]></jobEmploymentSubType>
<jobScheduleType><![CDATA[1]]></jobScheduleType>
<jobScheduleTypeOther><![CDATA[]]></jobScheduleTypeOther>
<jobPeriod><![CDATA[permanent]]></jobPeriod>
<jobLength><![CDATA[0]]></jobLength>
<jobOpeningCount><![CDATA[3]]></jobOpeningCount>
<jobSector><![CDATA[Driving & Transport]]></jobSector>
<jobDescription><![CDATA[Sample Description ...with html tag support]]></jobDescription>
<jobCommunicationType><![CDATA[1]]></jobCommunicationType>
<jobCommunicationMail><![CDATA[sample@email.com]]></jobCommunicationMail>
<jobCommunicationURL><![CDATA[https://wwww.company.com/valid-url]]></jobCommunicationURL>
<jobReferenceId><![CDATA[TC12345]]></jobReferenceId>
<jobSkills>
<array>
<item>Java</item>
<item>Python</item>
<item>SQL</item>
</array>
</jobSkills>
</job>
</jobs>
XML cURL Sample for Add Command
curl 'https://api.whatjobs.com/api/v1/jobs/submit/xml' \
--header 'x-subscription-token: XXX' \
--form 'data="<?xml version=\"1.0\" encoding=\"UTF-8\"?><jobs><job><command><![CDATA[add]]></command><countryCode><![CDATA[US]]></countryCode><jobIdent><![CDATA[435]]></jobIdent><jobTitle><![CDATA[Sample Account Manager]]></jobTitle><city><![CDATA[New York]]></city><state><![CDATA[New York]]></state><jobLocationAddress><![CDATA[Sample Street]]></jobLocationAddress><zip><![CDATA[28153]]></zip><jobPaymentRangeFrom><![CDATA[50000]]></jobPaymentRangeFrom><jobPaymentRangeTo><![CDATA[70000]]></jobPaymentRangeTo><jobPaymentRangeType><![CDATA[3]]></jobPaymentRangeType><jobSupplementPayOptions><![CDATA[4]]></jobSupplementPayOptions><jobWorkFrom><![CDATA[5]]></jobWorkFrom><jobStartType><![CDATA[2]]></jobStartType><jobStartByDate><![CDATA[2024-08-01]]></jobStartByDate><jobEmploymentType><![CDATA[1]]></jobEmploymentType><jobEmploymentSubType><![CDATA[4]]></jobEmploymentSubType><jobScheduleType><![CDATA[1]]></jobScheduleType><jobScheduleTypeOther><![CDATA[]]></jobScheduleTypeOther><jobPeriod><![CDATA[permanent]]></jobPeriod><jobLength><![CDATA[0]]></jobLength><jobOpeningCount><![CDATA[3]]></jobOpeningCount><jobSector><![CDATA[Driving & Transport]]></jobSector><jobDescription><![CDATA[Sample Description ...with html tag support]]></jobDescription><jobCommunicationType><![CDATA[1]]></jobCommunicationType><jobCommunicationMail><![CDATA[sample@email.com]]></jobCommunicationMail><jobCommunicationURL><![CDATA[https://wwww.company.com/valid-url]]></jobCommunicationURL><jobReferenceId><![CDATA[TC12345]]></jobReferenceId><jobSkills><array><item>Java</item><item>Python</item><item>SQL</item></array></jobSkills></job></jobs>"'
XML Sample for Update Command
<?xml version="1.0" encoding="UTF-8"?>
<jobs>
<job>
<command><![CDATA[update]]></command>
<countryCode><![CDATA[US]]></countryCode>
<jobIdent><![CDATA[435]]></jobIdent>
<jobPaymentRangeFrom><![CDATA[50000]]></jobPaymentRangeFrom>
<jobPaymentRangeTo><![CDATA[70000]]></jobPaymentRangeTo>
<jobPaymentRangeType><![CDATA[3]]></jobPaymentRangeType>
<jobSupplementPayOptions><![CDATA[4]]></jobSupplementPayOptions>
<jobWorkFrom><![CDATA[5]]></jobWorkFrom>
<jobStartType><![CDATA[2]]></jobStartType>
<jobStartByDate><![CDATA[2024-08-01]]></jobStartByDate>
<jobEmploymentType><![CDATA[1]]></jobEmploymentType>
<jobEmploymentSubType><![CDATA[4]]></jobEmploymentSubType>
<jobScheduleType><![CDATA[1]]></jobScheduleType>
<jobScheduleTypeOther><![CDATA[]]></jobScheduleTypeOther>
<jobPeriod><![CDATA[permanent]]></jobPeriod>
<jobLength><![CDATA[0]]></jobLength>
<jobOpeningCount><![CDATA[3]]></jobOpeningCount>
<jobSector><![CDATA[16195]]></jobSector>
<jobDescription><![CDATA[Sample Description ...with html tag support]]></jobDescription>
<jobReferenceId><![CDATA[TC12345]]></jobReferenceId>
</job>
</jobs>
XML cURL Sample for Update Command
curl 'https://api.whatjobs.com/api/v1/jobs/submit/xml' \
--header 'x-subscription-token: XXX' \
--form 'data="<?xml version=\"1.0\" encoding=\"UTF-8\"?><jobs><job><command><![CDATA[update]]></command><countryCode><![CDATA[US]]></countryCode><jobIdent><![CDATA[435]]></jobIdent><jobPaymentRangeFrom><![CDATA[50000]]></jobPaymentRangeFrom><jobPaymentRangeTo><![CDATA[70000]]></jobPaymentRangeTo><jobPaymentRangeType><![CDATA[3]]></jobPaymentRangeType><jobSupplementPayOptions><![CDATA[4]]></jobSupplementPayOptions><jobWorkFrom><![CDATA[5]]></jobWorkFrom><jobStartType><![CDATA[2]]></jobStartType><jobStartByDate><![CDATA[2024-08-01]]></jobStartByDate><jobEmploymentType><![CDATA[1]]></jobEmploymentType><jobEmploymentSubType><![CDATA[4]]></jobEmploymentSubType><jobScheduleType><![CDATA[1]]></jobScheduleType><jobScheduleTypeOther><![CDATA[]]></jobScheduleTypeOther><jobPeriod><![CDATA[permanent]]></jobPeriod><jobLength><![CDATA[0]]></jobLength><jobOpeningCount><![CDATA[3]]></jobOpeningCount><jobSector><![CDATA[16195]]></jobSector><jobDescription><![CDATA[Sample Description ...with html tag support]]></jobDescription><jobReferenceId><![CDATA[TC12345]]></jobReferenceId></job></jobs>"'
XML Sample for Pause Command
<?xml version="1.0" encoding="UTF-8"?>
<jobs>
<job>
<command><![CDATA[pause]]></command>
<countryCode><![CDATA[US]]></countryCode>
<jobIdent><![CDATA[435]]></jobIdent>
</job>
</jobs>
XML cURL Sample for Pause Command
curl 'https://api.whatjobs.com/api/v1/jobs/submit/xml' \
--header 'x-subscription-token: XXX' \
--form 'data="<?xml version=\"1.0\" encoding=\"UTF-8\"?><jobs><job><command><![CDATA[pause]]></command><countryCode><![CDATA[US]]></countryCode><jobIdent><![CDATA[435]]></jobIdent></job></jobs>"'
XML Sample for Activate Command
<?xml version="1.0" encoding="UTF-8"?>
<jobs>
<job>
<command><![CDATA[activate]]></command>
<countryCode><![CDATA[US]]></countryCode>
<jobIdent><![CDATA[435]]></jobIdent>
</job>
</jobs>
XML cURL Sample for Activate Command
curl 'https://api.whatjobs.com/api/v1/jobs/submit/xml' \
--header 'x-subscription-token: XXX' \
--form 'data="<?xml version=\"1.0\" encoding=\"UTF-8\"?><jobs><job><command><![CDATA[activate]]></command><countryCode><![CDATA[US]]></countryCode><jobIdent><![CDATA[435]]></jobIdent></job></jobs>"'
JSON Sample for Add Command
[
{
"command": "add",
"countryCode":"US",
"jobIdent": "435",
"jobTitle": "Sample Job Title",
"city": "Dallas",
"state": "Texas",
"jobLocationAddress": "Sample Address",
"zip": "28153",
"jobPaymentRangeFrom": "500",
"jobPaymentRangeTo": "1000",
"salaryDisplayType": 99,
"jobPaymentRangeType": 3,
"jobSupplementPayOptions": 4,
"jobWorkFrom": 5,
"jobStartType": 2,
"jobStartByDate": "2024-08-01",
"jobEmploymentType": 1,
"jobEmploymentSubType": 4,
"jobScheduleType": 1,
"jobScheduleTypeOther": "",
"jobPeriod": "permanent",
"jobLength": 0,
"companyName": "Sample Company Name",
"companyDescription": "A sample company description",
"jobOpeningCount": 3,
"jobSector": "Customer Service & Helpdesk",
"jobDescription": "Sample Description ...with html tag support",
"jobCommunicationMail":"sample_email@domain.com",
"jobCommunicationURL": "https://wwww.company.com/valid-url",
"jobReferenceId": "EXAMPLE123",
"jobSkills": [ "skill1", "skill2", "skill3"]
}
]
JSON cURL Sample for Add Command
curl 'https://api.whatjobs.com/api/v1/jobs/submit/json' \
--header 'x-feed-token: XXX' \
--form 'data="[{\"command\":\"add\",\"countryCode\":\"US\",\"jobIdent\":\"435\",\"jobTitle\":\"Sample Job Title\",\"city\":\"Dallas\",\"state\":\"Texas\",\"jobLocationAddress\":\"Sample Address\",\"zip\":\"28153\",\"jobPaymentRangeFrom\":\"500\",\"jobPaymentRangeTo\":\"1000\",\"salaryDisplayType\":99,\"jobPaymentRangeType\":3,\"jobSupplementPayOptions\":4,\"jobWorkFrom\":5,\"jobStartType\":2,\"jobStartByDate\":\"2024-08-01\",\"jobEmploymentType\":1,\"jobEmploymentSubType\":4,\"jobScheduleType\":1,\"jobScheduleTypeOther\":\"\",\"jobPeriod\":\"permanent\",\"jobLength\":0,\"companyName\":\"Sample Company Name\",\"companyDescription\":\"A sample company description\",\"jobOpeningCount\":3,\"jobSector\":\"Customer Service & Helpdesk\",\"jobDescription\":\"Sample Description ...with html tag support\",\"jobCommunicationMail\":\"sample_email@domain.com\",\"jobCommunicationURL\":\"https://wwww.company.com/valid-url\",\"jobReferenceId\":\"EXAMPLE123\",\"jobSkills\":[\"skill1\",\"skill2\",\"skill3\"]}]"'
JSON Sample for Update Command
[
{
"command": "update",
"countryCode": "US",
"jobIdent": "435",
"jobTitle": "Sample Account Manager",
"city": "Dallas",
"state": "Texas",
"jobDescription": "Sample Description ...with html tag support",
"jobSkills": [ "Java", "Python", "SQL"]
}
]
JSON cURL Sample for Update Command
curl 'https://api.whatjobs.com/api/v1/jobs/submit/json' \
--header 'x-feed-token: XXX' \
--form 'data="[{\"command\":\"update\",\"countryCode\":\"US\",\"jobIdent\":\"435\",\"jobTitle\":\"Sample Account Manager\",\"city\":\"Dallas\",\"state\":\"Texas\",\"jobDescription\":\"Sample Description ...with html tag support\",\"jobSkills\":[\"Java\",\"Python\",\"SQL\"]}]"'
JSON Sample for Pause Command
[
{
"countryCode":"US",
"command": "pause",
"jobIdent": "435"
}
]
JSON cURL Sample for Pause Command
curl 'https://api.whatjobs.com/api/v1/jobs/submit/json' \
--header 'x-feed-token: XXX' \
--form 'data="[{\"countryCode\":\"US\",\"command\":\"pause\",\"jobIdent\":\"435\"}]"'
JSON Sample for Activate Command
[
{
"countryCode":"US",
"command": "activate"
"jobIdent": "435"
}
]
JSON cURL Sample for Activate Command
curl 'https://api.whatjobs.com/api/v1/jobs/submit/json' \
--header 'x-feed-token: XXX' \
--form 'data="[{\"countryCode\":\"US\",\"command\":\"activate\",\"jobIdent\":\"435\"}]"'
Depending on action’s result the returned HTTP status code can be one of the values below.
| Status Code | Reason | Returned message addressee | Description |
|---|---|---|---|
| 200 | Success | End user | This is the result of a successful action and the returned message variable value should be shown to the end user. |
| 203 | Error in the user data | End user | This happens each time the end user enters invalid information. The returned message should be shown to the user. For example, when a user enters an invalid email address or doesn't have sufficient credit. |
| 400 | Bug in the ATS configuration | ATS | It means there was an issue in the submitted data structure. This happens when
there is a bug in the ATS configuration. For example, the value of command
parameter is something other than
add, update, pause, activate, or the provided xml or json data is
invalid.
|
| 401 | Unauthorized ATS token in header | ATS | This happens when the ATS token provided in the header as
x-feed-token is not valid in the API Request configuration.
|
| 503 | API Error | ATS | The API is temporary unavailable and could not handle the request for a while. The returned message provides more information. In this case, the returned result can be an HTML. |
The returned response will be XML or JSON depends on the selected endpoint. All responses will contain the variables below.
| Name | Description |
|---|---|
| success | A boolean value indicates the status of the returned response which can be True (With the HTTP code of 200) or False (With the HTTP code of 203, 400 or 503). |
| jobTitle | Contains the job title and an index on successful
add command execution and null otherwise.
|
| jobID | Contains the job id on successful
add command execution and null otherwise. This id should be
provided on pause , update and activate commands.
|
| message | The returned message should be shown to the end user when HTTP code is either 200 or 203. |
| jobUrl | It contains the job URL on successful
add command execution and null otherwise.
|
<?xml version="1.0" encoding="UTF-8" ?>
<responses>
<response>
<success>true</success>
<jobTitle>
<![CDATA[1:Sample Job Title]]>
</jobTitle>
<jobID>
<![CDATA[185394449]]>
</jobID>
<message>
<![CDATA[The job has been added successfully.]]>
</message>
<jobUrl>
<![CDATA[https://uk.whatjobs.com/job/sample-job-example-url]]>
</jobUrl>
</response>
</responses>
XML success response with HTTP code of 200
<?xml version="1.0" encoding="UTF-8" ?>
<responses>
<response>
<success>true</success>
<job_index>
<![CDATA[1:1975777033]]>
</job_index>
<message>
<![CDATA[The job 'Sample Job Title' is paused successfully.]]>
</message>
</response>
</responses>
XML error response with HTTP code of 203
<?xml version="1.0" encoding="UTF-8" ?>
<responses>
<response>
<success>false</success>
<job_index>
<![CDATA[1:]]>
</job_index>
<message>
<jobTitle>
<jobTitle>
<item0>
<![CDATA[Please fill in the required field.]]>
</item0>
</jobTitle>
</jobTitle>
</message>
</response>
</responses>
XML error response with HTTP code of 400
<?xml version="1.0" encoding="UTF-8" ?>
<responses>
<response>
<success>false</success>
<message>
<![CDATA[The submitted data is corrupted]]>
</message>
</response>
</responses>
JSON success response with HTTP code of 200
{
"response": {
"success": true,
"jobTitle": "1:Sample Job Title",
"jobID": 185394449,
"message": "The job has been added successfully.",
"jobUrl": "https://uk.whatjobs.com/job/sample-job-example-url"
}
}
JSON success response with HTTP code of 200
{
"response": {
"success": true,
"job_index": "1:1937684686",
"message": "The job 'Sample Job Title' is paused successfully."
}
}
JSON error response with HTTP code of 203
{
"response": {
"success": false,
"job_index": "1:1937684726",
"message": "The provided jobID for updating does not belong to this employer."
}
}
JSON error response with HTTP code of 400
{
"response": {
"success": false,
"message": "The submitted data is corrupted"
}
}
Depending on the application method when a user applies for a job, we will either use
jobCommunicationMail or
jobCommunicationURL to send the applicant's details to ATS by email; or
redirect the user to the provided URL. If both variables values are available, the
default method used will be the application by email.