API reference / ZiloHR
ZiloHR
Employees, attendance and leave.
List employees#
Needs the person's role to allow Employees: view.
Query
qstringstatusstringlimitintegercursorstringnext value from the previous page. Up to 500 characters.Answer · 200 OK
dataarray of objectidstringcodestringnamestringemailstring | nullphonestring | nulldesignationstring | nulldepartmentstring | nullstatusstringjoinedOnstring | nullmanagerIdstring | nullnextstring | nullcursor for the next page; null on the last.curl "https://api.zilomail.in/v1/hr/employees?limit=20" \
-H "Authorization: Bearer $ZILO_TOKEN"{
"data": [
{
"id": "string",
"code": "string",
"name": "string",
"email": "string",
"phone": "string",
"designation": "string",
"department": "string",
"status": "string",
"joinedOn": "2026-10-17",
"managerId": "string"
}
],
"next": "string"
}Try it
Sign in to call it as yourself.
Get an employee#
By id or employee code, or me. Anyone may read their own record (as in the ESS app); others need Employees: view.
Path
idstringrequiredAnswer · 200 OK
idstringcodestringnamestringemailstring | nullphonestring | nulldesignationstring | nulldepartmentstring | nullstatusstringjoinedOnstring | nullmanagerIdstring | nullcurl "https://api.zilomail.in/v1/hr/employees/ID" \
-H "Authorization: Bearer $ZILO_TOKEN"{
"id": "string",
"code": "string",
"name": "string",
"email": "string",
"phone": "string",
"designation": "string",
"department": "string",
"status": "string",
"joinedOn": "2026-10-17",
"managerId": "string"
}Try it
Sign in to call it as yourself.
Attendance#
Days from from to to (at most 62). Without employee, the person's own; others need Attendance: view.
Query
fromstringrequiredtostringrequiredemployeestringAnswer · 200 OK
dataarray of objectemployeeIdstringdatestringstatusstringsourcestringcheckInstring | nullcheckOutstring | nullnotesstring | nullcurl "https://api.zilomail.in/v1/hr/attendance?from=2026-10-01&to=2026-10-31" \
-H "Authorization: Bearer $ZILO_TOKEN"{
"data": [
{
"employeeId": "string",
"date": "2026-10-17",
"status": "string",
"source": "string",
"checkIn": "2026-10-17T09:30:00.000Z",
"checkOut": "2026-10-17T09:30:00.000Z",
"notes": "string"
}
]
}Try it
Sign in to call it as yourself.
Check in#
The person checks in now (their own attendance, as in the ESS app); location optional.
Body
latnumberlngnumberAnswer · 200 OK
employeeIdstringdatestringstatusstringsourcestringcheckInstring | nullcheckOutstring | nullnotesstring | nullcurl -X POST "https://api.zilomail.in/v1/hr/attendance/check-in" \
-H "Authorization: Bearer $ZILO_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{}'{
"employeeId": "string",
"date": "2026-10-17",
"status": "string",
"source": "string",
"checkIn": "2026-10-17T09:30:00.000Z",
"checkOut": "2026-10-17T09:30:00.000Z",
"notes": "string"
}Try it
Sign in to call it as yourself.
Check out#
Body
latnumberlngnumberAnswer · 200 OK
employeeIdstringdatestringstatusstringsourcestringcheckInstring | nullcheckOutstring | nullnotesstring | nullcurl -X POST "https://api.zilomail.in/v1/hr/attendance/check-out" \
-H "Authorization: Bearer $ZILO_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{}'{
"employeeId": "string",
"date": "2026-10-17",
"status": "string",
"source": "string",
"checkIn": "2026-10-17T09:30:00.000Z",
"checkOut": "2026-10-17T09:30:00.000Z",
"notes": "string"
}Try it
Sign in to call it as yourself.
Leave types#
With the person's balance for this year.
Answer · 200 OK
dataarray of objectidstringnamestringpaidbooleanhalfDaybooleanavailablenumber | nullcurl "https://api.zilomail.in/v1/hr/leave/types" \
-H "Authorization: Bearer $ZILO_TOKEN"{
"data": [
{
"id": "string",
"name": "string",
"paid": false,
"halfDay": false,
"available": 0
}
]
}Try it
Sign in to call it as yourself.
Leave requests#
The person's own requests, newest first.
Query
limitintegercursorstringnext value from the previous page. Up to 500 characters.Answer · 200 OK
dataarray of objectidstringnumberstringemployeeIdstringtypeobjectidstringnamestringpaidbooleanfromstringtostringhalfDaybooleandaysnumberreasonstring | nullstatusstringcreatedAtstringnextstring | nullcursor for the next page; null on the last.curl "https://api.zilomail.in/v1/hr/leave?limit=20" \
-H "Authorization: Bearer $ZILO_TOKEN"{
"data": [
{
"id": "string",
"number": "string",
"employeeId": "string",
"type": {
"id": "string",
"name": "string",
"paid": false
},
"from": "2026-10-17",
"to": "2026-10-17",
"halfDay": false,
"days": 0,
"reason": "string",
"status": "string",
"createdAt": "2026-10-17T09:30:00.000Z"
}
],
"next": "string"
}Try it
Sign in to call it as yourself.
Apply for leave#
For the person themselves. It goes to their approvers like any request; working days only are counted.
Body
typeIdstringrequiredfromstringrequiredtostringhalfDaybooleanreasonstringAnswer · 201 Created
idstringnumberstringemployeeIdstringtypeobjectidstringnamestringpaidbooleanfromstringtostringhalfDaybooleandaysnumberreasonstring | nullstatusstringcreatedAtstringOr 202 with the approval it waits for: see Approvals.
curl -X POST "https://api.zilomail.in/v1/hr/leave" \
-H "Authorization: Bearer $ZILO_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"typeId": "string",
"from": "2026-10-17"
}'{
"id": "string",
"number": "string",
"employeeId": "string",
"type": {
"id": "string",
"name": "string",
"paid": false
},
"from": "2026-10-17",
"to": "2026-10-17",
"halfDay": false,
"days": 0,
"reason": "string",
"status": "string",
"createdAt": "2026-10-17T09:30:00.000Z"
}Try it
Sign in to call it as yourself.