Stempelzeiten abrufen
Beta Die REST-API ist in der Beta. Endpunkte und Felder können sich bis zur Version 1.0.0 noch ändern.
/api/v1/stampsScopestamps:readGET /api/v1/stamps liefert alle sichtbaren Stempel im Zeitraum from bis to, aufsteigend nach Zeitpunkt. Benötigter Scope: stamps:read (Berechtigung Stempel).
Parameter
| Name | Pflicht | Typ | Beschreibung |
|---|---|---|---|
from | ja | Datum YYYY-MM-DD | Erster Tag des Zeitraums (inklusive, Europe/Berlin) |
to | ja | Datum YYYY-MM-DD | Letzter Tag des Zeitraums (inklusive, Europe/Berlin). Der Zeitraum darf höchstens 366 Tage umfassen |
employeeId | nein | ID | Nur Stempel dieses Mitarbeiters |
limit | nein | Ganzzahl 1–500 | Einträge pro Seite. Standard: 100 |
cursor | nein | String | Wert von nextCursor aus der vorherigen Antwort |
Antwortfelder
Jeder Eintrag in data hat diese Felder:
| Feld | Typ | Beschreibung |
|---|---|---|
id | String | ID des Stempels |
employeeId | String | ID des Mitarbeiters |
timestamp | Zeitpunkt | Zeitpunkt des Stempels (ISO 8601, UTC) |
sourceType | web, app, correction oder unknown | Grobe Herkunft des Stempels, siehe unten |
Die Herkunft sourceType bedeutet:
web– in der TimeMonkey Webapp gestempelt,app– in der TimeMonkey-App bzw. an der Stempeluhr (zum Beispiel per PIN oder NFC),correction– aus einem genehmigten Antrag auf Änderung der Arbeitszeit,unknown– Herkunft nicht bekannt.
Gerätebezeichnungen oder E-Mail-Adressen zur Herkunft gibt die API bewusst nicht aus.
Ein Stempel ist nur ein Zeitpunkt. Die API kennzeichnet ihn nicht als Kommen, Gehen oder Pause. Brauchst du die daraus berechnete Arbeitszeit, Pausen sowie Beginn und Ende eines Tages, nutze die Tagesauswertung. Sie rechnet nach denselben Regeln wie TimeMonkey.
Beispiel
- curl
- JavaScript
- Python
curl -s "https://api.time.monkeymed.de/api/v1/stamps?from=2026-10-01&to=2026-10-31&employeeId=650a1b2c3d4e5f6071829304&limit=3" \
-H "Authorization: Bearer $TIMEMONKEY_API_KEY"
const query = new URLSearchParams({
from: '2026-10-01',
to: '2026-10-31',
employeeId: '650a1b2c3d4e5f6071829304',
limit: '3',
});
const response = await fetch(`https://api.time.monkeymed.de/api/v1/stamps?${query}`, {
headers: {Authorization: `Bearer ${process.env.TIMEMONKEY_API_KEY}`},
});
const {data, nextCursor} = await response.json();
console.log(data.length, 'Stempel, weitere Seite:', nextCursor !== null);
import os
import requests
response = requests.get(
"https://api.time.monkeymed.de/api/v1/stamps",
headers={"Authorization": f"Bearer {os.environ['TIMEMONKEY_API_KEY']}"},
params={
"from": "2026-10-01",
"to": "2026-10-31",
"employeeId": "650a1b2c3d4e5f6071829304",
"limit": 3,
},
timeout=30,
)
response.raise_for_status()
page = response.json()
print(len(page["data"]), "Stempel, weitere Seite:", page["nextCursor"] is not None)
{
"data": [
{
"id": "6720f0a1b2c3d4e5f6a7b801",
"employeeId": "650a1b2c3d4e5f6071829304",
"timestamp": "2026-10-01T05:58:12.000Z",
"sourceType": "app"
},
{
"id": "6720f0a1b2c3d4e5f6a7b802",
"employeeId": "650a1b2c3d4e5f6071829304",
"timestamp": "2026-10-01T14:31:40.000Z",
"sourceType": "app"
},
{
"id": "6720f0a1b2c3d4e5f6a7b803",
"employeeId": "650a1b2c3d4e5f6071829304",
"timestamp": "2026-10-02T06:00:00.000Z",
"sourceType": "correction"
}
],
"nextCursor": "WzE3OTA5MjA4MDAwMDAsIjY3MjBmMGExYjJjM2Q0ZTVmNmE3YjgwMyJd"
}
Alle Seiten eines Zeitraums holst du wie unter Alle Seiten abrufen beschrieben ab.