Skip to content
Log in Request a demo

ATS Application Creation

To automate application submission from your website into the ATS, follow this sequence.

Find the target job to get its job_id and linked pipeline_id.

  • Method: POST /api/v1/jobs/search

Fetch available stages for the selected pipeline and choose the required stage ID.

  • Method: GET /api/v1/pipelines/all
  • Action: find the target pipeline_id and select stage.id

Fetch the source directory so you can specify where the application came from.

  • Method: GET /api/v1/sources/all
  • Action: store the required source_id

Upload a PDF, DOC, or DOCX resume for automatic parsing.

  • Method: POST /api/v1/upload-cv-file
  • Format: multipart/form-data
  • Result: store the returned cv_id

Create the applicant card using parsed data or data entered by the user.

  • Method: POST /api/v1/applicant
  • Important: pass cv_ids from the previous step so the file is attached

Link the applicant to the job on the selected stage.

  • Method: POST /api/v1/candidate
  • Pass: job_id, applicant_id, pipeline_id, pipeline_stage_id

Labels (tags) are set in the interface. The API exposes them for reading and filtering.

  • Method: GET /api/v1/applicant-labels/all
  • Result: id, title, and color of every label in the organization
  • Requires permission recruiting_module

Applicant cards return their labels in the labels field. To find everyone with a given label, pass its id into label_ids of POST /api/v1/applicants/search.

Assigning a label through the API is not supported yet: POST /api/v1/applicant and PUT /api/v1/applicants/{applicant_id} have no label_ids field.

Step 8. Move the candidate or add a comment

Section titled “Step 8. Move the candidate or add a comment”

You can move the candidate through the pipeline, disqualify them, or leave comments.

  • Method: POST /api/v1/candidates/{candidate_id}/actions
  • Method: DELETE /api/v1/candidates/{candidate_id}/actions/{id}

Example fields:

pipeline_stage_id: target stage ID
disqualification_reason_id: rejection reason
reserved: move candidate to reserve
comment: comment text
datetime_action_date: optional date for historical actions

If datetime_action_date is provided, the candidate’s current stage may stay unchanged. Use it mainly for backfilling missed historical events.

  • Method: GET /api/v1/applicants/{applicant_id} - the full applicant card.
  • Method: POST /api/v1/applicants/{applicant_id}/contacts
  • Body: an array of contacts, each with type, value and an optional label. The contacts are added to the existing ones.
  • type: email, phone, telegram, skype, instagram, behance, linkedin, viber, github, facebook, zoom, link, other.
  • Returns the full applicant.
  • Method: GET /api/v1/{applicant_id}/download-cv/{cv_id}
  • hide_salary (default true) removes the expected salary.
  • hide_other (default false) removes the name, contacts, photo, birth date and location - for sharing an anonymized CV.
  • Returns the file; the file name is in Content-Disposition.
  • Requires permission manage_candidates.
  • Method: POST /api/v1/jobs
  • Required: title and pipeline_id (from GET /api/v1/pipelines/all). status defaults to draft.
  • The body is the same as for PUT /api/v1/jobs/{id}. Use department_id and division_id from GET /api/v1/departments/all and GET /api/v1/divisions/all.
  • Returns the created job.