Personio automation
Book Personio time off for a whole team
The office closes between Christmas and New Year, and HR has to enter the same days on every employee profile, one by one.
Cotlet does it in your own Personio account with list_employees, list_time_off and request_time_off, called by your AI agent, an n8n workflow or a script.
Hosted · nothing to install or maintain
Can Personio do this on its own?
Personio documents no bulk booking of time off in the interface (checked 16 Oct 2026). The API creates an absence period for one person per call with company-wide client credentials, which an admin has to create under Marketplace > Connected integrations, and the beta MCP creates time off only where its write access is switched on. Neither checks the existing absences of the team before booking.
How you do it in Personio today
- Open the employee profile, go to Time off and click Request time off to book on someone else's behalf.
- Choose the time off type, then add the dates; Personio shows the duration and the remaining balance on screen.
- Half days for the first and last day only appear when an admin switched on the Half-day requests setting for that time off type.
- An employee without an assigned time off policy cannot get that type, so a few profiles stop the routine with a missing type.
- Repeat for every person in the team, then check the Team calendar for clashes.
How to book Personio time off for a whole team
Book 24 to 26 December as company-wide time off of type Vacation for everyone in the Berlin office. Skip employees who already have time off on those days and list who was skipped. - 01
Build the list
list_employees returns the people in the office or team you name; the agent keeps active employees and drops anyone whose employment already ended before the first day.
- 02
Check what already exists
list_time_off for the date window shows who is away on those days, so a person with a vacation or sick day already booked is skipped instead of double booked.
- 03
Check the time off type
If the type is missing for an employee because no time off policy is assigned, the agent stops for that person and names the reason rather than picking another type.
- 04
Book person by person
request_time_off runs once per remaining employee, on their behalf. Each call asks for your OK by default, and the agent reports the first failure instead of continuing blindly.
- 05
Report the result
The agent returns who was booked, who was skipped and why, so HR can fix the few exceptions by hand.
What you get back
Berlin office: 18 employees
Booked 24 to 26 Dec (Vacation) for 15
Skipped 3:
- Jonas Weber: already on leave 22 Dec to 2 Jan
- Pia Novak: no Vacation policy assigned
- Ana Lopez: employment ended 30 Sep Other ways to ask
- Book a half day off on 24 December for everyone in Support, using the half-day setting.
- Add the same two bridge days to every employee in Sales, but only people with more than 10 vacation days left.
- List who in Engineering is off between 20 Dec and 5 Jan, but do not book anything.
What Personio allows, and what to know first
- Personio lets you request time off for someone else from the employee profile, under Time off > Request time off.
- Half days for the first and last day only show when an admin enabled the Half-day requests setting for a daily time off type.
- An employee needs an assigned time off policy to see or request a time off type.
- Open-ended requests are allowed and are cleared by removing the end date in the request form.
- Whether the booking goes to approval depends on permissions: only people with Propose permissions for the type trigger an approval process, and Edit permissions skip it.
request_time_off asks for your OK by default. To run it on a schedule without you, switch confirmation off for that tool in your dashboard.
Sources: Personio Help: Request time off · Personio Help: Set up time off approval rules · Personio Developer Hub: Get started with the Personio API
Call request_time_off from a script
curl -X POST https://cotlet.dev/api/v1/personio/time-off/request \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"employee_id":"emp_2041","time_off_type":"Vacation","start_date":"2026-12-24","end_date":"2026-12-26"}' {
"time_off_id": "to_93a1",
"employee_id": "emp_2041",
"time_off_type": "Vacation",
"start_date": "2026-12-24",
"end_date": "2026-12-26",
"days": 3,
"status": "pending"
} MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is personio_write → request_time_off. Example data.
Schedule it in n8n, Make, Zapier or cronPersonio tools this automation uses
| Tool | Parameters |
|---|---|
| list_employees | team, status, search, limit, cursor |
| list_time_off | from, to, employee_id, team, status, cursor |
| request_time_off | time_off_type, start_date, end_date, employee_id, half_day_start, half_day_end, comment |
Frequently asked questions
Is it safe to connect Personio to Cotlet?
Yes. You sign in to Personio yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Personio once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.
Give your agent access to Personio.
Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Personio.