1. Overview

Domain Purpose:
With the Recruitment API, you can integrate recruitment and ATS (Applicant Tracking System) applications with Youforce. This allows you to exchange relevant information about a candidate to be hired from your ATS application with Youforce. This way, you don’t have to re-enter data or re-upload existing documents. The Recruitment API also kicks off the Youforce Self-service workflow, ensuring all new employee information is captured in a single, streamlined process. Additionally, the ATS system can leverage Youforce’s relevance for internal mobility and connect relevant stakeholders (e.g., interviewers) to a vacancy.

Typical Use Cases:

  • As a recruiter I want to start the onboarding process in the core system for the candidate we have selected for a vacancy
  • As a recruiter I want to involve the manager and a current employee of the relevant organization unit to participate in the selection process
  • The API can check if the candidate already has a personal number so there will be no double entries in the HR-system of the same person

Base URL:
https://api.youforce.com/recruitment

Swagger page:
For more detailed information about the endpoints available in this API, please visit the Youforce recruitment API Swagger page

Postman collection:
For a complete example, you can check our Postman collection

2. Domain model

Rrecruitment Domain model


3. Included entities

This is the list of available endpoints for this domain.
Take into account that the endpoints will show the information that has been already processed by HR Core. This means that changes in the recent future might be shown in the response of the APIs and not the current value.

Entity Description Access capabilities
Assignments Allocation of specific tasks or duties to an employee within an employment. For example, an employee is assigned to a different department as a temporary replacement or to help another department without changing his own employment. HR Core: Inzet READ
Employments The formal relationship between an employer and an employee regarding their job position. A person can have multiple employments at the same time. HR Core: Dienstverband READ
Employment Timelines The chronological sequence of events in the past pertaining to an individual’s employment within an organization, including start and end dates. It is based on the history table of HR Core. The endpoint contains the same fields as the endpoint employments. HR Core: Dienstverband Historie READ
Employment Types Show details of the employment types. HR Core: Soort Arbeidsrelatie READ
Entitlements Different users that have a certain entitlement. READ
Job Profiles Different profiles or functions existing for each role within the company. HR Core: Functie READ
Organization Units Distinct business units, departments, divisions, etc within a larger organization that represent functional or geographical areas and how these are related to each other. HR Core: Organisatie eenheden READ
Persons An individual employee or worker within the organization, including some personal details. This could also contain people without (active) employment. Additionally, if the person has an employment which is out of the historicaldays, then the person won’t be retrieved neither. HR Core: Persoon READ
Person Timelines The chronological sequence of processed events in HR Core pertaining to a person within an organization. It is based on the history table of HR Core. The endpoint contains the same fields as the endpoint persons. HR Core: Persoon Historie READ
Role Assignments Allocation of specific roles or responsibilities to a person within the organization. The role assignment describes “who” is responsible for “what“ and “when“ within the organization unit. HR Core: Rol toewijzing READ
Users Individuals with unique identifiers who have access to an organization’s systems, resources or data and their entitlements. Youforce User account. READ
Workflows A defined series of tasks or steps to complete a business process, like hire, re-hire or change an existing contract. READ WRITE


4. Security and Scopes

All available endpoints are secured using OAuth 2.0 and protected by scopes.

Scope Description Affected endpoints
Youforce-Recruitment:Get_Basic Grants access to basic employee & organisation data GET /v1.0/assignments
GET /v1.0/employments
GET /v1.0/employments/timelines
GET /v1.0/employmentTypes
GET /v1.0/entitlements/{entitlement}/users
GET /v1.0/jobProfiles
GET /v1.0/organizationUnits
GET /v1.0/persons
GET /v1.0/persons/timelines
GET /v1.0/roleAssignments
GET /v1.0/users
Youforce-Recruitment:GetPrivateContactDetails Grants access to the private contact details of the employees GET /v1.0/persons
GET /v1.0/persons/timelines
Extra fields shown: social security number, addresses, e-mail addresses (business and private) and phone numbers (business and private)
Youforce-Recruitment:HSS_startWorkflow Start HSS workflow for Hire, re-hire and contract change GET /v1.0/vacancies
POST /v1.0/hires
GET /v1.0/hires/{StatusId}/status
POST /v1.0/persons/{PersonId}/contracts
GET /v1.0/persons/{PersonId}/contracts/{StatusId}/status
POST /v1.0/persons/{PersonId}/contracts/{ContractId}/adjustments
GET /v1.0/persons/{PersonId}/contracts/{ContractId}/adjustments/{StatusId}/status


5. Pagination & Filtering parameters

Learn how to efficiently manage large amounts of information by using pagination and filtering parameters to improve performance and user experience.

Pagination Parameters:

These parameters control the pagination of API results:

  • take: Use this parameter to retrieve a certein amount of registers per call, being the minimun value 1 and the maximum value 1000.
  • skip: Use this parameter to skip a certein amount of records. Use it for offset-based pagination.
  • nextLink: For large paginated responses, if there are more registers than shown in the output, we will provide a continuation token that you can use in the next call to get the next page.

Date Filtering Parameters:

The latestSync field in the response reflects the last synchronization datetime (creation or modification dates) we stored because we received an update from the HRCore. So it is not related to the dischargedate value.
These parameters filter records based on this latestSync field:

  • from: Use this parameter to filter records based on creation or last modification dates and retrieve records which modification date is greater or equal to the value in the filter → records that have latestSync datetime >= from
  • to: Use this parameter to filter records based on creation or last modification dates and retrieve records which modification date is less or equal to the value in the filter → records that have latestSync datetime <= to

Filters on validity of a record:

  • validOn: Use this parameter to filter temporal entities that are valid on a specific date (e.g., contract validity based on its start and end dates). This filter is meant to be used in combination with From and To parameters. For example, with From and To you will get the Employments that are modified in a specific range, and with validOn you will limit the response to the records that are active on a specific date.
    Available endpoints: timelines, assignment and role assignment endpoints.

Other Parameters:

  • isActive: Use this parameter to distinguish between active or deleted records. Active means that it is still in the HR Core database but it has not been deleted from there. It doesn’t correspond to the block field in HR Core.
    Available for all endpoints.
    Example 1:
     - we have a record that is active (not deleted in HR Core)
     - today is 01/12/2025
     - historical days is set at 60 days in the subscription (Configuration API)
     - the discharge date is 01/11/2025 (within the historical days window)
     → then the record will be returned in the API
    Example 2:
     - we have a record that is active (not deleted in HR Core)
     - today is 01/12/2025
     - historical days is set at 15 days in the subscription (Configuration API)
     - the discharge date is 01/11/2025 (outside the historical days window)
     → then the record will NOT be returned in the API
    Example 3:
     - the record has been deleted on 01/12/2025 from HR Core (it is not active)
     - today is 01/12/2025
     - historical days is set at 75 days in the subscription (Configuration API)
     - the discharge date is 01/11/2025 (within the historical days window)
     - It is within the 7 days after its deletion and:
            - the filter isActive is true → then the record will NOT be returned in the API
            - the filter isActive is false → then the record will be returned in the API
            - the filter isActive not provided → then the record will be returned in the API
    Example 4:
     - the record has been deleted on 10/11/2025 from HR Core (it is not active)
     - today is 01/12/2025
     - historical days is set at 75 days in the subscription (Configuration API)
     - the discharge date is 01/11/2025 (within the historical days window)
     - it is not within the 7 days after its deletion
     → then the record will NOT be returned in the API (regardless of the value of isActive parameter)

  • personId, personCode: Use one of these parameters to filter indistinctly by the code of an specific individual.
    Available endpoints: Assignment, CostAllocation, Person, RoleAssignment and PlannedChanged.
  • company: Use this parameter to filter by company field.
    Available endpoints: Employment.
  • organizationUnit: Use this parameter to filter by department or team structure.
    Available endpoints: Employment.
  • shortName: Use this parameter to filter by the short name of an organization unit or job profile depending on the endpoint.
    Available endpoints: JobProfile, RoleAssignment and OrganizationUnit.
  • employmentType: Use this parameter to filter by the employment type code.
    Available endpoints: Employment.


6. Workflow Endpoints

6.1 Vacancy endpoint

The Vacancy entity is the trigger of the recruitment process. Within the HR Core module, HR Self Service (HSS) managers start a vacancy based on an open position or an additional staffing need. Once a vacancy is approved by the company in HSS, it becomes the starting point for one or multiple recruitment cases (single or multiple employees).

The Recruitment API vacancy endpoint exposes this vacancy data to external recruitment systems so that:

  • new vacancies can be published for recruitment, and
  • existing vacancies can be kept in sync when they are updated in HR Core Self Service.
Aspect Detail
Operation Export of vacancies (created and updated)
HTTP method GET — used for both new vacancies and updates to existing vacancies
Idempotency key VacancyCode (unique within the tenant)
Direction Outbound from HR Core Self Service → consuming recruitment system

Note on updates: the vacancy can be edited after initial publication (HSS provides a vacancy overview with edit capability). Integrators should treat repeated GET calls with the same VacancyCode as an upsert: if the code is unknown, create the vacancy; if it already exists, apply the payload as an update.


Vacancy fields

The vacancy entity contains general information (code, title, etc.), job-related information (job profile, job level, organizational unit, etc.), and process information (start/end date, number of positions required).

Attribute Description Type Example HR Core Self Service field (default)
VacancyCode Unique vacancy number in HR Core Self Service. This job request number is unique within the tenant. string VAC0012 VC0001 – vacature nummer
Title Title of the vacancy. string Case manager VC0017 – Vacature titel
organizationUnit Logical code of the organization unit; logical reference to the organization unit entity. Note: in HSS this is the technical ID of the org unit — the API translates it into the logical code. string HR01 VC0002 – organisatie eenheid
payrollCompany Logical code of the company; reference to the company entity. string B01 VC0020 – employer
recruitmentChannel Channel in which the recruitment system will publish the job request (e.g. internal only, external only, both, or a specific employment agency). Reference table is customer-specific and needs to be aligned with the recruitment system. string extern VC0009 – Intern/Extern werven (values: Intern, Extern)
recruitmentReason Reason for the new position: new position, extension of an existing position, or replacement of an existing person. string Replacement VC0023 – Recruitment reden (values: 1 = Vervanging, 2 = Uitbreiding)
experienceLevel Required experience level, e.g. 0-3 years, 4-6 years, 7-10 years, over 10 years. string 4-6 VC0021 – Ervaringsniveau (values: under3years, under6years, under10years, over10years)
jobProfile Logical code of the job profile; reference to the job profile entity. string CMAN VC0003 – Functie
jobLevel Required level of the job, e.g. Junior, Medior, Senior. Reference table is customer-specific and needs to be aligned with the recruitment system. string VC0004 – functie niveau
jobFamily Job family code or job family title. string HR VC0018 – functiehuis titel
employeeType Type of employee. string Intern VC0005 – type medewerker
amountHoursWeek Amount of hours per week. number 40,00 VC0006 – uren per week
contractType Contract type: temporal or indefinite. string temporal not available
salaryIndication Indication for the salary: a range (e.g. 1500–1800 euro), a maximum (e.g. max 2000 euro), or a scale (e.g. Schaal 10). string Schaal 10 VC0022 – Salaris Indicatie
contractualDuration Only relevant when contractType is temporal, e.g. 6 months, 1 year. string 1 year not available
establishmentUnit Logical code of the location/establishment unit where the work is performed; mainly follows the contractual arrangement. string AMS not available
numberOfPositionsRequired Total number of positions required for the job request. number 5 VC0007 – aantal te vervullen posities
numberOfPositionsCompleted Number of positions already filled. number 1 VC0008 – Aantal reeds vervuld
ApprovalDate Approval date of the job request. date 2020-12-20 VC0010 – Datum initieel goedgekeurd
startDate Start date of the job request. date 2021-01-01 VC0011 – Start datum vacature
endDate End date of the job request. date 2021-04-01 VC0016 – Vervaldatum vacature
owner Owner/manager of the job request. string J. Janssen VC0019 – vacature houder
ownerEmailAddress Email address of the owner of the job request. string j.jansen@visma.com VC0025 – Email adres vacature houder

PII note: owner and ownerEmailAddress are personal data under GDPR/AVG. Consumers must transmit and store this data encrypted (TLS in transit, encryption at rest) and must not log or persist it in plain text.


7. Deprecated Endpoints

List of Deprecated Routes:

  • GET /v1.0/EmploymentTimelines:
    This behavior has been incorporated as part of the Employments endpoint –> GET /v1.0/Employments/Timelines
  • GET /v1.0/EmploymentTimelines/{id}:
    This behavior has been incorporated as part of the Employments endpoint –> GET /v1.0/Employments/Timelines/{id}