Klantly Developers

API-referentie

Events

Alles wat er de afgelopen 30 dagen veranderde, als lijst. Om gemiste webhooks in te halen, of om te pollen in plaats van webhooks te gebruiken.

Endpoints

Events opvragen

GET /api/v1/events

De events van de afgelopen 30 dagen, nieuwste eerst. Je ziet alleen events over gegevens waar je sleutel leesrecht op heeft. Met sort=created_at en filter[created_since] haal je gemiste events op volgorde in.

Scope
events.read — Events ophalen

Queryparameters

NaamTypeOmschrijving
limit integer Aantal resultaten per pagina. van 1 tot 100 · standaard: 50
cursor string De next_cursor of prev_cursor uit meta van het vorige antwoord.
sort string created_at houdt de volgorde aan waarin alles gebeurde, -created_at (standaard) toont het nieuwste eerst. een van: -created_at, created_at · standaard: -created_at
filter[type] string Alleen deze eventtypes, gescheiden door komma's, bijvoorbeeld customer.created,deal.won. maximaal 500 tekens
filter[created_since] string (date-time) Alleen events vanaf dit tijdstip: ISO 8601 mét tijdzone, bijvoorbeeld 2026-09-14T10:15:00Z.

Voorbeeldverzoek

cURL
curl "https://app.klantly.com/api/v1/events?filter[type]=customer.created%2Cdeal.won&sort=created_at" \
  -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', 'events', [
    'query' => [
        'filter[type]' => 'customer.created,deal.won',
        'sort' => 'created_at',
    ],
]);

$data = json_decode((string) $response->getBody(), true)['data'];
JavaScript
const response = await fetch('https://app.klantly.com/api/v1/events?filter[type]=customer.created%2Cdeal.won&sort=created_at', {
  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/events",
    headers={
        "Authorization": f"Bearer {os.environ['KLANTLY_API_KEY']}",
    },
    params={
        "filter[type]": "customer.created,deal.won",
        "sort": "created_at"
    },
)
data = response.json()["data"]

Antwoord 200

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

Voorbeeldantwoord
{
  "data": [
    {
      "object": "event",
      "id": "evt_01j7zs1a2b3c4d5e6f7g8h9j0k",
      "type": "customer.created",
      "created_at": "2026-09-14T10:15:00Z",
      "data": {
        "object": {
          "object": "customer",
          "id": "9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70",
          "type": "business",
          "status": "lead",
          "name": "Jan de Vries",
          "email": "jan@example.com",
          "phone": "+31 6 12345678",
          "company_name": "De Vries Bouw",
          "vat_number": "NL123456789B01",
          "coc_number": "12345678",
          "address": "Dorpsstraat 1",
          "postal_code": "3511 AB",
          "city": "Utrecht",
          "country": "NL",
          "email_unsubscribed": false,
          "converted_at": null,
          "last_activity_at": "2026-09-14T10:15:00Z",
          "created_at": "2026-09-14T10:15:00Z",
          "updated_at": "2026-09-14T10:15: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.

Event ophalen

GET /api/v1/events/{event}

Eén event op id, bijvoorbeeld de webhook-id uit een ontvangen bericht.

Scope
events.read — Events ophalen

Padparameters

NaamTypeOmschrijving
event verplicht string De id van het event (evt_…).

Voorbeeldverzoek

cURL
curl "https://app.klantly.com/api/v1/events/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70" \
  -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', 'events/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70');

$data = json_decode((string) $response->getBody(), true)['data'];
JavaScript
const response = await fetch('https://app.klantly.com/api/v1/events/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70', {
  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/events/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70",
    headers={
        "Authorization": f"Bearer {os.environ['KLANTLY_API_KEY']}",
    },
)
data = response.json()["data"]

Antwoord 200

Voorbeeldantwoord
{
  "data": {
    "object": "event",
    "id": "evt_01j7zs1a2b3c4d5e6f7g8h9j0k",
    "type": "customer.created",
    "created_at": "2026-09-14T10:15:00Z",
    "data": {
      "object": {
        "object": "customer",
        "id": "9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70",
        "type": "business",
        "status": "lead",
        "name": "Jan de Vries",
        "email": "jan@example.com",
        "phone": "+31 6 12345678",
        "company_name": "De Vries Bouw",
        "vat_number": "NL123456789B01",
        "coc_number": "12345678",
        "address": "Dorpsstraat 1",
        "postal_code": "3511 AB",
        "city": "Utrecht",
        "country": "NL",
        "email_unsubscribed": false,
        "converted_at": null,
        "last_activity_at": "2026-09-14T10:15:00Z",
        "created_at": "2026-09-14T10:15:00Z",
        "updated_at": "2026-09-14T10:15:00Z"
      }
    }
  }
}

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 "event".
id string Unieke id (evt_…). Gelijk aan de header webhook-id: gebruik hem om dubbele berichten te herkennen.
type string Het soort event, bijvoorbeeld customer.created. een van: customer.created, customer.updated, customer.converted, deal.created, deal.updated, deal.stage_changed, deal.won, deal.lost, note.created, note.updated, note.deleted
created_at string (date-time) Wanneer het gebeurde (UTC).
data object De inhoud van het event.
data.object object Het object zoals het na de wijziging was, in dezelfde vorm als in de REST-API (bij note.deleted: zoals het vóór het verwijderen was).