All-in-one HR software for managing employees, attendance, time accounts, and performance
personio.listpersons
limit
(NUMBER, Optional): Number of persons to return per page (1-50, default: 10)
cursor
(TEXT, Optional): Pagination cursor for next page of resultsid
(TEXT, Optional): Filter by specific person IDemail
(TEXT, Optional): Filter by email addressfirst_name
(TEXT, Optional): Filter by first namelast_name
(TEXT, Optional): Filter by last namepreferred_name
(TEXT, Optional): Filter by preferred namecreated_at
(TEXT, Optional): Filter by creation date (YYYY-MM-DD)created_at_gt
(TEXT, Optional): Filter persons created after this date (YYYY-MM-DD)created_at_lt
(TEXT, Optional): Filter persons created before this date (YYYY-MM-DD)updated_at
(TEXT, Optional): Filter by updated date (YYYY-MM-DD)updated_at_gt
(TEXT, Optional): Filter persons updated after this date (YYYY-MM-DD)updated_at_lt
(TEXT, Optional): Filter persons updated before this date (YYYY-MM-DD)personio.getperson
id
(TEXT, Required): The unique identifier of the employee (e.g. “12345678”)personio.createperson
first_name
(TEXT, Required): First name of the employee
last_name
(TEXT, Required): Last name of the employeeemail
(TEXT, Optional): Email address of the employee. Must be unique across all employeespreferred_name
(TEXT, Optional): The preferred name of the employee, if relevantgender
(TEXT, Optional): Gender of the employee (e.g. MALE, FEMALE, DIVERSE)language_code
(TEXT, Optional): Main language of the employee (e.g. ‘de’ for German, ‘en’ for English)custom_attributes
(MULTI_LINE_TEXT, Optional): Custom attributes as JSON array or objectemployments
(MULTI_LINE_TEXT, Optional): Employment details as JSON arraypersonio.deleteperson
id
(TEXT, Required): The unique identifier of the employee to delete (e.g. “12345678”)personio.listemployments
person_id
(TEXT, Required): The unique identifier of the person (e.g. “12345678”)
limit
(NUMBER, Optional): Number of employments to return per page (1-50, default: 10)cursor
(TEXT, Optional): Pagination cursor for next page of resultsid
(TEXT, Optional): Filter by specific employment IDupdated_at
(TEXT, Optional): Filter by updated date (YYYY-MM-DD)updated_at_gt
(TEXT, Optional): Filter employments updated after this date (YYYY-MM-DD)updated_at_lt
(TEXT, Optional): Filter employments updated before this date (YYYY-MM-DD)personio.getemployment
person_id
(TEXT, Required): The unique identifier of the person (e.g. “12345678”)
id
(TEXT, Required): The unique identifier of the employment (e.g. “98765432”)personio.updateemployment
person_id
(TEXT, Required): The unique identifier of the person (e.g. “12345678”)
employment_id
(TEXT, Required): The unique identifier of the employment to updatesupervisor
(MULTI_LINE_TEXT, Optional): Supervisor object as JSONoffice
(MULTI_LINE_TEXT, Optional): Office object as JSONorg_units
(MULTI_LINE_TEXT, Optional): Organization units (department/team) as JSON arraylegal_entity
(MULTI_LINE_TEXT, Optional): Legal entity object as JSONposition
(MULTI_LINE_TEXT, Optional): Position object as JSONstatus
(TEXT, Optional): Employment status (e.g. ACTIVE, INACTIVE)employment_start_date
(TEXT, Optional): When the employment contract starts (YYYY-MM-DD)type
(TEXT, Optional): Type of employment (e.g. INTERNAL, EXTERNAL)contract_end_date
(TEXT, Optional): When the employment contract ends, if temporary (YYYY-MM-DD)probation_end_date
(TEXT, Optional): When the probation period ends (YYYY-MM-DD)probation_period_length
(NUMBER, Optional): Length of probation period in monthsweekly_working_hours
(NUMBER, Optional): Number of hours worked weeklyfull_time_weekly_working_hours
(NUMBER, Optional): Hours per week considered full time for this employmentcost_centers
(MULTI_LINE_TEXT, Optional): Weight distribution between cost centers as JSON array with percentagespersonio.updateperson
id
(TEXT, Required): The unique identifier of the employee to update (e.g. “12345678”)
email
(TEXT, Optional): Email address of the employee. Must be unique across all employeesfirst_name
(TEXT, Optional): First name of the employeelast_name
(TEXT, Optional): Last name of the employeepreferred_name
(TEXT, Optional): The preferred name of the employee, if relevantgender
(TEXT, Optional): Gender of the employee (e.g. MALE, FEMALE, DIVERSE)language_code
(TEXT, Optional): Main language of the employee (e.g. ‘de’ for German, ‘en’ for English)custom_attributes
(MULTI_LINE_TEXT, Optional): Custom attributes as JSON array or objectpersonio.getattendance
limit
(NUMBER, Optional): Maximum number of attendance periods to return (1-100, default: 100)
cursor
(TEXT, Optional): Pagination cursor for next page of resultsid
(TEXT, Optional): Filter by attendance period IDs (comma-separated for multiple)person_id
(TEXT, Optional): Filter by person IDs (comma-separated for multiple)start_gte
(TEXT, Optional): Filter periods starting from this date-time (ISO-8601)start_lte
(TEXT, Optional): Filter periods starting before or at this date-time (ISO-8601)end_lte
(TEXT, Optional): Filter periods ending before or at this date-time (ISO-8601)end_gte
(TEXT, Optional): Filter periods ending after or at this date-time (ISO-8601)updated_at_gte
(TEXT, Optional): Filter periods updated after or at this date-time (ISO-8601)updated_at_lte
(TEXT, Optional): Filter periods updated before or at this date-time (ISO-8601)status
(TEXT, Optional): Filter by attendance period statuspersonio.getattendanceperiod
id
(TEXT, Required): The ID of the attendance period to retrievepersonio.createattendance
person_id
(TEXT, Required): The person’s unique identifier
type
(TEXT, Required): Attendance period type: WORK or BREAKstart
(MULTI_LINE_TEXT, Required): Start date/time as JSON: {"date_time": "2024-01-01T09:00:00"}
end
(MULTI_LINE_TEXT, Optional): End date/time as JSON: {"date_time": "2024-01-01T17:00:00"}
comment
(TEXT, Optional): Optional comment for the attendance periodproject_id
(TEXT, Optional): Project ID (only for WORK periods, must be ACTIVE)skip_approval
(BOOLEAN, Optional): Skip any approval that this request would otherwise require (default: false)personio.updateattendanceperiod
id
(TEXT, Required): The ID of the attendance period to update
type
(TEXT, Optional): Attendance period type: WORK or BREAKstart
(MULTI_LINE_TEXT, Optional): Start date/time as JSON: {"date_time": "2024-01-01T09:00:00"}
end
(MULTI_LINE_TEXT, Optional): End date/time as JSON: {"date_time": "2024-01-01T17:00:00"}
comment
(TEXT, Optional): Optional comment for the attendance periodproject_id
(TEXT, Optional): Project ID (only for WORK periods, must be ACTIVE, or null to remove)skip_approval
(BOOLEAN, Optional): Skip any approval that this request would otherwise require (default: false)personio.deleteattendanceperiod
id
(TEXT, Required): The ID of the attendance period to deletepersonio.createabsenceperiod
person_id
(TEXT, Required): The person’s unique identifier
absence_type_id
(TEXT, Required): The ID of the absence type (UUID format)starts_from
(MULTI_LINE_TEXT, Required): Start of absence as JSON: {"date_time": "2025-12-29T00:00:00", "type": "FIRST_HALF"}
ends_at
(MULTI_LINE_TEXT, Optional): End of absence as JSON: {"date_time": "2026-01-01T00:00:00", "type": "SECOND_HALF"}
comment
(TEXT, Optional): Optional comment for the absence periodskip_approval
(BOOLEAN, Optional): Skip any approval that this request would otherwise require (default: false)personio.listcompensationtypes
limit
(NUMBER, Optional): Number of compensation types to return per page (1-100, default: 100)
cursor
(TEXT, Optional): Pagination cursor for next page of resultspersonio.createcompensationtype
name
(TEXT, Required): Name of the compensation type
category
(TEXT, Required): Payout frequency: ONE_TIME or RECURRINGpersonio.createcompensation
person_id
(TEXT, Required): The person ID or person object as JSON {"id": "12345678"}
type_id
(TEXT, Required): The compensation type ID or type object as JSON {"id": "uuid"}
value
(NUMBER, Required): Amount in currency’s numeric unit with up to 2 decimal placeseffective_from
(TEXT, Required): The effective start date of the compensation (YYYY-MM-DD)interval
(TEXT, Optional): Payout interval: MONTHLY, YEARLY (mandatory for RECURRING, ignored for ONE_TIME)comment
(TEXT, Optional): Optional comment about this compensationpersonio.listlegalentities
id
(TEXT, Optional): Filter by one or more legal entity IDs (comma-separated for multiple)
country
(TEXT, Optional): Filter by country codes (comma-separated for multiple, e.g. DE,US)limit
(NUMBER, Optional): Number of legal entities to return per page (1-100, default: 20)cursor
(TEXT, Optional): Pagination cursor for next page of resultspersonio.getlegalentity
id
(TEXT, Required): The ID of the legal entity to retrievepersonio.getorgunit
id
(TEXT, Required): The ID of the Org Unit to retrieve. Get this from list_employments or employment records
type
(TEXT, Required): The type of the Org Unit (e.g. team or department)include_parent_chain
(BOOLEAN, Optional): Include the parent org unit chain in the response (default: false)personio.listabsenceperiods
limit
(NUMBER, Optional): Maximum number of absence periods to return (1-100, default: 100)
cursor
(TEXT, Optional): Pagination cursor for next page of resultsid
(TEXT, Optional): Filter by one or more absence period IDsabsence_type_id
(TEXT, Optional): Filter by one or more absence type IDsperson_id
(TEXT, Optional): Filter by one or more person IDsstarts_from_gte
(TEXT, Optional): Filter periods starting from this date-time (inclusive, ISO-8601)starts_from_lte
(TEXT, Optional): Filter periods starting before or at this date-time (ISO-8601)ends_at_lte
(TEXT, Optional): Filter periods ending before or at this date-time (ISO-8601)ends_at_gte
(TEXT, Optional): Filter periods ending after or at this date-time (ISO-8601)updated_at_gte
(TEXT, Optional): Filter periods updated after or at this date-time (ISO-8601)updated_at_lte
(TEXT, Optional): Filter periods updated before or at this date-time (ISO-8601)personio.getabsenceperiod
id
(TEXT, Required): The ID of the absence period to retrieve. Get this from list_absence_periods or create_absence responsespersonio.updateabsenceperiod
id
(TEXT, Required): The ID of the absence period to update
starts_from
(MULTI_LINE_TEXT, Optional): Start of absence period as JSON object: {"date_time": "2025-12-29T00:00:00", "type": "FIRST_HALF"}
ends_at
(MULTI_LINE_TEXT, Optional): End of absence period as JSON object: {"date_time": "2026-01-01T00:00:00", "type": "SECOND_HALF"}
comment
(TEXT, Optional): Optional comment for the absence periodskip_approval
(BOOLEAN, Optional): Skip any approval that this update would otherwise require (default: false)personio.deleteabsenceperiod
id
(TEXT, Required): The ID of the absence period to deletepersonio.getabsenceperiodbreakdowns
id
(TEXT, Required): The ID of the absence period
limit
(NUMBER, Optional): Number of breakdown days to return (1-28, default: 28)cursor
(TEXT, Optional): Pagination cursor for next page of resultspersonio.gettimeofftypes
limit
(NUMBER, Optional): Maximum number of absence types to return (1-100, default: 100)
cursor
(TEXT, Optional): Pagination cursor for next page of resultspersonio.getabsencetype
id
(TEXT, Required): The ID of the absence type (UUID format)personio.listdocuments
owner_id
(TEXT, Required): The ID of the owner of the documents
category_id
(TEXT, Optional): The ID of the category in which the documents belongcreated_at_gte
(TEXT, Optional): Filter documents created on or after this date (YYYY-MM-DD)created_at_lt
(TEXT, Optional): Filter documents created before this date (YYYY-MM-DD)limit
(NUMBER, Optional): Number of documents to return (1-200, default: 100)cursor
(TEXT, Optional): Pagination cursor for next page of resultspersonio.deletedocument
document_id
(TEXT, Required): The ID of the document to deletepersonio.listcompensations
start_date
(TEXT, Optional): Start date for compensations (YYYY-MM-DD). Duration with end_date must be ≤ 1 month
end_date
(TEXT, Optional): End date for compensations (YYYY-MM-DD). Duration with start_date must be ≤ 1 monthperson_id
(TEXT, Optional): Filter by one or more person IDs (comma-separated for multiple)legal_entity_id
(TEXT, Optional): Filter by one or more legal entity IDs (comma-separated for multiple)limit
(NUMBER, Optional): Number of compensations to return per page (1-100, default: 100)cursor
(TEXT, Optional): Pagination cursor for next page of resultspersonio.searchpersonbyemail
email
(TEXT, Required): The email address of the employee to search forpersonio.gettimeoffbalance
employeeId
(TEXT, Required): The unique identifier of the employeepersonio.getcustomattributes
personio.listapplications
limit
(NUMBER, Optional): Number of applications to return (1-200, default: 100)
cursor
(TEXT, Optional): Pagination cursor for next page of resultsupdated_at_lt
(TEXT, Optional): Return applications updated before this date/time (ISO 8601 format). Cannot be used with ‘Updated after’updated_at_gt
(TEXT, Optional): Return applications updated after this date/time (ISO 8601 format). Cannot be used with ‘Updated before’candidate_email
(TEXT, Optional): Filter applications by candidate email addresspersonio.getapplication
id
(TEXT, Required): The unique identifier of the applicationpersonio.getapplicationstagetransitions
id
(TEXT, Required): The unique identifier of the applicationpersonio.listcandidates
limit
(NUMBER, Optional): Number of candidates to return (1-200, default: 100)
cursor
(TEXT, Optional): Pagination cursor for next page of resultsupdated_at_lt
(TEXT, Optional): Return candidates updated before this date/time (ISO 8601 format). Cannot be used with ‘Updated after’updated_at_gt
(TEXT, Optional): Return candidates updated after this date/time (ISO 8601 format). Cannot be used with ‘Updated before’email
(TEXT, Optional): Filter candidates by email addresspersonio.getcandidate
id
(TEXT, Required): The unique identifier of the candidatepersonio.listjobs
limit
(NUMBER, Optional): Number of jobs to return (1-200, default: 100)
cursor
(TEXT, Optional): Pagination cursor for next page of resultsupdated_at_lt
(TEXT, Optional): Return jobs updated before this date/time (ISO 8601 format). Cannot be used with ‘Updated after’updated_at_gt
(TEXT, Optional): Return jobs updated after this date/time (ISO 8601 format). Cannot be used with ‘Updated before’personio.getjob
id
(TEXT, Required): The unique identifier of the jobpersonio.listjobcategories
personio.getjobcategory
id
(TEXT, Required): The unique identifier of the job categorypersonio.listcostcenters
id
(TEXT, Optional): Filter by one or more cost center IDs (comma-separated)
name
(TEXT, Optional): Filter by one or more cost center names (comma-separated)sort
(TEXT, Optional): Sort results by field. Use field name for ascending (e.g., ‘name’) or minus sign for descending (e.g., ‘-name’). Options: id, -id, name, -namelimit
(NUMBER, Optional): Number of cost centers to return (1-100, default: 50)cursor
(TEXT, Optional): Pagination cursor for next page of resultspersonio.listworkplaces
id
(TEXT, Optional): Filter by one or more workplace IDs (comma-separated)
name
(TEXT, Optional): Filter by one or more workplace names (comma-separated)sort
(TEXT, Optional): Sort results by field. Use field name for ascending (e.g., ‘name’) or minus sign for descending (e.g., ‘-name’). Options: id, -id, name, -namelimit
(NUMBER, Optional): Number of workplaces to return (1-100, default: 50)cursor
(TEXT, Optional): Pagination cursor for next page of resultsIssue | Solution |
---|---|
Authentication failed | Verify your API Key credentials |
Rate limit exceeded | Reduce request frequency |
Data not found | Check permissions and data availability |
Connection timeout | Verify network connectivity |