Adding Support for Snagajob's Easy Apply
This resource contains integration instructions for our ATS partners. Enabling Easy Apply lets applicants use their Snagajob profile to apply to jobs.
Last updated
Was this helpful?
This resource contains integration instructions for our ATS partners. Enabling Easy Apply lets applicants use their Snagajob profile to apply to jobs.
Last updated
Was this helpful?
Before implementing Easy Apply, please fill out our to obtain your API secret and become a registered partner with Snagajob. We will not pass Easy Apply application data to unregistered partners.
You pass us job postings via an XML feed with the qualifications per requisition.
You pass us an endpoint URL (per job) via your feed within the <PostUrl>
XML element
Example: <PostUrl>https://myapplicantapi.com/sajeasyapply</PostUrl>
(Optional) You pass us a URL containing JSON formatted screening questions in the <ScreeningQuestionsUrl>
element per job.
We post your jobs and enable our Easy Apply application experience.
We send the application data back to the PostUrl each time a worker applies. Data is transmitted to the URL specified in the <PostUrl>
element.
Please reference for a list of XML feed elements to add to your feed files to enable Easy Apply.
Converting your postings to Easy Apply allows workers to apply to your jobs directly on Snagajob with their profile.
To convert your postings to Easy Apply, partners must add a <PostUrl>
XML element to each job in their feed containing an HTTPS endpoint that Snagajob should POST applications to.
See this XML example:
<PostUrl>https://myapplicantapi.com/where-applications-should-go</PostUrl>
Format screener questions in JSON and post them to a URL (HTTPS) included for each <Item>
in the <ScreeningQuestionsUrl>
element. Snagajob does not host screening questions on your behalf.
<ScreeningQuestionsUrl>https://myapplicantapi.com/where-we-find-questions</ScreeningQuestionsUrl>
This section lists the parameters used in building all question types. For examples of specific question types, refer to Screening question types.
id
Yes
Unique ID for this question.
any string
question-123
type
Yes
Describes the type of question.
select multiselect textarea
textarea
question
Yes
The question text that applicants see.
any string
Are you 18 years or older?
options
Yes for type=select
and type=multiselect
The list of options available for the worker to answer.
JSON
[{ "value":"1", "label":"Yes" },
{ "value":"2", "label":"No" }]
value
Yes for type=select
and type=multiselect
The value
corresponds to each option returned for questions with multiple options.
any string
1
label
Yes for type=select
and type=multiselect
The text displayed for each corresponding option.
any string
Yes
required
No
Allows you to set a question as required. When required:true
is present, Snagajob forces a non-empty text field or a non-empty selection.
boolean
"required":true
format
No
The accepted format of the input. If left null
, we will default to a string
type.
Supported type enforcement: - integer - decimal
”format“: “integer”
condition
No
Marks a question as conditional, depending on the answer to a previous select question. Specify the id of the previous question and the option value that activates this question.
For example, you might ask applicants if they’ve previously worked for a specific employer. Then, depending on their selection, you could offer another question to describe their experience.
JSON
"condition": { "id": "parent", "value": 0}
select
This is a question type that presents all available options and allows the respondent to choose a single answer. Used for questions that should only have one answer.
Example:
multiselect
This is a multiple-choice question that allows the user to select multiple answers.
Example:
textarea
A question that displays a text entry field.
Example:
Making questions conditional
This is a question that may or may not be displayed based on the responses to previous questions. For instance, you may inquire if the applicants have worked for a particular employer before. Then, depending on their answer, you could present another question to have them describe their experience.
Example:
To accept candidate data via API, you must include a POST URL on each posting in the XML feed you wish to accept programmatically.
Specify a URL where Snagajob will send a POST
request containing the application data. Must be HTTPS
.
Example URL:
<PostUrl>https://myapplicantapi.com/where-applications-should-go</PostUrl>
id
Yes
Unique ID for the application
string
applicantAddress
Partially
JSON object representing the user's location.
object
applicantAddress.line1
No
The address line 1 of the Candidate’s address
string
applicantAddress.line2
No
The address line 2 of the Candidate’s address
string
applicantAddress.city
No
The city of the Candidate’s address
string
applicantAddress.stateProvCode
No
The state province code of the Candidate’s address
string
applicantAddress.postalCode
Yes
The postal code of the Candidate’s address
string
emailAddress
Yes
The email address of the Candidate.
string
employment
No
JSON object representing the user's work history.
object
employment.employerName
No
The company's name.
string
employment.endDate
No
A string containing a timestamp representing the ending employment date.
string
employment.jobTitle
No
The title of the job.
string
employment.startDate
No
A string containing a timestamp representing the starting employment date.
string
firstName
Yes
The first name of the Candidate.
string
lastName
Yes
The last name of the Candidate.
string
fullName
Yes
The full name of the Candidate.
string
isAuthorizedToWorkInUs
No
Boolean field indicating a Candidates eligibility to work in the US.
boolean
phoneNumber
Yes
The phone number of the Candidate.
string
[Obsolete] qualifications
No
JSON object representing the user's qualification question answers. This object will continue to be present as vendors transition to the new questionsAndAnswers
object, but will eventually be depreciated.
object
[Obsolete] qualifications.displayText
No
This is the question displayed to the worker.
string
[Obsolete] qualifications.isPass
No
"isPass": true means the worker answered Yes to the question "isPass": false means the worker answered No to the question
boolean
[Obsolete] qualifications.name
No
The name of the qualification
string
[Obsolete] qualifications.required
No
This field signifies if the employer requires the worker to answer 'Yes' ("isPass": true) to be qualified for the role.
boolean
[Obsolete] qualifications.option
No
For Scaling (Type 3) questions, the employer can ask multiple variations of the same question (For example, asking if the worker has more than one type of food certification). This field indicates which answer the isPass answer corresponds to.
int
requisitionId
Yes
The requisition id of the job the Candidate is applying to. This id will match the id value passed into the feed.
string
resume
Yes
JSON object representing Candidate’s resume.
object
resume.contentType
Yes
The content type identified using the resume file's extension.
string
resume.data
Yes
The file's raw binary bytes encoded using base 64.
string
questionsAndAnswers
No
JSON object representing the user's screening questions and answers as outlined above
object
questionsAndAnswers.question
No
JSON object containing the question details
object
questionsAndAnswers.question.id
No
Unique ID for the question
string
questionsAndAnswers.question.question
No
The question text that applicants see.
string
questionsAndAnswers.question.type
No
Describes the type of question.
string
questionsAndAnswers.question.required
No
Identifies if the question contained a required input
boolean
questionsAndAnswers.question.options
No
The list of options that were available for the worker to answer.
array
questionsAndAnswers.answer
No
JSON object containing the answer details
object
questionsAndAnswers.answer.selectedAnswers
No
The answer options selected by the Worker. Note: This field will only be populated for questions with a ”type”:”select”
and ”type”:”multiselect”
array
questionsAndAnswers.answer.answerText
No
The answer text that was submitted by the Worker. Note: This field will only be populated for questions with a ”type”:”textarea”
.
string
ipAddress
No
The IP address of the Candidate’s device
string
userAgent
No
The user agent of the Candidate’s device
string
Snagajob signs each application post request made to your PostUrl
with the HTTP header X-SAJ-Signature
that partner can use to verify the post's authenticity. Snagajob Easy Apply computes the message signature using the HMAC-SHA1 algorithm using the shared API secret. This signature is sent as an X-SAJ-Signature
HTTP header. An X-SAJ-Date
HTTP header is also included and should be used to ignore any requests over 15 minutes old.
The code examples below demonstrate how the message signature is generated.