Update an exam
curl --request PATCH \
--url https://api.evalezy.com/v1/exams/{examId} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"title": "Class 10 Science - Half-Yearly 2026 (10-A, re-test)",
"conducted_on": "2026-10-21"
}
'import requests
url = "https://api.evalezy.com/v1/exams/{examId}"
payload = {
"title": "Class 10 Science - Half-Yearly 2026 (10-A, re-test)",
"conducted_on": "2026-10-21"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: 'Class 10 Science - Half-Yearly 2026 (10-A, re-test)',
conducted_on: '2026-10-21'
})
};
fetch('https://api.evalezy.com/v1/exams/{examId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "<string>",
"status": "<string>",
"mode": "<string>",
"title": "<string>",
"external_ref": "<string>",
"conducted_on": "<string>",
"subject": "<string>",
"level": "<string>",
"board": "<string>",
"answer_language": "<string>",
"feedback_language": "<string>",
"instructions": "<string>",
"blind": true,
"total_marks": 123,
"paper_max": 123,
"question_count": 123,
"dashboard_url": "<string>",
"questions": [
{
"id": "<string>",
"label": "<string>",
"parent_label": "<string>",
"section": "<string>",
"type": "<string>",
"text": "<string>",
"max_marks": 123,
"negative_marks": 123,
"options": [
{
"label": "<string>",
"option_id": "<string>",
"text": "<string>"
}
],
"correct_options": [
"<string>"
],
"answer": {},
"model_answer": "<string>",
"rubric": {},
"word_limit": 123,
"expects_diagram": true,
"assess_language": true,
"tags": {},
"external_id": "<string>",
"rubric_version": 123,
"rubric_sync": "<string>",
"warnings": [
{
"code": "<string>",
"message": "<string>",
"field": "<string>"
}
]
}
],
"choice_groups": [
{
"id": "<string>",
"label": "<string>",
"question_labels": [
"<string>"
],
"question_ids": [
"<string>"
],
"attempt": 123,
"policy": "<string>"
}
],
"candidates": [
{}
],
"rubric": {
"version": 123,
"locked": true,
"questions_with_rubric": 123,
"questions_without_rubric": 123,
"sync": "<string>",
"sync_error": {}
},
"quote": {},
"stats": {},
"warnings": [
{
"code": "<string>",
"message": "<string>",
"field": "<string>"
}
],
"opened_at": "<string>",
"finalized_at": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"class": "<string>"
}{
"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"
}
}Exams
Update an exam
Edits exam fields. Until the exam is finalized you can change title, external_ref, conducted_on, subject, board, class, level, instructions and feedback_language. sections, blind and mode can change only while the exam is a draft. answer_language and status cannot be changed here.
Scope: evaluation:write
PATCH
/
exams
/
{examId}
Update an exam
curl --request PATCH \
--url https://api.evalezy.com/v1/exams/{examId} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"title": "Class 10 Science - Half-Yearly 2026 (10-A, re-test)",
"conducted_on": "2026-10-21"
}
'import requests
url = "https://api.evalezy.com/v1/exams/{examId}"
payload = {
"title": "Class 10 Science - Half-Yearly 2026 (10-A, re-test)",
"conducted_on": "2026-10-21"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: 'Class 10 Science - Half-Yearly 2026 (10-A, re-test)',
conducted_on: '2026-10-21'
})
};
fetch('https://api.evalezy.com/v1/exams/{examId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "<string>",
"status": "<string>",
"mode": "<string>",
"title": "<string>",
"external_ref": "<string>",
"conducted_on": "<string>",
"subject": "<string>",
"level": "<string>",
"board": "<string>",
"answer_language": "<string>",
"feedback_language": "<string>",
"instructions": "<string>",
"blind": true,
"total_marks": 123,
"paper_max": 123,
"question_count": 123,
"dashboard_url": "<string>",
"questions": [
{
"id": "<string>",
"label": "<string>",
"parent_label": "<string>",
"section": "<string>",
"type": "<string>",
"text": "<string>",
"max_marks": 123,
"negative_marks": 123,
"options": [
{
"label": "<string>",
"option_id": "<string>",
"text": "<string>"
}
],
"correct_options": [
"<string>"
],
"answer": {},
"model_answer": "<string>",
"rubric": {},
"word_limit": 123,
"expects_diagram": true,
"assess_language": true,
"tags": {},
"external_id": "<string>",
"rubric_version": 123,
"rubric_sync": "<string>",
"warnings": [
{
"code": "<string>",
"message": "<string>",
"field": "<string>"
}
]
}
],
"choice_groups": [
{
"id": "<string>",
"label": "<string>",
"question_labels": [
"<string>"
],
"question_ids": [
"<string>"
],
"attempt": 123,
"policy": "<string>"
}
],
"candidates": [
{}
],
"rubric": {
"version": 123,
"locked": true,
"questions_with_rubric": 123,
"questions_without_rubric": 123,
"sync": "<string>",
"sync_error": {}
},
"quote": {},
"stats": {},
"warnings": [
{
"code": "<string>",
"message": "<string>",
"field": "<string>"
}
],
"opened_at": "<string>",
"finalized_at": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"class": "<string>"
}{
"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.
Path Parameters
Exam id (UUID).
Body
application/json
The body is of type object.
Response
OK
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes