REST API to interfejs, który wywołują Zapier, Make, n8n i Twój własny kod, aby czytać zdarzenia Twojego konta i się na nie subskrybować. Komunikuje się w formacie JSON przez HTTPS, a każde żądanie niesie klucz API.
Każdy endpoint znajduje się pod poniższym adresem bazowym, po którym następuje wersja, na przykład /v1/me.
Przykłady na tej stronie odczytują adres bazowy ze zmiennej KADENS_API_URL, a Twój klucz ze zmiennej KADENS_API_KEY, więc możesz wkleić je bez zmian.
Żądania i odpowiedzi są w formacie JSON. Wysyłaj Content-Type: application/json z każdym żądaniem, które ma treść.
Wersja jest częścią ścieżki. Każde zdarzenie niesie też wersję swojego formatu w polu version, obecnie 2026-10-01, więc Twój kod może rozpoznać, jaki kształt otrzymał.
Każde żądanie wymaga klucza API w nagłówku Authorization jako token Bearer. Każdy endpoint podaje potrzebne uprawnienie.
Klucze API i uprawnieniaBłędy używają standardowych kodów statusu HTTP oraz treści JSON ze statusem, wiadomością, ścieżką i id żądania, który możesz podać wsparciu.
| Status | Znaczenie |
|---|---|
400 | Zapytanie lub treść nie przeszły walidacji. Sprawdź pola względem tego opisu. |
401 | Klucz jest brakujący, źle sformatowany, unieważniony lub wygasły. |
403 | Klucz jest ważny, ale brakuje mu uprawnienia potrzebnego do tego endpointu. |
429 | Zbyt wiele żądań. Poczekaj tyle czasu, ile podaje nagłówek Retry-After, a następnie spróbuj ponownie. |
{
"statusCode": 401,
"message": "Missing or invalid API key",
"timestamp": "2026-10-01T10:00:00.000Z",
"path": "/api/v1/events",
"requestId": "req_7c1e0b"
}Limity są liczone dla każdego klucza API osobno. Przekroczenie któregokolwiek z nich zwraca 429, dopóki okno się nie zresetuje.
| Okno czasowe | Limit |
|---|---|
Na sekundę | 40 żądań |
Na 10 sekund | 250 żądań |
Na minutę | 800 żądań |
/v1/meTestuje klucz: zwraca konto, do którego należy, i jego uprawnienia. Działa z każdym ważnym kluczem.
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-typesUprawnienie: webhooks.readWymienia każdy typ zdarzenia, na który można się subskrybować, wraz z przykładem każdego z nich i polami zawierającymi dane osobowe.
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/eventsUprawnienie: webhooks.readWymienia ostatnie zdarzenia, od najnowszych, w tej samej kopercie co dostarczenia webhooków. Integracje używają tego, aby pokazać przykładowe dane.
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
}| Parametr | Typ | Opis |
|---|---|---|
type | string | Tylko zdarzenia tego typu. |
limit | integer | Ile zdarzeń zwrócić, od 1 do 100. Domyślnie 25. |
cursor | string | nextCursor z poprzedniej strony, aby odczytać następną. |
/v1/webhooks/subscriptionsUprawnienie: webhooks.writeTworzy endpoint zarządzany przez integrację. W panelu pojawia się jako tylko do odczytu. Zwraca 201, gdy tworzy subskrypcję, oraz 200 z istniejącą subskrypcją, gdy taka sama subskrypcja już istnieje.
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"
}| Pole | Typ | Opis |
|---|---|---|
targetUrlWymagane | string | Adres HTTPS, pod który Kadens dostarcza zdarzenia. |
eventTypesWymagane | string[] | Typy zdarzeń do dostarczenia, od 1 do 50. Listę odczytasz z /v1/event-types. |
integrationWymagane | string | Kto zarządza subskrypcją: zapier, make, n8n lub other. |
externalRef | string | Twoje własne id tej subskrypcji, do 255 znaków. |
/v1/webhooks/subscriptions/:idUprawnienie: webhooks.writeUsuwa endpoint utworzony przez integrację. Zwraca 204 bez treści.
curl -X DELETE "$KADENS_API_URL/v1/webhooks/subscriptions/3d9f2b71-8c4e-4a6f-9b1d-5e7a0c2f8d14" \
-H "Authorization: Bearer $KADENS_API_KEY"Narzędzia do automatyzacji łączą się z Kadens wzorcem REST hooks: subskrybują się, gdy workflow zostaje włączony, i anulują subskrypcję, gdy zostaje wyłączony.
Subskrypcje utworzone w ten sposób pojawiają się w panelu jako tylko do odczytu, oznaczone integracją, która nimi zarządza.
Jak weryfikować podpisyCzy to pomogło?