external_id. Evalezy also assigns its own id, which you can use in paths.
Candidates created through the API have no login and no email address. Evalezy never contacts them.
The candidate object
string
required
Your id for the student, such as an admission number or your own user id. Up to 128 characters, unique per institute.
string
Up to 255 characters. Optional. Cannot contain
< or >.string
Up to 64 characters. Cannot contain
< or >.string
Up to 64 characters, for example
10-A. Cannot contain < or >.object
Any JSON object up to 2 KB, returned as you sent it. Useful for your own ids, such as a batch or centre code.
id, created_at and updated_at.
Create or update candidates
POST /candidates (scope evaluation:write) creates or updates 1 to 2,000 candidates, matched on external_id.
null) keep their stored values. The same external_id twice in one request returns 422 validation_failed.
Register candidates on an exam
POST /exams/{id}/candidates registers candidates on an exam. Send one of:
{"candidates": [...]}: creates or updates the candidates first, then registers them.{"candidate_ids": [...]}: registers existing candidates by their Evalezyid.
candidate_ids value fails the whole call with 404 candidate_not_found, listing the unknown ids in details.candidate_ids. Registering a candidate who is already registered is harmless:
- On create.
POST /examsacceptscandidates[]inline, and registers them. - On first submission. Submitting a copy for a candidate who isn’t registered yet registers them. Send the candidate inline or by
candidate_id. See Submissions.
Find candidates
external_ids. The response is {"data": [...]} with the full candidate objects. Ids that don’t exist are simply missing from data.
Unregister a candidate
DELETE /exams/{id}/candidates/{candidate_id} removes a registration. The call returns 404 candidate_not_found if the candidate isn’t registered on the exam, and 409 candidate_has_submission if they already have a submission on it; delete the submission first.
Privacy
- Use a pseudonymous
external_id, such as your own internal user id, rather than a phone number, email address or government id. - Leave out names if your teachers don’t need them in the dashboard. If you leave out
name, teachers see the candidate under theirexternal_id. - Use a blind exam for anonymous marking. On an exam created with
"blind": true, candidates are registered under theirexternal_id, and results returnname: null, even if you stored a name. - Keep
metadatasmall and non-sensitive. It is returned on every read.