Öffentlicher Kalender & Teilen
Öffentlicher Link
Jeder Kalender erhält automatisch einen einzigartigen öffentlichen Link im Format:
https://www.kalender-tool.de/cal/{token}
Dieser Link kann ohne Anmeldung aufgerufen werden und zeigt den Kalender in der konfigurierten Standardansicht. Besucher können zwischen den verfügbaren Ansichten wechseln (Monat, Woche, Jahr — sowie Tag und Liste bei Pro-Kalendern).
Kalender teilen
Du findest den öffentlichen Link deines Kalenders:
- In der Kalender-Übersicht neben jedem Kalendereintrag
- In der Kalender-Detailansicht oben im Infobereich
Den Link kannst du auf verschiedene Weise teilen:
- Per E-Mail — Versende den Link direkt an Empfänger
- Auf deiner Website — Verlinke den Kalender auf deiner Webseite
- Als QR-Code — Erstelle einen QR-Code mit dem Link für Drucksachen
- Per Social Media — Teile den Link in sozialen Netzwerken
iCal-Feed
Jeder Kalender bietet einen iCal-Feed unter:
https://www.kalender-tool.de/cal/{token}/ical
Diesen Feed können Besucher in ihren persönlichen Kalender (Google Calendar, Apple Kalender, Outlook) abonnieren. Änderungen werden automatisch synchronisiert.
Einbetten per iframe
Kalender-Tool 2.0 bietet zwei Varianten, um einen Kalender auf der eigenen Website einzubetten. Die fertigen <iframe>-Snippets findest du direkt im Kalender unter dem Tab „Embed".
Variante 1: Vollseiten-iframe (alle Pläne)
Bettet die komplette öffentliche Kalenderseite ein — mit Header, Ansichten-Umschalter, Filter und Navigation. Ideal für eine dedizierte Kalender-Unterseite auf der eigenen Website.
<iframe src="https://www.kalender-tool.de/cal/{token}"
width="100%" height="600" frameborder="0"></iframe>
- Verfügbar in Basic und Pro
- Übernimmt automatisch deine Design-Einstellungen (Farben, Schriftart, Logo)
- Ansichten, die der Plan nicht unterstützt, werden automatisch ausgeblendet (siehe Kalender-Ansichten)
- Empfohlene Höhe ab 600 px, Breite flexibel
Variante 2: Kompakt-Widget (Pro)
Ein schmales Widget (max. 400 px breit), das nur die nächsten anstehenden Termine in einer reduzierten Darstellung zeigt — ohne Navigation, ohne Filter. Perfekt für Seitenleisten, Landing-Pages, Startseiten-Blöcke oder Infokästen.
<iframe src="https://www.kalender-tool.de/cal/{token}/widget"
width="400" height="500" frameborder="0"></iframe>
- Nur mit Pro-Abonnement verfügbar — ohne aktives Pro-Abo liefert die URL
403 Forbidden - Nutzt deine Primär- und Akzentfarben, damit sich das Widget nahtlos in dein Webseiten-Design einfügt
- Zeigt kommende Termine kompakt untereinander, optimiert für schmale Spalten
- Empfohlene Größe: Breite 300–400 px, Höhe 400–600 px
Tipp: Du kannst beide iframes auf derselben Seite verwenden — zum Beispiel das Kompakt-Widget als Teaser in der Seitenleiste und den Vollseiten-Kalender auf einer eigenen „Termine"-Unterseite verlinken.
Vergleich der Embed-Varianten
| Merkmal | Vollseiten-iframe | Kompakt-Widget |
|---|---|---|
| Verfügbarkeit | Alle Pläne | nur Pro |
| URL | /cal/{token} | /cal/{token}/widget |
| Ansichten-Umschalter | Ja | Nein |
| Event-Filter | Ja | Nein |
| Navigation (Monat vor/zurück) | Ja | Nein |
| Ideal für | Eigene Kalender-Seite | Sidebar, Landing-Page, Teaser |
| Empfohlene Breite | ab 600 px | 300–400 px |
JSON-API (Pro)
Für Entwickler steht ein öffentlicher, schreibgeschützter JSON-Endpunkt zur Verfügung, mit dem die Kalenderdaten direkt aus einer eigenen Anwendung abgefragt werden können — zum Beispiel für eigene Webseiten, mobile Apps, Dashboards oder Smart-Home-Anzeigen.
Endpunkt
GET https://www.kalender-tool.de/api/calendar/{token}
Statt {token} setzt du den öffentlichen Token deines Kalenders ein — denselben, der auch im öffentlichen Link steckt. Den Token findest du in der Kalenderübersicht und in der Detailansicht beim „Öffentlicher Link"-Button.
URL-Parameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
month | 1–12 | aktueller Monat | Der Monat, für den Ereignisse geliefert werden sollen |
year | z. B. 2026 | aktuelles Jahr | Das Jahr, für das Ereignisse geliefert werden sollen |
Die API liefert immer genau die Ereignisse des angefragten Monats. Wiederkehrende Ereignisse werden bereits serverseitig auf einzelne Vorkommen aufgelöst — der Client muss also keine RRULE-Logik kennen.
Antwortformat
Die API liefert ein JSON-Objekt mit drei Blöcken: den Metadaten des Kalenders, dem abgefragten Zeitraum und einer flachen Liste aller Ereignisvorkommen im Monat.
{
"calendar": {
"name": "Abfuhrkalender 2026",
"description": "Abfuhrtermine Musterstadt",
"primary_color": "#4338CA",
"accent_color": "#E0E7FF",
"font_family": "Inter",
"layout": "month"
},
"month": 4,
"year": 2026,
"events": [
{
"id": 17,
"name": "Restmüll",
"description": "Graue Tonne bis 6:00 Uhr bereitstellen",
"date": "2026-04-06",
"icons": [
{ "id": 3, "name": "Restmüll", "file_path": "icons/system/rest.svg" }
]
},
{
"id": 17,
"name": "Restmüll",
"description": "Graue Tonne bis 6:00 Uhr bereitstellen",
"date": "2026-04-20",
"icons": [
{ "id": 3, "name": "Restmüll", "file_path": "icons/system/rest.svg" }
]
}
]
}
Feld-Erklärung
| Feld | Inhalt |
|---|---|
calendar.name | Name des Kalenders |
calendar.description | Beschreibung (kann null sein) |
calendar.primary_color / accent_color | Hex-Farben zur Übernahme in dein eigenes Design |
calendar.font_family | Empfohlene Schriftart |
calendar.layout | Vom Eigentümer konfigurierte Standardansicht (month, week, day, list, year) |
month / year | Rückgabe der angefragten Periode |
events[].id | Interne Event-ID. Wiederkehrende Ereignisse haben dieselbe id in mehreren Einträgen. |
events[].date | Konkretes Vorkommen als YYYY-MM-DD |
events[].icons | Liste zugeordneter Icons. file_path ist relativ zu /storage/. |
Hinweis: Mehrtägige Ereignisse liefert die API pro betroffenem Tag als eigenen Eintrag. Ein 3-Tage-Event erzeugt also 3 Einträge mit gleicher id und aufsteigendem date.
Statuscodes
| Code | Bedeutung |
|---|---|
200 OK | Erfolg — JSON-Objekt wie oben beschrieben |
404 Not Found | {"error": "Calendar not found"} — Token existiert nicht |
403 Forbidden | {"error": "Subscription expired"} — Abonnement des Eigentümers ist abgelaufen |
Beispielaufrufe
curl:
curl "https://www.kalender-tool.de/api/calendar/abc123-def456?month=4&year=2026"
JavaScript (fetch):
const token = 'abc123-def456';
const res = await fetch(`https://www.kalender-tool.de/api/calendar/${token}?month=4&year=2026`);
const data = await res.json();
data.events.forEach(e => console.log(e.date, e.name));
Typische Einsatzszenarien
- Eigene Website: Dein Kalender auf der Gemeinde- oder Vereinsseite rendern — in deinem Design, mit deinem Framework.
- Mobile App: Abfuhrtermine oder Veranstaltungen nativ in einer eigenen App anzeigen.
- Dashboards: In ein Büro-Dashboard (z. B. Grafana, Home Assistant) einbinden.
- Push-Benachrichtigungen: Ein eigener Worker ruft die API täglich ab und benachrichtigt über anstehende Termine.
Rate-Limits & Caching: Plane deine Integration so, dass die API nicht mehrfach pro Sekunde abgefragt wird. Ein Cache von 5–15 Minuten auf deiner Seite ist für die meisten Anwendungsfälle ausreichend.
Plan-Verfügbarkeit: Die JSON-API ist ein Pro-Feature — ist das Abonnement des Kalender-Eigentümers nicht aktiv, liefert der Endpunkt 403 Forbidden. Für rein lesenden Zugriff mit minimalen Anforderungen ist der öffentliche iCal-Feed immer verfügbar.
Ansicht per URL steuern
Du kannst die Ansicht des öffentlichen Kalenders über URL-Parameter steuern:
| Parameter | Wert | Ergebnis |
|---|---|---|
?view=month | month | Monatsansicht |
?view=week | week | Wochenansicht |
?view=day | day | Tagesansicht |
?view=list | list | Listenansicht |
?view=year | year | Jahresansicht |
Sicherheit
Der öffentliche Token ist eine UUID und damit praktisch nicht erratbar. Nur wer den Link kennt, kann den Kalender sehen. Es gibt keine öffentliche Auflistung aller Kalender.