API Documentation
Integrate truelevel into your hiring workflow with our REST API. Submit candidate artefacts programmatically and receive structured evaluation results.
Authentication
All API requests require an organisation-level API key. Include your key in the Authorization header with each request.
API keys are scoped to your organisation and can be generated from the dashboard. Keep your keys secure and never expose them in client-side code.
Endpoints
The truelevel API provides three core endpoints for managing evaluations.
/evaluationsSubmit a new candidate artefact for evaluation. Returns immediately with an evaluation ID.
/evaluations/{id}Retrieve a completed evaluation with full results, rubric scores, and risk flags.
/status/{id}Check the current status of an in-progress evaluation.
/evaluations
Submit a candidate artefact for evaluation. The request returns immediately with an evaluation ID that you can use to check status or retrieve results.
Request body
{
"candidate_ref": "CAND-2024-0847",
"target_role": "Backend Engineer",
"target_level": "senior",
"artefact": {
"type": "github_repo",
"url": "https://github.com/candidate/take-home-project"
},
"sla_tier": "priority",
"callback_url": "https://your-ats.com/webhooks/truelevel"
}candidate_refYour internal candidate identifier. Used in reports for reference.target_roleThe role title the candidate is applying for.target_levelExpected seniority: junior, mid, senior, or staff.artefactThe code submission. Supports github_repo or zip_upload.sla_tierTurnaround preference: standard (24h), priority (12h), or express (2h).callback_urlOptional. URL to receive a webhook when evaluation completes.Response
{
"id": "eval-2024-0847",
"status": "pending",
"candidate_ref": "CAND-2024-0847",
"target_role": "Backend Engineer",
"target_level": "senior",
"sla_tier": "priority",
"estimated_completion": "2024-01-15T21:30:00Z",
"created_at": "2024-01-15T09:30:00Z"
}/evaluations/{id}
Retrieve a completed evaluation. Returns the full structured report including recommendation, rubric scores, calibrated seniority, and any risk flags.
Response
{
"id": "eval-2024-0847",
"status": "completed",
"candidate_ref": "CAND-2024-0847",
"target_role": "Backend Engineer",
"target_level": "senior",
"completed_at": "2024-01-15T14:45:00Z",
"turnaround_hours": 5.25,
"result": {
"recommendation": "proceed",
"confidence_score": 92,
"calibrated_seniority": "senior",
"rubric_scores": [
{
"category": "Code Quality",
"score": 4,
"max_score": 5,
"observations": [
"Consistent naming conventions throughout",
"Appropriate use of abstractions",
"Error handling present but could be more comprehensive"
]
},
{
"category": "Technical Depth",
"score": 4,
"max_score": 5,
"observations": [
"Good understanding of database optimisation",
"Correctly identifies concurrency concerns"
]
},
{
"category": "Reasoning and Trade-offs",
"score": 5,
"max_score": 5,
"observations": [
"Clearly articulates design pattern choices",
"Considers operational concerns"
]
}
],
"risk_flags": []
}
}See the sample report page for a visual representation of this data.
/status/{id}
Check the current status of an evaluation. Useful for polling while waiting for results, though we recommend using webhooks when available.
Response
{
"id": "eval-2024-0847",
"status": "in_progress",
"candidate_ref": "CAND-2024-0847",
"progress": {
"stage": "review",
"started_at": "2024-01-15T10:15:00Z"
},
"estimated_completion": "2024-01-15T14:30:00Z"
}Status values:
pending— Submitted, waiting for reviewer assignmentin_progress— Reviewer has started the evaluationcompleted— Evaluation finished, results availablefailed— Unable to evaluate (e.g., inaccessible artefact)
Coming later
The following features are planned for future releases.
Webhooks
PlannedReceive real-time notifications when evaluations complete, eliminating the need for polling.
ATS integrations
PlannedNative integrations with Greenhouse, Lever, Ashby, and other popular applicant tracking systems.
Ready to integrate?
Request pilot access to receive your API credentials and start submitting evaluations.