The Personio connector lets your AI agent act in each user's Personio account. Each user signs in to Personio once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 53 tools.
- Tools
- 53
- What they doRead · write · destructive
- 39 · 14 · 039 read14 write0 destructive
- Users sign in with
- Service account
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Personio connection
In AgentKit > Connections, create a Personio connection. The name you give it is the
connection_nameyour code passes. See Configure connections.
Tools
Pass the exact name toexecute_toolpersonio_absence_period_breakdown_listList the day-by-day breakdown of one absence period in Personio.Read-onlyList Absence Period Breakdowns
List the day-by-day breakdown of one absence period in Personio. Returns one entry per day with the date and the effective duration of the absence on that day. Use this to see how much time an absence actually takes on each day. Use personio_absence_period_get for the absence itself.
Inputs
absence_period_idstringrequired- The ID of the absence period. Get it from personio_absence_period_list. Example: 493eff0a-2c5a-467e-8966-f70b4e3805a6.
cursorstring- Pagination cursor for the breakdowns list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
limitinteger- Maximum number of daily breakdowns to return in one page, from 1 to 100. Leave empty to use the Personio default of 28. Example: 50.
personio_absence_period_getGet one absence period in Personio by ID.Read-onlyGet Absence Period
Get one absence period in Personio by ID. Returns the person, absence type, start and end (date-time and half-day type), timezone, comment, approval status and timestamps. Use this when you have the absence period ID. Use personio_absence_period_list to search.
Inputs
absence_period_idstringrequired- The ID of the absence period. Get it from personio_absence_period_list. Example: 493eff0a-2c5a-467e-8966-f70b4e3805a6.
personio_absence_period_listList absence periods (time off such as vacation or sick leave) in Personio, filtered by person, absence type, date range or update time.Read-onlyList Absence Periods
List absence periods (time off such as vacation or sick leave) in Personio, filtered by person, absence type, date range or update time. Returns a page of absence periods with id, person, absence type, start and end (date-time and half-day type), timezone, comment, approval status and timestamps. Use this to see who is or was off and when. Use personio_absence_period_get for one known absence period.
Inputs
absence_type_idstring- Only return absences of these absence types. Separate multiple IDs with commas; get them from personio_absence_type_list. Example: cba6fa09-d8fe-4de0-be03-f0a1d48df766.
cursorstring- Pagination cursor for the absence periods list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
ends_at_gtestring- Only return absences ending at or after this date-time (RFC 3339). Example: 2025-01-01T00:00:00Z.
ends_at_ltestring- Only return absences ending at or before this date-time (RFC 3339). Example: 2025-12-31T23:59:59Z.
idstring- Only return absence periods with these IDs. Separate multiple IDs with commas. Example: abc6fa09-d8fe-4de0-be03-f0a1d48df766.
limitinteger- Maximum number of absence periods to return in one page, from 1 to 100. Leave empty to use the Personio default of 100. Example: 50.
person_idstring- Only return absences of these persons. Separate multiple person IDs with commas. Example: 12345,67890.
starts_from_gtestring- Only return absences starting at or after this date-time (RFC 3339). Example: 2025-01-01T00:00:00Z.
starts_from_ltestring- Only return absences starting at or before this date-time (RFC 3339). Example: 2025-12-31T23:59:59Z.
updated_at_gtestring- Only return absences updated at or after this date-time (RFC 3339). Example: 2025-06-01T00:00:00Z.
updated_at_ltestring- Only return absences updated at or before this date-time (RFC 3339). Example: 2025-06-30T23:59:59Z.
personio_absence_type_getGet one absence type in Personio by ID.Read-onlyGet Absence Type
Get one absence type in Personio by ID. Returns the absence type's id, name, category and unit (DAY for days and half days, HOUR for hourly absences). Use this to check whether a type is booked in days or hours before creating an absence. Use personio_absence_type_list to find the ID.
Inputs
absence_type_idstringrequired- The ID of the absence type. Get it from personio_absence_type_list. Example: 137a2048-41e9-4d49-9201-e6a032521495.
personio_absence_type_listList the absence types configured in Personio, such as paid vacation or sick leave.Read-onlyList Absence Types
List the absence types configured in Personio, such as paid vacation or sick leave. Returns a page of absence types with their id, name, category and unit (DAY or HOUR). Use this to find the absence type ID needed by personio_absence_period_create. Use personio_absence_type_get for one known type.
Inputs
cursorstring- Pagination cursor for the absence types list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
limitinteger- Maximum number of absence types to return in one page, from 1 to 100. Leave empty to use the Personio default of 100. Example: 50.
personio_attendance_period_getGet one attendance period (tracked work or break) in Personio by ID.Read-onlyGet Attendance Period
Get one attendance period (tracked work or break) in Personio by ID. Returns the person, type, start, end, duration, attribution date, approval status, project and comment. Use this when you have the attendance period ID. Use personio_attendance_period_list to search.
Inputs
attendance_period_idstringrequired- The ID of the attendance period. Get it from personio_attendance_period_list. Example: bd242cd1-5116-41a0-99aa-c12af4837c81.
personio_attendance_period_listList attendance periods (tracked working time and breaks) in Personio, filtered by person, project, status, date range or update time.Read-onlyList Attendance Periods
List attendance periods (tracked working time and breaks) in Personio, filtered by person, project, status, date range or update time. Returns a page of attendance periods with id, person, type (WORK or BREAK), start, end, duration, attribution date, approval status, project and comment. Use this to review tracked hours. Use personio_attendance_period_get for one known period.
Inputs
attribution_date_gtestring- Only return periods attributed to this date or later (YYYY-MM-DD). Example: 2025-01-01.
attribution_date_ltestring- Only return periods attributed to this date or earlier (YYYY-MM-DD). Example: 2025-01-31.
cursorstring- Pagination cursor for the attendance periods list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
end_gtestring- Only return periods ending at or after this time, as a local date-time without a timezone offset (YYYY-MM-DDTHH:MM:SS). Example: 2025-01-01T00:00:00.
end_ltestring- Only return periods ending at or before this time, as a local date-time without a timezone offset (YYYY-MM-DDTHH:MM:SS). Example: 2025-01-31T23:59:59.
idarray- Only return attendance periods with these IDs. Example: ["bd242cd1-5116-41a0-99aa-c12af4837c81"].
limitinteger- Maximum number of attendance periods to return in one page, from 1 to 100. Leave empty to use the Personio default of 100. Example: 50.
person_idarray- Only return attendance periods of these persons. Example: ["12345", "67890"].
project_idarray- Only return attendance periods booked on these projects. Example: ["1234"].
sortstring- Comma-separated sort fields; prefix a field with - for descending. Allowed fields: person.id, start.date_time, end.date_time, updated_at, status. Default: person.id,start.date_time,end.date_time. Example: -start.date_time.
start_gtestring- Only return periods starting at or after this time, as a local date-time without a timezone offset (YYYY-MM-DDTHH:MM:SS). Example: 2025-01-01T00:00:00.
start_ltestring- Only return periods starting at or before this time, as a local date-time without a timezone offset (YYYY-MM-DDTHH:MM:SS). Example: 2025-01-31T23:59:59.
statusstring- Only return attendance periods with this approval status. Example: CONFIRMED.one of
PENDINGCONFIRMEDREJECTED updated_at_gtestring- Only return periods updated at or after this date-time (RFC 3339). Example: 2025-06-01T00:00:00Z.
updated_at_ltestring- Only return periods updated at or before this date-time (RFC 3339). Example: 2025-06-30T23:59:59Z.
personio_compensation_listList payroll compensations in Personio for a period of up to one month, optionally for specific people or legal entities.Read-onlyList Compensations
List payroll compensations in Personio for a period of up to one month, optionally for specific people or legal entities. Returns a page of compensations with id, person, legal entity, compensation type, amount and currency, interval, effective date and working hours, covering base salary, hourly pay, one-time and recurring payments and bonuses. Use this for payroll reviews. Use personio_compensation_create to add a compensation. Needs a credential with the personio:compensations:read scope.
Inputs
cursorstring- Pagination cursor for the compensations list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
end_datestring- Last day of the period (YYYY-MM-DD). The period can be at most one month. Defaults to the last day of the current month, or of start_date's month. Example: 2025-01-31.
legal_entity_idstring- Only return compensations of people in these legal entities. Separate multiple IDs with commas. Example: 123.
limitinteger- Maximum number of compensations to return in one page, from 1 to 100. Leave empty to use the Personio default of 100. Example: 50.
person_idstring- Only return compensations of these persons. Separate multiple IDs with commas. Example: 12345,67890.
start_datestring- First day of the period (YYYY-MM-DD). The period from start_date to end_date can be at most one month. Defaults to the first day of the current month, or of end_date's month. Example: 2025-01-01.
personio_compensation_type_listList the compensation types configured in Personio, including one-time and recurring types.Read-onlyList Compensation Types
List the compensation types configured in Personio, including one-time and recurring types. Returns a page of compensation types with id, name and category. Use this to find the type ID needed by personio_compensation_create. Use personio_compensation_type_create to add a new type.
Inputs
cursorstring- Pagination cursor for the compensation types list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
limitinteger- Maximum number of compensation types to return in one page, from 1 to 100. Leave empty to use the Personio default of 100. Example: 50.
personio_cost_center_listList the cost centers of the Personio account, optionally filtered by ID or name.Read-onlyList Cost Centers
List the cost centers of the Personio account, optionally filtered by ID or name. Returns a page of cost centers with id and name. Use this to find cost center IDs for employments or projects.
Inputs
cursorstring- Pagination cursor for the cost centers list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
idstring- Only return cost centers with these IDs. Separate multiple IDs with commas. Example: 123,456.
limitinteger- Maximum number of cost centers to return in one page, from 1 to 100. Leave empty to use the Personio default of 50. Example: 50.
namestring- Only return cost centers with these names. Separate multiple names with commas. Example: Sales,IT.
sortstring- Comma-separated sort fields, name and/or id; prefix with - for descending. Default: id ascending. Example: name,-id.
personio_document_listList the metadata of documents stored in Personio for one owner (a person), optionally filtered by category or creation date.Read-onlyList Documents
List the metadata of documents stored in Personio for one owner (a person), optionally filtered by category or creation date. File contents are not returned. Returns a page of documents with id, name, date, comment, category, owner, file type, size, creation time, virus scan status and e-signature status. Use this to see which documents an employee has. Use personio_document_update to rename or recategorize one.
Inputs
owner_idstringrequired- ID of the person who owns the documents. Get it from personio_person_list. Example: 12345.
category_idstring- Only return documents in this document category. Example: 123.
created_at_gtestring- Only return documents created on or after this date (YYYY-MM-DD). Example: 2025-03-25.
created_at_ltstring- Only return documents created before this date (YYYY-MM-DD); documents created on this date are excluded. Example: 2025-03-26.
cursorstring- Pagination cursor for the documents list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
limitinteger- Maximum number of documents to return in one page, from 1 to 200. Leave empty to use the Personio default of 100. Example: 50.
personio_employment_getGet one employment of a person in Personio by ID.Read-onlyGet Employment
Get one employment of a person in Personio by ID. Returns the employment's status, position, type, dates, working hours, supervisor, office, org units, legal entity, job, cost centers and termination details. Use this when you have both the person ID and employment ID. Use personio_employment_list to find the employment ID.
Inputs
employment_idstringrequired- The ID of the employment. Get it from personio_employment_list. Example: 493eff0a-2c5a-467e-8966-f70b4e3805a6.
person_idstringrequired- The ID of the person. Example: 12345.
personio_employment_listList the employments of one person in Personio, most recent first.Read-onlyList Employments
List the employments of one person in Personio, most recent first. Returns a page of employments with id, status, position, type, start, end and probation dates, working hours, supervisor, office, org units, legal entity, job, cost centers and termination details. Use this to see a person's employment history or find an employment ID. Use personio_employment_get for one known employment.
Inputs
person_idstringrequired- The ID of the person whose employments to list. Get it from personio_person_list. Example: 12345.
cursorstring- Pagination cursor for the employments list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
idstring- Only return employments with these IDs. Separate multiple IDs with commas. Example: 493eff0a-2c5a-467e-8966-f70b4e3805a6.
limitinteger- Maximum number of employments to return in one page, from 1 to 50. Leave empty to use the Personio default of 10. Example: 50.
updated_at_gtstring- Only return employments updated after this date-time (RFC 3339). Example: 2024-06-01T00:00:00Z.
updated_at_ltstring- Only return employments updated before this date-time (RFC 3339). Example: 2024-06-30T23:59:59Z.
personio_job_getGet one job from Personio's job catalogue by UUID.Read-onlyGet Job
Get one job from Personio's job catalogue by UUID. Returns the job's id, name, job family, level, job track and linked salary band IDs. Use this when you have a job ID, for example from an employment. Use personio_job_list to browse the catalogue.
Inputs
job_idstringrequired- The ID of the job (UUID). Get it from personio_job_list. Example: a1b2c3d4-e5f6-7890-abcd-ef1234567890.
personio_job_listList the jobs in Personio's job catalogue (internal job definitions linked to employments and salary bands, not recruiting job postings), optionally filtered by ID or name.Read-onlyList Jobs
List the jobs in Personio's job catalogue (internal job definitions linked to employments and salary bands, not recruiting job postings), optionally filtered by ID or name. Returns a page of jobs with their id, name, job family, level, job track and linked salary band IDs. Use this to find a job ID for an employment. Use personio_recruiting_job_list for open positions in recruiting.
Inputs
cursorstring- Pagination cursor for the jobs list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
idstring- Only return jobs with these UUIDs. Separate multiple IDs with commas. Example: a1b2c3d4-e5f6-7890-abcd-ef1234567890.
limitinteger- Maximum number of jobs to return in one page, from 1 to 100. Leave empty to use the Personio default of 50. Example: 50.
namestring- Only return jobs with these names. Separate multiple names with commas. Example: Software Engineer,Product Manager.
sortstring- Comma-separated sort fields, name and/or id; prefix with - for descending. Default: id descending. Example: name.
personio_legal_entity_getGet one legal entity (employing company) in Personio by ID.Read-onlyGet Legal Entity
Get one legal entity (employing company) in Personio by ID. Returns the entity's status, country, name, type, registration number, industry, contact person, addresses and bank details. Use this when you have the legal entity ID. Use personio_legal_entity_list to browse entities.
Inputs
legal_entity_idstringrequired- The ID of the legal entity. Get it from personio_legal_entity_list. Example: 123.
personio_legal_entity_listList the legal entities (employing companies) of the Personio account, newest first.Read-onlyList Legal Entities
List the legal entities (employing companies) of the Personio account, newest first. Returns a page of legal entities with id, status, main-entity flag, country, name, type, registration number, industry, contact details, addresses and bank details. Use this to find a legal entity ID. Use personio_legal_entity_get for one known entity.
Inputs
countrystring- Only return legal entities registered in these countries, as ISO 3166-1 alpha-2 codes separated by commas. This is the entity's country, not its address country. Example: DE,IE.
cursorstring- Pagination cursor for the legal entities list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
idstring- Only return legal entities with these IDs. Separate multiple IDs with commas. Example: 123,456.
limitinteger- Maximum number of legal entities to return in one page, from 1 to 100. Leave empty to use the Personio default of 20. Example: 50.
personio_org_unit_getGet one org unit (department or team) in Personio by ID and type.Read-onlyGet Org Unit
Get one org unit (department or team) in Personio by ID and type. Returns the unit's name, abbreviation, description, parent id, creation time and leads, and optionally its full parent chain. Use this when you have the org unit ID, for example from an employment. Use personio_org_unit_list to browse units.
Inputs
org_unit_idintegerrequired- ID of the org unit, for example from an employment's org_units or another unit's parent_id. Example: 1234.
typestringrequired- Type of the org unit, for example department or team. Example: department.
include_parent_chainboolean- Set to true to include the full details of each parent unit up the chain. Example: true.
personio_org_unit_listList org units of one type (for example departments or teams) in Personio.Read-onlyList Org Units
List org units of one type (for example departments or teams) in Personio. Returns a page of org units with id, type, name, abbreviation, description, parent id and creation time, and optionally the IDs of their parent chain. Use this to find department or team IDs. Use personio_org_unit_get for one unit with its leads.
Inputs
typestringrequired- Type of org unit to list, for example department or team. Example: department.
cursorstring- Pagination cursor for the org units list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
include_parent_chainboolean- Set to true to include the IDs of each unit's parent chain. Example: true.
limitinteger- Maximum number of org units to return in one page, from 1 to 100. Leave empty to use the Personio default of 20. Example: 50.
sortstring- Sort order: name, -name, id or -id (minus means descending). Default: id. Example: name.one of
name-nameid-id
personio_person_getGet one person (employee) in Personio by ID.Read-onlyGet Person
Get one person (employee) in Personio by ID. Returns the person's id, email, names, gender, status, profile picture, custom attributes and employments. Use this when you already have the person ID. Use personio_person_list to search by name or email.
Inputs
person_idstringrequired- The ID of the person. Get it from personio_person_list. Example: 12345.
personio_person_listList people (employees) in Personio, filtered by ID, email, name, status, or created/updated date.Read-onlyList Persons
List people (employees) in Personio, filtered by ID, email, name, status, or created/updated date. Returns a page of persons with id, email, first and last name, preferred name, gender, status, custom attributes and a summary of their employments, plus _meta.links for the next page. Use this to find a person's ID or browse employees. Use personio_person_get for one known person.
Inputs
created_at_gtstring- Only return persons created after this date-time (RFC 3339). Example: 2024-01-01T00:00:00Z.
created_at_ltstring- Only return persons created before this date-time (RFC 3339). Example: 2024-12-31T23:59:59Z.
cursorstring- Pagination cursor for the persons list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
emailstring- Only return persons with these email addresses. Separate multiple emails with commas. Example: jane.doe@example.com.
first_namestring- Only return persons with this exact first name. Example: Jane.
idstring- Only return persons with these IDs. Separate multiple IDs with commas. Example: 12345,67890.
last_namestring- Only return persons with this exact last name. Example: Doe.
limitinteger- Maximum number of persons to return in one page, from 1 to 50. Leave empty to use the Personio default of 10. Example: 50.
preferred_namestring- Only return persons with this preferred name. Example: JJ.
statusstring- Filter by employment status. ACTIVE includes persons whose latest employment is active, on leave, or onboarding; INACTIVE includes persons whose latest employment is inactive. Example: ACTIVE.one of
ACTIVEINACTIVE updated_at_gtstring- Only return persons updated after this date-time (RFC 3339). Useful for incremental syncs. Example: 2024-06-01T00:00:00Z.
updated_at_ltstring- Only return persons updated before this date-time (RFC 3339). Example: 2024-06-30T23:59:59Z.
personio_project_getGet one attendance project in Personio by ID.Read-onlyGet Project
Get one attendance project in Personio by ID. Returns the project's name, status, code, description, cost center, parent project, dates, billable flag, client name and type, plus optional tracked-time totals. Use this when you have the project ID. Use personio_project_list to search.
Inputs
project_idstringrequired- The ID of the project. Get it from personio_project_list. Example: 1234.
includestring- Extra fields to add, comma-separated: tracked_minutes, sub_projects_tracked_minutes, sub_projects_count, tracked_periods_count. Example: tracked_minutes.
personio_project_listList attendance projects in Personio, filtered by ID, name, code, status or parent project.Read-onlyList Projects
List attendance projects in Personio, filtered by ID, name, code, status or parent project. Returns a page of projects with id, name, status, project code, description, cost center, parent project, start and end dates, billable flag, client name and project type, plus optional tracked-time totals. Use this to find a project ID for time tracking. Use personio_project_get for one known project.
Inputs
cursorstring- Pagination cursor for the projects list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
idarray- Only return projects with these IDs. Example: ["1234"].
includestring- Extra fields to add to each project, comma-separated: tracked_minutes, sub_projects_tracked_minutes, sub_projects_count, tracked_periods_count. Example: tracked_minutes,sub_projects_count.
limitinteger- Maximum number of projects to return in one page, from 1 to 200. Leave empty to use the Personio default of 200. Example: 50.
namestring- Only return projects with these names. Separate multiple names with commas. Example: Website Relaunch.
parent_project_idstring- Only return sub-projects of these parent projects. Separate multiple IDs with commas. Example: 1234.
project_codestring- Only return projects with these project codes. Separate multiple codes with commas. Example: PRJ-1234.
statusstring- Only return projects with this status. Example: ACTIVE.one of
ACTIVEARCHIVED top_level_onlyboolean- Set to true to return only top-level projects (projects without a parent). Example: true.
personio_project_member_listList the people assigned to an attendance project in Personio.Read-onlyList Project Members
List the people assigned to an attendance project in Personio. Returns a page of members, each with the person reference. Use this to see who can track time on a project. Use personio_project_member_add to assign more people.
Inputs
project_idstringrequired- The ID of the project. Get it from personio_project_list. Example: 1234.
cursorstring- Pagination cursor for the members list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
limitinteger- Maximum number of members to return in one page, from 1 to 200. Leave empty to use the Personio default of 200. Example: 50.
personio_recruiting_application_getGet one job application in Personio Recruiting by ID.Read-onlyGet Recruiting Application
Get one job application in Personio Recruiting by ID. Returns the candidate, job, current stage, application date, channel, anonymization flag, hiring team and timestamps. Custom attributes and tags are not returned. Use this when you have the application ID. Use personio_recruiting_application_stage_transition_list for its stage history.
Inputs
application_idstringrequired- The ID of the application. Get it from personio_recruiting_application_list. Example: 495039.
personio_recruiting_application_listList job applications in Personio Recruiting, newest update first, optionally filtered by candidate email or update time.Read-onlyList Recruiting Applications
List job applications in Personio Recruiting, newest update first, optionally filtered by candidate email or update time. Returns a page of applications with id, candidate, job, current stage, application date, channel, hiring team and timestamps. Custom attributes and tags are not returned. Use this to track applicants. Use personio_recruiting_application_get for one known application.
Inputs
candidate_emailstring- Only return applications of the candidate with this email. Example: john.doe@example.com.
cursorstring- Pagination cursor for the applications list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
limitinteger- Maximum number of applications to return in one page, from 1 to 200. Leave empty to use the Personio default of 100. Example: 50.
updated_at_gtstring- Only return applications updated after this date-time (RFC 3339). Cannot be combined with updated_at_lt. Example: 2025-06-01T00:00:00Z.
updated_at_ltstring- Only return applications updated before this date-time (RFC 3339). Cannot be combined with updated_at_gt. Example: 2025-06-30T23:59:59Z.
personio_recruiting_application_stage_transition_listList the stage history of one job application in Personio Recruiting, latest first.Read-onlyList Application Stage Transitions
List the stage history of one job application in Personio Recruiting, latest first. Returns each stage the application entered and when it entered it. Use this to see how an application moved through the hiring pipeline. Use personio_recruiting_application_get for its current stage.
Inputs
application_idstringrequired- The ID of the application. Get it from personio_recruiting_application_list. Example: 495039.
personio_recruiting_candidate_getGet one candidate in Personio Recruiting by ID.Read-onlyGet Recruiting Candidate
Get one candidate in Personio Recruiting by ID. Returns the candidate's name, email, phone, gender, birthday, location, availability date, LinkedIn profile, applications and timestamps. Custom attributes and tags are not returned. Use this when you have the candidate ID. Use personio_recruiting_candidate_list to search by email.
Inputs
candidate_idstringrequired- The ID of the candidate. Get it from personio_recruiting_candidate_list. Example: 495039.
personio_recruiting_candidate_listList candidates in Personio Recruiting, newest update first, optionally filtered by email or update time.Read-onlyList Recruiting Candidates
List candidates in Personio Recruiting, newest update first, optionally filtered by email or update time. Returns a page of candidates with id, name, email, phone, gender, birthday, location, availability date, LinkedIn profile, their applications and timestamps. Custom attributes and tags are not returned. Use this to look up applicants as people. Use personio_recruiting_application_list for applications to specific jobs.
Inputs
cursorstring- Pagination cursor for the candidates list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
emailstring- Only return the candidate with this email. Example: john.doe@example.com.
limitinteger- Maximum number of candidates to return in one page, from 1 to 200. Leave empty to use the Personio default of 100. Example: 50.
updated_at_gtstring- Only return candidates updated after this date-time (RFC 3339). Cannot be combined with updated_at_lt. Example: 2025-06-01T00:00:00Z.
updated_at_ltstring- Only return candidates updated before this date-time (RFC 3339). Cannot be combined with updated_at_gt. Example: 2025-06-30T23:59:59Z.
personio_recruiting_category_getGet one job category in Personio Recruiting by ID.Read-onlyGet Recruiting Job Category
Get one job category in Personio Recruiting by ID. Returns the category's name and its hiring pipeline stages. Use this when you have the category ID. Use personio_recruiting_category_list to browse categories.
Inputs
category_idstringrequired- The ID of the job category. Get it from personio_recruiting_category_list. Example: 495039.
personio_recruiting_category_listList the job categories configured in Personio Recruiting.Read-onlyList Recruiting Job Categories
List the job categories configured in Personio Recruiting. Returns each category's id, name and hiring pipeline stages. Use this to see which pipeline stages a category's jobs use. Use personio_recruiting_category_get for one category.
Inputs
This tool takes no inputs.
personio_recruiting_job_getGet one job position in Personio Recruiting by ID.Read-onlyGet Recruiting Job
Get one job position in Personio Recruiting by ID. Returns the job's id, name, department, category, company, hiring team and timestamps. Use this when you have the recruiting job ID. Use personio_recruiting_job_list to browse positions.
Inputs
job_idstringrequired- The ID of the recruiting job. Get it from personio_recruiting_job_list. Example: 495039.
personio_recruiting_job_listList job positions in Personio Recruiting, newest update first, optionally filtered by update time.Read-onlyList Recruiting Jobs
List job positions in Personio Recruiting, newest update first, optionally filtered by update time. Returns a page of recruiting jobs with their id, name, department, category, company, hiring team and timestamps. Use this to find a job position ID for applications. Use personio_job_list for the internal job catalogue instead.
Inputs
cursorstring- Pagination cursor for the jobs list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
limitinteger- Maximum number of jobs to return in one page, from 1 to 200. Leave empty to use the Personio default of 100. Example: 50.
updated_at_gtstring- Only return jobs updated after this date-time (RFC 3339). Cannot be combined with updated_at_lt. Example: 2025-06-01T00:00:00Z.
updated_at_ltstring- Only return jobs updated before this date-time (RFC 3339). Cannot be combined with updated_at_gt. Example: 2025-06-30T23:59:59Z.
personio_report_attribute_listList the attributes (columns) that Personio reports can use for this company.Read-onlyList Report Attributes
List the attributes (columns) that Personio reports can use for this company. Returns each attribute's name, display label, description, data type, and whether it can be used for filtering and segmenting. Use this to understand the columns in personio_report_get results.
Inputs
localestring- Locale for labels in the response. Default: en. Example: de.
personio_report_getGet a custom report and its data rows from Personio by ID.Read-onlyGet Report
Get a custom report and its data rows from Personio by ID. Returns the report configuration (columns, time range, filters, grouping) and the table rows, plus a cursor when more rows are available. Use this to read report data. Use personio_report_list to find the report ID and personio_report_attribute_list to understand the columns.
Inputs
report_idstringrequired- The ID of the report (UUID). Get it from personio_report_list. Example: 3f1c2b3a-9d4e-4f5a-8b7c-1d2e3f4a5b6c.
cursorstring- Cursor from a previous response to fetch the next set of rows. Example: 1.
limitinteger- Maximum number of table rows to return. Leave empty to return all rows. Example: 25.
localestring- Locale for labels in the response. Default: en. Example: de.
personio_report_listList the custom reports available in the Personio account, most recent first, optionally filtered by name.Read-onlyList Reports
List the custom reports available in the Personio account, most recent first, optionally filtered by name. Returns a page of reports with id, name, chart type, owner, sharing flag and created, edited and last-viewed times. Use this to find a report ID. Use personio_report_get to read a report's data.
Inputs
cursorstring- Pagination cursor from the previous response. When you pass a cursor, pass only limit with it; other filters make the request fail. Example: kLMvcsaXMDdWQ1XREWY=.
limitinteger- Maximum number of reports to return. A value of 0 or less returns all reports. Example: 25.
namestring- Only return reports whose name matches this search text. Do not combine with cursor. Example: absences 2025.
personio_salary_band_getGet one salary band in Personio by UUID.Read-onlyGet Salary Band
Get one salary band in Personio by UUID. Returns the band's minimum, middle and maximum amounts, currency and workplaces. Use this when you have the salary band ID. Use personio_salary_band_list to browse bands.
Inputs
salary_band_idstringrequired- The ID of the salary band (UUID). Get it from personio_salary_band_list. Example: e1f2a3b4-c5d6-7890-abcd-ef1234567890.
personio_salary_band_listList the salary bands defined in Personio, optionally filtered by ID.Read-onlyList Salary Bands
List the salary bands defined in Personio, optionally filtered by ID. Returns a page of salary bands with id, minimum, middle and maximum amounts, currency and workplaces. Use this to review pay ranges. Use personio_salary_band_get for one known band. Needs a credential with the personio:salary-bands:read scope.
Inputs
cursorstring- Pagination cursor for the salary bands list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
idstring- Only return salary bands with these UUIDs. Separate multiple IDs with commas. Example: e1f2a3b4-c5d6-7890-abcd-ef1234567890.
limitinteger- Maximum number of salary bands to return in one page, from 1 to 100. Leave empty to use the Personio default of 50. Example: 50.
personio_workplace_listList the workplaces (offices and locations) of the Personio account, optionally filtered by ID or name.Read-onlyList Workplaces
List the workplaces (offices and locations) of the Personio account, optionally filtered by ID or name. Returns a page of workplaces with id and name. Use this to find workplace IDs.
Inputs
cursorstring- Pagination cursor for the workplaces list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
idstring- Only return workplaces with these IDs. Separate multiple IDs with commas. Example: 1,2.
limitinteger- Maximum number of workplaces to return in one page, from 1 to 100. Leave empty to use the Personio default of 50. Example: 50.
namestring- Only return workplaces with these names. Separate multiple names with commas. Example: Main Office.
sortstring- Comma-separated sort fields, name and/or id; prefix with - for descending. Default: id ascending. Example: name.
personio_absence_period_createCreate an absence period (time off) for a person in Personio, such as vacation or sick leave.WriteCreate Absence Period
Create an absence period (time off) for a person in Personio, such as vacation or sick leave. Returns the new absence period's id. Use this to book time off. Use personio_absence_period_update to change an existing one. Get the absence type ID from personio_absence_type_list first; whether hours or half days are allowed depends on that type's unit.
Inputs
absence_type_idstringrequired- ID of the absence type (for example Paid vacation). Get it from personio_absence_type_list. Example: cba6fa09-d8fe-4de0-be03-f0a1d48df766.
person_idstringrequired- ID of the person taking the absence. Get it from personio_person_list. Example: 12345.
starts_fromstringrequired- When the absence starts, as a local date-time without a timezone offset (YYYY-MM-DDTHH:MM:SS), in the person's timezone. Do not add Z or an offset. Example: 2025-07-01T00:00:00.
commentstring- Comment attached to the absence. Example: Summer vacation.
ends_atstring- When the absence ends, as a local date-time without a timezone offset (YYYY-MM-DDTHH:MM:SS), in the person's timezone. Leave empty for an open-ended absence such as long-term sick leave. Example: 2025-07-05T00:00:00.
ends_at_typestring- For half-day absence types, whether the absence ends after the FIRST_HALF or SECOND_HALF of the end day. Only used with ends_at. Example: SECOND_HALF.one of
FIRST_HALFSECOND_HALF skip_approvalboolean- Set to true to skip any approval step this change would otherwise need in Personio (for example, a manager approval). Leave empty or false to follow the company's normal approval rules. Example: false.
starts_from_typestring- For half-day absence types, whether the absence starts in the FIRST_HALF or SECOND_HALF of the start day. Leave empty for full days or hourly types. Example: FIRST_HALF.one of
FIRST_HALFSECOND_HALF substitute_idstring- Person ID of the colleague covering during the absence. Only used if the absence type's policy allows substitutes. Example: 67890.
personio_absence_period_updateChange the start, end or comment of an existing absence period in Personio.WriteUpdate Absence Period
Change the start, end or comment of an existing absence period in Personio. Returns an empty response on success (HTTP 204). Use this to move or extend booked time off. Use personio_absence_period_create to book new time off.
- Idempotent
Inputs
absence_period_idstringrequired- The ID of the absence period to update. Get it from personio_absence_period_list. Example: 493eff0a-2c5a-467e-8966-f70b4e3805a6.
commentstring- New comment for the absence. Example: Moved by one day.
ends_atstring- New end, as a local date-time without a timezone offset (YYYY-MM-DDTHH:MM:SS), in the person's timezone. Example: 2025-07-06T00:00:00.
ends_at_typestring- For half-day absence types, FIRST_HALF or SECOND_HALF of the new end day. Only used with ends_at. Example: FIRST_HALF.one of
FIRST_HALFSECOND_HALF skip_approvalboolean- Set to true to skip any approval step this change would otherwise need in Personio (for example, a manager approval). Leave empty or false to follow the company's normal approval rules. Example: false.
starts_fromstring- New start, as a local date-time without a timezone offset (YYYY-MM-DDTHH:MM:SS), in the person's timezone. Example: 2025-07-02T00:00:00.
starts_from_typestring- For half-day absence types, FIRST_HALF or SECOND_HALF of the new start day. Only used with starts_from. Example: SECOND_HALF.one of
FIRST_HALFSECOND_HALF
personio_attendance_period_createRecord an attendance period (working time or a break) for a person in Personio, optionally on a project.WriteCreate Attendance Period
Record an attendance period (working time or a break) for a person in Personio, optionally on a project. Returns the new attendance period's id and any other periods the change affected. Use this to log hours. Use personio_attendance_period_update to change a logged period.
Inputs
person_idstringrequired- ID of the person the time belongs to. Get it from personio_person_list. Example: 12345.
startstringrequired- When the period starts, as a local date-time without a timezone offset (YYYY-MM-DDTHH:MM:SS). Do not add Z or an offset. Example: 2025-01-15T09:00:00.
typestringrequired- WORK for working time, BREAK for a break. Example: WORK.one of
WORKBREAK commentstring- Comment for the period. Example: Customer workshop.
endstring- When the period ends, as a local date-time without a timezone offset (YYYY-MM-DDTHH:MM:SS). Leave empty for a period that is still running. Example: 2025-01-15T17:30:00.
project_idstring- ID of an ACTIVE project to book the time on. Not allowed for BREAK periods. Get it from personio_project_list. Example: 1234.
skip_approvalboolean- Set to true to skip any approval step this change would otherwise need in Personio (for example, a manager approval). Leave empty or false to follow the company's normal approval rules. Example: false.
personio_attendance_period_updateChange the start, end, comment or project of a logged attendance period in Personio.WriteUpdate Attendance Period
Change the start, end, comment or project of a logged attendance period in Personio. Returns an empty response on success (HTTP 204). Use this to correct tracked time. Use personio_attendance_period_create to log new time.
- Idempotent
Inputs
attendance_period_idstringrequired- The ID of the attendance period to update. Get it from personio_attendance_period_list. Example: bd242cd1-5116-41a0-99aa-c12af4837c81.
commentstring- New comment. Example: Adjusted start time.
endstring- New end, as a local date-time without a timezone offset (YYYY-MM-DDTHH:MM:SS). Example: 2025-01-15T17:00:00.
project_idstring- ID of an ACTIVE project to book the time on instead. Not allowed for BREAK periods. Example: 1234.
skip_approvalboolean- Set to true to skip any approval step this change would otherwise need in Personio (for example, a manager approval). Leave empty or false to follow the company's normal approval rules. Example: false.
startstring- New start, as a local date-time without a timezone offset (YYYY-MM-DDTHH:MM:SS). Example: 2025-01-15T08:30:00.
personio_compensation_createCreate a one-time, recurring, fixed or hourly compensation for a person in Personio.WriteCreate Compensation
Create a one-time, recurring, fixed or hourly compensation for a person in Personio. Bonuses are not supported. Returns the created compensation with person, type, value, currency, effective date, interval and comment. Use this to add a payment for payroll. Use personio_compensation_list to review existing compensations. Get the compensation type ID from personio_compensation_type_list first. Needs a credential with both personio:compensations:read and personio:compensations:write.
Inputs
effective_fromstringrequired- Date the compensation takes effect (YYYY-MM-DD). For YEARLY compensations the payout month is this date's month. Example: 2025-01-15.
person_idstringrequired- ID of the person receiving the compensation. Get it from personio_person_list. Example: 12345.
type_idstringrequired- ID of the compensation type. Get it from personio_compensation_type_list. Example: 12e21d39-58f3-4acb-b5ba-9b5ae228ea51.
valuenumberrequired- Amount in the currency's main unit, with up to two decimals (20.50 means twenty euros and fifty cents for EUR). Example: 2500.50.
commentstring- Comment about the compensation. Example: Gym allowance.
currencystring- Currency as an ISO 4217 code. Example: EUR.one of
AEDAFNALLAMDANGAOAARSAUDAWGAZNBAMBBDBDTBGNBHDBIFBMDBNDBOBBRLBSDBTNBWPBYNBZDCADCDFCHFCLPCNYCOPCRCCUCCUPCVECZKDJFDKKDOPDZDEGPERNETBEURFJDFKPGBPGELGHSGIPGMDGNFGTQGYDHKDHNLHRKHTGHUFIDRILSINRIQDIRRISKJMDJODJPYKESKGSKHRKMFKPWKRWKWDKYDKZTLAKLBPLKRLRDLSLLYDMADMDLMGAMKDMMKMNTMOPMRUMURMVRMWKMXNMYRMZNNADNGNNIONOKNPRNZDOMRPABPENPGKPHPPKRPLNPYGQARRONRSDRUBRWFSARSBDSCRSDGSEKSGDSHPSLESLLSOSSRDSSPSTNSVCSYPSZLTHBTJSTMTTNDTOPTRYTTDTWDTZSUAHUGXUSDUYUUZSVESVNDVUVWSTXAFXCDXOFXPFYERZARZMWZWL intervalstring- Payout interval. Required for every compensation type except ONE_TIME, where it is ignored. Example: MONTHLY.one of
MONTHLYQUARTERLYHALF-YEARLYYEARLY
personio_compensation_type_createCreate a one-time or recurring compensation type in Personio, such as a gym benefit or a signing bonus.WriteCreate Compensation Type
Create a one-time or recurring compensation type in Personio, such as a gym benefit or a signing bonus. Returns the new type with its id, name and category. Use this when no existing type fits. Use personio_compensation_type_list to check existing types first.
Inputs
categorystringrequired- Payout frequency of compensations of this type: RECURRING or ONE_TIME. Hourly types are not supported. Example: RECURRING.one of
RECURRINGONE_TIME namestringrequired- Name of the compensation type. Example: Gym benefit.
personio_document_updateUpdate the metadata of a document in Personio: its name, date, comment or category.WriteUpdate Document Metadata
Update the metadata of a document in Personio: its name, date, comment or category. The file itself is not changed. Returns an empty response on success (HTTP 204). Use this to rename or recategorize a document. Use personio_document_list to find the document ID.
- Idempotent
Inputs
document_idstringrequired- The ID of the document. Get it from personio_document_list. Example: 123.
category_idstring- ID of the document category to move the document to. Example: 123.
commentstring- New comment for the document. Example: Signed copy.
datestring- New document date (YYYY-MM-DD); Personio orders documents by this date. Example: 2025-01-01.
namestring- New document name. Example: Employment contract 2025.
personio_employment_updateUpdate a person's employment in Personio: status, type, dates, position, working hours, supervisor, office, org units, legal entity, job or cost centers.WriteUpdate Employment
Update a person's employment in Personio: status, type, dates, position, working hours, supervisor, office, org units, legal entity, job or cost centers. Returns an empty response on success (HTTP 204). Use this for job and contract changes. Use personio_person_update for personal data such as name or email. Get the employment ID from personio_employment_list first.
- Idempotent
Inputs
employment_idstringrequired- The ID of the employment to update. Get it from personio_employment_list. Example: 493eff0a-2c5a-467e-8966-f70b4e3805a6.
person_idstringrequired- The ID of the person. Example: 12345.
contract_end_datestring- Date a temporary employment contract ends (YYYY-MM-DD). Example: 2025-12-31.
cost_centersarray- Split of the employment across cost centers by percentage; this replaces the current split. Each item has the cost center id (from personio_cost_center_list) and a weight; weights must add up to 100. Example: [{"id": "123", "weight": 60}, {"id": "456", "weight": 40}].
employment_start_datestring- Date the employment contract starts (YYYY-MM-DD). Example: 2025-01-01.
full_time_weekly_working_hoursnumber- Hours per week that count as full time for this employment. Example: 40.
job_idstring- UUID of the job (from the Jobs catalogue) to link to the employment. Get it from personio_job_list. Example: a1b2c3d4-e5f6-7890-abcd-ef1234567890.
legal_entity_idstring- ID of the legal entity that employs the person. Get it from personio_legal_entity_list. Example: 123.
office_idstring- ID of the office the person works from. Example: 1234.
org_unitsarray- All org units (departments and teams) for the employment; this replaces the current list. Each item has a type (for example department or team) and the org unit id from personio_org_unit_list. Example: [{"type": "department", "id": "1234"}, {"type": "team", "id": "5678"}].
position_titlestring- Job title (position) of the employment. Example: Senior Engineer.
probation_end_datestring- Date the probation period ends (YYYY-MM-DD). Set this or probation_period_length, not both. Example: 2025-06-30.
probation_period_lengthinteger- Length of the probation period. Set this or probation_end_date, not both. Example: 6.
statusstring- New employment status. Example: ACTIVE.one of
ACTIVEINACTIVEONBOARDINGLEAVE supervisor_idstring- Person ID of the new supervisor. Get it from personio_person_list. Example: 67890.
typestring- Employment type: INTERNAL for employees, EXTERNAL for contractors. Example: INTERNAL.one of
INTERNALEXTERNAL weekly_working_hoursnumber- Hours the person works per week. Example: 40.
personio_person_createCreate a new person (employee) in Personio together with their employment.WriteCreate Person
Create a new person (employee) in Personio together with their employment. Returns the new person's id and the ids of the employments created. Use this to add a new hire. Use personio_person_update to change an existing person, or personio_employment_update to change employment details.
Inputs
first_namestringrequired- First name of the person. Example: Jane.
last_namestringrequired- Last name of the person. Example: Doe.
custom_attributesarray- Custom attribute values for the person. Each item has the attribute id and a value (a string, or a list of strings for multi-select attributes). Example: [{"id": "dynamic_12345", "value": "Berlin"}].
emailstring- Work email of the person. It must be unique across the company. Example: jane.doe@example.com.
employmentsarray- Employment to create with the person, as a list with one employment object. Each employment can set its status (ACTIVE, INACTIVE, ONBOARDING or LEAVE), type (INTERNAL or EXTERNAL), employment_start_date, contract and probation end dates, weekly and full-time weekly working hours, a position title, and references by ID to the supervisor, office, legal_entity, job, org_units (each with a type such as department or team) and cost_centers (each with a percentage weight; weights must total 100). Example: [{"status": "ACTIVE", "type": "INTERNAL", "employment_start_date": "2025-01-01", "position": {"title": "Engineer"}, "weekly_working_hours": 40, "supervisor": {"id": "12345"}}].
genderstring- Gender of the person. Example: FEMALE.one of
MALEFEMALEDIVERSEUNKNOWNUNDEFINED language_codestring- Main language of the person. Example: en.one of
endeesfrnlitsvfi preferred_namestring- Preferred name of the person, if different from the first name. Example: JJ.
personio_person_updateUpdate a person's details in Personio: email, names, gender, language or custom attributes.WriteUpdate Person
Update a person's details in Personio: email, names, gender, language or custom attributes. Returns an empty response on success (HTTP 204). Use this to change personal data. Use personio_employment_update for job, supervisor, status or working hours.
- Idempotent
Inputs
person_idstringrequired- The ID of the person to update. Get it from personio_person_list. Example: 12345.
custom_attributesarray- Custom attribute values to set. Each item has the attribute id and a value (a string, or a list of strings for multi-select attributes). Example: [{"id": "dynamic_12345", "value": "Munich"}].
emailstring- New work email. It must be unique across the company. Example: jane.doe@example.com.
first_namestring- New first name. Example: Jane.
genderstring- New gender. Example: FEMALE.one of
MALEFEMALEDIVERSEUNKNOWNUNDEFINED language_codestring- New main language. Example: de.one of
endeesfrnlitsvfi last_namestring- New last name. Example: Doe.
preferred_namestring- New preferred name. Example: JJ.
personio_project_createCreate an attendance project (or sub-project) in Personio that employees can track time on.WriteCreate Project
Create an attendance project (or sub-project) in Personio that employees can track time on. Returns the new project's id. Use this to set up a project for time tracking. Use personio_project_update to change one, and personio_project_member_add to assign people.
Inputs
namestringrequired- Name of the project. Example: Website Relaunch.
statusstringrequired- Status of the project. Example: ACTIVE.one of
ACTIVEARCHIVED assigned_to_allboolean- Set to true to let every employee track time on the project. Projects assigned to all employees cannot have members. Example: false.
billableboolean- Mark the project as billable. Sub-projects always inherit the parent's billable flag. Example: true.
client_namestring- Client name for the project. Sub-projects cannot have a client name. Example: ACME Inc.
cost_center_idstring- ID of an existing Personio cost center for the project. Sub-projects cannot have a cost center. Get it from personio_cost_center_list. Example: 1234.
descriptionstring- Project description. Example: Relaunch of the company website.
end_datestring- End date of the project, exclusive (YYYY-MM-DD). Example: 2025-12-31.
parent_project_idstring- ID of the parent project, to create a sub-project. Only one level of nesting is allowed. Example: 1234.
project_codestring- Project code; must be unique across all projects and sub-projects. Example: PRJ-1234.
project_typestring- Free-text project type defined by your company. Sub-projects cannot have a project type. Example: External.
start_datestring- First day of the project, inclusive (YYYY-MM-DD). Example: 2025-01-01.
personio_project_member_addAssign one or more people to an attendance project in Personio so they can track time on it.WriteAdd Project Members
Assign one or more people to an attendance project in Personio so they can track time on it. Returns the list of members added. People who are already members are left unchanged. Use this to give people access to a project. Use personio_project_member_list to see current members. If the project was assigned to all employees, it becomes a project with members only. Sub-projects cannot have members.
Inputs
person_idsarrayrequired- IDs of the persons to add. If any ID is invalid the whole request fails. Example: ["12345", "67890"].
project_idstringrequired- The ID of the project. Get it from personio_project_list. Example: 1234.
personio_project_updateUpdate an attendance project in Personio: name, status, code, description, cost center, dates, billable flag, client or type.WriteUpdate Project
Update an attendance project in Personio: name, status, code, description, cost center, dates, billable flag, client or type. Returns an empty response on success (HTTP 204). Use this to rename, archive or edit a project. Use personio_project_create for a new project.
- Idempotent
Inputs
project_idstringrequired- The ID of the project to update. Get it from personio_project_list. Example: 1234.
assigned_to_allboolean- Set to true to let every employee track time on the project. Projects assigned to all employees cannot have members. Example: false.
billableboolean- Mark the project as billable. Sub-projects always inherit the parent's billable flag. Example: true.
client_namestring- Client name for the project. Sub-projects cannot have a client name. Example: ACME Inc.
cost_center_idstring- ID of an existing Personio cost center for the project. Sub-projects cannot have a cost center. Get it from personio_cost_center_list. Example: 1234.
descriptionstring- Project description. Example: Relaunch of the company website.
end_datestring- End date of the project, exclusive (YYYY-MM-DD). Example: 2025-12-31.
namestring- New project name. Example: Website Relaunch 2025.
project_codestring- Project code; must be unique across all projects and sub-projects. Example: PRJ-1234.
project_typestring- Free-text project type defined by your company. Sub-projects cannot have a project type. Example: External.
start_datestring- First day of the project, inclusive (YYYY-MM-DD). Example: 2025-01-01.
statusstring- New status; ARCHIVED hides the project from time tracking. Example: ARCHIVED.one of
ACTIVEARCHIVED
personio_recruiting_application_createSubmit a new job application to Personio Recruiting for a job position.WriteSubmit Recruiting Application
Submit a new job application to Personio Recruiting for a job position. Returns an empty response on success (HTTP 201). Use this to pass applicants from a careers site or sourcing tool into Personio. Set dry_run to true to validate without creating. Get the job position ID from personio_recruiting_job_list. Attaching uploaded documents is not supported by this tool.
Inputs
emailstringrequired- Applicant's email address. Example: john.doe@example.com.
first_namestringrequired- Applicant's first name. Example: John.
job_position_idintegerrequired- ID of the job position to apply for. Get it from personio_recruiting_job_list. Example: 495039.
last_namestringrequired- Applicant's last name. Example: Doe.
application_datestring- Date the application was submitted (YYYY-MM-DD). Defaults to today. Example: 2025-03-01.
attributesarray- Custom application attributes, each with the attribute id and a string value. Example: [{"id": "custom_attribute_123", "value": "Berlin"}].
dry_runboolean- Set to true to validate the application without creating it. Example: true.
external_posting_idstring- Your external ID of the job posting the application came through. Example: careers-site-42.
messagestring- Message or cover note from the applicant. Example: I am excited to apply for this role.
phaseobject- Pipeline phase to place the application in; defaults to the job's first phase. Use {"type": "system", "id": "unassigned"} for a system phase (unassigned, rejected, declined, offer or accepted), or {"type": "custom", "id": 123} for a custom phase ID. Example: {"type": "system", "id": "unassigned"}.
recruiting_channel_idinteger- ID of the recruiting channel the application came through. Example: 1234.
tagsarray- Tags to add to the application. Example: ["referral", "senior"].
No tools match.