Terminplanung
Die REST-API ist das, was Zapier, Make, n8n und dein eigener Code aufrufen, um die Ereignisse deines Kontos zu lesen und sie zu abonnieren. Sie spricht JSON über HTTPS, und jede Anfrage trägt einen API-Schlüssel.
Jeder Endpunkt liegt unter der Basis-URL unten, gefolgt von der Version, zum Beispiel /v1/me.
Die Beispiele auf dieser Seite lesen die Basis-URL aus KADENS_API_URL und deinen Schlüssel aus KADENS_API_KEY, sodass du sie unverändert einfügen kannst.
Anfragen und Antworten sind JSON. Sende Content-Type: application/json mit jeder Anfrage, die einen Body hat.
Die Version ist Teil des Pfads. Jedes Ereignis trägt außerdem die Version seines Formats in seinem Feld version, aktuell 2026-10-01, damit dein Code erkennt, welche Form es erhalten hat.
Jede Anfrage braucht einen API-Schlüssel im Authorization-Header als Bearer-Token. Jeder Endpunkt gibt die benötigte Berechtigung an.
API-Schlüssel und BerechtigungenFehler verwenden Standard-HTTP-Statuscodes und einen JSON-Body mit dem Status, einer Nachricht, dem Pfad und einer Anfrage-Id, die du gegenüber dem Support angeben kannst.
| Status | Bedeutung |
|---|---|
400 | Die Abfrage oder der Body hat die Validierung nicht bestanden. Prüfe die Felder anhand dieser Referenz. |
401 | Der Schlüssel fehlt, ist falsch formatiert, widerrufen oder abgelaufen. |
403 | Der Schlüssel ist gültig, hat aber nicht die für diesen Endpunkt nötige Berechtigung. |
429 | Zu viele Anfragen. Warte die Zeit aus dem Header Retry-After und versuche es dann erneut. |
{
"statusCode": 401,
"message": "Missing or invalid API key",
"timestamp": "2026-10-01T10:00:00.000Z",
"path": "/api/v1/events",
"requestId": "req_7c1e0b"
}Begrenzungen werden pro API-Schlüssel gezählt. Wird eine davon überschritten, kommt 429 zurück, bis das Zeitfenster zurückgesetzt wird.
| Zeitfenster | Limit |
|---|---|
Pro Sekunde | 40 Anfragen |
Pro 10 Sekunden | 250 Anfragen |
Pro Minute | 800 Anfragen |
/v1/meTestet den Schlüssel: gibt das Konto zurück, zu dem er gehört, und seine Berechtigungen. Funktioniert mit jedem gültigen Schlüssel.
curl "$KADENS_API_URL/v1/me" \
-H "Authorization: Bearer $KADENS_API_KEY"{
"entity": {
"id": "6f1c2d3e-4b5a-4c7d-8e9f-0a1b2c3d4e5f",
"name": "Barcelona Salsa Studio"
},
"apiKeyId": "9a8b7c6d-5e4f-4a3b-9c2d-1e0f9a8b7c6d",
"scopes": [
"webhooks.read",
"webhooks.write"
]
}/v1/event-typesBerechtigung: webhooks.readListet jeden Ereignistyp auf, den du abonnieren kannst, mit einem Beispiel für jeden und den Feldern, die personenbezogene Daten enthalten.
curl "$KADENS_API_URL/v1/event-types" \
-H "Authorization: Bearer $KADENS_API_KEY"{
"apiVersion": "2026-10-01",
"data": [
{
"type": "order.paid",
"family": "orders",
"descriptionKey": "Webhooks.events.order_paid",
"sample": {
"order": {
"id": "ord_91ac04",
"status": "paid",
"created_at": "2026-10-01T09:58:02Z",
"paid_at": "2026-10-01T10:00:00Z",
"event": {
"id": "evt_7f3c2a",
"name": "Salsa Congress Barcelona 2026"
},
"totals": {
"gross": {
"amount": 12000,
"currency": "EUR"
},
"fees": {
"amount": 600,
"currency": "EUR"
},
"net": {
"amount": 11400,
"currency": "EUR"
},
"tax": {
"amount": 2083,
"currency": "EUR"
}
},
"buyer": {
"entity_id": "ent_5b21",
"name": "Lucia Martin",
"email": "lucia@example.com"
},
"lines": [
{
"ticket_type_id": "tt_full_pass",
"name": "Full pass",
"quantity": 1,
"unit_price": {
"amount": 12000,
"currency": "EUR"
}
}
]
}
},
"personalDataPaths": [
"order.buyer.name",
"order.buyer.email"
]
}
]
}/v1/eventsBerechtigung: webhooks.readListet die neuesten Ereignisse zuerst, im selben Format wie Webhook-Zustellungen. Integrationen nutzen dies, um Beispieldaten anzuzeigen.
curl "$KADENS_API_URL/v1/events?type=order.paid&limit=10" \
-H "Authorization: Bearer $KADENS_API_KEY"{
"data": [
{
"id": "msg_2f8a1c7e",
"type": "order.paid",
"version": "2026-10-01",
"occurred_at": "2026-10-01T10:00:00Z",
"account": {
"id": "ent_1a0f",
"name": "Barcelona Salsa Studio"
},
"subject": {
"type": "order",
"id": "ord_91ac04",
"sequence": 2
},
"correlation_id": null,
"livemode": true,
"data": {
"order": {
"id": "ord_91ac04",
"status": "paid",
"created_at": "2026-10-01T09:58:02Z",
"paid_at": "2026-10-01T10:00:00Z",
"event": {
"id": "evt_7f3c2a",
"name": "Salsa Congress Barcelona 2026"
},
"totals": {
"gross": {
"amount": 12000,
"currency": "EUR"
},
"fees": {
"amount": 600,
"currency": "EUR"
},
"net": {
"amount": 11400,
"currency": "EUR"
},
"tax": {
"amount": 2083,
"currency": "EUR"
}
},
"buyer": {
"entity_id": "ent_5b21"
},
"lines": [
{
"ticket_type_id": "tt_full_pass",
"name": "Full pass",
"quantity": 1,
"unit_price": {
"amount": 12000,
"currency": "EUR"
}
}
]
}
}
}
],
"nextCursor": null,
"hasMore": false
}| Parameter | Typ | Beschreibung |
|---|---|---|
type | string | Nur Ereignisse dieses Typs. |
limit | integer | Wie viele Ereignisse zurückgegeben werden, von 1 bis 100. Standard ist 25. |
cursor | string | Der nextCursor der vorherigen Seite, um die nächste zu lesen. |
/v1/webhooks/subscriptionsBerechtigung: webhooks.writeErstellt einen von der Integration verwalteten Endpunkt. Er erscheint schreibgeschützt im Dashboard. Gibt 201 zurück, wenn das Abonnement erstellt wird, und 200 mit dem bestehenden, wenn dasselbe Abonnement bereits existiert.
curl -X POST "$KADENS_API_URL/v1/webhooks/subscriptions" \
-H "Authorization: Bearer $KADENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"targetUrl":"https://hooks.example.com/kadens","eventTypes":["order.paid","attendee.checked_in"],"integration":"zapier","externalRef":"zap_812734"}'{
"id": "3d9f2b71-8c4e-4a6f-9b1d-5e7a0c2f8d14",
"created": true,
"targetUrl": "https://hooks.example.com/kadens",
"eventTypes": [
"order.paid",
"attendee.checked_in"
],
"integration": "zapier",
"externalRef": "zap_812734",
"apiVersion": "2026-10-01",
"secret": "whsec_Zk3v9QmT1rX8bLp2Wc6yHn4s",
"createdAt": "2026-10-01T10:00:00.000Z"
}| Feld | Typ | Beschreibung |
|---|---|---|
targetUrlErforderlich | string | Die HTTPS-Adresse, an die Kadens Ereignisse zustellt. |
eventTypesErforderlich | string[] | Die zuzustellenden Ereignistypen, von 1 bis 50. Lies die Liste aus /v1/event-types. |
integrationErforderlich | string | Wer das Abonnement verwaltet: zapier, make, n8n oder other. |
externalRef | string | Deine eigene Id für dieses Abonnement, bis zu 255 Zeichen. |
/v1/webhooks/subscriptions/:idBerechtigung: webhooks.writeEntfernt einen von der Integration erstellten Endpunkt. Gibt 204 ohne Body zurück.
curl -X DELETE "$KADENS_API_URL/v1/webhooks/subscriptions/3d9f2b71-8c4e-4a6f-9b1d-5e7a0c2f8d14" \
-H "Authorization: Bearer $KADENS_API_KEY"Automatisierungstools verbinden sich mit Kadens über das REST-Hooks-Muster: Sie abonnieren, wenn ein Workflow eingeschaltet wird, und melden sich ab, wenn er ausgeschaltet wird.
So erstellte Abonnements erscheinen schreibgeschützt in deinem Dashboard, markiert mit der Integration, die sie verwaltet.
So prüfst du SignaturenWar das hilfreich?