Agenda
L'API REST est ce que Zapier, Make, n8n et votre propre code appellent pour lire les événements de votre compte et vous y abonner. Elle communique en JSON via HTTPS et chaque requête porte une clé API.
Chaque endpoint se trouve sous l'URL de base ci-dessous, suivie de la version, par exemple /v1/me.
Les exemples de cette page lisent l'URL de base depuis KADENS_API_URL et votre clé depuis KADENS_API_KEY, vous pouvez donc les coller tels quels.
Les requêtes et réponses sont en JSON. Envoyez Content-Type: application/json avec chaque requête qui a un corps.
La version fait partie du chemin. Chaque événement porte aussi la version de son format dans son champ version, actuellement 2026-10-01, afin que votre code puisse déterminer la forme qu'il a reçue.
Chaque requête nécessite une clé API dans l'en-tête Authorization comme jeton Bearer. Chaque endpoint indique l'autorisation dont il a besoin.
Clés API et autorisationsLes erreurs utilisent les codes de statut HTTP standards et un corps JSON contenant le statut, un message, le chemin et un id de requête que vous pouvez communiquer au support.
| Statut | Signification |
|---|---|
400 | La requête ou le corps n'a pas passé la validation. Vérifiez les champs par rapport à cette référence. |
401 | La clé est absente, mal formatée, révoquée ou expirée. |
403 | La clé est valide mais lui manque l'autorisation dont cet endpoint a besoin. |
429 | Trop de requêtes. Attendez le temps indiqué dans l'en-tête Retry-After, puis réessayez. |
{
"statusCode": 401,
"message": "Missing or invalid API key",
"timestamp": "2026-10-01T10:00:00.000Z",
"path": "/api/v1/events",
"requestId": "req_7c1e0b"
}Les limites sont comptées par clé API. Les dépasser renvoie 429 jusqu'à la réinitialisation de la fenêtre.
| Fenêtre | Limite |
|---|---|
Par seconde | 40 requêtes |
Par 10 secondes | 250 requêtes |
Par minute | 800 requêtes |
/v1/meTeste la clé : renvoie le compte auquel elle appartient et ses autorisations. Fonctionne avec n'importe quelle clé valide.
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-typesAutorisation : webhooks.readListe chaque type d'événement auquel vous pouvez vous abonner, avec un exemple de chacun et les champs qui contiennent des données personnelles.
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/eventsAutorisation : webhooks.readListe les événements récents, les plus récents en premier, dans la même enveloppe que les livraisons de webhook. Les intégrations l'utilisent pour afficher des exemples de données.
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
}| Paramètre | Type | Description |
|---|---|---|
type | string | Seulement les événements de ce type. |
limit | integer | Le nombre d'événements à renvoyer, de 1 à 100. Par défaut 25. |
cursor | string | Le nextCursor de la page précédente, pour lire la suivante. |
/v1/webhooks/subscriptionsAutorisation : webhooks.writeCrée un endpoint géré par l'intégration. Il apparaît en lecture seule dans le tableau de bord. Renvoie 201 lors de la création de l'abonnement, et 200 avec l'abonnement existant si le même abonnement existe déjà.
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"
}| Champ | Type | Description |
|---|---|---|
targetUrlRequis | string | L'adresse HTTPS à laquelle Kadens livre les événements. |
eventTypesRequis | string[] | Les types d'événements à livrer, de 1 à 50. Lisez la liste depuis /v1/event-types. |
integrationRequis | string | Qui gère l'abonnement : zapier, make, n8n ou other. |
externalRef | string | Votre propre id pour cet abonnement, jusqu'à 255 caractères. |
/v1/webhooks/subscriptions/:idAutorisation : webhooks.writeSupprime un endpoint créé par l'intégration. Renvoie 204 sans corps.
curl -X DELETE "$KADENS_API_URL/v1/webhooks/subscriptions/3d9f2b71-8c4e-4a6f-9b1d-5e7a0c2f8d14" \
-H "Authorization: Bearer $KADENS_API_KEY"Les outils d'automatisation se connectent à Kadens avec le modèle REST hooks : ils s'abonnent quand un workflow est activé et se désabonnent quand il est désactivé.
Les abonnements créés de cette manière apparaissent en lecture seule dans votre tableau de bord, marqués avec l'intégration qui les gère.
Comment vérifier les signaturesCet article vous a-t-il aidé ?