Build powerful integrations with the ZamanSync REST API. Type-safe, well-documented, and developer-friendly.
Clean, predictable REST endpoints with JSON responses
JWT authentication with rate limiting and encryption
Stable API versions with backwards compatibility
All API requests require authentication using JWT tokens in the Authorization header:
Authorization: Bearer YOUR_JWT_TOKEN
Get your API key from the dashboard under Settings → API Keys
https://api.zamansync.io/v1
/auth/loginAuthenticate and receive JWT token
/shift-events/clock-inClock in an employee with GPS verification
/shift-events/clock-outClock out an employee
/shift-eventsList shift events with filtering
/timesheetsGet timesheets for date range
/timesheets/:id/approveApprove a timesheet (Manager+ only)
/usersCreate a new user (Admin only)
/usersList organization users
/locationsCreate a work location (Admin only)
/reports/hours-by-employeeGenerate employee hours report
/reports/export/timesheetsExport timesheets to CSV
Clock in an employee with GPS verification:
POST /v1/shift-events/clock-in
Content-Type: application/json
Authorization: Bearer YOUR_JWT_TOKEN
{
"locationId": "uuid-location-id",
"timestamp": "2025-10-17T09:00:00Z",
"latitude": 37.7749,
"longitude": -122.4194,
"accuracy": 10,
"deviceId": "device-fingerprint",
"idempotencyKey": "unique-request-id"
}{
"success": true,
"data": {
"shiftEventId": "uuid-event-id",
"timestamp": "2025-10-17T09:00:00Z",
"status": "CLOCKED_IN",
"geofenceValid": true
}
}All errors follow a consistent format with HTTP status codes and error details:
{
"success": false,
"error": {
"code": "GEOFENCE_VIOLATION",
"message": "Clock-in location is outside the allowed geofence radius",
"details": {
"distance": 523,
"allowedRadius": 100
}
}
}API requests are rate-limited to ensure fair usage:
Official client libraries for popular languages:
npm install @zamansync/sdk
pip install zamansync
gem install zamansync