TimeClock 365 API Guide
Connect your organizational systems directly to TimeClock 365. Pull attendance data, punch records, lunch breaks, and full timesheets - automatically and accurately.
Technical Connection Details
All API calls use a single JSON-RPC endpoint over HTTPS. Every request must include a Bearer token in the Authorization header.
https://live.timeclock365.com/api/v1/json-rpc application/json Authentication
All requests must include a Bearer token in the Authorization header. You can generate and manage your API keys under the Integrations tab in your TimeClock 365 dashboard.
Authorization: Bearer YOUR_API_TOKEN Content-Type: application/json
What You Can Do with the API
Sessions
Pull clock-in and clock-out sessions per employee with timezone, location, and punch source.
Lunches
Retrieve lunch break start and end times per employee for any date range.
Timesheet
Full timesheets with work sessions, nested lunch breaks, and task work logs in one call.
Extended Sessions
Detailed attendance with profile data, worked/leave totals, expected hours, absences, and approvals.
Create Users & Groups
Provision employees and groups in bulk, mapped to your own system via external IDs.
Deactivate Users
Offboard employees in bulk with an effective deactivation date.
Endpoints
All requests are POST to the base URL with the method name in the JSON body.
Authentication & Example Request
Generate your API token from the dashboard under Settings → Integrations → API Keys. All calls are JSON-RPC 2.0 - a POST to the base URL with the method name in the body.
curl -X POST "https://live.timeclock365.com/api/v1/json-rpc" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "timesheet",
"params": {
"startDate": "2026-01-01",
"endDate": "2026-01-31"
},
"id": 123
}' All read endpoints accept an optional groupIds parameter - an array of TimeClock 365 group IDs. When provided, only employees from those groups are returned; when omitted, all employees in the company are included.
Sessions
Retrieve clock-in / clock-out sessions per employee for a date range, including timezone, location type, and the source of each punch (web, phone, terminal).
method: "sessions" | Parameter | Type | Description |
|---|---|---|
| startDate | string | Start date (YYYY-MM-DD) |
| endDate | string | End date (YYYY-MM-DD) |
| groupIds | int[] | Optional - filter by group IDs, e.g. [2067, 3426] |
{
"jsonrpc": "2.0",
"method": "sessions",
"params": {
"startDate": "2025-10-08",
"endDate": "2025-10-15",
"groupIds": [2067, 3426]
},
"id": 121
} {
"jsonrpc": "2.0",
"id": 121,
"result": [
{
"employeeNumber": 1265,
"email": "[email protected]",
"sessions": [
{
"startDate": "2024-10-09 08:12:34",
"endDate": "2024-10-09 17:18:34",
"timezone": "Asia/Jerusalem",
"locationType": "office",
"startSourceType": "web",
"endSourceType": "phone"
}
]
}
]
} Extended Sessions
The full employee attendance picture: profile fields, groups, worked/leave totals, expected hours per day, and per-session details including absences, notes, and approval info.
method: "extended-sessions" | Parameter | Type | Description |
|---|---|---|
| startDate | string | Start date (YYYY-MM-DD) |
| endDate | string | End date (YYYY-MM-DD) |
| groupIds | int[] | Optional - filter by group IDs |
{
"jsonrpc": "2.0",
"method": "extended-sessions",
"params": {
"startDate": "2025-01-24",
"endDate": "2025-01-24"
},
"id": 123
} {
"jsonrpc": "2.0",
"id": 123,
"result": [
{
"id": 21814,
"employeeNumber": "31394",
"email": "[email protected]",
"passport": "Elena21814",
"groups": [],
"workStartedAt": "2010-01-03",
"workEndedAt": null,
"birthday": "1990-12-13",
"gender": "female",
"totalWorkedSeconds": 10956,
"totalLeaveSeconds": 0,
"expectedSeconds": 0,
"expectedHoursPerDay": [
{ "date": "2026-01-24", "hours": 9 }
],
"sessions": [
{
"startDate": "2025-01-24 12:35:50",
"startDateSentAt": "2025-01-24 12:35:50",
"startNote": null,
"endDate": "2025-01-24 15:38:12",
"endDateSentAt": "2025-01-24 15:38:12",
"endNote": null,
"duration": 10942,
"timezone": "Asia/Jerusalem",
"locationType": "office",
"startSourceType": "web",
"endSourceType": "web",
"isAbsence": false,
"absenceName": null,
"absenceNote": null,
"absenceApprovedDate": null,
"absenceApprovedManager": null,
"absenceCodeDays": null,
"absenceCodeHors": null
}
]
}
]
} Lunches
Retrieve lunch break start/end times per employee for a date range.
method: "lunches" | Parameter | Type | Description |
|---|---|---|
| startDate | string | Start date (YYYY-MM-DD) |
| endDate | string | End date (YYYY-MM-DD) |
| groupIds | int[] | Optional - filter by group IDs |
{
"jsonrpc": "2.0",
"method": "lunches",
"params": {
"startDate": "2025-10-08",
"endDate": "2025-10-15"
},
"id": 122
} {
"jsonrpc": "2.0",
"id": 122,
"result": [
{
"employeeNumber": 1265,
"email": "[email protected]",
"sessions": [
{
"startDate": "2024-10-09 12:12:34",
"endDate": "2024-10-09 12:48:34",
"timezone": "Asia/Jerusalem",
"startSourceType": "web",
"endSourceType": "phone"
}
]
}
]
} Timesheet
Full timesheet per employee: work sessions with nested lunches and task work logs in a single response.
method: "timesheet" | Parameter | Type | Description |
|---|---|---|
| startDate | string | Start date (YYYY-MM-DD) |
| endDate | string | End date (YYYY-MM-DD) |
| groupIds | int[] | Optional - filter by group IDs |
{
"jsonrpc": "2.0",
"method": "timesheet",
"params": {
"startDate": "2025-10-08",
"endDate": "2025-10-15"
},
"id": 123
} {
"jsonrpc": "2.0",
"id": 123,
"result": [
{
"employeeNumber": 1265,
"email": "[email protected]",
"sessions": [
{
"startDate": "2024-10-09 08:12:34",
"endDate": "2024-10-09 17:18:34",
"timezone": "Asia/Jerusalem",
"locationType": "office",
"startSourceType": "web",
"endSourceType": "phone",
"lunches": [
{
"startDate": "2024-10-09 12:12:34",
"endDate": "2024-10-09 12:48:34",
"startSourceType": "web",
"endSourceType": "phone"
}
],
"workLogs": [
{
"name": "task",
"externalId": "DR-4258",
"startDate": "2024-10-09 08:15:34",
"endDate": "2024-10-09 12:10:34",
"startSourceType": "web",
"endSourceType": "phone"
}
]
}
]
}
]
} Create Groups
Create employee groups in bulk. Use externalId to map groups to your own system's IDs - you can then reference them when creating users.
method: "groups-create" {
"jsonrpc": "2.0",
"method": "groups-create",
"params": {
"list": [
{ "name": "Group 001", "externalId": "gr-001" },
{ "name": "Group 002", "externalId": "gr-002" },
{ "name": "Group 003", "externalId": "gr-003" }
]
},
"id": 123
} Create Users
Create employees in bulk. Only email and startWorkDate are required in practice - other profile fields are optional. Assign users to groups via externalGroupIds.
method: "users-create" | Field | Type | Description |
|---|---|---|
| firstName | string | First name |
| lastName | string | Last name |
| string | Employee email (login) | |
| phone | string | Phone number |
| passportNumber | string | National ID / passport number |
| numberForPayroll | string | Payroll employee number |
| startWorkDate | string | Employment start date (YYYY-MM-DD) |
| externalGroupIds | string[] | Group externalIds to assign the user to |
{
"jsonrpc": "2.0",
"method": "users-create",
"params": {
"list": [
{
"firstName": "John",
"lastName": "Smith",
"email": "[email protected]",
"phone": "+15551234567",
"passportNumber": "4510 123456",
"numberForPayroll": "EMP-001",
"startWorkDate": "2026-01-15",
"externalGroupIds": ["gr-001"]
},
{
"firstName": "Maria",
"lastName": "Garcia",
"email": "[email protected]",
"phone": "+15557654321",
"startWorkDate": "2026-03-01",
"externalGroupIds": ["gr-001", "gr-002"]
},
{
"firstName": "Alex",
"email": "[email protected]",
"numberForPayroll": "EMP-003",
"startWorkDate": "2026-06-03",
"externalGroupIds": []
}
]
},
"id": 123
} Deactivate Users
Deactivate employees in bulk by their ID number, effective from a given date.
method: "users-deactivation" {
"jsonrpc": "2.0",
"method": "users-deactivation",
"params": {
"list": [
{ "passportNumber": "pswd-64231", "date": "2026-06-25" },
{ "passportNumber": "pswd-64232", "date": "2026-06-25" },
{ "passportNumber": "pswd-64233", "date": "2026-06-25" }
]
},
"id": 123
} Ready to Integrate?
API access is available on Business and Enterprise plans.