Get Candidates
GET
/AtsJob/appliesByJob/{jobId}Returns all candidates for a specific job listing.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
jobId | long | required | Job ID |
Response Fields
Returns a JSON array of candidate objects:
| Field | Type | Description |
|---|---|---|
id | long | Apply ID |
jobId | long | Job ID |
date | datetime | Submission date |
dateStatusChanged | datetime | Date when status was last changed |
status | string | Candidate status (see Enums) |
isNew | bool | Whether the candidate is new |
isViewed | bool | Whether the employer has viewed this candidate |
isSuggested | bool | Whether this is a system recommendation |
isPremium | bool | Whether this is a premium candidate |
withoutCv | bool | Whether the candidate applied without a CV |
hasProfileCV | bool | Whether the candidate has a profile CV |
hasProfile | bool | Whether the candidate has a profile |
fileName | string? | Attached file name |
hasMessages | bool | Whether there are messages |
messagesCount | int | Total message count |
newMessagesCount | int | Unread message count |
lastMessageDate | datetime? | Date of last message |
appliesCount | int | Number of times the candidate applied |
cvFile | object? | CV file attachment (see CV File Object). Requires ATS integration |
Applicant Object
Each candidate contains an applicant object with profile information:
| Field | Type | Description |
|---|---|---|
name | string | Candidate name |
age | int? | Age |
salary | decimal? | Expected salary |
currency | string? | Salary currency |
region | string? | Region |
gender | string? | Gender (see Enums) |
photoUrl | string? | Profile photo URL |
isReadyForRelocate | bool? | Willing to relocate |
Contacts Object
The applicant.contacts object:
| Field | Type | Description |
|---|---|---|
phone | string? | Phone number |
email | string? | Email (may be partially masked) |
isOpened | bool | Whether contacts have been revealed |
openDate | datetime? | Date when contacts were opened |
Additional Questions Object
The additionalQuestions object:
| Field | Type | Description |
|---|---|---|
total | int | Total number of additional questions |
passed | int | Number of questions answered |
CV File Object
Each candidate may contain a cvFile object with the attached CV. This field is
only available for employers that have IntegrationAtsType enabled.
| Field | Type | Description |
|---|---|---|
name | string | Original file name (e.g. "resume.pdf") |
data | string | Base64-encoded file content |
type | string | File category. Always "CV" |
contentType | string | MIME type (e.g. "application/pdf", "application/msword") |
If the candidate has no CV or ATS integration is not enabled, cvFile will be null.
Errors
| Status | Description |
|---|---|
403 Forbidden | Job does not belong to account |
Request
curl https://ua.jooble.org/employer/api/v2/AtsJob/appliesByJob/12345 \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Response · 200 OK
[
{
"id": "627991",
"isNew": false,
"isPremium": false,
"isViewed": true,
"isSuggested": false,
"fileName": null,
"withoutCv": true,
"hasProfileCV": false,
"date": "2026-02-17T13:51:26Z",
"dateStatusChanged": "2026-02-17T13:52:14Z",
"applicant": {
"name": "Quincy Roy",
"age": null,
"salary": null,
"region": null,
"photoUrl": null,
"currency": null,
"isReadyForRelocate": null,
"gender": null,
"contacts": {
"phone": null,
"email": "kl04***@jooble.com",
"openDate": null,
"isOpened": false
}
},
"hasMessages": false,
"status": "Processing",
"hasProfile": false,
"additionalQuestions": {
"total": 0,
"passed": 0
},
"messagesCount": 0,
"newMessagesCount": 0,
"lastMessageDate": null,
"jobId": 11069,
"appliesCount": 0,
"cvFile": {
"name": "resume.pdf",
"data": "JVBERi0xLjQKMSAwIG9iago8P...",
"type": "CV",
"contentType": "application/pdf"
}
}
]