ICS-Datei für den Kalender erstellen
Diese Funktion erzeugt aus Titel, Datum, Uhrzeit und Ort eines Termins eine ICS-Kalenderdatei, die sich mit einem Klick in Outlook, Google Kalender oder jede andere gängige Kalender-App importieren lässt, ohne dass der Termin von Hand nachgetragen werden muss. Eine Erinnerung lässt sich direkt mit einbauen.
Im Browser ausführen – kostenlos
Läuft direkt in Ihrem Browser – kostenlos. Ihre Datei verlässt Ihren Browser nicht und wird an keinen Server übertragen.
Was eine ICS-Datei enthält
Eine ICS-Datei bündelt alle Angaben eines Termins in einem standardisierten Format: Titel, Start- und Endzeit, Ort, Beschreibung und optional eine Erinnerung eine bestimmte Zeit vorher. Öffnet eine Empfängerin die Datei, bietet ihre Kalender-App automatisch an, den Termin zu übernehmen, ohne dass ein einziges Feld von Hand ausgefüllt werden muss.
Einzelner Termin oder wiederkehrende Reihe
Neben einem einmaligen Termin lässt sich auch eine wiederkehrende Reihe abbilden, etwa ein wöchentlicher Jour fixe jeden Montag über ein Quartal. Die Wiederholungsregel wird in derselben ICS-Datei mitgeliefert, sodass die empfangende Kalender-App die gesamte Serie auf einmal einträgt, statt jeden einzelnen Termin separat zu importieren.
Kompatibilität mit gängigen Kalendern
Das ICS-Format ist ein offener Standard und wird von Outlook, Google Kalender, Apple Kalender und den meisten anderen Kalender-Apps gleichermaßen gelesen, unabhängig vom verwendeten Betriebssystem. Eine per E-Mail versendete ICS-Datei wird von vielen Mailprogrammen sogar automatisch als Terminvorschlag erkannt, noch bevor die Datei geöffnet wird.
Kostenlos im Browser, mit API für viele Termine
Die Erstellung im Browser ist kostenlos und ohne Anmeldung, geeignet für einzelne Termine. Für die automatisierte Erstellung vieler Termine auf einmal, etwa aus einer Buchungsliste, steht zusätzlich ein programmierbarer Aufruf über die API zur Verfügung, für $0.002 pro Anfrage.
Anwendungsfälle
Einladung zu einem Webinar
Eine Marketingagentur versendet zusammen mit der Bestätigungs-E-Mail eine ICS-Datei, damit Teilnehmende den Webinar-Termin mit einem Klick in ihren eigenen Kalender übernehmen können.
Wiederkehrender Jour fixe
Thomas Müller erstellt eine ICS-Datei für den wöchentlichen Teammeeting-Termin über ein ganzes Quartal, statt jeden einzelnen Termin von Hand in den Kalender einzutragen.
Terminbestätigung einer Praxis
Eine Zahnarztpraxis hängt jeder Terminbestätigungs-E-Mail eine ICS-Datei mit dem gebuchten Termin und einer Erinnerung einen Tag vorher an.
Häufige Fragen
Welche Kalender-Apps öffnen eine ICS-Datei?
Praktisch alle gängigen, darunter Outlook, Google Kalender und Apple Kalender, da ICS ein offener Standard ist.
Lassen sich auch wiederkehrende Termine abbilden?
Ja, etwa ein wöchentlicher oder monatlicher Termin über einen festgelegten Zeitraum.
Ist die Erstellung kostenlos?
Im Browser uneingeschränkt, ja. Nur wer die Erstellung über die API in ein eigenes System einbindet, zahlt $0.002 pro Anfrage.
Kann ich eine Erinnerung einbauen?
Ja, mit einer wählbaren Vorlaufzeit, etwa 15 Minuten oder einen Tag vor dem Termin.
Verlassen meine Termindaten den Browser?
Nein, die ICS-Datei wird lokal in Ihrem Browser erzeugt, ohne Übertragung an einen Server.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/dev/ical \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/dev/ical", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/ical",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/ical", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/ical", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"items": [
"valor-1",
"valor-2"
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.ical",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |