POST
Create a time off request (absence / holiday)
Scope:
team:time-off.writehttps://api.holded.com/api/v2/employees/{employeeId}/time-offsCreates a new time off request (absence, holiday, vacation, sick leave, etc.) for the specified employee.
Parameters
Path parameters
employeeId
stringrequiredEmployee ID (24-character hexadecimal ObjectId)
Request body
object
time_off_type_idstringrequired
Time off type identifier (e.g. holiday, sick leave, vacation, parental leave)
start_datestring<date>required
Start date (YYYY-MM-DD)
end_datestring<date>required
End date (YYYY-MM-DD). Equal to start_date for single-day requests.
start_periodstring | nulloptional
Half-day granularity: morning, afternoon, full_day
Enum:
morningafternoonfull_dayhourlyreasonstring | nulloptional
Optional note or reason
start_hourstring | nulloptional
Start time for HOURS-granularity types (HH:MM)
num_hoursnumber | nulloptional
Duration in hours. Multiple of 0.5.
Request
python
import requests
url = "https://api.holded.com/api/v2/employees/507f1f77bcf86cd799439012/time-offs"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
}
payload = {
"time_off_type_id": "507f1f77bcf86cd799439013",
"start_date": "2026-06-01",
"end_date": "2026-06-05",
"start_period": "morning",
"reason": "string",
"start_hour": "09:00",
"num_hours": 4
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())Responses
Response
json
{
"id": "507f1f77bcf86cd799439011"
}Success responses
201Absence / time off request createdapplication/jsonobject
idstring
Error responses
400Bad requestapplication/json401Invalid or missing API keyapplication/json403Insufficient permissionsapplication/json404Employee not foundapplication/json422Invalid time off dataapplication/json429Rate limit exceededapplication/json