The Create Job Application endpoint lets an external integration submit a candidate’s
application to a specific Nextal job. It accepts a single canonical application payload, so any integration source can post the
same body shape.
Resource Path
Property
Value
url
{source}/{tenant}/{jobId}
method
POST
Headers
Field
Description
Content-Type
Media type of the request body. Must be application/json.
Accept-Language
Language of the result; if none (or an unconfigured one) is provided, the default language will be provided
Parameters
Field
Description
source
the integration source/provider key assigned to your integration; it identifies where the application originates and does not change the request body schema
tenant
the Nextal tenant the job belongs to
jobId
the target job; the server injects this value into the application’s job.jobId, overwriting any jobId placed in the body
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, the target tenant,
and the jobId of the job being applied to.
Applicant consent and personal information
A job application carries the candidate’s personal information — name, contact details, résumé, and screening answers. Before submitting an application, you must have obtained the candidate’s informed consent to collect this information and transmit it to the employer through Nextal, in accordance with applicable privacy laws, including Québec’s Law 25.
Send only the personal information needed for the application, and keep your own consent records. The receiving employer (the tenant) is responsible for the personal information once the application is submitted.
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 example:
{
"locale": "en",
"appliedOnMillis": 1718380800000,
"job": {
"jobTitle": "Senior Software Engineer",
"jobCompany": "Acme Corp",
"jobLocation": "Montréal, QC",
"jobUrl": "https://example.com/jobs/123",
"jobMeta": "src=partner"
},
"applicant": {
"id": "appl_1029",
"fullName": "Jane Doe",
"email": "jane.doe@example.com",
"phoneNumber": "+1-514-555-0142",
"coverletter": "I am excited to apply for this role...",
"resume": {
"text": "Jane Doe — Senior Software Engineer ...",
"json": {
"firstName": "Jane",
"lastName": "Doe",
"headline": "Senior Software Engineer",
"summary": "10+ years building distributed systems.",
"skills": "Java, Spring Boot, MongoDB, Kubernetes",
"positions": {
"_total": 1,
"values": [
{
"title": "Senior Software Engineer",
"company": "Globex",
"location": "Montréal, QC",
"startDateMonth": "01",
"startDateYear": "2019",
"endCurrent": true,
"description": "Lead backend engineer."
}
]
},
"educations": {
"_total": 1,
"values": [
{
"degree": "B.Sc. Computer Science",
"field": "Computer Science",
"school": "McGill University",
"location": "Montréal, QC",
"startDate": "2011",
"endDate": "2015",
"endCurrent": false
}
]
},
"links": {
"_total": 1,
"values": [
{ "url": "https://github.com/janedoe" }
]
}
},
"file": {
"contentType": "application/pdf",
"fileName": "jane-doe-resume.pdf",
"data": "JVBERi0xLjQKJ..."
}
}
},
"screenerQuestionsAndAnswers": {
"url": "https://example.com/jobs/123/questions",
"retrievedOnMillis": 1718380000000,
"questionsAndAnswers": [
{
"question": {
"id": "q1",
"question": "Are you legally authorized to work in Canada?",
"type": "select",
"required": true,
"options": [
{ "label": "Yes", "value": "yes" },
{ "label": "No", "value": "no" }
]
},
"answer": { "label": "Yes", "value": "yes" }
},
{
"question": {
"id": "q2",
"question": "Years of experience with Java?",
"type": "number",
"required": true
},
"answer": "10"
}
]
},
"demographicQuestionsAndAnswers": {
"questionsAndAnswers": [
{
"question": {
"id": "d1",
"question": "How did you hear about us?",
"type": "text",
"required": false
},
"answer": "Online job board"
}
]
},
"analytics": {
"device": "desktop",
"ip": "203.0.113.7",
"referer": "https://www.example.com",
"userAgent": "Mozilla/5.0",
"sponsored": "false",
"targetedApplyAd": "ad_55"
}
}
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).
404 Not Found
The source, tenant, or jobId could not be resolved.