canonical: https://jentic.com/apis/personio.de/personio-api

# Personio De Personio API

Jentic publishes the only available OpenAPI specification for Personio API, keeping it validated and agent-ready. The Personio API provides 46 endpoints for managing the full employee lifecycle including person records, employments, absence periods, attendance tracking, projects, compensations, recruiting pipelines, document management, and webhook configuration. It serves as the programmatic interface for Personio's HR platform used by European SMBs and mid-market companies.

## For AI agents

Manage the full employee lifecycle including person records, absences, attendance, compensations, recruiting applications, and organizational units. Supports 46 endpoints across HR operations for European companies.

## Scope

Does not handle payroll processing, tax calculations, or benefits administration - use for employee records, absences, attendance, and recruiting data only.

## Capabilities

- Create and manage employee records with employment history and personal details
- Track absence periods with daily breakdowns and absence type categorization
- Record and query attendance periods for timesheet management
- Manage compensation records and types for payroll preparation
- Access recruiting pipeline data including candidates, applications, and open positions
- Configure webhooks for real-time HR event notifications
- Download and list employee documents for compliance and records management

## Use cases

### Automated Employee Onboarding

Create person records and associated employments programmatically when new hires are confirmed. The API supports POST /persons for creating employee records, GET /persons/{person-id}/employments for managing employment history, and POST /compensations for setting up salary data. Agents can trigger complete onboarding workflows from an accepted offer letter.

Example prompt: Create a new person via POST /persons with name, email, and department, then create an employment record via the employments endpoint with start date, position title, and contract type

### Absence and Attendance Management

Track employee absences and attendance programmatically for timesheet compliance and leave balance calculations. The API provides full CRUD on absence-periods and attendance-periods, plus GET /absence-types for category lookup and GET /absence-periods/{id}/breakdowns for daily detail. Agents can automate leave requests, approvals, and timesheet reconciliation.

Example prompt: Create an absence period via POST /absence-periods for employee ID 456 with type 'vacation', start date '2026-07-01', and end date '2026-07-05', then verify via GET /absence-periods/{id}/breakdowns

### Recruiting Pipeline Integration

Access the full recruiting pipeline including open positions, candidates, and applications. GET /recruiting/jobs lists open positions, GET /recruiting/candidates retrieves candidate profiles, and GET /recruiting/applications shows application status across the pipeline. Agents can sync this data with ATS tools or produce hiring funnel reports.

Example prompt: List all open positions via GET /recruiting/jobs, then retrieve applications via GET /recruiting/applications filtered by job ID to assess the current candidate pipeline

### Compensation and Payroll Preparation

Manage compensation records for payroll preparation by creating and querying salary data, compensation types, and employment terms. POST /compensations creates new compensation entries, GET /compensations lists existing records, and GET /compensations/types provides the compensation category taxonomy. This enables automated payroll data feeds.

Example prompt: Create a compensation record via POST /compensations for employee ID 789 with annual salary amount, effective date, and compensation type ID

### AI Agent HR Operations via Jentic

AI agents discover and execute Personio HR operations through Jentic without building custom integrations. Agents search for HR capabilities by intent, receive operation schemas with Bearer auth handled by Jentic's vault, and manage employees, absences, or recruiting data through a unified interface. Integration takes under an hour versus days of direct API work.

Example prompt: Search Jentic for 'create an employee absence record', load the POST /absence-periods schema with auth resolved, and execute with employee ID, absence type, and date range

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /persons | List all employee records |
| POST | /persons | Create a new person record |
| POST | /absence-periods | Create an absence period |
| POST | /attendance-periods | Create an attendance entry |
| GET | /recruiting/applications | List recruiting applications |
| POST | /compensations | Create a compensation record |
| POST | /webhooks | Create a webhook subscription |
| GET | /reports/{id} | Get a specific report |

## Key resources

- **Persons** — Create, read, update, and delete employee records
- **Employments** — Manage employment history for each person
- **Absence Periods** — Track leave, vacation, and sick time with daily breakdowns
- **Attendance Periods** — Record and query working time entries
- **Compensations** — Manage salary and compensation records
- **Recruiting** — Access jobs, candidates, applications, and categories
- **Webhooks** — Configure event-driven notifications for HR changes

## Why Jentic

- **Setup:** Wiring the Personio API by hand means obtaining a bearer token from its auth endpoint, targeting api.personio.de/v2, and handling the request formatting for persons, absences, attendance, and recruiting yourself. Through Jentic you install once, import the Personio API from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Personio puts the report id in the URL path (/reports/{id}), so a rule can pin your agent to reading one report; for the person, absence, and attendance operations the target travels in the request body, so there you limit the agent to the operations it needs, such as listing persons or creating an absence period. You choose the operations it may call, so writes like creating persons or registering webhooks are not included unless you add them.
- **Credential handling:** Your Personio token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'list employees' or 'record an absence period', and Jentic returns the matching Personio operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Personio Authentication API** — The auth API provides the token exchange endpoint needed before calling Personio API endpoints.
- **BambooHR API** — BambooHR provides similar HR management with stronger US market focus and time-off management.
- **HiBob API** — HiBob offers modern HR with culture and engagement features alongside core people management.
- **Gusto API** — Gusto handles US payroll processing that can complement Personio's employee data management.

## FAQ

### Why is there no official OpenAPI spec for Personio API?

Personio does not publish an OpenAPI specification for their v2 API. Jentic generates and maintains this spec so that AI agents and developers can call Personio API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Personio API use?

The Personio API uses Bearer token authentication. Obtain a token via POST /auth/token with your client_id and client_secret. The token is then included in the Authorization header for all subsequent requests. Through Jentic, token acquisition and refresh are handled automatically.

### Can I manage employee absences in bulk?

The API handles absence periods individually via POST /absence-periods and PATCH /absence-periods/{id}. For bulk operations, agents iterate over employee IDs and create or update absence records sequentially. Each absence requires a person ID, absence type, start date, and end date.

### How do I access recruiting data through Jentic?

Search Jentic for 'list recruiting applications' to discover GET /recruiting/applications. Load the schema and execute to retrieve application records. Related endpoints include GET /recruiting/jobs for positions, GET /recruiting/candidates for candidate profiles, and GET /recruiting/categories for job categories.

### What HR data can I access through the Personio API?

The API covers persons (employee records), employments (job history), absence periods (leave tracking), attendance periods (timesheets), projects, compensations (salary data), organizational units, legal entities, recruiting data (jobs, candidates, applications), documents, reports, and webhooks. It spans 46 endpoints across the full employee lifecycle.

### Can I set up webhooks for employee data changes?

Yes. POST /webhooks creates a subscription with a callback URL and event filter. GET /webhooks lists active subscriptions, PATCH /webhooks/{id} updates configuration, and DELETE /webhooks/{id} removes them. GET /webhooks/{id}/events shows the event history for a specific webhook.

### Can I limit what my agent is allowed to do with the Personio API?

Yes. Because you run Jentic One yourself, your own rules decide which Personio operations and credentials the agent can use, so you can grant just what it needs, such as listing persons or creating an absence period, and leave writes like creating person records or registering webhooks out unless you add them. For reports the report id sits in the URL path (GET /reports/{id}), so a rule can pin the agent to reading a single report. For the person, absence, and attendance operations the target travels in the request body, so there you scope the agent by the specific operations it may call rather than by a fixed record.
