Documentation Index
Fetch the complete documentation index at: https://docs.telli.com/llms.txt
Use this file to discover all available pages before exploring further.
Überblick
Mit der Option für einen eigenen Kalender kannst du dein bestehendes Kalender- oder Terminsystem mit telli-Agenten verbinden.
Nutze diese Option, wenn telli mit deiner eigenen Buchungsinfrastruktur statt mit einem eingebauten Anbieter arbeiten soll.
Bevor du beginnst
- Ein telli-Agent, der Termine buchen soll
- Ein API-Endpoint, der verfügbare Terminslots zurückgibt
- Ein API-Endpoint, der einen ausgewählten Terminslot bucht
- Öffentlich erreichbare Endpunkte, die telli aufrufen kann
Eigenen Kalender in telli einrichten
Agent öffnen
Öffne den Agenten, den du in telli konfigurieren willst.
Generic Calendar auswählen
Wähle in Kalender-Integration die Option Generic Calendar.
Endpoints eintragen
Hinterlege die Available URL und, wenn telli Buchungen ausführen soll, die Book URL deiner Scheduling-API.
Agent speichern
Speichere den Agenten, damit telli Verfügbarkeiten abrufen und Termine über deine Endpunkte buchen kann.
Request-Ablauf
Endpunkte
Für eine vollständige Terminbuchung implementierst du beide Endpunkte unten. Wenn telli nur Verfügbarkeiten abrufen soll, kann der Buchungs-Endpoint leer bleiben.
Verfügbare Slots abrufen
Dieser Endpoint gibt eine Liste verfügbarer Terminslots zurück.
POST /available
{
"contact": {
"id": "telli contact identifier",
"type": "Contact",
"externalId": "your contact identifier",
"externalUrl": null,
"salutation": null,
"firstName": "Ada",
"lastName": "Lovelace",
"phoneNumber": "+4915112345678",
"timezoneIana": "Europe/Berlin",
"email": "[email protected]",
"createdAt": "2026-03-13T09:00:00.000Z",
"updatedAt": "2026-03-13T09:00:00.000Z",
"properties": [
{
"key": "appointment_type",
"value": "demo",
"dataType": "select",
"label": "Appointment Type"
}
]
},
// Veraltetes Legacy-Feld, bleibt aus Gründen der Rückwärtskompatibilität erhalten.
"contact_id": "telli contact identifier",
// Veraltetes Legacy-Feld, bleibt aus Gründen der Rückwärtskompatibilität erhalten.
"external_contact_id": "your contact identifier",
// Veraltetes Legacy-Feld, bleibt aus Gründen der Rückwärtskompatibilität erhalten.
"contact_details": {
"foobar": "baz"
}
}
{
"available": [
{
"start_iso": "2024-01-01T10:00:00.000",
"end_iso": "2024-01-01T10:30:00.000"
}
]
}
Termin buchen
Dieser Endpoint verarbeitet die eigentliche Buchung des ausgewählten Terminslots.
POST /book
{
"contact": {
"id": "telli contact identifier",
"type": "Contact",
"externalId": "your contact identifier",
"externalUrl": null,
"salutation": null,
"firstName": "Ada",
"lastName": "Lovelace",
"phoneNumber": "+4915112345678",
"timezoneIana": "Europe/Berlin",
"email": "[email protected]",
"createdAt": "2026-03-13T09:00:00.000Z",
"updatedAt": "2026-03-13T09:00:00.000Z",
"properties": [
{
"key": "appointment_type",
"value": "demo",
"dataType": "select",
"label": "Appointment Type"
}
]
},
// Veraltetes Legacy-Feld, bleibt aus Gründen der Rückwärtskompatibilität erhalten.
"contact_id": "telli contact identifier",
// Veraltetes Legacy-Feld, bleibt aus Gründen der Rückwärtskompatibilität erhalten.
"external_contact_id": "your contact identifier",
"start_iso": "2024-01-01T10:00:00.000",
// Veraltetes Legacy-Feld, bleibt aus Gründen der Rückwärtskompatibilität erhalten.
"contact_details": {
"foobar": "baz"
}
}
{
"status": "failed",
"reason": "Appointment slot is no longer available"
}
Hinweise zur Umsetzung
contact ist das bevorzugte Feld für Kontaktdaten und folgt dem V2-Kontaktformat inklusive typisierter properties
contact_id, external_contact_id und contact_details sind veraltete Legacy-Felder, die aus Gründen der Rückwärtskompatibilität weiterhin mitgesendet werden
contact_details enthält die frühere flache Key-Value-Struktur aus den V1-Dynamic-Variables
- Nutze UTC-Zeitstempel im ISO-8601-Format
- telli verwendet
start_iso als Kennung des Slots
- Gib HTTP-200-Antworten zurück und signalisiere Erfolg oder Fehler im Response-Body
- Stelle sicher, dass telli deine Endpunkte erreichen kann
Request-Authentifizierung
Wenn du Requests von telli prüfen willst, verifiziere den Header x-telli-signature.
const crypto = require("crypto");
function verifyRequest(payload, signature, apiKey) {
const expectedSignature = crypto
.createHmac("sha256", apiKey)
.update(JSON.stringify(payload))
.digest("hex");
return signature === expectedSignature;
}
Verwandte Seiten