Développeurs

Documentation API & webhooks.

Une API REST et des webhooks signés pour envoyer des candidats présélectionnés et notés vers votre propre ATS. Chaque requête ci-dessous est en direct — modifiez les paramètres et envoyez-la sur un compte bac à sable fonctionnel, sans inscription requise.

Testez instantanément

Chaque console de cette page est pré-remplie avec une clé API bac à sable en lecture/écriture (sk_live_d0c50000) associée à une agence de démonstration avec de vraies données d'exemple. Remplacez-la par votre propre clé depuis API & Webhooks dans les paramètres de votre compte ChatSieve une fois prêt à tester sur votre propre tenant. La clé bac à sable est publique et partagée — ne comptez pas sur la stabilité de ses données.

Authentification

Jetons Bearer

Chaque requête s'authentifie avec une clé API générée depuis API & Webhooks dans les paramètres de votre compte. Les clés ne sont affichées qu'une fois à leur création — conservez-les en lieu sûr.

curl https://api.chatsieve.example.com/api/v1/candidates \
  -H "Authorization: Bearer sk_live_..."

Tous les endpoints sont limités à l'agence propriétaire de la clé — impossible de lire ou d'écrire les données d'un autre tenant avec une clé valide. Les requêtes sans en-tête Authorization valide renvoient 401.

Endpoint

Lister les candidats

GET /api/v1/candidates — filtrer par statut ou poste à pourvoir, les plus récents en premier.

GET/api/v1/candidates
Clé API
status
vacancy_id
limit
Endpoint

Récupérer un candidat

GET /api/v1/candidates/:id — détail complet incluant l'historique des messages WhatsApp, les documents et les facteurs de score. Collez un id depuis la liste ci-dessus.

GET/api/v1/candidates/:id
Clé API
id
Endpoint

Mettre à jour le statut d'un candidat

POST /api/v1/candidates/:id/status — accepter ou rejeter déclenche l'événement webhook correspondant vers tout endpoint abonné.

POST/api/v1/candidates/:id/status

status must be one of: NEW, SCREENING, PENDING_REVIEW, ACCEPTED, REJECTED

Clé API
id
Corps de la requête (JSON)
Endpoint

Lister les postes à pourvoir

GET /api/v1/vacancies — tous les postes ouverts pour l'agence authentifiée, avec un nombre de candidats.

GET/api/v1/vacancies
Clé API
limit
Endpoint

Créer un poste à pourvoir

POST /api/v1/vacancies — les champs minimaux nécessaires pour commencer à router des candidats vers un flux de présélection.

POST/api/v1/vacancies
Clé API
Corps de la requête (JSON)
Endpoint

Déclencher une présélection en masse

POST /api/v1/bulk-screening — envoie le message d'ouverture de présélection WhatsApp à chaque nouveau candidat d'un poste à pourvoir (ou à une liste candidate_ids spécifique). Les messages sont envoyés réellement une fois les identifiants WhatsApp configurés ; en attendant, ils sont enregistrés avec un statut simulé.

POST/api/v1/bulk-screening
Clé API
Corps de la requête (JSON)
Référence

Erreurs

Statut
Signification
400
Le corps de la requête ou les paramètres de requête sont manquants ou invalides — voir le message d'erreur pour plus de détails.
401
Clé API manquante, malformée ou révoquée.
404
La ressource n'existe pas, ou n'appartient pas à votre agence.
200 / 201
Succès — 201 lors de la création d'une ressource, 200 sinon.
Webhooks

S'abonner aux événements

Enregistrez un endpoint depuis API & Webhooks dans les paramètres de votre compte, en choisissant les événements à recevoir. Chaque endpoint reçoit son propre secret de signature, affiché une seule fois à la création.

Événement
Se déclenche quand
candidate.accepted
Le statut d'un candidat passe à ACCEPTED (depuis le portail ou l'API).
candidate.rejected
Le statut d'un candidat passe à REJECTED (depuis le portail ou l'API).
document.flagged
Un document envoyé est marqué NEEDS_REVIEW lors de la vérification des documents.
Structure du payload
{
  "event": "candidate.accepted",
  "created_at": "2026-07-11T10:00:00.000Z",
  "data": {
    "candidate_id": "clx_9f2a7b",
    "name": "Emily Carter",
    "vacancy_id": "vac_platform_eng",
    "score": 92
  }
}
Vérifier la signature

Chaque envoi inclut un en-tête X-ChatSieve-Signature — un condensé hexadécimal HMAC-SHA256 du corps brut de la requête, signé avec le secret de signature de votre endpoint. Vérifiez toujours sur les octets bruts, avant toute analyse JSON, et utilisez une comparaison à temps constant.

const crypto = require("crypto");

function isValidSignature(rawBody, signatureHeader, signingSecret) {
  const expected = crypto
    .createHmac("sha256", signingSecret)
    .update(rawBody)
    .digest("hex");

  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signatureHeader)
  );
}

// In your webhook route handler:
app.post("/hooks/chatsieve", express.raw({ type: "*/*" }), (req, res) => {
  const signature = req.header("X-ChatSieve-Signature");
  if (!isValidSignature(req.body, signature, process.env.CHATSIEVE_WEBHOOK_SECRET)) {
    return res.status(401).send("Invalid signature");
  }
  const event = JSON.parse(req.body);
  // handle event.event, event.data …
  res.status(200).send("ok");
});
Envoyer un webhook de test

Envoie une charge utile d'exemple signée vers l'URL de votre choix, afin de tester votre récepteur sans attendre un véritable événement candidat ou document. Obtenez une URL jetable gratuite sur webhook.site pour la voir arriver.

Clé API
URL cible
Événement
Référence

Versionnage

La version actuelle de l'API est v1, sous /api/v1/*. Les changements incompatibles seront livrés sous un nouveau préfixe de version plutôt que de modifier le comportement existant en place. Des questions ? Contactez-nous.

Prêt à connecter ChatSieve à votre ATS ?

Générez une clé API en direct depuis votre compte en moins d'une minute.

ChatSieve

Présélection de candidats par IA sur WhatsApp, conçue pour les agences de recrutement.

Produit
Entreprise
Ressources
Mentions légales
© 2026 ChatSieve, Inc. Tous droits réservés.
Conçu pour les agences de recrutement, partout.