Welcome to the EMS360 export API documentation.
The EMS360 export API provides a simple way to access school data stored in the EMS360 cloud using standard HTTP requests. It is designed for systems that need to securely connect to EMS360, retrieve specific data, and exchange information between platforms.
You can export data from several parts of the system, including:
Time and attendance.
Activities, Camps and Excursions (ACE).
Accreditations.
Professional learning events.
Making a request All export requests are made to the following URL:
Requests should be sent as a GET request.
Authentication To use the EMS360 Export API, you will need a username and password from EMS Support.
Authentication is handled using the custom EMS360EXPORT request header. The header value must be a Base64-encoded string in the format:
A cURL request might look like this:
curl "https://app.ems360.com.au/export/asJson?startDate=20260401&endDate=20260430&exportType=LEAVE" \
-H "EMS360EXPORT: BASE64_ENCODED_USERNAME_PASSWORD"
curl "https://app.ems360.com.au/export/asJson?startDate=20260401&endDate=20260430&exportType=LEAVE" \
-H "EMS360EXPORT: BASE64_ENCODED_USERNAME_PASSWORD"
curl "https://app.ems360.com.au/export/asJson?startDate=20260401&endDate=20260430&exportType=LEAVE" \
-H "EMS360EXPORT: BASE64_ENCODED_USERNAME_PASSWORD"
Date format All request dates must use the YYYYMMDD format.
Examples:
Response dates Response dates vary by export type.
LEAVE and ABSENCE return API-style date values in YYYY-MM-DD format.
TILO, EXTRAHOURS, and WFH currently return raw database date or datetime values.
Request parameters Name
Type
Required
Description
startDate
string
Yes
Start date in YYYYMMDD format.
endDate
string
Yes
End date in YYYYMMDD format.
exportType
string
Yes
The export type to return.
Supported export types All exported data is returned for the specified date range.
exportType value
Description
LEAVE
All staff on leave.
ABSENCE
All staff that are absent.
TILO
Staff time in lieu and overtime.
EXTRAHOURS
Staff extra hours.
WFH
Staff working remotely.
LEAVESTAFF
Combined data for staff on leave or absent.
STAFFOUT
All staff who are out today. startDate and endDate must be the same.
ACE
Details associated with Activities, Camps and Excursions events. E.g. name, description, location, costs etc.
PDSTAFF
All staff attending professional learning events.
PDCOSTS
All professional learning event costings.
PDATTENDED
All staff who have attended professional learning events.
Error responses Condition
Example response
Missing or invalid startDate
start date parameter not present or invalid
Missing or invalid endDate
end date parameter not present or invalid
Missing or invalid exportType
export type parameter not present or invalid
Missing EMS360EXPORT header
header is not present
Invalid export credentials
username/password is invalid
SQL date range over 365 days
{"msg":"Date range must be less than 365 days"}
LEAVE This export returns leave records for the requested date range. The response structure depends on whether the site uses one-stage or two-stage leave approval.
One-stage LEAVE Response body json {
"success" : true ,
"data" : [
{
"leaveStatus" : "Approved" ,
"certificateProvided" : true ,
"certificateVerified" : "2026-04-10" ,
"leaveManagerActioned" : true ,
"payrollActioned" : false ,
"organiserActioned" : true ,
"firstName" : "Jane" ,
"lastName" : "Smith" ,
"startDate" : "2026-05-12" ,
"endDate" : "2026-05-14" ,
"startTime" : "09:00" ,
"endTime" : "17:00" ,
"duration" : "All Day" ,
"category" : "Annual Leave" ,
"approver" : "John Brown" ,
"approvedOn" : "2026-04-15" ,
"rejectedOn" : null ,
"requestDate" : "2026-04-01" ,
"employeeId" : "EMP001" ,
"noLeaveDeduction" : false ,
"daysNoticeGiven" : 41 ,
"submissionToApproval" : 14 ,
"submissionToRejection" : null
}
]
}
json {
"success" : true ,
"data" : [
{
"leaveStatus" : "Approved" ,
"certificateProvided" : true ,
"certificateVerified" : "2026-04-10" ,
"leaveManagerActioned" : true ,
"payrollActioned" : false ,
"organiserActioned" : true ,
"firstName" : "Jane" ,
"lastName" : "Smith" ,
"startDate" : "2026-05-12" ,
"endDate" : "2026-05-14" ,
"startTime" : "09:00" ,
"endTime" : "17:00" ,
"duration" : "All Day" ,
"category" : "Annual Leave" ,
"approver" : "John Brown" ,
"approvedOn" : "2026-04-15" ,
"rejectedOn" : null ,
"requestDate" : "2026-04-01" ,
"employeeId" : "EMP001" ,
"noLeaveDeduction" : false ,
"daysNoticeGiven" : 41 ,
"submissionToApproval" : 14 ,
"submissionToRejection" : null
}
]
}
json {
"success" : true ,
"data" : [
{
"leaveStatus" : "Approved" ,
"certificateProvided" : true ,
"certificateVerified" : "2026-04-10" ,
"leaveManagerActioned" : true ,
"payrollActioned" : false ,
"organiserActioned" : true ,
"firstName" : "Jane" ,
"lastName" : "Smith" ,
"startDate" : "2026-05-12" ,
"endDate" : "2026-05-14" ,
"startTime" : "09:00" ,
"endTime" : "17:00" ,
"duration" : "All Day" ,
"category" : "Annual Leave" ,
"approver" : "John Brown" ,
"approvedOn" : "2026-04-15" ,
"rejectedOn" : null ,
"requestDate" : "2026-04-01" ,
"employeeId" : "EMP001" ,
"noLeaveDeduction" : false ,
"daysNoticeGiven" : 41 ,
"submissionToApproval" : 14 ,
"submissionToRejection" : null
}
]
}
Fields Field
Type
Description
leaveStatus
string
Current leave status.
certificateProvided
boolean
Whether a certificate was provided.
certificateVerified
string(date) or null
Certificate verification date.
leaveManagerActioned
boolean
Leave manager action flag.
payrollActioned
boolean
Payroll action flag.
organiserActioned
boolean
Organiser action flag.
firstName
string
Requester first name.
lastName
string
Requester last name.
startDate
string(date)
Leave start date.
endDate
string(date)
Leave end date.
startTime
string or null
Leave start time.
endTime
string or null
Leave end time.
duration
string or null
Display duration value.
category
string
Leave category.
approver
string or null
Approver name.
approvedOn
string(date) or null
Approval date.
rejectedOn
string(date) or null
Rejection date.
requestDate
string(date) or null
Request submission date.
employeeId
string or null
Employee identifier.
noLeaveDeduction
boolean
No leave deduction flag.
daysNoticeGiven
integer or null
Days from request to leave start.
submissionToApproval
integer or null
Days from request to approval.
submissionToRejection
integer or null
Days from request to rejection.
Two-stage LEAVE Response body json {
"success" : true ,
"data" : [
{
"leaveStatus" : "Fully Approved" ,
"certificateProvided" : true ,
"certificateVerified" : "2026-04-10" ,
"leaveManagerActioned" : true ,
"payrollActioned" : false ,
"organiserActioned" : true ,
"firstName" : "Jane" ,
"lastName" : "Smith" ,
"startDate" : "2026-05-12" ,
"endDate" : "2026-05-14" ,
"startTime" : "09:00" ,
"endTime" : "17:00" ,
"duration" : "All Day" ,
"category" : "Annual Leave" ,
"initialApprover" : "Alex Green" ,
"initialApprovedOn" : "2026-04-08" ,
"finalApprover" : "John Brown" ,
"finalApprovedOn" : "2026-04-15" ,
"rejectedOn" : null ,
"requestDate" : "2026-04-01" ,
"employeeId" : "EMP001" ,
"noLeaveDeduction" : false ,
"daysNoticeGiven" : 41 ,
"submissionToInitialApproval" : 7 ,
"initialApprovalToFinalApproval" : 7 ,
"submissionToFinalApproval" : 14 ,
"submissionToRejection" : null
}
]
}
json {
"success" : true ,
"data" : [
{
"leaveStatus" : "Fully Approved" ,
"certificateProvided" : true ,
"certificateVerified" : "2026-04-10" ,
"leaveManagerActioned" : true ,
"payrollActioned" : false ,
"organiserActioned" : true ,
"firstName" : "Jane" ,
"lastName" : "Smith" ,
"startDate" : "2026-05-12" ,
"endDate" : "2026-05-14" ,
"startTime" : "09:00" ,
"endTime" : "17:00" ,
"duration" : "All Day" ,
"category" : "Annual Leave" ,
"initialApprover" : "Alex Green" ,
"initialApprovedOn" : "2026-04-08" ,
"finalApprover" : "John Brown" ,
"finalApprovedOn" : "2026-04-15" ,
"rejectedOn" : null ,
"requestDate" : "2026-04-01" ,
"employeeId" : "EMP001" ,
"noLeaveDeduction" : false ,
"daysNoticeGiven" : 41 ,
"submissionToInitialApproval" : 7 ,
"initialApprovalToFinalApproval" : 7 ,
"submissionToFinalApproval" : 14 ,
"submissionToRejection" : null
}
]
}
json {
"success" : true ,
"data" : [
{
"leaveStatus" : "Fully Approved" ,
"certificateProvided" : true ,
"certificateVerified" : "2026-04-10" ,
"leaveManagerActioned" : true ,
"payrollActioned" : false ,
"organiserActioned" : true ,
"firstName" : "Jane" ,
"lastName" : "Smith" ,
"startDate" : "2026-05-12" ,
"endDate" : "2026-05-14" ,
"startTime" : "09:00" ,
"endTime" : "17:00" ,
"duration" : "All Day" ,
"category" : "Annual Leave" ,
"initialApprover" : "Alex Green" ,
"initialApprovedOn" : "2026-04-08" ,
"finalApprover" : "John Brown" ,
"finalApprovedOn" : "2026-04-15" ,
"rejectedOn" : null ,
"requestDate" : "2026-04-01" ,
"employeeId" : "EMP001" ,
"noLeaveDeduction" : false ,
"daysNoticeGiven" : 41 ,
"submissionToInitialApproval" : 7 ,
"initialApprovalToFinalApproval" : 7 ,
"submissionToFinalApproval" : 14 ,
"submissionToRejection" : null
}
]
}
Fields Field
Type
Description
leaveStatus
string
Current leave status.
certificateProvided
boolean
Whether a certificate was provided.
certificateVerified
string(date) or null
Certificate verification date.
leaveManagerActioned
boolean
Leave manager action flag.
payrollActioned
boolean
Payroll action flag.
organiserActioned
boolean
Organiser action flag.
firstName
string
Requester first name.
lastName
string
Requester last name.
startDate
string(date)
Leave start date.
endDate
string(date)
Leave end date.
startTime
string or null
Leave start time.
endTime
string or null
Leave end time.
duration
string or null
Display duration value.
category
string
Leave category.
initialApprover
string or null
Initial approver name.
initialApprovedOn
string(date) or null
Initial approval date.
finalApprover
string or null
Final approver name.
finalApprovedOn
string(date) or null
Final approval date.
rejectedOn
string(date) or null
Rejection date.
requestDate
string(date) or null
Request submission date.
employeeId
string or null
Employee identifier.
noLeaveDeduction
boolean
No leave deduction flag.
daysNoticeGiven
integer or null
Days from request to leave start.
submissionToInitialApproval
integer or null
Days from request to initial approval.
initialApprovalToFinalApproval
integer or null
Days between initial and final approval.
submissionToFinalApproval
integer or null
Days from request to final approval.
submissionToRejection
integer or null
Days from request to rejection.
ABSENCE This export returns absence records for the requested date range.
The reason field is intentionally not included.
Response body json {
"success" : true ,
"data" : [
{
"certificateProvided" : true ,
"certificateVerified" : "2026-04-10" ,
"leaveManagerActioned" : true ,
"payrollActioned" : false ,
"organiserActioned" : true ,
"firstName" : "Jane" ,
"lastName" : "Smith" ,
"startDate" : "2026-05-12" ,
"endDate" : "2026-05-12" ,
"startTime" : "09:00" ,
"endTime" : "17:00" ,
"duration" : "All Day" ,
"category" : "Sick Leave" ,
"submittedOn" : "2026-05-01" ,
"employeeId" : "EMP001"
}
]
}
json {
"success" : true ,
"data" : [
{
"certificateProvided" : true ,
"certificateVerified" : "2026-04-10" ,
"leaveManagerActioned" : true ,
"payrollActioned" : false ,
"organiserActioned" : true ,
"firstName" : "Jane" ,
"lastName" : "Smith" ,
"startDate" : "2026-05-12" ,
"endDate" : "2026-05-12" ,
"startTime" : "09:00" ,
"endTime" : "17:00" ,
"duration" : "All Day" ,
"category" : "Sick Leave" ,
"submittedOn" : "2026-05-01" ,
"employeeId" : "EMP001"
}
]
}
json {
"success" : true ,
"data" : [
{
"certificateProvided" : true ,
"certificateVerified" : "2026-04-10" ,
"leaveManagerActioned" : true ,
"payrollActioned" : false ,
"organiserActioned" : true ,
"firstName" : "Jane" ,
"lastName" : "Smith" ,
"startDate" : "2026-05-12" ,
"endDate" : "2026-05-12" ,
"startTime" : "09:00" ,
"endTime" : "17:00" ,
"duration" : "All Day" ,
"category" : "Sick Leave" ,
"submittedOn" : "2026-05-01" ,
"employeeId" : "EMP001"
}
]
}
Fields Field
Type
Description
certificateProvided
boolean
Whether a certificate was provided.
certificateVerified
string(date) or null
Certificate verification date.
leaveManagerActioned
boolean
Leave manager action flag.
payrollActioned
boolean
Payroll action flag.
organiserActioned
boolean
Organiser action flag.
firstName
string
Requester first name.
lastName
string
Requester last name.
startDate
string(date)
Absence start date.
endDate
string(date)
Absence end date.
startTime
string or null
Absence start time.
endTime
string or null
Absence end time.
duration
string or null
Display duration value.
category
string
Absence category.
submittedOn
string(date) or null
Submission date.
employeeId
string or null
Employee identifier.
TILO This export returns Time In Lieu and Overtime records for the requested date range.
Response body json {
"success" : true ,
"data" : [
{
"firstName" : "Jane" ,
"lastName" : "Smith" ,
"takeAccrue" : "Accrue" ,
"overtime" : "" ,
"timeInLieu" : "2:00" ,
"date" : "2026-04-18 00:00:00" ,
"description" : "Weekend event support" ,
"category" : "After Hours Duty" ,
"status" : "Fully Approved" ,
"tiloManagerActioned" : true ,
"payrollActioned" : false ,
"organiserActioned" : true
}
]
}
json {
"success" : true ,
"data" : [
{
"firstName" : "Jane" ,
"lastName" : "Smith" ,
"takeAccrue" : "Accrue" ,
"overtime" : "" ,
"timeInLieu" : "2:00" ,
"date" : "2026-04-18 00:00:00" ,
"description" : "Weekend event support" ,
"category" : "After Hours Duty" ,
"status" : "Fully Approved" ,
"tiloManagerActioned" : true ,
"payrollActioned" : false ,
"organiserActioned" : true
}
]
}
json {
"success" : true ,
"data" : [
{
"firstName" : "Jane" ,
"lastName" : "Smith" ,
"takeAccrue" : "Accrue" ,
"overtime" : "" ,
"timeInLieu" : "2:00" ,
"date" : "2026-04-18 00:00:00" ,
"description" : "Weekend event support" ,
"category" : "After Hours Duty" ,
"status" : "Fully Approved" ,
"tiloManagerActioned" : true ,
"payrollActioned" : false ,
"organiserActioned" : true
}
]
}
Fields Field
Type
Description
firstName
string
Staff first name.
lastName
string
Staff last name.
takeAccrue
string
Either Take or Accrue.
overtime
string
Duration value when the record is overtime, otherwise empty string.
timeInLieu
string
Duration value when the record is time in lieu, otherwise empty string.
date
string(datetime)
Time In Lieu date.
description
string or null
Description text.
category
string
Time In Lieu category.
status
string
One of Awaiting Approval, Initially Approved, Fully Approved, or Declined.
tiloManagerActioned
boolean
TiLO manager action flag.
payrollActioned
boolean
Payroll action flag.
organiserActioned
boolean
Organiser action flag.
Notes
status reflects the site’s two-stage Time In Lieu configuration.
overtime and timeInLieu are mutually exclusive display fields.
date is currently returned as the raw database date/datetime value in the export SQL.
EXTRAHOURS This export returns Extra Hours records for the requested date range.
Response body json {
"success" : true ,
"data" : [
{
"firstName" : "Jane" ,
"lastName" : "Smith" ,
"takeAccrue" : "Take" ,
"extraHours" : "1:30" ,
"date" : "2026-04-22 00:00:00" ,
"description" : "Exam supervision" ,
"status" : "Awaiting Approval" ,
"leaveManagerActioned" : false ,
"organiserActioned" : true
}
]
}
json {
"success" : true ,
"data" : [
{
"firstName" : "Jane" ,
"lastName" : "Smith" ,
"takeAccrue" : "Take" ,
"extraHours" : "1:30" ,
"date" : "2026-04-22 00:00:00" ,
"description" : "Exam supervision" ,
"status" : "Awaiting Approval" ,
"leaveManagerActioned" : false ,
"organiserActioned" : true
}
]
}
json {
"success" : true ,
"data" : [
{
"firstName" : "Jane" ,
"lastName" : "Smith" ,
"takeAccrue" : "Take" ,
"extraHours" : "1:30" ,
"date" : "2026-04-22 00:00:00" ,
"description" : "Exam supervision" ,
"status" : "Awaiting Approval" ,
"leaveManagerActioned" : false ,
"organiserActioned" : true
}
]
}
Fields Field
Type
Description
firstName
string
Staff first name.
lastName
string
Staff last name.
takeAccrue
string
Either Take or Accrue.
extraHours
string
Duration value in H:MM style.
date
string(datetime)
Extra Hours date.
description
string or null
Description text.
status
string
One of Awaiting Approval, Fully Approved, or Declined.
leaveManagerActioned
boolean
Leave manager action flag.
organiserActioned
boolean
Organiser action flag.
Notes
EXTRAHOURS does not currently expose a category field in the JSON export.
date is currently returned as the raw database date/datetime value in the export SQL.WFH
WFH This export returns Working Remotely records for the requested date range.
Response body json {
"success" : true ,
"data" : [
{
"firstName" : "Jane" ,
"lastName" : "Smith" ,
"date" : "2026-04-24 00:00:00" ,
"startTime" : "08:30" ,
"endTime" : "16:30" ,
"duration" : "All Day" ,
"reason" : "Working remotely for planning day" ,
"leaveManagerActioned" : true ,
"organiserActioned" : false
}
]
}
json {
"success" : true ,
"data" : [
{
"firstName" : "Jane" ,
"lastName" : "Smith" ,
"date" : "2026-04-24 00:00:00" ,
"startTime" : "08:30" ,
"endTime" : "16:30" ,
"duration" : "All Day" ,
"reason" : "Working remotely for planning day" ,
"leaveManagerActioned" : true ,
"organiserActioned" : false
}
]
}
json {
"success" : true ,
"data" : [
{
"firstName" : "Jane" ,
"lastName" : "Smith" ,
"date" : "2026-04-24 00:00:00" ,
"startTime" : "08:30" ,
"endTime" : "16:30" ,
"duration" : "All Day" ,
"reason" : "Working remotely for planning day" ,
"leaveManagerActioned" : true ,
"organiserActioned" : false
}
]
}
Field Field
Type
Description
firstName
string
Staff first name.
lastName
string
Staff last name.
date
string(datetime)
Work From Home date.
startTime
string or null
Start time.
endTime
string or null
End time.
duration
string or null
Display duration value.
reason
string or null
Reason for working from home.
leaveManagerActioned
boolean
Leave manager action flag.
organiserActioned
boolean
Organiser action flag.
Notes
duration is a display field derived from all-day and additional info values.
date is currently returned as the raw database date/datetime value in the export SQL.
LEAVESTAFF This export returns combined leave and absence records for the requested date range.
Response body json {
"success" : true ,
"data" : [
{
"..." : "..."
}
]
}
json {
"success" : true ,
"data" : [
{
"..." : "..."
}
]
}
json {
"success" : true ,
"data" : [
{
"..." : "..."
}
]
}
Fields Field
Type
Description
...
...
Add the final field list for this export.
Notes
This export combines records for staff who are on leave or absent.
Use the same request date format as the other time-based exports.
STAFFOUT This export returns staff who are out today.
startDate and endDate must be the same for this export.
Response body json {
"success" : true ,
"data" : [
{
"..." : "..."
}
]
}
json {
"success" : true ,
"data" : [
{
"..." : "..."
}
]
}
json {
"success" : true ,
"data" : [
{
"..." : "..."
}
]
}
Fields Field
Type
Description
...
...
Add the final field list for this export.
Notes
This export is intended for same-day requests only.
Set startDate and endDate to the same value when using STAFFOUT.
ACE This export returns data associated with Activities, Camps and Excursions (ACE) events.
Response body json {
"success" : true ,
"data" : [
{
"..." : "..."
}
]
}
json {
"success" : true ,
"data" : [
{
"..." : "..."
}
]
}
json {
"success" : true ,
"data" : [
{
"..." : "..."
}
]
}
Fields Field
Type
Description
...
...
Add the final field list for this export.
Notes
This export includes ACE-related event data for the requested date range.
Use the same request structure and authentication as the other exports.PDSTAFF
PDSTAFF This export returns staff attending professional learning events.
Response body json {
"success" : true ,
"data" : [
{
"..." : "..."
}
]
}
json {
"success" : true ,
"data" : [
{
"..." : "..."
}
]
}
json {
"success" : true ,
"data" : [
{
"..." : "..."
}
]
}
Fields Field
Type
Description
...
...
Add the final field list for this export.
Notes
This export is for professional learning attendance data.
It returns records for staff attending professional learning events within the requested date range.
PDCOSTS This export returns professional learning event costings.
Response body json {
"success" : true ,
"data" : [
{
"..." : "..."
}
]
}
json {
"success" : true ,
"data" : [
{
"..." : "..."
}
]
}
json {
"success" : true ,
"data" : [
{
"..." : "..."
}
]
}
Fields Field
Type
Description
...
...
Add the final field list for this export.
Notes
This export is for cost-related data linked to professional learning events.
Use it when you need to retrieve costing details for professional learning records.
PDATTENDED This export returns staff who have attended professional learning events.
Response body json {
"success" : true ,
"data" : [
{
"..." : "..."
}
]
}
json {
"success" : true ,
"data" : [
{
"..." : "..."
}
]
}
json {
"success" : true ,
"data" : [
{
"..." : "..."
}
]
}
Fields Field
Type
Description
...
...
Add the final field list for this export.
Notes
This export is for completed attendance records.
It returns staff who have attended professional learning events in the requested date range.