Full Apply

This page specifies how to formulate a request to apply to a job which requires a more thorough application request. The JSON response from the /jobs/search endpoint for such jobs will meet the follow two criteria:

  1. The apply_method field for the job will equal "full_apply_endpoint"
  2. The number_of_questions_allowed field will have a value than 0

The email, full name, questions and the Partner Attributes contained in the Job Search response are required. As with almost all other requests to the Apploi API, the X-Api-Key header is required in the request and should contain the API key given to the partner to be able to use the API.

Questions For Apploi Jobs.

A JSON representation of the questions related to a job can be retrieved using the questions_url field that is contained in the response from the /jobs/search endpoint. The questions_url should look like this:

'https://ats-integrations.apploi.com/v1/apploi/{{job_id}}/questions.json?source=None'

In fact, that template should be usable in place of a call to the /jobs/search endpoint, by replacing {{job_id}} with the ID of the specific job for which question data needs to be retrieved. If using that template doesn't work, then an explicit call to the /jobs/search endpoint can/should be made.

Example Questions Data

Here is an example of the some of the JSON body returned from a call to the questions_url URL mentioned above. The example contains an entry for a few of the most common types of available questions: textarea, date, select, and multiselect.

{
  "questions_en": [
    {
      'id': 1893206,
      'question': 'Do you currently hold an active license as a professional counselor for the state of Texas?',
      'required': True,
      'type': 'textarea'
    },
    {
       'id': 1920662,
       'question': 'Date of Birth',
       'required': True,
       'type': 'date',
       'format': 'dd/MM/yyyy'
    },
    {
       'id': 1854409,
       'question': 'Do you require Visa sponsorship? ',
       'required': True,
       'type': 'select',
       'options': [{'value': 0, 'label': 'Yes'}, {'value': 1, 'label': 'No'}]
    },
    {
      'id': 1841349,
      'question': 'Do you have MHE Experience? (Forklift, Stockpicker, Reach Truck)',
      'required': True,
      'type': 'multiselect',
      'options': [
        {'value': 0, 'label': 'No experience; Need Training'},
        {'value': 1, 'label': 'Experienced/Certified'},
        {'value': 2, 'label': 'Some Experience; Require Additional Training'}
      ]
		}
	],
	"questions_es": ["This will contain an array with the same data, but in Spanish"]
}

Question Schema

The following table provides an explanation of the specific fields returned in response to a call to the questions_url .

NameSchemaDescriptionAllowed valuesExample
idYesUnique ID for this question.any string"Yes"
typeYesDescribes the type of question. Refer to the following sections for a full explanation of each question type.- text
- select
- multiselect
- date
questionYesThe question text that is displayed to applicants.any string“Veteran status?”
formatYes for type=date or type=textUse the format for date or integer answers- "dd/MM/yyyy"
- integer
maxYes  format=integerFor format=integerany integer for format=integer100
minYes  format=integerFor format=integerany integer for format=integer0
requiredYesAllows the setting of a question as required. When required:true is present, Indeed Apply forces a non-empty text field or a non-empty selection. When the required parameter is not present, questions are optional. If a question is optional, a possible answer value is “”.- true
- false
OptionsYes for type=select and type=multiselectThe list of options available in the drop-down menu.JSON[{
"value":"1",
"label":"Female"
}]
LabelYes for type=select and type=multiselectThe text for options in any drop-down menu.any stringFemale
ValueYes for type=select and type=multiselectThe value corresponding to each option that will be returned for questions with drop-down menus.any string1

Property by Question Type

Not all of the possible fields will be provided for every question returned in the response. Some of the fields returned will be included based on the type of question.

Property/Question TypeTextSelectMultipleDateSlider(number)
id
question
required
format
label
value
min
max

Answer Schema

The expected schema for answer objects in a request is provided below. If the answer object does not match the schema defined for the question associated with the given ID, then the answer for that question will not be saved. This will fail silently. If answers fail to be saved, it is most likely due to the answer being improperly formatted in the request.

ParameterValueRequiredDescription
idNumeric stringYesThe ID of the question for which this object provides an answer. The available question ids can be obtained from the question data retrieved as described above.
valueStringYes (for all answer types except multiselect)The string provided by this key/value pair represents the answer to the question. The precise string depends on what type of answer is required. The type of answer and the possible values are defined in the example questions data above. Different examples are also provided in the sample request above.
valuesArray of stringsYes (for multiselect answers)
No (for all other answer types)
An array of numeric strings. Each item in the array represents an answer option for a question which requires a multiselect answer.

Answer types and associated formats

Here is another way of representing the data above, classified by answer type.

Answer TypeJSON Format
text, slider{"id":string, "value":string}
select{"id":string, "value": "numeric_string"}
calendar{"id":string, "value": string(dd/MM/yyyy)}
multiselect{"id":string, "values": [string_1, string_2, string_n]}

Example Request

URL

Note: Check the /easy-apply documentation and remember to add in the headers the x-api-key.

https://partners.apploi.com/v1/application/easy-apply/

Body

{
    "applicant": {
        "email": "{{email}}",
        "fullName": "{{fullName}}",
        "phoneNumber": "{{phoneNumber}}",
        "resume": {}
    },
    "get_person_token": 1,
    "enqueue": true,
    "job": {
        "jobId": "{{job_id}}"
    },
    "partner_attributes": {
        "sponsored": true,
        "redirect_apply": "https://jobs-univision.apploi.com/view/468036?utm_campaign=integration&utm_medium=job-board-search&utm_source=<utm_source>-boosted&ajs_event=LOAD_JOB_PAGE&ajs_aid=3f617530-4530-11e9-a2ca-7e775511d9e3&ajs_prop_search_fetch_id=efb330ceef1b44e3b07328adae1b1ccd&ajs_prop_keyword=&ajs_prop_page=1&ajs_prop_city_center=Unselected&ajs_prop_search_order=5&ajs_prop_job_id=468036&ajs_prop_doc_type=preferredjob&ajs_prop_job_location_lat=39.3798123&ajs_prop_job_location_lon=-74.5302804&ajs_prop_boosted=1&ajs_prop_utm_source=<utm_source>-boosted&ajs_prop_utm_medium=job-board-search&ajs_prop_utm_campaign=integration",
        "utm_medium": "job-board-search",
        "utm_campaign": "integration",
        "keyword": "",
        "search_fetch_id": "efb330ceef1b44e3b07328adae1b1ccd",
        "page": 1,
        "order": 5,
        "city_center": "Unselected",
        "utm_source": "<exploratory>-quick-apply-boosted",
        "source": "<source>-apply"
    },
"questions": {
    "answers": [
      // "text" type answer
      {
        "id": "1786806",
        "value": "Text 1"
      },
      // "text" type answer
      {
        "id": "1786807",
        "value": "Text Optional"
      },
      // "text" type answer for a question that requires a numerical answer
      {
        "id": "1786810",
        "value": "20"
      },
      // "text" type answer for a question that requires a numerical answer
      {
        "id": "1786811",
        "value": "90"
      },
      // "calendar" type answer
      {
        "id": "1786812",
        "value": "17/11/2020"
      },
      // "calendar" type answer
      {
        "id": "1786813",
        "value": "18/11/2020"
      },
      // "select" type answer
      {
        "id": "1786824",
        "value": "0"
      },
      // "select" type answer
      {
        "id": "1786825",
        "value": "1"
      },
      // "multiselect" type answer
      {
        "id": "1786826",
        "values": [
          "0"
        ]
      },
      // "multiselect" type answer
      {
        "id": "1786827",
        "values": [
          "1",
          "2"
        ]
      }
    ]
  }
}

Request explained

ParameterValueRequiredDescription
get_person_token1NoFlag used to request bearer_token, allowing you to make requests related to the user. Check Other useful endpoints
enqueuetrueNo
resumeJSON ObjectNoTo check the entire structure go to /easy-apply
questionsJSON ObjectNoAn object containing data about answers to the questions defined for applications to a given job. The data for the questions is described in the Questions For Apploi Jobs section above.

The questions object, if present, contains one single key, answers, the value of which is an array of JSON objects.
The full request schema for the JSON object for each item in the answers array is described in the Answer Schema section above.

Example Response

{
    "developer_message": "Submit Successful",
    "errors": [],
    "info": {
        "person_id": 32424609,
        "bearer_token": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MzI0MjQ2MDksInJvbGVzIjpbImFwcGxpY2FudCJdLCJleHAiOjE2MTMxNTgxMjF9.vQuM-HDaPliAW53RO0f99Ti9px6dOnIY_nBJAU4F-K0",
        "job_id": "598551"
    }
}

Status Code Response

  • 200 (Successful): Return the application info and token.
  • 409 (Conflict): if there is a duplicate application already in our system.
  • 410 (Gone): if a job Apploi is no longer available.