API développeur

Intégrez AssessFit à votre ATS, à Zapier ou à vos outils internes — créez des postes, invitez des candidats, récupérez les résultats et recevez des webhooks signés dès qu'un candidat termine.

Authentification

Générez une clé API dans Employer Dashboard → Settings → API & integrations et envoyez-la avec chaque requête :

curl https://assessfit.com/api/v1/jobs \
  -H "X-Api-Key: tp_live_…"

Les clés sont propres à chaque espace de travail. Faire tourner une clé invalide immédiatement la précédente. Les requêtes sont limitées à 300/min par IP.

Points de terminaison

GET/api/v1/jobs

Liste les postes avec le nombre d'invitations et de passations terminées.

POST/api/v1/jobs

Crée un poste et invite des candidats en un seul appel. Les e-mails d'invitation partent automatiquement ; chaque invitation consomme un crédit.

curl -X POST https://assessfit.com/api/v1/jobs \
  -H "X-Api-Key: tp_live_…" -H "Content-Type: application/json" \
  -d '{
    "title": "Senior Accountant",
    "roleKey": "accountant",
    "tests": ["attention", "financial", "numerical", "conscientiousness"],
    "cameraRequired": true,
    "shareResults": false,
    "candidates": [
      { "name": "Ana Putri", "email": "ana@example.com" }
    ]
  }'

Clés de rôle : accountant, engineer, sales, support, marketing, analyst, custom. Peut-on omettre tests? Non — passez les clés de tests voulues ; la bibliothèque se consulte dans le tableau de bord.

GET/api/v1/jobs/:id

Détail complet du poste : chaque invitation avec ses horodatages d'entonnoir (tracking.sent/opened/loggedIn), le linkd'invitation personnel, et l'objet result une fois la passation terminée.

POST/api/v1/jobs/:id/invites

Ajoute des candidats à un poste existant : {"candidates":[{"name":"…","email":"…"}]}. Renvoie les invitations créées avec leurs liens.

GET/api/v1/invites/:id/result

Récupère le résultat complet d'un candidat : score global, scores par test, score d'intégrité, verdict et signalements, analyse des temps. Renvoie 404 tant que le candidat n'a pas terminé.

Webhooks

Définissez une URL de webhook dans Settings. AssessFit envoie en POST des événements JSON avec une signature HMAC-SHA256 calculée sur le corps brut avec votre clé API comme secret :

POST https://your-app.example.com/hooks/assessfit
X-AssessFit-Event: candidate.completed
X-AssessFit-Signature: sha256=3f5a…

{
  "event": "candidate.completed",
  "createdAt": "2026-07-22T09:14:03.000Z",
  "data": {
    "inviteId": "inv_…",
    "jobId": "job_…",
    "jobTitle": "Senior Accountant",
    "candidate": { "name": "Ana Putri", "email": "ana@example.com" },
    "overall": 84,
    "scores": { "attention": 83, "numerical": 100 },
    "integrity": { "score": 100, "verdict": "clean" }
  }
}

Vérifiez la signature avant de faire confiance à une charge utile :

// Node.js
const crypto = require("crypto");
function verify(rawBody, signatureHeader, apiKey) {
  const expected = "sha256=" +
    crypto.createHmac("sha256", apiKey).update(rawBody).digest("hex");
  return crypto.timingSafeEqual(Buffer.from(signatureHeader), Buffer.from(expected));
}

La livraison est retentée 3× (immédiatement, +2 s, +8 s). Chaque tentative est visible dans Settings → Recent webhook deliveries, et vous pouvez déclencher un événement webhook.test à tout moment avec le bouton « Send Test Event ». Événements : candidate.completed, webhook.test.

Recettes d'intégration