Klantly Developers

API-referentie

Beschikbaarheid

Vrije tijdsloten volgens de afspraakinstellingen en de afspraken die er al staan.

Endpoints

Vrije tijdsloten opvragen

GET /api/v1/availability

Vrije tijdsloten voor een afspraak tussen date_from en date_to (maximaal 31 dagen). De rekenregels van de boekingspagina: werktijden, pauzes, geblokkeerde dagen, aanlooptijd, hoe ver vooruit er geboekt mag worden, buffer en de open en bevestigde afspraken. De Google-agenda van het bedrijf telt hier niet mee, en de tijdsloten gelden voor het hele bedrijf, niet per medewerker. Staan afspraken uit in de instellingen, dan is de lijst leeg. De duur komt van duration_minutes, anders van het afspraaktype, anders van de standaardduur.

Scope
appointments.read — Afspraken (met naam, e-mail en telefoon van de klant), afspraaktypes en beschikbaarheid lezen
Vereiste functie
appointments

Queryparameters

NaamTypeOmschrijving
date_from verplicht string (date) De eerste dag, als JJJJ-MM-DD.
date_to string (date) De laatste dag, als JJJJ-MM-DD (standaard gelijk aan date_from, hooguit 30 dagen na date_from).
appointment_type_id string (uuid) Het afspraaktype; de duur komt dan van het type.
duration_minutes integer De duur van de afspraak in minuten; gaat voor de duur van het type. van 5 tot 720

Voorbeeldverzoek

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"]

Antwoord 200

Het antwoord is een lijst met cursorpaginering: data bevat de objecten, meta de paginering.

Voorbeeldantwoord
{
  "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
  }
}

Mogelijke fouten

Daarnaast kan elk endpoint de algemene fouten geven, zoals een ongeldige sleutel of een bereikte limiet. Bekijk alle foutcodes.

Het object

Alle velden zijn altijd aanwezig; een veld zonder waarde is null.

VeldTypeOmschrijving
object string Altijd "availability_slot".
starts_at string (date-time) Begin van het tijdslot (UTC).
ends_at string (date-time) Einde van het tijdslot (UTC).