Environment staging, providers real. This is the backend only: the screens arrive with the web apps.
Every /v1 request needs x-tenant: <company> and Authorization: Bearer <token>. Demo tokens are printed in the terminal where the server started.
GET /health | Status check |
GET /auth/login?tenant=acme&redirect_uri=… | Sign in (mock WorkOS page locally) |
POST /candidate/link-check | Check a candidate link and count its open tests, without using it |
POST /candidate/session | Swap a candidate link token for a session |
GET /v1/me | Who am I |
GET /v1/users · POST /v1/users · PATCH /v1/users/:id | Users & roles (admins) |
GET /v1/applications · POST /v1/applications | Candidate applications |
POST /v1/applications/:id/candidate-link | Single-use candidate link, optionally sent by email/SMS/WhatsApp |
POST /v1/applications/:id/ai-review | Ask the AI for an advisory recommendation |
GET /v1/applications/:id/recommendation | See the AI recommendation |
POST /v1/applications/:id/decision | Human decision: {outcome, reason, reviewStartedAt} |
POST /v1/decisions/bulk-advance | Advance several at once (only where the AI agreed) |
GET /v1/decision-log/verify | Check the tamper-evident decision log |
POST /v1/code/run | Run code (mock executor locally) |
GET /v1/audit · GET /v1/audit.csv | Audit log (admins) |
GET /v1/entitlements · GET /v1/usage | Plan modules and this month’s usage |
GET/POST /v1/webhooks · GET /v1/webhooks/deliveries | Signed webhooks (admins) |
GET /v1/skills · GET /v1/job-roles | Skills taxonomy and job roles (SetBenchmark library + your own) |
GET /v1/questions?q=…&type=… | Question library search |
POST /v1/questions · PUT /v1/questions/:id | Write questions (every edit is a new version) |
POST /v1/questions/:id/submit · /review · /retire · /duplicate | Review workflow |
POST /v1/questions/:id/try | Grade a sample answer against the question |
GET /v1/questions/import/template · POST /v1/questions/import | Bulk import from Excel (check with dryRun first) |
GET/POST /v1/interviews · POST /v1/interviews/:id/join | Video interviews (mock LiveKit locally) |
GET/POST /v1/assessments · POST /:id/items · /publish | Build and publish tests |
POST /v1/assessments/:id/invitations | Invite a candidate (link + optional email/SMS/WhatsApp) |
GET /v1/candidate/invitations · POST /v1/candidate/invitations/:id/start | Candidate: see and start tests |
PUT /v1/candidate/attempts/:id/answers/:position · POST …/submit | Candidate: autosave and submit |
GET /v1/attempts/:id/result · GET /v1/review-queue · POST …/mark | Scores, reviewer queue, human marking |
POST /v1/ai/questions · POST /v1/ai/assessment-from-jd | AI drafts (always reviewed by a person) |
POST /v1/ai-interviews · POST /v1/candidate/ai-interviews/:id/answer | AI chat interviewer |
POST /v1/candidate/ai-interviews/:id/voice-session · /voice-turn | AI voice interviewer (mock speech locally) |
PUT /v1/interviews/:id/code · /notes · POST /scorecard · GET /calendar.ics | Live interview: shared editor, private notes, scorecards, calendar |
POST /v1/candidate/invitations/:id/checks · /attempts/:id/proctoring-events | Proctoring checks and signals |
GET /v1/billing/subscription | The company’s plan |
/platform/plans · /platform/coupons · /platform/tenants/:slug/subscription | Kombee staff: subscription builder (x-platform-token) |
POST /webhooks/razorpay | Razorpay webhooks (signature-checked) |
GET /v1/notifications · GET /v1/dev/outbox | Notification log, and what the mocks “sent” |