Für Entwickler

Entwickle deine Anbindung an RunMyTime.

Die RunMyTime-API verbindet deine Anwendung mit ausgewählten Funktionen der Arbeitszeit- und Projekterfassung. Hier findest du den Einstieg, Informationen zur Authentifizierung und Beispiele für deine ersten Aufrufe.

  • Authentifizierung per Bearer-Token
  • Versionierter API-Pfad: /api/v1
  • Beispiele für cURL, JavaScript und Python

Lesender Aufruf

GET /api/v1/me
Authorization: Bearer DEIN_API_TOKEN
Accept: application/json

Beispiel. Die Seite führt diesen Aufruf nicht aus.

Dein erster API-Aufruf.

  1. API-Zugang prüfen

    Für API-Aufrufe muss der API-Zugang für dein Unternehmen freigeschaltet sein. Weitere Funktionen, beispielsweise Projekte, benötigen zusätzlich die entsprechende Freischaltung.

    Enthalten in Enterprise

    Zusätzlich buchbar als API-Zugang. Die Zusatzfunktion wird nicht von selbst aktiviert.

    Projektaufrufe setzen die Projektfunktion voraus. Sie ist in Pro und Enterprise enthalten.

    Zur Preisübersicht · Zu den Integrationen

  2. Token im Profil erstellen

    Erstelle im Profil ein Zugangstoken. Das vollständige Token wird dir nur bei der Erstellung angezeigt. Bewahre es sicher auf.

    Das Token gehört zu deinem Benutzerkonto und zu dem Unternehmen, in dem du es erstellst. Jeder Aufruf gilt mit deinen Zugriffsrechten in diesem Unternehmen. Es gilt nicht für andere Unternehmen und öffnet nicht sämtliche Unternehmensdaten.

    Im Profil kannst du das Token später widerrufen. Ein neu erstelltes Token hat kein Ablaufdatum.

    Zum Profil

  3. Ersten Aufruf ausführen

    Verwende das Token im Authorization-Header und rufe einen dokumentierten Endpunkt auf.

    Der lesende Aufruf GET /api/v1/me liefert die dokumentierten Angaben zu deinem Konto.

cURL

curl -sS "https://app.runmytime.com/api/v1/me" \
  -H "Authorization: Bearer DEIN_API_TOKEN" \
  -H "Accept: application/json"

JavaScript

const base = "https://app.runmytime.com";
const token = "DEIN_API_TOKEN";
const response = await fetch(base + "/api/v1/me", {
  headers: {
    Authorization: "Bearer " + token,
    Accept: "application/json"
  }
});

Python

import urllib.request
base = "https://app.runmytime.com"
token = "DEIN_API_TOKEN"
request = urllib.request.Request(
    base + "/api/v1/me",
    headers={
        "Authorization": "Bearer " + token,
        "Accept": "application/json",
    },
)

Beispiel mit dem Platzhalter DEIN_API_TOKEN. Die Seite führt den Aufruf nicht aus.

Beispielantwort

Fiktive Daten. Die Feldnamen entsprechen GET /api/v1/me.

{
  "user": {
    "id": 12,
    "name": "Alex Beispiel",
    "email": "alex@beispiel.invalid"
  },
  "tenant": {
    "id": 4,
    "name": "Beispiel GmbH",
    "timezone": "Europe/Berlin"
  },
  "membership": {
    "role": "employee",
    "status": "active",
    "weekly_target_seconds": 144000,
    "workdays": [1, 2, 3, 4, 5]
  },
  "features": ["worktime", "absences", "api"]
}

Adresse der API

Die API erreichst du unter /api/v1 auf der Adresse deiner RunMyTime-Anwendung.

https://app.runmytime.com/api/v1

Zugriff mit Bearer-Token.

Sende dein Zugangstoken bei jedem API-Aufruf im Authorization-Header.

Authorization: Bearer DEIN_API_TOKEN

Die verfügbaren Aufrufe richten sich nach den freigeschalteten Funktionen und den tatsächlichen Zugriffsrechten.

Das Token wählt das Unternehmen und handelt als das Benutzerkonto, dem es gehört. Siehst du ein Projekt in der Oberfläche nicht, liefert die API es dir auch nicht. Fehlt die Mitgliedschaft in diesem Unternehmen, antwortet die API mit 403 und dem Code no_membership.

Diese Bereiche sind dokumentiert.

Die öffentliche Dokumentation beschreibt die Kunden-API.

  • Profil

    Die dokumentierten Profilinformationen: Name, E-Mail, Unternehmen, Rolle, Wochenmodell und die eingeschalteten Funktionen.

    Profil in der Referenz

  • Arbeitszeiterfassung

    Die verfügbaren Aufrufe rund um die Erfassung der Arbeitszeit, vom aktuellen Status bis zu Check-in, Pause und Check-out.

    Arbeitszeit in der Referenz

  • Projekte und Projektzeiten

    Projektlisten, Projekttimer und Projektzeiten, sofern die Projektfunktion freigeschaltet ist.

    Projekte in der Referenz

Abwesenheiten, Auswertungen, die Benutzerverwaltung und das Betreiberportal haben in dieser Version keine Kundenroute.

Anfragelimits und Fehlerbehandlung

Die Kunden-API erlaubt 120 Anfragen pro Minute, gezählt über das Benutzerkonto des Tokens, sonst über die IP-Adresse. Stempelaktionen in der Weboberfläche haben ein eigenes Limit von 60 Anfragen pro Minute.

Bestätigte Antworten der Kunden-API
StatusBedeutung
401 – Authentifizierung erforderlich Das Token fehlt oder ist ungültig. Widerrufene Tokens gelten als ungültig. Ein im Profil erstelltes Token hat kein Ablaufdatum. Die Antwort enthält das Feld message.
403 – Zugriff nicht freigeschaltet Die API- oder Projektfunktion fehlt. Die Antwort enthält ok, code mit dem Wert feature_missing und feature.
403 – Testphase abgelaufen Schreibende Aufrufe nach dem Ende der Testphase. code ist trial_expired. Lesende Aufrufe mit GET bleiben davon unberührt.
403 – Kein Zugang zum Unternehmen no_membership, wenn keine aktive Mitgliedschaft besteht. tenant_inactive, wenn der Unternehmenszugang gesperrt ist.
404 Der Eintrag ist nicht vorhanden oder für dieses Benutzerkonto nicht sichtbar.
409 Der Zustand passt nicht zur Aktion. code nennt den Grund, zum Beispiel already_working.
422 Die Eingabe ist ungültig. Die Validierung antwortet mit message und errors. Fachliche Ablehnungen nutzen ok, code und message.
423 Der Zeitraum ist gesperrt. code ist period_locked.
429 Das Anfragelimit ist erreicht. Die Antwort enthält das Feld message.

Beispiel einer Fehlerantwort

So antwortet GET /api/v1/me, wenn das Token fehlt oder ungültig ist.

{
  "message": "Unauthenticated."
}

Fehlende Funktion

Aufbau der Antwort, wenn der API-Zugang nicht freigeschaltet ist. Der Text stammt aus der Anwendung.

{
  "ok": false,
  "code": "feature_missing",
  "feature": "api",
  "message": "Diese Funktion ist in Ihrem Tarif nicht enthalten."
}

API-Zugriff nach der Testphase

Wenn deine Testphase abgelaufen ist und kein kostenpflichtiger Vertrag besteht, bleiben lesende Aufrufe mit GET möglich, solange der Zugang deines Unternehmens selbst noch offen ist. Schreibende Aufrufe antworten mit 403 und dem Code trial_expired.

Die Ablehnung eines Aufrufs löscht keine vorhandenen Zeiteinträge. Ein zeitlich unbegrenzter Lesezugriff ist damit nicht zugesichert.

Mit deiner eigenen Umgebung arbeiten.

Eine öffentliche Sandbox steht derzeit nicht zur Verfügung. Die Beispiele zeigen dir, wie du Aufrufe für deine eigene RunMyTime-Umgebung vorbereitest.

Code und Beispielantworten auf dieser Seite sind Beispiele. Es gibt keinen interaktiven API-Spielplatz.

Weitere Dokumentation

Die vollständige Endpunktreferenz mit den übrigen Aufrufen steht in der API-Dokumentation. Pfade und Felder werden dort gepflegt.

Integrationen und API beschreibt den Zugang im Überblick. Die Tarifzuordnung steht in der Preisübersicht.

Starte mit der API-Dokumentation.

Entdecke die verfügbaren Endpunkte und nutze die Beispiele für deine eigene Anbindung.