Aller au contenu

Langue

Menu de la documentation

API REST

Gérez domaines, scans et enregistrements de consentement en HTTPS, exportez les preuves, recevez des webhooks signés : authentification, pagination, limites.

Dernière mise à jour le 29 octobre 2026

L’API REST vous permet d’automatiser tout ce que vous faites dans le tableau de bord : ajouter des domaines, lancer des scans, rechercher et exporter des enregistrements de consentement, et recevoir des webhooks lorsque quelque chose change. Elle est disponible avec les offres Pro et Enterprise.

Authentification

Créez une clé d’API sous Settings → API keys. Chaque clé est limitée à un espace de travail et donne un accès en lecture seule ou en lecture-écriture. Envoyez la clé sous forme de jeton bearer :

curl https://api.cookiesh.eu/v1/domains \
  -H "Authorization: Bearer ck_sk_live_..."

Les clés secrètes commencent par ck_sk_. Ne les utilisez jamais dans du code exécuté par le navigateur. La balise script n’a besoin que de votre Site ID public.

Toutes les requêtes utilisent HTTPS et JSON. L’URL de base est https://api.cookiesh.eu/v1. Les horodatages sont des chaînes ISO 8601 en UTC.

Points de terminaison

Méthode Chemin Description
GET /domains Lister les domaines de l’espace de travail
POST /domains Ajouter un domaine
GET /domains/{id} Obtenir un domaine et ses paramètres
DELETE /domains/{id} Supprimer un domaine
POST /domains/{id}/scans Lancer un scan des cookies
GET /domains/{id}/scans/{scan_id} Obtenir le statut et les résultats d’un scan
GET /domains/{id}/cookies Lister les cookies et traceurs classés
GET /consents Rechercher des enregistrements de consentement
GET /consents/{consent_id} Obtenir un enregistrement de consentement avec sa preuve de chaînage par hachage
POST /exports Lancer un export CSV ou JSON des enregistrements de consentement
GET /exports/{id} Obtenir le statut d’un export et son URL de téléchargement
DELETE /subjects/{user_id} Supprimer tous les enregistrements de consentement liés à un identifiant utilisateur

Exemple : retrouver les enregistrements de consentement d’un visiteur.

curl "https://api.cookiesh.eu/v1/consents?domain_id=dom_29xk&consent_id=cns_8Hq2Lw" \
  -H "Authorization: Bearer ck_sk_live_..."
{
  "data": [
    {
      "id": "cns_8Hq2Lw",
      "domain_id": "dom_29xk",
      "created_at": "2026-10-12T09:41:07Z",
      "region": "DE",
      "method": "banner",
      "banner_version": "v14",
      "categories": { "necessary": true, "preferences": false, "analytics": true, "marketing": false },
      "hash": "9f2c…e71a"
    }
  ],
  "next_cursor": null
}

Pagination

Les points de terminaison de liste renvoient jusqu’à 100 éléments. Indiquez limit pour en demander moins. S’il reste des résultats, la réponse contient un next_cursor. Renvoyez-le dans cursor pour obtenir la page suivante. Les curseurs restent valables 24 heures.

Erreurs

Les erreurs utilisent les codes de statut HTTP standard et un corps de réponse uniforme :

{
  "error": {
    "type": "invalid_request",
    "message": "domain_id is required",
    "request_id": "req_4Kd92"
  }
}
Statut Signification
400 La requête n’est pas valide. Le message en indique la raison.
401 La clé d’API est absente ou non valide.
403 La clé est en lecture seule, ou votre offre n’inclut pas cette fonctionnalité.
404 La ressource n’existe pas dans cet espace de travail.
429 Vous avez atteint la limite de requêtes. Réessayez après le nombre de secondes indiqué dans Retry-After.
5xx Une erreur s’est produite de notre côté. Réessayez avec un délai exponentiel.

Indiquez le request_id lorsque vous contactez le support.

Limites de requêtes

Les espaces de travail Pro peuvent effectuer 600 requêtes par minute, et les espaces de travail Enterprise 3 000. Chaque réponse inclut les en-têtes RateLimit-Limit, RateLimit-Remaining et RateLimit-Reset. Les exports en cours ne sont pas décomptés de la limite.

Webhooks

Ajoutez un point de terminaison sous Settings → Webhooks et choisissez les événements à recevoir :

Événement Envoyé quand
consent.created Un visiteur enregistre un nouveau choix
consent.updated Un visiteur modifie un choix antérieur
scan.completed Un scan des cookies se termine
scan.new_items Un scan détecte des cookies ou des traceurs à vérifier
usage.threshold L’espace de travail atteint 80 % ou 100 % de ses consentements enregistrés mensuels

Chaque envoi est une requête POST avec un corps JSON et un en-tête Cookiesh-Signature. Cet en-tête contient un horodatage et une signature HMAC-SHA256 de timestamp.body, calculée avec le secret de signature de votre point de terminaison. Vérifiez-la avant de faire confiance aux données reçues :

import crypto from 'node:crypto';

export function verify(rawBody: string, header: string, secret: string): boolean {
  const { t, v1 } = Object.fromEntries(header.split(',').map((part) => part.split('=')));
  if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false; // rejeter les envois trop anciens
  const expected = crypto.createHmac('sha256', secret).update(`${t}.${rawBody}`).digest('hex');
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(v1));
}

Répondez avec un statut 2xx dans un délai de 10 secondes. Les envois en échec sont relancés avec un délai exponentiel pendant 24 heures au maximum. Un même événement peut arriver plusieurs fois : utilisez son id pour ignorer les doublons.