Klantly Developers

API-Referenz

Verfügbarkeit

Freie Zeitfenster gemäß den Termineinstellungen und den bereits gebuchten Terminen.

Endpunkte

Freie Zeitfenster auflisten

GET /api/v1/availability

Freie Zeitfenster für einen Termin zwischen date_from und date_to (höchstens 31 Tage). Die Regeln der Buchungsseite: Arbeitszeiten, Pausen, gesperrte Tage, Vorlaufzeit, wie weit im Voraus gebucht werden darf, Puffer sowie die offenen und bestätigten Termine. Der Google-Kalender des Unternehmens zählt hier nicht, und die Zeitfenster gelten für das ganze Unternehmen, nicht pro Mitarbeiter. Sind Termine in den Einstellungen ausgeschaltet, ist die Liste leer. Die Dauer kommt aus duration_minutes, sonst aus der Terminart, sonst aus der Standarddauer.

Scope
appointments.read — Termine (mit Name, E-Mail und Telefon des Kunden), Terminarten und Verfügbarkeit lesen
Erforderliche Funktion
appointments

Query-Parameter

NameTypBeschreibung
date_from erforderlich string (date) Der erste Tag, als JJJJ-MM-TT.
date_to string (date) Der letzte Tag, als JJJJ-MM-TT (standardmäßig gleich date_from, höchstens 30 Tage nach date_from).
appointment_type_id string (uuid) Die Terminart; die Dauer kommt dann von der Terminart.
duration_minutes integer Die Dauer des Termins in Minuten; hat Vorrang vor der Dauer der Terminart. von 5 bis 720

Beispielanfrage

cURL
curl "https://app.klantly.com/api/v1/availability?date_from=2026-10-05&date_to=2026-10-09&duration_minutes=60" \
  -H "Authorization: Bearer $KLANTLY_API_KEY"
PHP
$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://app.klantly.com/api/v1/',
    'headers' => ['Authorization' => 'Bearer ' . getenv('KLANTLY_API_KEY')],
]);

$response = $client->request('GET', 'availability', [
    'query' => [
        'date_from' => '2026-10-05',
        'date_to' => '2026-10-09',
        'duration_minutes' => 60,
    ],
]);

$data = json_decode((string) $response->getBody(), true)['data'];
JavaScript
const response = await fetch('https://app.klantly.com/api/v1/availability?date_from=2026-10-05&date_to=2026-10-09&duration_minutes=60', {
  headers: {
    Authorization: `Bearer ${process.env.KLANTLY_API_KEY}`,
  },
});

const { data } = await response.json();
Python
import os

import requests

response = requests.get(
    "https://app.klantly.com/api/v1/availability",
    headers={
        "Authorization": f"Bearer {os.environ['KLANTLY_API_KEY']}",
    },
    params={
        "date_from": "2026-10-05",
        "date_to": "2026-10-09",
        "duration_minutes": 60
    },
)
data = response.json()["data"]

Antwort 200

Die Antwort ist eine Liste mit Cursor-Paginierung: data enthält die Objekte, meta die Paginierung.

Beispielantwort
{
  "data": [
    {
      "object": "availability_slot",
      "starts_at": "2026-10-05T07:00:00Z",
      "ends_at": "2026-10-05T08:00:00Z"
    }
  ],
  "meta": {
    "limit": 50,
    "next_cursor": "eyJpZCI6IjlkM2Y2YzFlIn0",
    "prev_cursor": null
  }
}

Mögliche Fehler

Zusätzlich kann jeder Endpunkt die allgemeinen Fehler zurückgeben, etwa einen ungültigen Schlüssel oder ein erreichtes Limit. Alle Fehlercodes ansehen.

Das Objekt

Alle Felder sind immer vorhanden; ein Feld ohne Wert ist null.

FeldTypBeschreibung
object string Immer „availability_slot“.
starts_at string (date-time) Beginn des Zeitfensters (UTC).
ends_at string (date-time) Ende des Zeitfensters (UTC).