- Question sections
schemaVersionscreenerQuestionsdemographicQuestions- JSON questions parameters
idtypequestiontextoptionsvaluelabelrequiredformatlimitminCharCountminmaxminSelectionCountmaxSelectionCountconditionhierarchicalOptionsqualification- Qualification parameters
typematchrange- Match parameters
typevalues- Range parameters
minmax- Questions types
- textarea
- text
- select
- multiselect
- condition
- hierarchical
- date
- file
- information
- pagebreak
- Automatic population of screener question responses
- Questions schema
- Questions example (JSON)
- Questions schema (OpenAPI YAML)
- Best practices
JSON for screener questions
JSON screener question parameters.
- By using this API and its documentation and building an integration, you agree to the Additional API Terms and Guidelines.
To surface screener questions in the Indeed Apply application flow, you can either:
-
Format them in JSON and host them at an HTTPS URL that you include in each
<job>in the<indeed-apply-questions>parameter under the<indeed-apply-data>element. See Add Indeed Apply screener questions. -
Call the Job Sync API to create a job posting with screener questions.
To verify the syntax of your Screener Questions JSON file, use the Indeed Apply Questions tool.
Do not include phone numbers and email addresses in screener questions. By default, application data includes email addresses. Use Indeed Apply parameters to get phone numbers.
Question sections
schemaVersion
| Description | The version of screener questions for Indeed Apply. When you use the The current version is To accommodate minor upgrades without breaking your integration, keep this value flexible. |
|---|---|
| Values | version number |
| Example | |
screenerQuestions
| Description | General, well-formatted questions that pertain to the underlying job, such as work experience, skills, or certifications. Do not mix demographic questions about ethnicity, gender, or disability in this list. Certain jurisdictions regulate questions related to protected classes of people. Indeed systems and potentially your systems must handle these questions in special ways. Instead place demographic questions in the |
|---|---|
| Values | Object |
| Example | |
demographicQuestions
| Description | Specific, well-formatted questions that pertain to the job applicant's protected class, such as ethnicity, gender, or disability. Certain jurisdictions regulate these sorts of questions. Indeed systems and potentially your systems must handle these questions in special ways. Demographic questions are limited to U.S.-based jobs for EEO compliance. Do not mix general screener questions, such as those pertaining to work experience, skills, or certifications, in this list. Instead place screener questions in the
|
|---|---|
| Values | Object |
| Example | |
JSON questions parameters
id
| Description | Unique ID for this question. |
|---|---|
| Values | any string |
| Example | |
type
| Description | The question type. See the descriptions for each of the allowed values. |
|---|---|
| Values | |
| Example | |
question
"type": "information""type": "pagebreak"| Description | The question text that applicants see. |
|---|---|
| Values | any string |
| Example | |
text
| Description | Not supported for other types. Text that applicants see. |
|---|---|
| Values | any string |
| Example | |
options
| Description | The list of options available. |
|---|---|
| Values | JSON |
| Example | |
value
| Description | The value corresponding to each option. |
|---|---|
| Values | any string |
| Example | |
label
| Description | The text for menu options. Each label for options in select and multiselect questions must be unique within the same question. |
|---|---|
| Values | any string |
| Example | |
required
| Description | If set to true, the question is required, which produces a non-empty text field or selection. Omit this parameter to define questions as optional. If a question is optional and the candidate chooses not to answer, Indeed sends an answer value of "". |
|---|---|
| Values | true |
| Example | |
format
| Description | The accepted format of the input. If used with If used with |
|---|---|
| Values | Text formats:
|
| Example | integer, dd/MM/yyyy |
limit
| Description | For "type": "text" and "type": "textarea", the character limit for the answer. |
|---|---|
| Values | any integer |
| Example | |
minCharCount
| Description | For "type": "text" and "type": "textarea", the minimum number of characters for the answer. minCharCount only applies to non-numeric formats. |
|---|---|
| Values | any integer |
| Example | |
min
| Description | For "format": "integer" or "format": "decimal", the minimum value for the answer. For "type": "date", the date that the answer must be on or after. min must be a value less than or equal to the value set in max. For "type": "date", min must be a date earlier or the same as the value set in max. Validation will fail if min is greater than, or later than, max. |
|---|---|
| Values | any integer for |
| Example | |
max
| Description | For "format": "integer" or "format": "decimal" the maximum value for the answer. For "type": "date", the date the answer must be on or before. max must be a value greater than or equal to the value set in min. For "type": "date", max must be a date later than or the same as the value set in min. Validation will fail if max is less than, or earlier than, min. |
|---|---|
| Values | any integer for |
| Example | |
minSelectionCount
| Description | For "multi-select", the minimum number of options that must be selected. |
|---|---|
| Values | any integer |
| Example | |
maxSelectionCount
| Description | For "multi-select", the maximum number of options that can be selected. |
|---|---|
| Values | any integer |
| Example | |
condition
| Description | Marks a question as conditional, depending on the answer to a previous select question. Specify the id of the previous question as well as the option value that activates this question. For example, you might ask the applicant if they served in the military. If they answer yes, you display a conditional question that asks what branch they served in. |
|---|---|
| Values | JSON |
| Example | |
hierarchicalOptions
| Description | A question that displays additional questions and responses based on previously selected answers. For example, you might ask an applicant to choose a state. Then, depending on what they select, you could offer them a dropdown list of cities within that state. Each hierarchical question is limited to three levels |
|---|---|
| Values | JSON |
| Example | |
qualification
| Description | Questions that ask applicants for qualifications that might be required for the job. These qualifications must meet employer-provided conditions. All applications are delivered to the employer whether or not they meet the qualification criteria. Does not support questions described as The supported question types are |
|---|---|
| Values | Object |
| Example | |
Qualification parameters
type
| Description | Indicates the type of qualification, either
|
|---|---|
| Values | enum: "non-blocking" "knockout" |
| Example | |
match
| Description | Indicates the evaluation method for this question is match. The supported question types are select and multiselect. |
|---|---|
| Values | object See Match parameters. |
| Example | |
range
| Description | Indicates the evaluation method for this question is range, meaning that the user's answers must fall within the range defined by the provided
Only supported for |
|---|---|
| Values | JSON |
| Example | |
Match parameters
type
| Description | Indicates if the applicant's answer must match "any" or "all" of the provided values. |
|---|---|
| Values | enum: "any" "all" Use Default: "any" |
| Example | |
values
| Description | The values that the applicant must match. |
|---|---|
| Values | array |
| Example | |
Range parameters
min
| Description | The minimum value of the accepted range. |
|---|---|
| Values | Any integer for Any decimal for Any date for |
| Example | |
max
| Description | The maximum value of the accepted range. |
|---|---|
| Values | Any integer for Any decimal for Any date for |
| Example | |
Questions types
textarea
A question that displays a multi-line text entry field. Used for questions with long-form answers.
{ "id": "envirotext", "type": "textarea", "question": "Describe your ideal work environment:"}text
A question that displays a single-line text entry field. Used for questions with shorter answers.
For more information on the different formats available for text questions, see the following examples and the JSON screener questions parameters table. The formats are integer, decimal, numeric_text.
No format specification
{ "id": "city", "type": "text", "question": "What city are you located in?", "required": true}Integer
Displays whole numbers; does not allow for decimals or leading zeroes.
{ "id": "age", "type": "text", "question": "Age?", "format": "integer", "min": "16", "max": "75"}Numeric text
Allows for numbers with leading zeroes; does not allow for decimals.
{ "id": "experience", "type": "text", "format": "numeric_text", "question": "How many years of experience do you have in this field?", "required": false}Decimal
Displays numbers with decimals; allows for leading zeroes.
{ "id": "gpa", "type": "text", "format": "decimal", "question": "What was your GPA?", "required": true}select
A question that displays a dropdown menu that allows the applicant to select a single answer. Used for questions with multiple choice answers.
If you include from one to five answer options, they appear with radio buttons. If you include six or more answer options, they appear in a dropdown menu.
{ "id": "gender", "type": "select", "question": "Gender?", "options": [{ "value": "0", "label": "Decline to answer" }, { "value": "1", "label": "Male" }, { "value": "2", "label": "Female" }]}multiselect
A question that displays a list of checkboxes that enables the applicant to select multiple answers. Used for questions with multiple answers.
{ "id": "favoritecolors", "type": "multiselect", "question": "Select your two favorite colors:", "options": [{ "value": "0", "label": "Maize" }, { "value": "1", "label": "Blue" }, { "value": "2", "label": "Green" }]}condition
A question that does or does not appear based on responses to previous questions. For example, you might ask an applicant if they are at least 18 years of age. If they answer no, you ask if they can provide required work documentation.
[{ "id": "profile-atLeast18", "question": "Are you at least 18 years of age?", "required": true, "options": [{ "value": "1", "label": "Yes" }, { "value": "0", "label": "No" }], "type": "select"}, { "id": "profile-permit", "question": "Can you provide a work permit?", "required": true, "condition": { "id": "profile-atLeast18", "value": "0" }, "options": [{ "value": "1", "label": "Yes" }, { "value": "0", "label": "No" }], "type": "select"}]hierarchical
A question that displays additional questions and responses based on previously selected answers. For example, you might ask an applicant to choose a state. Then, depending on what they select, you could offer them a dropdown list of cities within that state. Each hierarchical question is limited to three levels. For example: state/city/county.
Hierarchical questions are similar to conditional questions. However, hierarchical questions may be better suited to certain question types where an initial selection defines potential answers for subsequent questions. Using the hierarchical functionality reduces the total number of questions needed to obtain related information.
This question type is not supported in demographicQuestions.
[{ "id": "hierarchical", "type": "hierarchical", "question": "State", "required": true, "options": [{ "value": "0", "label": "California" }, { "value": "1", "label": "Texas" }, { "value": "2", "label": "New York" }], "hierarchicalOptions": [{ "id": "cali_cities", "options": [{ "value": "0", "label": "San Francisco" }, { "value": "1", "label": "Los Angeles" }], "condition": { "id": "hierarchical", "value": "0" } }, { "id": "texas_cities", "options": [{ "value": "0", "label": "San Antonio" }, { "value": "1", "label": "Austin" }], "condition": { "id": "hierarchical", "value": "1" } }, { "id": "sa_zipcodes", "options": [{ "value": "0", "label": "78212" }, { "value": "1", "label": "78209" }], "condition": { "id": "texas_cities", "value": "0" } }]}]date
A question that displays a text field that only accepts date entry. Used for questions that must be answered with a date.
Format is required when using this screener question type. The format must be dd/MM/yyyy or another locale specific format that meets Unicode CLDR formatting.
Indeed uses the SimpleDateFormat, so month must be formatted as MM. Using mm results in misconfiguration.
The format of type=date impacts how the application is passed to the ATS and the parsing of minimum and maximum values. The job seeker still enters the date based on their locale, not the specified format, and validation error messages are in their locale's format. Use yyyy instead of yy in the format to prevent confusion.
{ "id": "startdate", "required": true, "type": "date", "question": "Start date?", "format": "dd/MM/yyyy", "min": "01/06/2023", "max": "03/10/2023"}file
A question that displays a file upload interface. Used for questions that require a file upload as an answer, such as certifications, portfolios, or example work. As detailed in Application data reference, the answer data returned in the JSON POST request contains three fields: contentType, data, and fileName.
Valid file types are:
docdocxgifjfifjifjpejpegjpgpdfpngrtftiftifftxt
File size limit is 5 MB. The maximum combined limit per application is 15MB, including resume file.
Do not use this question type to acquire resumes. Instead, use the Indeed Apply Resume configuration parameter.
This question type is not supported in demographicQuestions.
{ "id": "file2", "type": "file", "question": "Please attach a recent example of your work.", "required": true, "min": "1", "max": "3"}information
A text display that does not require a response. Creates explanatory text or provide section headings.
You can include the following HTML elements in the text:
<b><p><br><li><ul><ol><a href=" ">
Only HTTP and HTTPS protocols are allowed in URLs. Links open in a new tab.
Do not use <br> to force line breaks after paragraphs. Indeed automatically inserts line breaks between paragraphs.
The condition JSON question parameter is not supported for use with the information question type. See JSON screener questions parameters table.
[{ "id": "first_header", "type": "information", "text": "The next set of questions are <b>optional</b> and are for recording purposes only. Make sure to view the <a href = 'http://www.eeoc.gov/employers/upload/poster_screen_reader_optimized.pdf'> EEO is the Law </a> poster.", "fontsize": 8}]pagebreak
Groups questions on a page. All questions included between two pagebreak types appear on the same page. You can group up to 20 questions on the same page. Indeed defaults to 3 questions per page on desktop and groups all questions onto a single page for mobile.
[{ "id": "page1_open", "type": "pagebreak"}, { "id": "question_sample", "type": "text", "question": "Age?"}, { "id": "page1_close", "type": "pagebreak"}]Automatic population of screener question responses
Only for Japan.
We may automatically pre-populate answers to certain screener questions that a job seeker provided in a previous application.
This applies only when the question text or question type satisfies specific rules.
| Item Category | Suggested Question sample |
|---|---|
| Last name furigana | Last name furigana、last name furigana |
| First name furigana | First name furigana, first name furigana |
| Name Pronunciation | Furigana, furigana |
| Date of birth (year) | Date of birth (year), Date of birth year |
| Date of birth (month) | Date of birth (month), Date of birth month |
| Date of birth (day) | Date of birth (day), Date of birth day |
| Date of birth | Date of birth |
| Gender | Gender |
| Prefecture | Prefecture |
| Nearest train station | Nearest train station |
| Occupation | Occupation, current occupation |
| Postal code | Postal code |
| Municipality | Municipality, city or ward / town or village |
| Town name / address number | Town name and address number, Town name / address number |
| Building name / room number | Building name, building name / room number, address |
| Marital status | Married, unmarried |
Questions schema
This schema describes an endpoint hosted by the ATS and queried by Indeed. It represents questions that an Employer would like to pose to a Job Seeker in a job application administered by Indeed Apply.
Questions example (JSON)
{ "schemaVersion": "1.0", "screenerQuestions": { "questions": [{ "id": "favorite-widget-color", "type": "text", "question": "What is your favorite widget color?" }, { "id": "last-four-social-security", "type": "text", "question": "What are the last four digits of your social security number??", "format": "numeric_text" }, { "id": "org-annual-widget-volume", "type": "text", "question": "How many widgets can you craft in an hour?", "required": true, "format": "integer", "min": 0, "max": 100 }, { "id": "widget-passion", "type": "textarea", "question": "What makes you passionate about widget crafting?" }, { "id": "widget-crafting-license", "type": "select", "question": "Do you have a widget crafting license issued by the Widget Organization for Widgets?", "required": true, "options": [{ "label": "false", "value": "0" }, { "label": "true", "value": "1" }] }, { "id": "widget-crafting-license-certifications", "type": "multiselect", "question": "Please select all certifications on your widget crafting license.", "required": true, "options": [{ "label": "Wooden Widget Certification", "value": "0" }, { "label": "Plastic Widget Certification", "value": "1" }, { "label": "Quantum Foam Widget Certification", "value": "3" }], "condition": { "id": "widget-crafting-license", "value": "1" }, "qualification": { "type": "non-blocking", "match": { "type": "any", "values": ["1", "3"] } } }, { "id": "widget-crafting-state", "type": "hierarchical", "question": "What is the most recent US state, city, and zip code in which you've crafted widgets?", "options": [{ "label": "California", "value": "0" }, { "label": "Texas", "value": "1" }], "hierarchicalOptions": [{ "id": "cali-cities", "options": [{ "label": "SanFrancisco", "value": "0" }], "condition": { "id": "widget-crafting-state", "value": "0" } }, { "id": "texas-cities", "options": [{ "label": "San Antonio", "value": "0" }, { "label": "Austin", "value": "1" }], "condition": { "id": "widget-crafting-state", "value": "1" } }, { "id": "san-antonio-zips", "options": [{ "label": "78212", "value": "0" }, { "label": "78209", "value": "1" }], "condition": { "id": "texas-cities", "value": "0" } }] }, { "id": "widget-crafting-license-expiration", "type": "date", "question": "When does your widget crafting license expire?", "required": true, "format": "dd/MM/yyyy", "condition": { "id": "widget-crafting-license", "value": "1" } }, { "id": "favorite-widget-pic", "type": "file", "question": "Please upload a picture of your most handsomely crafted widget." }, { "id": "page-1", "type": "pagebreak" }, { "id": "strange-widget-disclosure", "type": "information", "text": "The widgets we produce are sometimes flavored strange. By applying to this job you agree that you are comfortable crafting strange flavored widgets." }] }, "demographicQuestions": { "questions": [{ "id": "disabilities", "type": "select", "question": "Do you have a disability?", "options": [{ "label": "false", "value": "0" }, { "label": "true", "value": "1" }], "required": false }] }}Questions schema (OpenAPI YAML)
openapi: "3.0.3"info: title: "Indeed Questions Schema" description: "This defines Indeed's Application Questions schema. As a client of\ \ Indeed who wishes to utilize Indeed Apply to administer job application questions\ \ to job seekers, you must host these this API on a server of your choice. The\ \ schema defines job application questions you or your customer would like to\ \ pose to job seekers via the Indeed Apply product." version: "1.0"servers:- url: "https://YourQuestionsEndpoint.com"tags:- name: "Job Application Question Fetching" description: "Question lists that Indeed will fetch from your configured **indeed-apply-questions**\ \ URL when rendering your job application for a job seeker\n\nCHANGE LOG for this\ \ version:\n* ***BREAKING!*** Root changed to object instead of array\n* Added\ \ root fields ```schmeaVersion```, ```screenerQuestions```, ```demographicQuestions```\n\ * Added ```qualification``` field/concept to numeric\ \ literal, date, select and multiselect question types\n*"paths: /questions: get: tags: - "job application question fetching" summary: "Fetch job application questions" description: "Returns all the questions Indeed needs to faithfully render your\ \ job application for a job seeker" responses: "200": description: "successful operation" content: application/json: schema: $ref: "#/components/schemas/QuestionsBody" example: schemaVersion: "1.0" screenerQuestions: questions: - id: "favorite-widget-color" type: "text" question: "What is your favorite widget color?" - id: "org-annual-widget-volume" type: "text" question: "What are the last four digits of your social security\ \ number??" format: "numeric_text" - id: "last-four-social-security" type: "text" question: "How many widgets can you craft in an hour?" required: true format: "integer" min: 0 max: 100 - id: "widget-passion" type: "textarea" question: "What makes you passionate about widget crafting?" - id: "widget-crafting-license" type: "select" question: "Do you have a widget crafting license issued by the\ \ Widget Organization for Widgets?" required: true options: - label: "false" value: "0" - label: "true" value: "1" - id: "widget-crafting-license-certifications" type: "multiselect" question: "Please select all certifications on your widget crafting\ \ license." required: true options: - label: "Wooden Widget Certification" value: "0" - label: "Plastic Widget Certification" value: "1" - label: "Quantum Foam Widget Certification" value: "3" condition: id: "widget-crafting-license" value: "1" qualification: type: "non-blocking" match: type: "any" values: - "1" - "2" - id: "widget-crafting-state" type: "hierarchical" question: "What is the most recent US state, city, and zip code\ \ in which you've crafted widgets?" options: - label: "California" value: "0" - label: "Texas" value: "1" hierarchicalOptions: - id: "cali-cities" options: - label: "SanFrancisco" value: "0" condition: id: "widget-crafting-state" value: "0" - id: "texas-cities" options: - label: "San Antonio" value: "0" - label: "Austin" value: "1" condition: id: "widget-crafting-state" value: "1" - id: "san-antonio-zips" options: - label: "78212" value: "0" - label: "78209" value: "1" condition: id: "texas-cities" value: "0" - id: "widget-crafting-license-expiration" type: "date" question: "When does your widget crafting license expire?" required: true format: "dd/MM/yyyy" condition: id: "widget-crafting-license" value: "1" - id: "favorite-widget-pic" type: "file" question: "Please upload a picture of your most handsomely crafted\ \ widget." - id: "page-1" type: "pagebreak" - id: "strange-widget-disclosure" type: "information" text: "The widgets we produce are sometimes flavored strange.\ \ By applying to this job you agree that you are comfortable\ \ crafting strange flavored widgets." demographicQuestions: questions: - id: "disabilities" type: "select" question: "Do you have a disability?" options: - label: "false" value: "0" - label: "true" value: "1" required: false "404": description: "Questions not found"components: schemas: QuestionsBody: title: "Questions Body" type: "object" required: - "schemaVersion" properties: schemaVersion: type: "string" description: "This is the [semantic version](https://semver.org) of the\ \ schema. (Or rather, the semantic-version-light. We do not use the 3rd\ \ (PATCH) element.)" screenerQuestions: type: "object" properties: questions: allOf: - $ref: "#/components/schemas/QuestionsList" - description: "The screener questions should be a list of general,\ \ well formatted questions pertaining to the underlying job such\ \ as work experience, skills, certifications, etc. It should ***NOT***\ \ contain demographic questions such as question about ethnicity,\ \ gender, or disability. Questions related to \"protected classes\"\ \ of people are regulated in certain jurisdictions meaning they\ \ must be handled in special ways inside Indeed systems (and potentially\ \ yours). This schema provides a separate list for demographic questions\ \ called \"demographicQuestions\" below." demographicQuestions: type: "object" properties: questions: allOf: - $ref: "#/components/schemas/QuestionsList" - description: "The demographics questions should be a list of specific,\ \ well formatted questions pertaining to the job applicant's \"\ protected class\" (e.g. ethnicity, gender, disability, etc). These\ \ sorts of questions are regulated in certain jurisdictions meaning\ \ they must be handled in special ways in Indeed systems (and potentially\ \ yours). Please do not mix general screener questions such as\ \ those pertaining to work experience, skills, or certifications\ \ into this list. Instead place them in the \"screenerQuestions\"\ \ list above." QuestionsList: title: "Questions List" type: "array" items: $ref: "#/components/schemas/Question" example: questionPlatform: questionSetId: "abc123" Question: type: "object" anyOf: - $ref: "#/components/schemas/TextQuestion" - $ref: "#/components/schemas/TextAreaQuestion" - $ref: "#/components/schemas/SelectQuestion" - $ref: "#/components/schemas/HierarchicalQuestion" - $ref: "#/components/schemas/DateQuestion" - $ref: "#/components/schemas/FileQuestion" - $ref: "#/components/schemas/InformationText" - $ref: "#/components/schemas/PagebreakFormating" discriminator: propertyName: "type" mapping: text: "#/components/schemas/TextQuestion" textarea: "#/components/schemas/TextAreaQuestion" select: "#/components/schemas/SelectQuestion" multiselect: "#/components/schemas/SelectQuestion" hierarchical: "#/components/schemas/HierarchicalQuestion" date: "#/components/schemas/DateQuestion" file: "#/components/schemas/FileQuestion" information: "#/components/schemas/InformationText" pagebreak: "#/components/schemas/PagebreakFormating" TextQuestion: title: "Text Question" type: "object" description: "Displays a single-line text entry field and is used for questions\ \ with shorter answers." anyOf: - $ref: "#/components/schemas/PureTextQuestionAddIn" - $ref: "#/components/schemas/NumericTextQuestionAddIn" - $ref: "#/components/schemas/NumericLiteralTextQuestionAddIn" example: id: "text-question-id" type: "text" question: "What short piece of info are you willing to provide?" required: true PureTextQuestionAddIn: title: "Pure Text Question Add-In" type: "object" example: id: "text-format-default-id" type: "text" question: "Can you provide some normal text?" required: true NumericTextQuestionAddIn: title: "Numeric Text Question Add-In" type: "object" description: "Allows for numbers with leading zeroes; does not allow for decimals." required: - "format" properties: format: type: "string" enum: - "numeric_text" example: id: "text-format-numeric-id" type: "text" question: "Can you provide some numeric text with leading zeros such as 01234?" required: false format: "numeric_text" NumericLiteralTextQuestionAddIn: title: "Numeric Literal Text Question Add In" anyOf: - $ref: "#/components/schemas/DecimalTextQuestionAddIn" - $ref: "#/components/schemas/IntegerTextQuestionAddIn" DecimalTextQuestionAddIn: title: "Decimal Text Question Add-In" type: "object" description: "Numbers with decimals; allows for leading zeroes." required: - "format" properties: format: type: "string" enum: - "decimal" min: type: "number" description: "The minimum value for the answer" max: type: "number" description: "The maximum value for the answer" qualification: $ref: "#/components/schemas/QualificationDecimal" example: id: "text-format-integer" type: "text" question: "Can you provide a decimal between 0.665 and 100.1 inclusive?" required: true format: "decimal" min: 0.665 max: 100.1 QualificationDecimal: title: "Qualification Decimal" allOf: - $ref: "#/components/schemas/QualificationBase" - type: "object" properties: range: type: "object" description: "Indicates the evaluation method for this question is range,\ \ meaning that the user’s answers must fall within the range defined\ \ by the provided ```min``` and/or ```max``` values" anyOf: - required: - "min" properties: min: type: "number" max: type: "number" example: min: 4.5 - required: - "max" properties: min: type: "number" max: type: "number" example: min: 4.5 max: 60.33 QualificationBase: title: "Qualification Base" type: "object" description: "Indicates this question contains the need to\ \ assess if the given answer is correct.\n\nSupported for conditional schema.\ \ Not supported for hierarchical. \n\nQualification questions are marked as\ \ required for applicants to answer\n" required: - "type" properties: type: type: "string" enum: - "non-blocking" description: "Indicates the type of qualification in regards to the effect\ \ on the user’s application in the indeed apply flow.\n * ```non-blocking```\ \ will allow the user to move to the next section\ \ in the apply flow even if the answer does not meet the specification\ \ defined in the qualification.\n" IntegerTextQuestionAddIn: title: "Integer Text Question Add-In" type: "object" description: "Whole numbers; does not allow for decimals or leading zeroes." properties: format: type: "string" enum: - "integer" min: type: "integer" description: "The minimum value for the answer" max: type: "integer" description: "The maximum value for the answer" qualification: $ref: "#/components/schemas/QualificationInteger" example: id: "text-format-integer" type: "text" question: "Can you provide an integer between 0 and 100 inclusive?" required: true format: "integer" min: 0 max: 100 QualificationInteger: title: "Qualification Integer" type: "object" description: "Indicates the evaluation method for this question is range, meaning\ \ that the user’s answers must fall within the range defined by the provided\ \ ```min``` and/or ```max``` values" allOf: - $ref: "#/components/schemas/QualificationBase" - type: "object" properties: range: type: "object" anyOf: - required: - "min" properties: min: type: "integer" max: type: "integer" example: min: 4 max: 60 - required: - "max" properties: min: type: "integer" max: type: "integer" example: max: 60 TextAreaQuestion: title: "Text Area Question" type: "object" description: "Displays a multi-line text entry field and is used for questions\ \ with long-form answers." allOf: - $ref: "#/components/schemas/TextualQuestionBase" - type: "object" required: - "type" properties: type: type: "string" enum: - "textarea" example: id: "textarea-question-id" type: "text" question: "What deep concepts are you thinking about?" required: true TextualQuestionBase: title: "Textual Question Base" type: "object" allOf: - $ref: "#/components/schemas/QuestionBase" - type: "object" properties: limit: type: "integer" description: "The character limit for the answer" QuestionBase: title: "Question Base" type: "object" allOf: - $ref: "#/components/schemas/QuestionItemBase" - type: "object" required: - "question" properties: question: type: "string" description: "The question text that the applicants see." required: type: "boolean" description: "If set to true, the question is required, which produces\ \ a non-empty text field or selection. Omit this parameter to define\ \ questions as optional. If a question is optional and the candidate\ \ chooses not to answer, Indeed sends an answer value of \"\"." condition: type: "object" description: "Marks a question as conditional, depending on the answer\ \ to a previous select question. Specify the id of the previous question\ \ as well as the option value that activates this question. For example,\ \ you might ask the applicant if the have a pertinent license. If they\ \ answer yes, you display a conditional question that asks when it expires." properties: id: type: "string" description: "The unique question id on which the display of this\ \ question depends." value: type: "string" description: "The value that the dependent questions answer must match\ \ before this condition question is displayed." QuestionItemBase: title: "Question Item Base" type: "object" required: - "id" properties: id: type: "string" description: "Unique ID for this question." SelectQuestion: title: "Select Question" type: "object" description: "Types:\n- ***select*** - A question that displays a dropdown menu\ \ that allows the applicant to select a single answer. Used for questions\ \ with multiple choice answers.\n - Note: If you include from 1 to 5 answer\ \ options, they appear with radio buttons. If you include from 6 or more answer\ \ options, they appear in a dropdown menu.\n- ***multiselect*** - A question\ \ that displays a list of checkboxes that enables the applicant to select\ \ multiple answers. Used for questions with multiple answers.\n" allOf: - $ref: "#/components/schemas/QuestionBase" - type: "object" required: - "type" - "options" properties: type: type: "string" enum: - "select" - "multiselect" options: $ref: "#/components/schemas/SelectOptions" qualification: anyOf: - $ref: "#/components/schemas/QualificationSelect" - $ref: "#/components/schemas/QualificationMultiselect" discriminator: propertyName: "type" mapping: select: "#/components/schemas/QualificationSelect" multiselect: "#/components/schemas/QualificationMultiselect" example: id: "select-question-id" type: "select" question: "Please select an option below." required: true options: - label: "no" value: "0" - label: "yes" value: "1" SelectOptions: title: "Select Options" type: "array" items: type: "object" required: - "label" - "value" properties: label: type: "string" value: type: "string" QualificationSelect: title: "Qualification Select" allOf: - $ref: "#/components/schemas/QualificationBase" - type: "object" properties: match: type: "object" description: "Indicates the evaluation method for this question is match,\ \ meaning that the user’s answers must match ```any``` of the provided\ \ values" required: - "values" properties: values: type: "array" items: type: "string" type: type: "string" enum: - "any" default: "any" QualificationMultiselect: title: "Qualification Multiselect" allOf: - $ref: "#/components/schemas/QualificationBase" - type: "object" properties: match: type: "object" description: "Indicates the evaluation method for this question is match,\ \ meaning that the user’s answers must match ```any``` or ```all```\ \ of the provided values" required: - "values" properties: values: type: "array" items: type: "string" type: type: "string" enum: - "all" - "any" default: "any" HierarchicalQuestion: title: "Hierarchical Question" type: "object" description: "A question that displays additional questions and responses based\ \ on previously selected answers. For example, you might ask an applicant\ \ to choose a state. Then, depending on what they select, you could offer\ \ them a dropdown list of cities within that state. Additionally could ask\ \ for a zip code within the city they select. Each hierarchical question is\ \ limited to three levels. For example state -> city -> zip.\nNote: Hierarchical\ \ questions are similar to conditional questions. However, hierarchical questions\ \ may be better suited to certain question types where an initial selection\ \ defines potential answers for subsequent questions. Using the hierarchical\ \ functionality reduces the total number of questions needed to obtain related\ \ information.\n" allOf: - $ref: "#/components/schemas/QuestionBase" - type: "object" required: - "type" - "options" properties: type: type: "string" enum: - "hierarchical" options: $ref: "#/components/schemas/SelectOptions" hierarchicalOptions: type: "array" items: required: - "id" properties: id: type: "string" description: "The identifier of the hierarchical option" options: $ref: "#/components/schemas/SelectOptions" condition: type: "object" required: - "id" - "value" properties: id: type: "string" value: type: "string" example: id: "hierarchical-question-top-id" type: "hierarchical" question: "Can you navigate this nested hierarchy?" options: - label: "Top-level A" value: "0" - label: "Top-level B" value: "1" - label: "Top-level C" value: "2" hierarchicalOptions: - id: "top-level-a-mids-id" options: - label: "Top-level A -> Mid-level 1" value: "0" - label: "Top-level A -> Mid-level 2" value: "1" condition: id: "hierarchical-question-top-id" value: "0" - id: "top-level-b-mids-id" options: - label: "Top-level B -> Mid-level 1" value: "0" - label: "Top-level B -> Mid-level 2" value: "1" condition: id: "hierarchical-question-top-id" value: "1" - id: "top-level-b-mid-1-lows-id" options: - label: "78212" value: "0" - label: "78209" value: "1" condition: id: "top-level-b-mids-id" value: "0" DateQuestion: title: "Date Question" type: "object" description: "A question that displays a text field that only accepts date entry.\ \ Used for questions that must be answered with a date.\nNote: Format is required\ \ when using this screener question type. The format must be dd/MM/yyyy or\ \ another locale specific format that meets Unicode CLDR formatting.\n Indeed\ \ uses the SimpleDateFormat, so month must be formatted as MM. Using mm results\ \ in misconfiguration.\n The format of type=date impacts how the application\ \ is passed to the ATS and the parsing of minimum and maximum values. The\ \ job seeker still enters the date based on their locale, not the specified\ \ format, and validation error messages are in their locale’s format. Use\ \ yyyy instead of yy in the format to prevent confusion.\n" allOf: - $ref: "#/components/schemas/QuestionBase" - type: "object" required: - "type" - "format" properties: type: type: "string" enum: - "date" format: type: "string" enum: - "dd/MM/yyyy" - "integer" min: type: "string" max: type: "string" qualification: $ref: "#/components/schemas/QualificationDate" example: id: "date-question-id" type: "date" question: "Do you have a favorite date?" required: true format: "dd/MM/yyyy" condition: id: "select-question-id" value: "1" QualificationDate: title: "Qualification Date" type: "object" description: "Indicates the evaluation method for this question is range, meaning\ \ that the user’s answers must fall within the range defined by the provided\ \ ```min``` and/or ```max``` values" allOf: - $ref: "#/components/schemas/QualificationBase" - type: "object" properties: range: type: "object" anyOf: - required: - "min" properties: min: anyOf: - type: "string" - type: "integer" max: anyOf: - type: "string" - type: "integer" example: min: 1693586842725 - required: - "max" properties: min: anyOf: - type: "string" - type: "integer" max: anyOf: - type: "string" - type: "integer" example: min: "01/01/2020" max: "12/31/2020" FileQuestion: title: "File Question" type: "object" description: "A question that displays a file upload interface. Used for questions\ \ that require a file upload as an answer, such as certifications, portfolios,\ \ or example work. As detailed in Application data reference, the answer data\ \ returned in the JSON POST request contains three fields: contentType, data,\ \ and fileName.\n\nValid file types are:\n * doc\n * docx\n * gif\n *\ \ jfif\n * jif\n * jpe\n * jpeg\n * jpg\n * pdf\n * png\n * rtf\n \ \ * tif\n * tiff\n * txt\n\n File size limit is 5 MB. The maximum combined\ \ limit per application is 15MB, including resume file.\n" allOf: - $ref: "#/components/schemas/QuestionBase" - type: "object" required: - "type" properties: type: type: "string" enum: - "file" min: type: "string" max: type: "string" example: id: "file-question-id" type: "file" question: "Please upload a file." required: false InformationText: title: "Information Text" type: "object" description: "A text display that does not require a response. Creates explanatory\ \ text or provide section headings.\n\nYou can include the following HTML\ \ elements in the text:\n\n* <b>\n* <p>\n* <br>\n* <li>\n\ * <ul>\n* <ol>\n* <a href=" ">\n\nOnly HTTP and\ \ HTTPS protocols are allowed in URLs. Links open in a new tab.\n\nNote: Do\ \ not use <br> to force line breaks after paragraphs. Indeed automatically\ \ inserts line breaks between paragraphs.\n" allOf: - $ref: "#/components/schemas/QuestionItemBase" - type: "object" required: - "type" - "text" properties: type: type: "string" enum: - "information" text: type: "string" example: id: "information-text-id" type: "information" text: "Here is some information for you to consume: Roses are red" PagebreakFormating: title: "Pagebreak Formating" description: "Groups questions on a page. All questions included between two\ \ pagebreak types appear on the same page. You can group up to 20 questions\ \ on the same page. Indeed defaults to 3 questions per page on desktop and\ \ groups all questions onto a single page for mobile." allOf: - $ref: "#/components/schemas/QuestionItemBase" - type: "object" required: - "type" properties: type: type: "string" enum: - "pagebrake" example: id: "page-1" type: "pagebrake"Best practices
Use the pagebreak question type to split applications into logical sections. By default, Indeed inserts page breaks if none are included in your JSON, but this can split your application in unintended ways. Indeed shows up to ten questions on each page for both mobile and desktop.
Provide guidance to job seekers when answers require a specific format. Indeed uses the SimpleDateFormat, so month must be formatted as MM. Using mm results in misconfiguration.