curl --request POST \
--url https://api.evalezy.com/v1/exams/{examId}/finalize \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"all_graded": true
}
'{
"finalized": [
"9b2e4f71-5c3a-4d8e-b6f0-1a7c3e5d9b24"
],
"skipped": [
{
"id": "5d1c9e2a-7b3f-4a6e-8c0d-2f4b6a8e1c39",
"reason": "not_graded"
}
],
"has_more": false
}{
"error": {
"code": "invalid_api_key",
"message": "The API key is not valid.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f"
}
}{
"error": {
"code": "insufficient_scope",
"message": "This API key lacks the evaluation:write scope.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f",
"details": {
"required_scope": "evaluation:write"
}
}
}{
"error": {
"code": "not_found",
"message": "The resource was not found.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f"
}
}{
"error": {
"code": "conflict",
"message": "The request conflicts with the current state.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f"
}
}{
"error": {
"code": "validation_failed",
"message": "questions[0].max_marks is required.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f",
"details": {
"errors": [
{
"field": "questions[0].max_marks",
"code": "required",
"message": "max_marks is required."
}
]
}
}
}{
"error": {
"code": "rate_limited",
"message": "Too many requests. Retry after 2 s.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f"
}
}Finalize results
Publishes AI draft marks as final. Send submission_ids (up to 500) or all_graded: true. Graded submissions are finalized; partially_graded and failed ones only with allow_partial (failed questions count 0); queued or running ones are skipped. After finalize, overrides and re-evaluate return 409 submission_finalized until you unfinalize. Finalizing sends no emails or notifications.
Scope: evaluation:finalize
curl --request POST \
--url https://api.evalezy.com/v1/exams/{examId}/finalize \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"all_graded": true
}
'{
"finalized": [
"9b2e4f71-5c3a-4d8e-b6f0-1a7c3e5d9b24"
],
"skipped": [
{
"id": "5d1c9e2a-7b3f-4a6e-8c0d-2f4b6a8e1c39",
"reason": "not_graded"
}
],
"has_more": false
}{
"error": {
"code": "invalid_api_key",
"message": "The API key is not valid.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f"
}
}{
"error": {
"code": "insufficient_scope",
"message": "This API key lacks the evaluation:write scope.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f",
"details": {
"required_scope": "evaluation:write"
}
}
}{
"error": {
"code": "not_found",
"message": "The resource was not found.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f"
}
}{
"error": {
"code": "conflict",
"message": "The request conflicts with the current state.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f"
}
}{
"error": {
"code": "validation_failed",
"message": "questions[0].max_marks is required.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f",
"details": {
"errors": [
{
"field": "questions[0].max_marks",
"code": "required",
"message": "max_marks is required."
}
]
}
}
}{
"error": {
"code": "rate_limited",
"message": "Too many requests. Retry after 2 s.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f"
}
}Authorizations
Your institute's API key, vak_eval_ followed by 48 hex characters. An institute admin creates keys in the dashboard under Settings -> Integrations -> API keys.
Headers
Optional. Any unique string of 1-255 printable ASCII characters (a UUID works). Retrying with the same key within 48 hours replays the first response with Idempotent-Replayed: true.
255"exam-cbse-sci-10a-2026-10-14"
Path Parameters
Exam id (UUID).