Author secure exams, reach examinees by invitation or a single link, and grade at scale. Every console action is a documented endpoint your systems can call.
Alumys is a suite of products for teams, educators and organisations that examine people — hiring, courses and classes, training and certification, contests — sharing one login, one team, one set of branding and one bill. You subscribe per product. Assessment is available today; more products follow on the same account.
Secure technical and knowledge exams: author once, reach examinees by invitation or link, and get a result you can defend. Everything on this page below describes this product.
Assessment is the first product. Everything that follows plugs into the same account, team, branding and bill. Leave an address and we'll write when something new ships.

Screen applicants or certify trainees with the same exam every time, invite up to 200 examinees at once, and read integrity signals and item analysis before you decide.
Explore Assessment
Sections, time limits, rubric-graded long answers, extra-time accommodations and a grading queue, for a class of twelve or a cohort of a thousand.
Read the docs
Create exams, invite examinees and pull results with a scoped key, and get a signed webhook the moment an attempt completes.
Open the API referenceSections, six question formats, points, hints and explanations. Set a time limit, a pass mark and the attempts allowed, then publish.
Personal links with expiries and extra time, or a share link with a domain restriction, a use cap and a revoke switch.
Automatic grades land at submit; rubric items wait in a grading queue. Read integrity summaries and item analysis, then export to CSV.
The reference is generated from the same contract the backend compiles against, so it cannot drift. Call it over plain HTTPS from any language. Mint a scoped key in Assessment → Settings (Usage-Based and Team plans), and verify a signed webhook when an examinee finishes.
One call with a title and a pass mark. Items, sections and sharing rules follow through the same API.
Or mint a share link with a domain restriction and a use cap. Attempts created through the API are metered like console attempts.
A signed POST when the attempt completes. Verify the HMAC, deduplicate on the stable id, and act.
Scores, integrity summaries and item analysis, ready for your ATS or LMS.
const base = "https://api.alumys.com/api/v1";const headers = { Authorization: `Bearer ${process.env.ALUMYS_API_KEY}`, // alk_live_… "Content-Type": "application/json",};// POST /assessments · scope: assessments:writeconst res = await fetch(`${base}/assessments`, { method: "POST", headers, body: JSON.stringify({ title: "Backend engineer screen", passThresholdPct: 70 }),});const { data: { assessmentId } } = await res.json();// POST /assessments/{id}/invites · scope: examinees:writeawait fetch(`${base}/assessments/${assessmentId}/invites`, { method: "POST", headers, body: JSON.stringify({ email: "priya@acme.com", expiresAt: "2026-09-30T23:59:00Z", }),});// or one link for many examinees: POST /assessments/{id}/share-links// { maxUses: 25, requireEmailDomain: "acme.com" } → data.token// the token is shown once — links are stored as hashesPOST https://ats.acme.com/alumys/webhooksAlumys-Signature: t=1756800000,v1=5f2a…Alumys-Webhook-Id: 7c9e6679-… // stable across retries{ "type": "attempt.completed", "product": "assessment", "data": { "assessmentId": "…", "inviteId": "…", "examineeEmail": "priya@acme.com", "scorePoints": 42, "maxPoints": 50, "passed": true, "grading": "complete" }}// verify: v1 === hex(hmacSHA256(secret, `${t}.${rawBody}`))// GET /assessments/{id}/results · scope: results:readconst res = await fetch(`${base}/assessments/${assessmentId}/results`, { headers });const { data: rows } = await res.json();// → one row per examinee: status, score, graded at// GET /assessments/{id}/invites/{inviteId}/integrity// → focus, tab, paste, copy and fullscreen events, summarized// GET /assessments/{id}/analytics// → score distribution, pass rate, per-item difficulty and discriminationIntegrity signals are in every plan, including Free. Coding questions arrive with Usage-Based; your logo and colors with Team.
Python, JavaScript, TypeScript, Java, C# and Go. Sample tests the examinee can run; hidden, weighted tests on submit. An isolated sandbox with no network and a cap of 300 runs per attempt.
Focus, tab, paste, copy and fullscreen events recorded during every attempt and summarized per examinee. No webcam, no biometrics.
Single and multiple choice, short answer, numeric with tolerance, rubric-graded long answer, coding. Each with points, difficulty, a hint and an explanation.
Invite one examinee or paste up to 200. Or one link per audience: domain-restricted, use-capped, expiring, revocable.
Score distributions, pass rate, and per-question difficulty and discrimination so weak items surface before they cost you a good examinee.
Every account starts on Free with unlimited non-coding attempts. Usage-Based adds running code with 200 free attempts a month, coding included, and a spend cap you set; Team includes 3,000 attempts a month, a coding attempt counting as 15. Prices cover the whole organization, with no charge per member. Each product is subscribed to on its own.
Free has no running code and ten active examinations, and needs no card. Usage-Based takes a card when it starts, includes the first 200 attempts each month free, is invoiced monthly in arrears with a $5 minimum in any month you are billed, and has a spend cap you set (default $200 — new attempts pause at the cap). On Team a non-coding attempt counts as one and a coding attempt as 15; unused attempts expire at month end. Prices in USD before tax.