The hiring engine, over HTTP.
Whizz Hire is a REST API that writes bilingual job posts, publishes them everywhere, reads every CV — PDF, DOCX, scanned, Arabic — and returns your top-K candidates with quoted evidence, then generates a structured interview kit per candidate. You send a job title; the engine does the rest.
What the API does#
Jobs. One POST /v1/jobs with a title and a few facts creates a draft and runs the JD composer: a complete, bias-checked job description (English plus Arabic MSA when requested), SEO metadata, JobPosting JSON-LD, suggested knockout questions, and a screening rubric with adjustable criterion weights. /publish puts it on your career page, Google for Jobs, and the job-board feeds.
Screening. POST /v1/jobs/{id}/screen reads every CV on the job. Each CV is anonymized before scoring (name, email, photo, address stripped — the only bias mitigation with measured near-complete effectiveness), scored 0–100 per rubric criterion, and backed by verbatim quotes validated against the CV text — a fabricated quote is structurally impossible to present as valid. You get a ranked list with the top-K flagged.
Interview kits. POST /v1/applications/{id}/interview-kitbuilds a 30-minute structured interview: easy/medium/hard/scenario/CV-based/job-based questions with model answers and red flags, plus "claims to probe" anchored to specific lines of the candidate's actual CV.
The async run model#
Generation and screening take seconds to minutes, so the API is asynchronous. Creation endpoints return 202 Accepted with a run_idimmediately; you poll the run or receive a webhook when it finishes. ("Jobs" in this API are job posts — background work is a run.)
POST /v1/jobs → POST /v1/jobs/{id}/publish
Draft + free jd_generate run writes the JD, rubric, and knockouts. Publish enforces your plan's active-job limit and starts distribution.
{ "job": { "id": "…", "status": "draft" }, "run_id": "…" }
Applications arrive — or POST /v1/cvs to bulk-import
Career page, embed widget, and apply API feed applications in (webhook: application.received). Existing CVs can be imported for free.
POST /v1/jobs/{id}/screen — poll GET /v1/runs/{id}
1 credit per CV, refunded on failure. anonymize → score per criterion → evidence quotes → rank. Webhook: screening.completed.
GET /v1/screenings/{id}?include=results
Ranked candidates with per-criterion scores, verbatim evidence quotes, verdicts, red flags, and fraud signals. Top-K flagged — humans make the call.
then POST /v1/applications/{id}/interview-kit for the front-runners
Base URL#
https://hire.whizztech.ai/v1All endpoints live under /v1 and speak JSON over HTTPS. Responses carry rate-limit headers on every call.
Authentication at a glance#
Every request is authenticated with an API key in the Authorization header. Keys are created in the dashboard and start with wz_live_ or wz_test_:
curl https://hire.whizztech.ai/v1/usage \
-H "Authorization: Bearer wz_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Details — key format, storage, and failure shapes — are on the Authentication page.
Human-in-the-loop, by design#
The AI never rejects a candidate. Screening produces a recommendation (in_top_k); advancing or rejecting is a human action, and every AI-influenced step lands in an immutable decision log with the rubric snapshot and model versions used. Evidence quotes are validated verbatim against the CV; quotes that cannot be matched are flagged valid: false, never silently presented.
OpenAPI spec#
The whole surface is described in a machine-readable OpenAPI 3.1 document — usable for codegen, Postman imports, or contract tests: download the spec or browse it at /openapi.json.