Platform       Solutions       Pricing

Workforce Management

Scheduling

Create and share schedules in minutes. Reduce overstaffing and ensure you always have the right people on the floor.

Absences & Availability

Stop the back-and-forth. Track time-off requests and employee availability in one centralized calendar.

t

Who’s Working Board

Get a real-time snapshot of your entire operation. Instantly see who is clocked in, who’s late, and who’s on break.

Time & Attendance

}

Punch Clock

Secure, user-friendly options to eliminate time theft and human error. Support for web, mobile, and biometric hardware.

Time Cards

Automated digital time cards that simplify approvals. Spend less time chasing paper and more time growing your business.

Payroll Integration

Push accurate data to your payroll provider in clicks, not hours. We play nice with the platforms you already use.

Employee Engagement

Team Communication

Keep everyone in the loop with secure group chats and direct messaging. No more missed texts or messy email chains.

Company News Board

A digital hub for announcements. Ensure every employee sees important updates, safety notices, and company wins.

Employee App

Put the power of TimeWellScheduled in your team’s pocket. Employees can view schedules, swap shifts, and clock in directly from their mobile devices.

Operations & HR

HR Suite

Centralize employee training, asset tracking, and digital files. Maintain compliance with comprehensive, easy-to-access records.

Project Tracking

Monitor labor costs against specific projects or tasks. Gain visibility into equipment usage and real-time productivity.

Retail

Hotel

Restaurant

Grocery Store

Long Term Care

TimeWellScheduled API Documentation

1. Introduction

The TimeWellScheduled API allows developers to securely integrate scheduling, time tracking, payroll, and HR features into their applications. All requests are made over HTTPS and return structured data in either JSON or XML formats.

2. Getting Started

Before you begin, you’ll need an API Key and Company ID.
Follow the API key setup guide to generate your API key.

API URL:

 

3. Authentication & Security

  • Application ID [appid] – provided by us API key setup guide
  • Company ID [c] – your unique company. It can be found here
  • Module [module] – the module being called
  • Encryption: All passwords are stored using bCrypt

 You’ll need to hash employee credentials with the company-specific salt provided during authentication. For more on bCrypt, read this.

4. Request Format

All requests use the GET method with parameters passed in the query string.

Example:

GET /?appid={AppID}&c={CompanyID}&module=verify

Required Parameters:

appid – Your Application ID
c – Company ID
module – API module to call

 

5. Response Format

Responses return structured results in JSON or XML (some calls are return JSON, some XML).

Example JSON Response:

 

{
"success": 1,
"ontime": 1,
"message": "Your action has been recorded successfully"
}

6. Modules

verify

Retrieves company information and employee list.

Endpoint URL:

<API URL>/response.asp

Example Request:

GET /?appid={AppID}&c={CompanyID}&module=verify

Example Response:

<?xml version=”1.0”?>
 <response>
 <success>1</success>
 <ontime>1</ontime>
 <message>
 	<employees>
 		<employee>
 		<name>Bob Robertson</name>
 		<id>12345</id>
 		</employee>
 		<employee>
 		<name>Jane Johnson</name>
 		<id>abc123</id>
 		</employee>
 		<employee>
 		<name>Bill Smith</name>
 		<id>995jk</id>
 		</employee>
 	</employees>
 	<branding logo="https://url_to_logo/MainLogo.png">Your Company Here</branding>
 	<bcryptSalt>yourKey</bcryptSalt>
 </message>
 </response>

begin

Records the start of an employee’s shift.

Endpoint URL:

<API URL>/response.asp

Additional Parameters:

U – punch code
P – employee password (in bCrypt)
Year – the year the action is taking place
Month – the month the action is taking place
Day – the day the action is taking place
Hour – the hour the action is taking place
Minute – the minute the action is taking place
Second - the second the action is taking place

Example Request:

GET /?appid={AppID}&c={CompanyID}&module=begin&u={punchCode}&p={bCryptPassword}&Year=2025&Month=9&Day=22&Hour=16&Minute=0&Second=34

Example Response:

<?xml version=”1.0”?>
 <response>
 	<success>1</success>
 	<ontime>1</ontime>
 	<message>Your action has been recorded successfully. You have 12 unread message(s) in your Inbox.</message>
 </response>

end

Records the end of an employee’s shift.

Endpoint URL:

<API URL>/response.asp

Additional Parameters:

U – punch code
P – employee password (in bCrypt)
Year – the year the action is taking place
Month – the month the action is taking place
Day – the day the action is taking place
Hour – the hour the action is taking place
Minute – the minute the action is taking place
Second - the second the action is taking place

Example Request:

GET /?appid={AppID}&c={CompanyID}&module=end&u={punchCode}&p={bCryptPassword}&Year=2025&Month=9&Day=22&Hour=19&Minute=05&Second=25

Example Response:

<?xml version=”1.0”?>
 <response>
 	<success>0</success>
 	<ontime>0</ontime>
 	<message>It is too early for you to EXIT</message>
 	<watchdog>
 		<message>Select a reason.</message>
 		<reasons>
 			<reason ID="2233">Accident de route</reason>
 			<reason ID="153">Car problems</reason>
 			<reason ID="157">Computer issues</reason>
 			<reason ID="1482">Default reason code</reason>
 			<reason ID="159">Finished early</reason>
 			<reason ID="154">Not feeling well</reason>
 			<reason ID="156">Other (Please explain)</reason>
 			<reason ID="1983">Personal emergency</reason>
 			<reason ID="2231">Rendez-vous chez le medecin</reason>
 			<reason ID="158">Traffic</reason>
 		</reasons>
 	</watchdog>
 </response>

Since the request was not successful and a watchdog event was triggered. We need to send the same request again with the extra parameter REASON ID enclosed in the tag.

Example request:

GET /?appid={AppID}&c={CompanyID}&module=end&u={punchCode}&p={bCryptPassword}&Year=2025&Month=9&Day=22&Hour=19&Minute=05&Second=25&reason={reason ID}

Example Response:

<?xml version=”1.0”?>
 <response>
 	<success>1</success>
 	<ontime>1</ontime>
 	<message>Your action has been recorded successfully.</message>
 </response>

break

Records the start or end of a break.

Endpoint URL:

<API URL>/response.asp

Additional Parameters:

U – punch code
P – employee password (in bCrypt)
Year – the year the action is taking place
Month – the month the action is taking place
Day – the day the action is taking place
Hour – the hour the action is taking place
Minute – the minute the action is taking place
Second - the second the action is taking place

Example Request:

GET /?appid={AppID}&c={CompanyID}&module=break&u={punchCode}&p={bCryptPassword}&Year=2025&Month=9&Day=22&Hour=18&Minute=15&Second=09

Example Response:

<?xml version=”1.0”?>
 <response>
 	<success>1</success>
 	<ontime>1</ontime>
 	<message>Your action has been recorded successfully.</message>
 </response>

meal

Records the start or end of a meal period.

Endpoint URL:

<API URL>/response.asp

Additional Parameters:

U – punch code
P – employee password (in bCrypt)
Year – the year the action is taking place
Month – the month the action is taking place
Day – the day the action is taking place
Hour – the hour the action is taking place
Minute – the minute the action is taking place
Second - the second the action is taking place

Example Request:

GET /?appid={AppID}&c={CompanyID}&module=meal&u={punchCode}&p={bCryptPassword}&Year=2025&Month=9&Day=22&Hour=17&Minute=08&Second=25

Example Response:

<?xml version=”1.0”?>
 <response>
 	<success>0</success>
 	<ontime>0</ontime>
 	<message>This action cannot be done. Your schedule does not allow any MEALS</message>
 </response>

 

schedule_list

Retrieves schedules for an employee within a given date range.

Endpoint URL:

<API URL>/response_json.asp

Additional Parameters:

StartDate – the starting date range
EndDate – the end date range

Example Request:

POST /?appid={AppID}&c={CompanyID}&module=schedule_list&u={punchCode}&StartDate=2025-09-01&EndDate= 2025-09-02

Example Response:

{
"success": 1,
"schedules": [
{"date": "2025-09-01", "time": "9:00-17:00", "dept": "Office"},
{"date": "2025-09-02", "time": "9:00-17:00", "dept": "Office"}
]
}

 

employee_list

Retrieves all active employees.

Endpoint URL:

<API URL>/response_json.asp

Example Request:

POST /?appid={AppID}&c={CompanyID}&module=employee_list

Example Response:

{
"success": 1,
"employees": [
{"id": "001", "name": "Alice Johnson"},{"id": "002", "name": "Mark Smith"}
]
}

 

 

absence_list

Retrieves employee absences within a given date range.

Endpoint URL:

<API URL>/response_json.asp

Additional Parameters:

StartDate – the starting date range
EndDate – the end date range

Example Request:

POST /?appid={AppID}&c={CompanyID}&module=absence_list&StartDate=2025-09-01&EndDate=2025-09-30

Example Response:

{
"success": 1,
"absences": [
{"employee": "John Doe", "from": "2025-09-10", "to": "2025-09-12", "type": "Vacation"}
]
}

 

payroll_list

Retrieves payroll details for a date range.

Endpoint URL:

<API URL>/response_json.asp

Additional Parameters:

StartDate – the starting date range
EndDate – the end date range

Example Request:

POST /?appid={AppID}&c={CompanyID}&module=payroll_list&StartDate=2025-09-01&EndDate=2025-09-15

Example Response:

{
"success": 1,
"payroll": [
{"employee": "Anne Robinson", "totalRT": 40, "totalOT": 5},
{"employee": "Sam Smith", "totalRT": 38, "totalOT": 0}
]
}

 

who_is_working

Retrieves list of all employees scheduled to work today.

Endpoint URL:

<API URL>/response_json.asp

Additional Parameters:

Date – the date to view the schedules for

Example Request:

POST /?appid={AppID}&c={CompanyID}&module= who_is_working&Date=2025-09-25

Example Response:

{
    "schedules": [
        {
            "employeeName": "Chester Field",
            "departmentName": "Widget Assembly",
            "departmentCode": "WA",
            "shiftStartDate": "October 28, 2025",
            "shiftStartTime": "7:00a",
            "shiftEndDate": "October 28, 2025",
            "shiftEndTime": "4:30p",
            "status": "On Duty"
        }
    ],
    "displayDate": "October 28, 2025",
}
}

 

7. Optional Parameters

file – Attach a photo with punch actions
lat/lng – Pass geolocation coordinates
ip – Restrict actions to registered IPs
reason – Supply 'watchdog' reasons when required

8. Single Sign-On (SSO)

TimeWellScheduled supports SSO, allowing users to log in directly via a secure URL. Required

parameters: appid, c, userEmail, timestamp, hash. Contact support to confirm your data center URL.

9. Error Handling

API responses include a success flag and descriptive messages. – success = 1 → Request successful –

success = 0 → Error (see message or watchdog response for details)

10. Support

If you encounter issues: Email: support@timewellscheduled.com Phone: 1-877-689-7977