Overview

This document describes how to use standard questions and custom questions when posting jobs to XING, either via JSON API or XML feed.

It covers:

  • Which standard questions are supported
  • Which values are supported for each question
  • How to configure them in the JSON API
  • How to configure them in the XML feed

There are two question categories:

  • Custom questions are recruiter-defined questions with configurable wording and type.
  • Standard questions are predefined questions with fixed IDs and fixed answer formats. Some of them can also be used as screening criteria to automatically reject applicants who do not meet certain requirements.

A form may contain:

  • Only standard questions
  • Only custom questions
  • Or a mix of both

Important rules:

  • The mandatory id field in every question is used as the key when submitting the applicant’s answers to the ATS.
  • Make sure each id is unique and meaningful for downstream processing.
  • This allows the client to change the wording of a question while a job is already posted without having to change the id of the question.

Custom Questions

Custom questions allow the client to define their own questions that will be shown to the applicant during the application process.

These questions are displayed after the default XING Instant Apply questions and the standardized questions.

The order they are shown to the applicant is determined by the order they are defined in the custom_questions array.

Each custom question object must include the following fields:

Field Type Required Description
type String Yes The type of the question. Must be one of the supported custom question types below.
id String Yes Unique identifier for the question.
question String Yes The question text shown to the applicant.
required Boolean No Whether answering is mandatory. Defaults to false.

Additional options can or must be provided based on the question type, as described below.

In order to have some data integrity, we enforce the following limits:

  • We allow a maximum of 50 custom questions.
  • The string for a question can be at maximum 255 characters long.

Text Input

type: "text"

Free text input for applicants to provide their answers. It can be used for single-line or multiline text input, decided via the multiline option.

Additional options for text inputs:

Field Type Required Default Description
multiline Boolean No false Allows multiline input.

Returned value:

The value returned for text inputs is a plain string containing the applicant’s response.

Date Input

type: "date"

A date input allows the applicant to select a date.

Returned value:

The value returned for date inputs is the selected date as a string formatted as YYYY-MM-DD .

Boolean Input

type: "boolean"

Simple true/false question. It will likely be rendered as a checkbox, switch, or similar.

If the field is not required, the answer can be null .

Returned value:

The value returned is a simple boolean true or false .

Numeric Input

type: "numeric"

Free numeric input for applicants to provide a number. Currently, only integer values are supported.

Default allowed range is 0 to 100000000 . Limits can be adjusted via options.

Additional options for numeric inputs:

Field Type Required Default Description
min Integer No 0 Minimum allowed value. Cannot be lower than -100000000.
max Integer No 100000000 Maximum allowed value. Cannot be higher than 100000000.

Returned value:

The value returned for numeric inputs is an integer representing the applicant’s response.

Select Input

type: "select"

The applicant is presented with a list of options to choose from. They are able to select one or multiple choices.

Additional attributes for select inputs:

Field Type Required Description
options Array Yes List of selectable options. See below.
maximum_choices_allowed Integer No, default: 1 If set to 1 (default), it is a single-select field. If set to a value greater than 1 , it uses a multi-select interface. It can be set to a number equal to or higher than the given options to allow selecting all.

Each option in the options array should have the following structure:

Field Type Required Description
label String Yes Display text for the option.
value String Yes Value submitted when this option is selected.

We enforce the following limits for select questions:

  • We allow a maximum of 270 options.
  • The string for the label can be at maximum 255 characters long.
  • Shorter strings are strongly encouraged as the UI might only show the first 50 or so characters.

Returned value:

  • If maximum_choices_allowed is not given or maximum_choices_allowed == 1 , the value returned is the selected option value as a string.
  • If maximum_choices_allowed > 1 , the value returned is an array with the values of the selected options.

File Upload

type: "file"

A file upload option allows applicants to upload files. Currently, no custom limitation of file types is supported. Files are checked for viruses on our side.

Returned value:

This returns an object containing the uploaded file’s information.

Field Type Description
content_type String The MIME type of the uploaded file.
data String The base64-encoded content of the file.
file_name String The original name of the uploaded file.

Standard Questions

Standard question IDs use the reserved namespace xing.standard.* .

  • Do not use xing.standard.* for custom question IDs.
  • Standard questions are localized by XING before they are shown to candidates.
  • Standard questions with predefined answer options must use the values defined in this document.
  • If you need different wording or a different option set, use a custom question instead.

Supported Questions

Question Question Type Supported Answer Values Supported Screening Rule Notes
Notice period
xing.standard.notice_period
Single-select immediately , 2_weeks , 1_month , 2_months , 3_months , 6_months , other None
English level
xing.standard.language_skills.english
Single-select 0 , 1 , 2 , 3 , 4 must_be_at_least 0 = none, 1 = basic, 2 = good, 3 = fluent, 4 = first language
German level
xing.standard.language_skills.german
Single-select 0 , 1 , 2 , 3 , 4 must_be_at_least 0 = none, 1 = basic, 2 = good, 3 = fluent, 4 = first language
Salary expectation
xing.standard.salary_expectation
Numeric Integer >= 0 must_be_below Salary is yearly in EUR
Eligibility to work in the EU
xing.standard.eu_work_eligibility
Boolean true or false must_be_true
Country of residence
xing.standard.country_of_residence
Country ISO 3166-1 alpha-2 country code, for example DE , ES , CH None Must not be used as a screen-out criterion
City of residence
xing.standard.city_of_residence
Text String, max 500 characters None
Driving license
xing.standard.driving_license
Boolean true or false must_be_true
Gender
xing.standard.gender
Single-select m , f , o , na None Always optional. This is phrased as “how should we address you?”
Cover letter
xing.standard.cover_letter
File Uploaded file key None
Work certificate
xing.standard.work_certificate
File Uploaded file key None Arbeitszeugnis
Education certificate
xing.standard.education_certificate
File Uploaded file key None Abschlusszeugnis
Additional comments
xing.standard.additional_comments
Text String, max 500 characters None Multiline text. Always optional. Rendered at the end of the application form.

Screening Rule Semantics

Rule Meaning Example
must_be_at_least The applicant answer must be greater than or equal to the configured value. If the configured threshold is 3, then 3 and 4 pass, while 0, 1, and 2 fail.
must_be_below The applicant answer must be strictly lower than the configured value. If the configured threshold is 90000, then 85000 passes, while 90000 and 95000 fail.
must_be_true The applicant answer must be true. If must_be_true is configured, then true passes and false fails.

Missing Answers And Screening

If a screening rule is configured and the applicant does not provide an answer, the application does not satisfy the screening rule.

Validation And Limitations

  • xing.standard.gender is always optional, even if you send it as required.
  • For xing.standard.gender, the required flag is ignored.
  • xing.standard.gender must not be used as a screen-out criterion.
  • xing.standard.country_of_residence must not be used as a screen-out criterion.
  • Unknown standard question IDs are ignored.
  • Blank standard question IDs are ignored.
  • Duplicate standard question IDs are de-duplicated. Only the first occurrence is kept.
  • Custom question IDs must be unique.
  • Do not reuse a standard-question ID as a custom-question ID.

JSON API

This section describes how the questions should be included in the JSON payload when creating job postings via our E-Recruiting JSON API.

JSON Request Structure

Field Required Type Description
standard_questions Yes Array List of configured standard questions
custom_questions Yes Array List of configured custom questions

Notes:

  • standard_questions and custom_questions can be used together.
  • If you only use standard questions, send "custom_questions": [].
  • If you only use custom questions, send "standard_questions": [].

Standard Questions In JSON

Canonical JSON example

{
  "standard_questions": [
    {
      "id": "xing.standard.notice_period",
      "required": true
    },
    {
      "id": "xing.standard.language_skills.english",
      "required": true,
      "must_be_at_least": 3
    },
    {
      "id": "xing.standard.salary_expectation",
      "required": true,
      "must_be_below": 90000
    },
    {
      "id": "xing.standard.eu_work_eligibility",
      "required": true,
      "must_be_true": true
    },
    {
      "id": "xing.standard.country_of_residence",
      "required": true
    },
    {
      "id": "xing.standard.gender",
      "required": false
    },
    {
      "id": "xing.standard.cover_letter",
      "required": false
    }
  ],
  "custom_questions": []
}

Supported JSON fields for standard questions

Field Required Type Applies To Notes
id Yes String All standard questions Must be one of the supported IDs
required No Boolean All standard questions For xing.standard.gender , this flag is ignored and the question remains optional.
must_be_at_least No Integer English and German language skills Inclusive minimum threshold
must_be_below No Integer Salary expectation Strict maximum threshold for yearly salary in EUR
must_be_true No Boolean EU work eligibility and driving license If set, only true passes screening

Custom Questions In JSON

Canonical JSON example

{
  "standard_questions": [
    {
      "id": "xing.standard.city_of_residence",
      "required": true
    }
  ],
  "custom_questions": [
    {
      "type": "text",
      "id": "motivation",
      "question": "Why do you want to work with us?",
      "multiline": true,
      "required": false
    },
    {
      "type": "date",
      "id": "starting_date",
      "question": "When could you start?",
      "required": true
    },
    {
      "type": "select",
      "id": "preferred_location",
      "question": "Which location do you prefer?",
      "required": true,
      "options": [
        { "label": "Berlin", "value": "berlin" },
        { "label": "Hamburg", "value": "hamburg" },
        { "label": "Remote", "value": "remote" }
      ]
    },
    {
      "type": "select",
      "id": "preferred_locations",
      "question": "Which locations would you accept?",
      "required": false,
      "maximum_choices_allowed": 2,
      "options": [
        { "label": "Berlin", "value": "berlin" },
        { "label": "Hamburg", "value": "hamburg" },
        { "label": "Remote", "value": "remote" }
      ]
    },
    {
      "type": "numeric",
      "id": "years_of_experience",
      "question": "How many years of experience do you have?",
      "required": false,
      "min": 0,
      "max": 50
    },
    {
      "type": "boolean",
      "id": "willing_to_relocate",
      "question": "Are you willing to relocate?",
      "required": false
    },
    {
      "type": "file",
      "id": "portfolio",
      "question": "Upload your portfolio",
      "required": false
    }
  ]
}

JSON Answer Examples

Single-value answers

{ "id": "motivation", "value": "I want to join because..." }
{ "id": "starting_date", "value": "2026-05-01" }
{ "id": "preferred_location", "value": "remote" }
{ "id": "years_of_experience", "value": "7" }
{ "id": "willing_to_relocate", "value": "true" }
{ "id": "portfolio", "value": "uploaded-file-key-123" }
{ "id": "xing.standard.country_of_residence", "value": "DE" }

Multi-select answers

{ "id": "preferred_locations", "values": ["berlin", "remote"] }

XML Feed

This section describes how to include standard and custom questions via our E-Recruiting feed.

XML Structure

Naming Convention

In XML, field names use snake_case .

Structure

  • Root element: apply_questions
  • Standard questions container: standard_questions
  • Standard question element: standard_question
  • Custom questions container: custom_questions
  • Custom question element: question

Empty Sections

If a section is empty, you can send an empty container.

Standard Questions In XML

Canonical XML example

<apply_questions>
  <standard_questions>
    <standard_question>
      <id>xing.standard.notice_period</id>
      <required>true</required>
    </standard_question>

    <standard_question>
      <id>xing.standard.language_skills.english</id>
      <required>true</required>
      <must_be_at_least>3</must_be_at_least>
    </standard_question>

    <standard_question>
      <id>xing.standard.salary_expectation</id>
      <required>true</required>
      <must_be_below>90000</must_be_below>
    </standard_question>

    <standard_question>
      <id>xing.standard.eu_work_eligibility</id>
      <required>true</required>
      <must_be_true>true</must_be_true>
    </standard_question>

    <standard_question>
      <id>xing.standard.country_of_residence</id>
      <required>true</required>
    </standard_question>

    <standard_question>
      <id>xing.standard.gender</id>
      <required>false</required>
    </standard_question>

    <standard_question>
      <id>xing.standard.cover_letter</id>
      <required>false</required>
    </standard_question>
  </standard_questions>

  <custom_questions />
</apply_questions>

Supported XML fields for standard questions

Field Required Applies To Notes
<id> Yes All standard questions Must be one of the supported IDs
<required> No All standard questions For xing.standard.gender , this field is ignored and the question remains optional.
<must_be_at_least> No English and German language skills Inclusive minimum threshold
<must_be_below> No Salary expectation Strict maximum threshold for yearly salary in EUR
<must_be_true> No EU work eligibility and driving license If set, only true passes screening

Custom Questions In XML

Canonical XML example

<apply_questions>
  <standard_questions>
    <standard_question>
      <id>xing.standard.city_of_residence</id>
      <required>true</required>
    </standard_question>
  </standard_questions>

  <custom_questions>
    <question type="text" id="motivation" multiline="true" required="false">
      <text>Why do you want to work with us?</text>
    </question>

    <question type="date" id="starting_date" required="true">
      <text>When could you start?</text>
    </question>

    <question type="select" id="preferred_location" required="true">
      <text>Which location do you prefer?</text>
      <options>
        <option label="Berlin" value="berlin" />
        <option label="Hamburg" value="hamburg" />
        <option label="Remote" value="remote" />
      </options>
    </question>

    <question type="select" id="preferred_locations" required="false" maximum_choices_allowed="2">
      <text>Which locations would you accept?</text>
      <options>
        <option label="Berlin" value="berlin" />
        <option label="Hamburg" value="hamburg" />
        <option label="Remote" value="remote" />
      </options>
    </question>

    <question type="numeric" id="years_of_experience" required="false" min="0" max="50">
      <text>How many years of experience do you have?</text>
    </question>

    <question type="boolean" id="willing_to_relocate" required="false">
      <text>Are you willing to relocate?</text>
    </question>

    <question type="file" id="portfolio" required="false">
      <text>Upload your portfolio</text>
    </question>
  </custom_questions>
</apply_questions>

XML Rules For Custom Questions

Field Usage / Meaning
type Use the type attribute to define the question type.
id Use the id attribute for the unique question ID.
<text> Use the element for the candidate-facing question text.
<options> Use for select questions.
required Use the required attribute where applicable.
multiline Use the multiline attribute for text questions.
maximum_choices_allowed For multi-select questions, use type="select" together with maximum_choices_allowed greater than 1 .
min and max Use the min and max attributes for numeric questions.
label Display text only
value The contract value that will be returned in the answer