API para desenvolvedores

Integre o AssessFit ao seu ATS, ao Zapier ou a ferramentas internas — crie vagas, convide candidatos, busque resultados e receba webhooks assinados no momento em que um candidato termina.

Autenticação

Gere uma chave de API em Employer Dashboard → Settings → API & integrations e envie-a em toda requisição:

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

As chaves valem por espaço de trabalho. Rotacionar uma chave invalida a anterior imediatamente. As requisições são limitadas a 300/min por IP.

Endpoints

GET/api/v1/jobs

Lista as vagas com contagens de convites e conclusões.

POST/api/v1/jobs

Cria uma vaga e convida candidatos numa só chamada. Os e-mails de convite saem automaticamente; cada convite consome um crédito.

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

Chaves de função: accountant, engineer, sales, support, marketing, analyst, custom. Dá para omitir tests? Não — passe as chaves dos testes que quiser; a biblioteca fica no painel.

GET/api/v1/jobs/:id

Detalhe completo da vaga: cada convite com seus carimbos de tempo do funil (tracking.sent/opened/loggedIn), o linkde convite pessoal, e o objeto result quando concluído.

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

Adiciona candidatos a uma vaga existente: {"candidates":[{"name":"…","email":"…"}]}. Retorna os convites criados com seus links.

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

Busca o resultado completo de um candidato: nota geral, notas por teste, nota de integridade, veredicto e sinalizações, e análise de tempos. Retorna 404 até o candidato terminar.

Webhooks

Defina uma URL de webhook em Settings. O AssessFit envia eventos JSON via POST com assinatura HMAC-SHA256 calculada sobre o corpo bruto usando sua chave de API como segredo:

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

Verifique a assinatura antes de confiar num 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));
}

A entrega é repetida 3× (imediatamente, +2 s, +8 s). Cada tentativa fica visível em Settings → Recent webhook deliveries, e você pode disparar um evento webhook.test a qualquer momento com o botão "Send Test Event". Eventos: candidate.completed, webhook.test.

Receitas de integração