Exams
Create, publish, assign and analyse exams. Guide: Exams Overview.
get
/examspost/examsget/exams/{id}patch/exams/{id}delete/exams/{id}post/exams/{id}/publishpost/exams/{id}/closeget/exams/{id}/assignmentspost/exams/{id}/assignmentsdelete/exams/{id}/assignments/{groupId}get/exams/{id}/attemptsget/exams/{id}/analyticsget/exams/{id}/scoresget/exams/{id}/export.csvget
/examsList exams
Scope exams:read
Parameters
appquery · stringstatusquery · stringfaculty_idquery · stringexam_typequery · stringqquery · stringupdated_sincequery · stringpagequery · integerlimitquery · integer
curl -X GET "https://serverless.grout.app/v1/exams" \
-H "Authorization: Bearer $GROUT_API_KEY"post
/examsCreate an exam (optionally publish + assign)
Scope exams:write
Body
faculty_idstring (required)titlestringexam_typeexam|homework|assignment|quiz|projectmax_scorenumberdue_datedate-timetime_limit_minutesintegerproctoringobjectai_policyobjectcode_specCodeSpec (GroutCode)appgrout|groutcodepublishbooleangroup_idsstring[]
curl -X POST "https://serverless.grout.app/v1/exams" \
-H "Authorization: Bearer $GROUT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"faculty_id":"<faculty_id>","title":"<title>","exam_type":"exam","max_score":0,"due_date":"<due_date>","time_limit_minutes":0,"proctoring":{},"ai_policy":{},"code_spec":"<code_spec>","app":"grout","publish":true,"group_ids":[]}'curl -X GET "https://serverless.grout.app/v1/exams/$ID" \
-H "Authorization: Bearer $GROUT_API_KEY"curl -X PATCH "https://serverless.grout.app/v1/exams/$ID" \
-H "Authorization: Bearer $GROUT_API_KEY"curl -X DELETE "https://serverless.grout.app/v1/exams/$ID" \
-H "Authorization: Bearer $GROUT_API_KEY"curl -X POST "https://serverless.grout.app/v1/exams/$ID/publish" \
-H "Authorization: Bearer $GROUT_API_KEY"curl -X POST "https://serverless.grout.app/v1/exams/$ID/close" \
-H "Authorization: Bearer $GROUT_API_KEY"get
/exams/{id}/assignmentsGroups the exam is assigned to
Scope exams:read
Parameters
idpath · stringrequired
curl -X GET "https://serverless.grout.app/v1/exams/$ID/assignments" \
-H "Authorization: Bearer $GROUT_API_KEY"post
/exams/{id}/assignmentsAssign exam to groups (notifies students + guardians)
Scope exams:write
Parameters
idpath · stringrequired
Body
group_idsstring[]
curl -X POST "https://serverless.grout.app/v1/exams/$ID/assignments" \
-H "Authorization: Bearer $GROUT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"group_ids":[]}'delete
/exams/{id}/assignments/{groupId}Unassign a group
Scope exams:write
Parameters
idpath · stringrequiredgroupIdpath · stringrequired
curl -X DELETE "https://serverless.grout.app/v1/exams/$ID/assignments/$GROUPID" \
-H "Authorization: Bearer $GROUT_API_KEY"get
/exams/{id}/attemptsAttempts (started/expiry/hidden-test release)
Scope submissions:read
Parameters
idpath · stringrequiredpagequery · integerlimitquery · integer
curl -X GET "https://serverless.grout.app/v1/exams/$ID/attempts" \
-H "Authorization: Bearer $GROUT_API_KEY"curl -X GET "https://serverless.grout.app/v1/exams/$ID/analytics" \
-H "Authorization: Bearer $GROUT_API_KEY"curl -X GET "https://serverless.grout.app/v1/exams/$ID/scores" \
-H "Authorization: Bearer $GROUT_API_KEY"get
/exams/{id}/export.csvCSV export of submissions
Scope submissions:read
Parameters
idpath · stringrequired
Responds with text/csv.
curl -X GET "https://serverless.grout.app/v1/exams/$ID/export.csv" \
-H "Authorization: Bearer $GROUT_API_KEY"