API-referentie
Beschikbaarheid
Vrije tijdsloten volgens de afspraakinstellingen en de afspraken die er al staan.
Endpoints
Vrije tijdsloten opvragen
/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
| Naam | Type | Omschrijving |
|---|---|---|
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 "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"$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'];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();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.
{
"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
-
403
insufficient_scope— Deze API-sleutel heeft geen toegang tot deze actie. -
422
validation_failed— De invoer is ongeldig.
Het object
Alle velden zijn altijd aanwezig; een veld zonder waarde is null.
| Veld | Type | Omschrijving |
|---|---|---|
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). |