The Create Job Application endpoint lets an external integration submit a candidate’s
application to a specific Nextal job. It accepts a single canonical payload derived from
the rich Indeed application model, so any integration source can post the same body shape.
Endpoint
POST https://public-api.nextal.com/{source}/{tenant}/{jobId}
Content type
Role
application/json
Primary — recommended for all new integrations
application/xml
Secondary — supported for backward compatibility
Path parameters
Parameter
Type
Required
Description
source
String
Yes
The integration source/provider key (for example indeed). It identifies where the application originates. It does not change the request body schema.
tenant
String
Yes
The Nextal tenant the job belongs to.
jobId
String
Yes
The target job. The server injects this value into the application’s job.jobId, so any jobId you place inside the body is overwritten by the path value.
How source works
The source path segment only identifies the integration that is submitting the
application — it is recorded for tracking and routing. It does not alter the request
body schema: every source posts the same canonical payload described below. Pass the
provider key your integration was assigned (for example indeed), the target tenant,
and the jobId of the job being applied to.
Request body
The body is a single canonical application object. All fields are optional unless noted;
unknown or null fields are omitted. The top-level structure is:
Field
Type
Required
Description
locale
String
No
Locale of the application (for example en, fr_CA).
appliedOnMillis
Long
No
Epoch timestamp (milliseconds) of when the application was submitted.
The candidate’s answer. For free-text/number/date questions it is a string; for a single select it is an object { "label": ..., "value": ... }; for a multi-select it is a list of such objects.
Question object
Field
Type
Required
Description
id
String
No
Question id.
question
String
No
The question text.
type
String
No
Question type (for example text, number, date, select, multiselect).
required
Boolean
No
Whether an answer is required.
format
String
No
Expected answer format.
min
String
No
Minimum value/length constraint.
max
String
No
Maximum value/length constraint.
limit
String
No
Answer limit.
options
List of objects (Option)
No
Selectable options, each { "label": ..., "value": ... }.
hierarchicalOptions
List
No
Hierarchical options, when applicable.
Analytics object
Field
Type
Required
Description
device
String
No
Device used to apply.
ip
String
No
Applicant IP address.
referer
String
No
Referer URL.
userAgent
String
No
Browser user agent.
sponsored
String
No
Whether the application came from a sponsored listing.
targetedApplyAd
String
No
Targeted apply ad identifier.
Examples
A complete request is shown in JSON first, then the equivalent XML.
<question>Are you legally authorized to work in Canada?</question>
<type>select</type>
<required>true</required>
<options>
<label>Yes</label>
<value>yes</value>
</options>
<options>
<label>No</label>
<value>no</value>
</options>
</question>
<answer>
<label>Yes</label>
<value>yes</value>
</answer>
</questionsAndAnswers>
</screenerQuestionsAndAnswers>
<analytics>
<device>desktop</device>
<ip>203.0.113.7</ip>
<referer>https://www.indeed.com</referer>
<userAgent>Mozilla/5.0</userAgent>
<sponsored>false</sponsored>
<targetedApplyAd>ad_55</targetedApplyAd>
</analytics>
</IndeedApplication>
Responses & errors
On success the endpoint returns HTTP 200 OK with an empty body — the application is
accepted and queued for processing into the target tenant. There is no response payload.
Status
Meaning
200 OK
Application accepted.
400 Bad Request
The body is malformed or fails validation (for example missing applicant data, unparseable JSON/XML).
404 Not Found
The source, tenant, or jobId could not be resolved.
415 Unsupported Media Type
The Content-Type is neither application/json nor application/xml.
500 Internal Server Error
Unexpected processing failure.
Error bodies follow the requested content type. Examples — JSON first, then XML.
This generalized endpoint supersedes the legacy provider-specific apply endpoints —
the Indeed indeed/{tenant}/{jobId} and Neuvoo neuvoo/{tenant}/{jobId} apply endpoints.
Those remain documented for backward compatibility under
Legacy → Job Applications (v1) → Create Job Application.
New integrations should target {source}/{tenant}/{jobId} with the canonical payload above.