Changelog

Changelog

Changes to the Jooble ATS Integration API, newest first.

5 October 2026

⚠️

Effective Monday, 5 October 2026. The Get Candidates response format changes. Check your integration against the updated response before this date.

Summary

EndpointWhat changesAction required
Get CandidatesAdds education and work experience. CV is now returned for every account. Updated response formatYes, check your integration against the updated response
Create JobSalary currency can be set with currencyIdNo
Update JobSalary currency can be set with currencyIdYes, if your salaries are not in the default currency
Get Job, Get All JobsInclude a link to the job on JoobleNo

Get Candidates

GET /AtsJob/appliesByJob/{jobId}

Added

  • applicant.education: array of the candidate’s education entries.

    FieldTypeDescription
    institutionstring?Institution name
    levelstring?Education level, as shown to the candidate
    majorstring?Field of study
    yearOfGraduationint?Graduation year
  • applicant.workExperience: array of the candidate’s work experience entries.

    FieldTypeDescription
    titlestring?Position
    employerstring?Company name
    responsibilitiesstring?Responsibilities, free text
    startDatestring?Start date, as entered by the candidate (e.g. "2025-01-01")
    endDatestring?End date. null means the candidate still works there
  • jobTitle: title of the job the candidate applied to.

Both arrays are always present and are empty ([]) when the candidate has no entries. Every field inside an entry can be null.

Changed

  • cvFile is returned for every account. A separate ATS integration setting is no longer required.
  • cvFile is omitted when the candidate has no CV. It was previously returned as null. Treat a missing cvFile and a null one the same way.

Updated response

A candidate object after this release:

[
  {
    "id": "649241",
    "isNew": true,
    "isViewed": false,
    "fileName": null,
    "date": "2026-09-24T11:35:38Z",
    "dateStatusChanged": "2026-09-24T11:35:38Z",
    "applicant": {
      "gender": "MALE",
      "name": "John Smith",
      "age": "30",
      "salary": "120000",
      "region": "Kyiv",
      "currency": "UAH",
      "isReadyForRelocate": false,
      "contacts": {
        "phone": "+380631234567",
        "email": "john.smith@example.com",
        "openDate": null,
        "isOpened": true
      },
      "education": [
        {
          "institution": "Imperial College London",
          "level": "Bachelor",
          "major": "Computer Science",
          "yearOfGraduation": 2020
        }
      ],
      "workExperience": [
        {
          "title": "QA Automation Engineer",
          "employer": "Acme",
          "responsibilities": "Test automation",
          "startDate": "2025-01-01",
          "endDate": null
        }
      ]
    },
    "jobId": 41927,
    "jobTitle": "QA Engineer",
    "cvFile": {
      "name": "resume.pdf",
      "data": "JVBERi0xLjQKMSAwIG9iago8P...",
      "type": "CV",
      "contentType": "application/pdf"
    }
  }
]

Create Job and Update Job

POST /AtsJob/create, PUT /AtsJob/update

Added

  • currencyId (int, optional): salary currency. Allowed values are 0, 1 and 2; any other value returns 400 Bad Request.
⚠️

The currency behind each currencyId depends on the country. For example, 0 is UAH in Ukraine but EUR in Romania. Always use the row for the country the job is published in.

Country012
Ukraine (ua)UAHUSDEUR
Romania (ro)EURRONUSD
Hungary (hu)HUFEURUSD

If currencyId is omitted, 0 is used: UAH in Ukraine, EUR in Romania and HUF in Hungary. This also applies to Update Job: an update without currencyId sets the currency back to 0, so send currencyId on every update if the job uses another currency.

Get Job and Get All Jobs

GET /AtsJob/{id}, GET /AtsJob/allJobs

Added

  • url: link to the job on the Jooble website, returned for every account on both endpoints. The field is omitted until the job has been published.

What to do before 5 October

Check the new response format

Compare how your integration reads Get Candidates with the updated response and rely only on the fields shown there.

Handle a missing cvFile

Treat a missing cvFile as “no CV attached”.

Send currencyId if you publish salaries

If your jobs show salaries in a currency other than the default for their country (UAH in Ukraine, EUR in Romania, HUF in Hungary), send currencyId on both create and update. For example, a salary in RON in Romania needs "currencyId": 1.

Questions about this release? Contact your Jooble account manager.