Download OpenAPI specification:
Integration API for the SaaS.de HR and time-management platform: read employees' working-time accounts, presence and leave data, and record clock-in / clock-out bookings.
All endpoints live under the /rest context of your SaaS.de instance, e.g.
https://desktop.saas.de/rest/api/....
Every request is authenticated with an API key passed as a path segment (the {api}
parameter) — a company key for company-wide endpoints, or an employee key where
noted. Some endpoints additionally accept an employee email in the request body together
with the company key. The key is part of the URL: always call over HTTPS and keep it secret.
YYYY-MM-DD; timestamps (e.g. the time field) are epoch milliseconds.POST /api/time/account takes a 1-based month
(1 = January); the v2 GET endpoints take a 0-based month (0 = January … 11 = December).
Each endpoint states its base.The API allows up to 60 requests per minute; exceeding this returns HTTP 429 (Too Many Requests).
Authentication or authorization failures return HTTP 403 with a text/plain body that is
either empty or one of the codes below. Successful responses that carry a code field use the
same table (code: 0 = OK). Some endpoints use 400, 401 or 404 instead — see each operation.
| Code | Meaning |
|---|---|
| 0 | OK |
| 1 | Employee not found |
| 2 | Company inactive |
| 3 | Authentication failed (invalid key) |
| 4 | Bad date / value could not be resolved |
| 7 | E-mail already in use |
| 8 | Missing module / license |
Returns the working-time account (target/actual/balance) of a single employee for a month, including that month's individual bookings. For the current month the totals are recalculated on each call.
| api required | string Example: c0mp4ny-4p1-k3y The API key — a company key for company-wide endpoints, or an employee key where noted. Keep it secret and send it over HTTPS only. |
| project | boolean Default: false Include the project name on each booking entry. |
| email required | string <email> E-mail of the employee whose account is requested. |
| year | integer Year. Accepts a number or a numeric string. Defaults to the current year. |
| month | integer [ 1 .. 12 ] Month, 1-based (1 = January). Accepts a number or a numeric string.
Defaults to the current month. A month in the future is rejected with 403 body |
{- "email": "max.mustermann@example.com",
- "year": 2026,
- "month": 6
}{- "code": 0,
- "time": 1718700000000,
- "today_soll": 480,
- "today_ist": 120,
- "list": [
- {
- "length": 480,
- "start": 1718611200000,
- "end": 1718640000000
}
], - "account_balance": 120,
- "account_soll": 9600,
- "account_ist": 9480,
- "account_surcharge": 0,
- "account_saldo": -120,
- "flexTime": 0,
- "PAYOFF_TIMEACCOUNT": 0,
- "TIMEACCOUNT_PAYOFF": 0,
- "OVERTIMEACCOUNT_TIMEACCOUNT": 0,
- "TIMEACCOUNT_OVERTIMEACCOUNT": 0
}Returns the target (soll) and actual (ist) minutes per day for a date range. With an
email only that employee is returned; otherwise all time-tracked employees of the company
(identified by the company key) are returned.
| api required | string Example: c0mp4ny-4p1-k3y The API key — a company key for company-wide endpoints, or an employee key where noted. Keep it secret and send it over HTTPS only. |
string <email> Restrict the result to this employee. Omit to get the whole company (company key). | |
| start | string Start date |
| end | string End date |
{- "start": "2026-06-01",
- "end": "2026-06-03"
}{- "code": 0,
- "time": 1718700000000,
- "info": [
- {
- "employee": "Max Mustermann",
- "membercode": "123",
- "days": {
- "2026-06-01": {
- "ist": 480,
- "soll": 480,
- "count": 2
}, - "2026-06-02": {
- "ist": 455,
- "soll": 480,
- "count": 1
}
}
}
]
}Returns a per-employee presence and absence overview for the current day. With an email
only that employee is returned; otherwise the set of employees depends on the modules and
supervisor scope of the key owner. Detail fields (current booking, platform, device) are
only filled for the key owner or their supervisors. Send at least an empty JSON object {}.
| api required | string Example: c0mp4ny-4p1-k3y The API key — a company key for company-wide endpoints, or an employee key where noted. Keep it secret and send it over HTTPS only. |
string <email> Restrict the overview to this employee. |
{- "email": "max.mustermann@example.com"
}{- "code": 0,
- "time": 1750334400000,
- "info": [
- {
- "employee": "Anna Schmidt",
- "uuid": "EXT-10293",
- "membercode": "00042",
- "department": "Vertrieb",
- "currentStart": "08:14",
- "currentProject": "Webshop Relaunch",
- "currentService": "Entwicklung",
- "lastTimestamp": "2026-06-19 08:14:03",
- "currentPlatform": "Browser",
- "currentDevice": "Chrome / macOS",
- "status": "green",
- "list": { }
}, - {
- "employee": "Bernd Klein",
- "uuid": "EXT-10311",
- "membercode": "00057",
- "department": "Buchhaltung",
- "currentStart": null,
- "currentProject": null,
- "currentService": null,
- "status": "blue",
- "list": {
- "1": {
- "publicholiday": false,
- "description": "Urlaub",
- "comment": "Sommerurlaub",
- "length": 1,
- "deputy": "c.mueller",
- "deputyName": "Carla Mueller",
- "halfDay": false,
- "firstDay": "2026-06-15",
- "firstDayPrint": "15.06.2026",
- "lastDay": "2026-06-26",
- "lastDayPrint": "26.06.2026",
- "status": "APPROVED"
}
}
}
]
}Returns, per employee, whether they are present on the given day and any absences (leave or
public holidays) for that day. With an email only that employee is returned; otherwise all
time-tracked employees of the company are returned.
| api required | string Example: c0mp4ny-4p1-k3y The API key — a company key for company-wide endpoints, or an employee key where noted. Keep it secret and send it over HTTPS only. |
string <email> Restrict to this employee. Omit for the whole company (company key). | |
| day | string Day |
{- "day": "2026-06-18"
}{- "code": 0,
- "time": 1718700000000,
- "info": [
- {
- "employee": "Max Mustermann",
- "membercode": "123",
- "present": true,
- "list": {
- "property1": {
- "publicholiday": true,
- "description": "Urlaub",
- "comment": "string",
- "length": 1
}, - "property2": {
- "publicholiday": true,
- "description": "Urlaub",
- "comment": "string",
- "length": 1
}
}
}
]
}Records a time booking for a single employee.
come — clock in (optionally on a project/service)go — clock outstop — clock out and immediately clock back in (break / context switch)Returns true on success, false otherwise — e.g. an invalid company key, an unresolvable
employee, a come on a project without the project-management module, a plain come
without the time-tracking module, or a go/stop that is not currently possible (such
as clocking out when not clocked in). The request body is optional.
| action required | string Enum: "come" "go" "stop" The booking action. |
| api required | string Example: c0mp4ny-4p1-k3y The API key — a company key for company-wide endpoints, or an employee key where noted. Keep it secret and send it over HTTPS only. |
| employee required | string The employee's API key or e-mail (tried in that order). |
| device | string Free-text device label stored with the booking. Defaults to |
| comment | string |
| project | string External project id (for a project-based |
| service | string External service id (for a project-based |
{- "device": "Reception terminal",
- "comment": "Start of shift"
}trueReturns the working-time account of a single employee for a month.
| api required | string Example: c0mp4ny-4p1-k3y The API key — a company key for company-wide endpoints, or an employee key where noted. Keep it secret and send it over HTTPS only. |
| employee required | string The employee's API key or e-mail (tried in that order). |
| year required | integer Example: 2026 |
| month required | integer [ 0 .. 11 ] Example: 5 Month, 0-based (0 = January … 11 = December). |
{- "employee": "string",
- "year": 0,
- "month": 0,
- "hasTime": true,
- "hasProject": true,
- "current": "string",
- "lastMonth": 0,
- "soll": 0,
- "ist": 0,
- "surcharge": 0,
- "saldo": 0,
- "saldo2": 0,
- "onWork": 0,
- "outOfWork": 0,
- "istOnWeekend": 0,
- "isReadOnly": true,
- "PAYOFF_TIMEACCOUNT": 0,
- "TIMEACCOUNT_PAYOFF": 0,
- "OVERTIMEACCOUNT_TIMEACCOUNT": 0,
- "TIMEACCOUNT_OVERTIMEACCOUNT": 0,
- "OVERTIMEACCOUNT_PAYOFF": 0,
- "PAYOFF_OVERTIMEACCOUNT": 0,
- "unpaidOvertime": 0,
- "autoOvertime": 0,
- "overtimeAccountMonth": 0,
- "overtimeAccount": 0,
- "today": {
- "ist": 0,
- "soll": 0
}, - "traffic": {
- "active": true,
- "color": "green",
- "colorOvertime": "green"
}, - "inactive": true,
- "start": "string",
- "end": "string",
- "list": [
- {
- "date": "string",
- "startDate": "string",
- "startTime": "string",
- "endDate": "string",
- "endTime": "string",
- "ist": 0,
- "pause": 0,
- "soll": 0,
- "sollType": "string",
- "surchargeMinutes": 0,
- "holidayType": "string",
- "comment": "string",
- "employeeUUID": "string",
- "employeeName": "string",
- "isDummy": 0,
- "status": "string",
- "uuid": "string"
}
]
}Returns the current time account of every employee in a department, keyed by the employee's login account (e-mail). Employees without a login account are omitted.
| api required | string Example: c0mp4ny-4p1-k3y The API key — a company key for company-wide endpoints, or an employee key where noted. Keep it secret and send it over HTTPS only. |
| department required | string Department API key. |
{- "anna.mueller@example.com": {
- "employee": "emp-ext-0001",
- "year": 0,
- "month": 0,
- "hasTime": true,
- "hasProject": false,
- "soll": 0,
- "ist": 0,
- "saldo": 0,
- "inactive": true,
- "traffic": {
- "active": false
}, - "list": [ ],
- "start": "2025-01-01",
- "end": null
}
}Returns one monthly time summary per active employee in the department for the requested month. The array is empty when the month is in the future or no employee qualifies.
| api required | string Example: c0mp4ny-4p1-k3y The API key — a company key for company-wide endpoints, or an employee key where noted. Keep it secret and send it over HTTPS only. |
| department required | string Department external id. |
| year required | integer Example: 2026 |
| month required | integer [ 0 .. 11 ] Example: 4 Month, 0-based (0 = January … 11 = December). |
[- {
- "name": "Anna Müller",
- "uuid": "e3a1c9f2-7b21-4d8e-9a0c-12ab34cd56ef",
- "employee": "e3a1c9f2-7b21-4d8e-9a0c-12ab34cd56ef",
- "year": 2026,
- "month": 4,
- "hasTime": true,
- "hasProject": false,
- "onWork": 20,
- "outOfWork": 1.5,
- "soll": 9600,
- "ist": 9720,
- "saldo": 240,
- "today": null,
- "traffic": {
- "active": true,
- "color": "green",
- "colorOvertime": "green"
}
}
]Adjusts an employee's extra-leave balance and records the change in the leave history.
A positive value pays leave in, a negative value pays it out.
Returns true on success, false otherwise — e.g. an invalid company key, an unknown
account, an employee of another company, a missing leave-management module, or an
unknown action. action must be present in the body.
| api required | string Example: c0mp4ny-4p1-k3y The API key — a company key for company-wide endpoints, or an employee key where noted. Keep it secret and send it over HTTPS only. |
| account required | string <email> E-mail of the employee. |
| action required | string Value: "extraleave" Only |
| value required | number Days to add (positive = pay in) or remove (negative = pay out). |
| year | integer Leave year. Defaults to the current year. |
| comment | string |
{- "account": "max.mustermann@example.com",
- "action": "extraleave",
- "value": 1.5,
- "year": 2026,
- "comment": "Bonus leave"
}trueBooks an absence (outside the regular leave workflow) for an employee. abscenceReasonUuid
and employeeUuid are required. Depending on the absence type a substitute
(replacementUuid) may be mandatory.
| api required | string Example: c0mp4ny-4p1-k3y The API key — a company key for company-wide endpoints, or an employee key where noted. Keep it secret and send it over HTTPS only. |
| abscenceReasonUuid required | string External id of the absence type / reason. |
| employeeUuid required | string External id of the employee to book for. |
| replacementUuid | string External id of the substitute (required for some absence types). |
| duration | integer Default: 1
|
| startDay | string Start date |
| endDay | string End date |
| planned | boolean Default: false |
| comment | string |
{- "abscenceReasonUuid": "ext-leave-type-1",
- "employeeUuid": "ext-emp-42",
- "duration": 1,
- "startDay": "2026-06-18",
- "endDay": "2026-06-20",
- "planned": false,
- "comment": "Family event"
}"success"Returns the leave records of all leave-managed employees that overlap the given month.
Note:
monthis 0-based (0 = January … 11 = December).
| api required | string Example: c0mp4ny-4p1-k3y The API key — a company key for company-wide endpoints, or an employee key where noted. Keep it secret and send it over HTTPS only. |
| year required | integer Example: 2026 |
| month required | integer [ 0 .. 11 ] Example: 5 Month, 0-based (0 = January … 11 = December). |
[- {
- "start": "2026-06-01",
- "end": "2026-06-05",
- "length": 5,
- "type": "Urlaub",
- "status": "APPROVED",
- "employee": "Max Mustermann",
- "uuid": "string",
- "apiKey": "string"
}
]Returns a yearly leave overview for all leave-managed employees, plus a legend that resolves each leave-type id to its localized names.
| api required | string Example: c0mp4ny-4p1-k3y The API key — a company key for company-wide endpoints, or an employee key where noted. Keep it secret and send it over HTTPS only. |
| year required | integer Example: 2026 |
{- "list": [
- {
- "name": "Erika Mustermann",
- "lastyear": 5,
- "expired": 0,
- "paidoff": 0,
- "leaveentitlement": 30,
- "extraleave": 1,
- "approved": 12,
- "requested": 2,
- "planned": 3,
- "remainingleave": 19,
- "3f8a1c2e-9b4d-4e6a-8c11-2a7e5d0b9f01": 14
}
], - "legende": {
- "3f8a1c2e-9b4d-4e6a-8c11-2a7e5d0b9f01": {
- "de": "Urlaub",
- "en": "Vacation"
}
}
}Returns a list of single-entry objects mapping each employee's full name to the name of their main department.
| api required | string Example: c0mp4ny-4p1-k3y The API key — a company key for company-wide endpoints, or an employee key where noted. Keep it secret and send it over HTTPS only. |
[- {
- "Max Mustermann": "Sales"
}, - {
- "Erika Musterfrau": "Engineering"
}
]Returns master data for every employee of the company. Employees without a login account are omitted.
| api required | string Example: c0mp4ny-4p1-k3y The API key — a company key for company-wide endpoints, or an employee key where noted. Keep it secret and send it over HTTPS only. |
[- {
- "personnelNumber": "1001",
- "mainDepartment": "Sales",
- "email": "max.mustermann@example.com",
- "givenName": "Max",
- "lastName": "Mustermann",
- "birthday": "1990-05-12",
- "joinDate": "2020-01-15",
- "dateOfSeparation": null,
- "RFID": "",
- "uuid": "ext-emp-42",
- "apiKey": "3mpl0y33-4p1-k3y"
}
]