개발자 API

AssessFit을 ATS, Zapier 또는 사내 도구와 연동하세요 — 공고 생성, 후보자 초대, 결과 조회, 그리고 후보자가 완료하는 순간 서명된 웹훅 수신까지.

인증

API 키는 Employer Dashboard → Settings → API & integrations 에서 생성해 모든 요청에 담아 보내세요:

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

키는 워크스페이스 단위입니다. 키를 교체하면 이전 키는 즉시 무효화됩니다. 요청은 IP당 분당 300회로 제한됩니다.

엔드포인트

GET/api/v1/jobs

초대 수와 완료 수를 포함한 공고 목록을 반환합니다.

POST/api/v1/jobs

한 번의 호출로 공고를 만들고 후보자를 초대합니다. 초대 이메일은 자동 발송되며, 초대 1건당 크레딧 1개를 소모합니다.

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

역할 키: accountant, engineer, sales, support, marketing, analyst, custom. tests를 생략할 수 있나요? 아니요 — 원하는 테스트 키를 전달하세요. 라이브러리는 대시보드에서 확인합니다.

GET/api/v1/jobs/:id

공고 상세 전체: 각 초대의 퍼널 타임스탬프(tracking.sent/opened/loggedIn), 개인 초대 link, 그리고 완료 후의 result 객체까지 포함합니다.

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

기존 공고에 후보자 추가: {"candidates":[{"name":"…","email":"…"}]}. 생성된 초대를 링크와 함께 반환합니다.

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

후보자 한 명의 완료 결과 조회: 종합 점수, 테스트별 점수, 공정성 점수, 판정과 플래그, 시간 분석. 후보자가 끝내기 전에는 404를 반환합니다.

웹훅

Settings에서 웹훅 URL을 설정하세요. AssessFit은 JSON 이벤트를 POST하며, 원문 본문에 대해 API 키 를 시크릿으로 계산한 HMAC-SHA256 서명을 붙입니다:

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

페이로드를 신뢰하기 전에 서명을 검증하세요:

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

전송은 3회 재시도됩니다(즉시, +2초, +8초). 모든 시도는 Settings → Recent webhook deliveries에서 볼 수 있고, "Send Test Event" 버튼으로 언제든 webhook.test 이벤트를 발생시킬 수 있습니다. 이벤트: candidate.completed, webhook.test.

연동 레시피