API Developer

Integrasikan AssessFit dengan ATS, Zapier, atau perkakas internal Anda — buat lowongan, undang kandidat, tarik hasil, dan terima webhook bertanda tangan begitu kandidat selesai.

Autentikasi

Buat kunci API di Employer Dashboard → Settings → API & integrations dan kirimkan pada setiap permintaan:

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

Kunci berlaku per workspace. Merotasi kunci seketika membatalkan kunci sebelumnya. Permintaan dibatasi 300/menit per IP.

Endpoint

GET/api/v1/jobs

Daftar lowongan beserta jumlah undangan dan penyelesaian.

POST/api/v1/jobs

Buat lowongan dan undang kandidat dalam satu panggilan. Email undangan terkirim otomatis; tiap undangan memakai satu kredit.

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" }
    ]
  }'

Kunci peran: accountant, engineer, sales, support, marketing, analyst, custom. Boleh melewatkan tests? Tidak — kirimkan kunci tes yang Anda mau; ambil pustakanya lewat dasbor.

GET/api/v1/jobs/:id

Detail lengkap lowongan: setiap undangan dengan stempel waktu corong (tracking.sent/opened/loggedIn), tautan undangan pribadi link, dan objek result begitu selesai.

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

Tambahkan kandidat ke lowongan yang ada: {"candidates":[{"name":"…","email":"…"}]}. Mengembalikan undangan yang dibuat beserta tautannya.

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

Tarik hasil lengkap satu kandidat: skor keseluruhan, skor per tes, skor integritas, vonis dan penanda, serta analisis waktu. Mengembalikan 404 sampai kandidat selesai.

Webhook

Setel URL webhook di Settings. AssessFit mengirim POST peristiwa JSON dengan tanda tangan HMAC-SHA256 yang dihitung atas badan mentah memakai kunci API Anda sebagai rahasianya:

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" }
  }
}

Verifikasi tanda tangannya sebelum memercayai payload:

// 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));
}

Pengiriman dicoba ulang 3× (seketika, +2 dtk, +8 dtk). Setiap upaya terlihat di Settings → Recent webhook deliveries, dan Anda bisa memicu peristiwa webhook.test kapan saja lewat tombol "Send Test Event". Peristiwa: candidate.completed, webhook.test.

Resep integrasi