Skip to content

API Reference

Exams

Create, publish, assign and analyse exams. Guide: Exams Overview.

get/exams

List exams

Scope exams:read

Parameters

  • appquery · string
  • statusquery · string
  • faculty_idquery · string
  • exam_typequery · string
  • qquery · string
  • updated_sincequery · string
  • pagequery · integer
  • limitquery · integer
cURL
curl -X GET "https://serverless.grout.app/v1/exams" \
  -H "Authorization: Bearer $GROUT_API_KEY"
post/exams

Create an exam (optionally publish + assign)

Scope exams:write

Body

  • faculty_idstring (required)
  • titlestring
  • exam_typeexam|homework|assignment|quiz|project
  • max_scorenumber
  • due_datedate-time
  • time_limit_minutesinteger
  • proctoringobject
  • ai_policyobject
  • code_specCodeSpec (GroutCode)
  • appgrout|groutcode
  • publishboolean
  • group_idsstring[]
cURL
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":[]}'
get/exams/{id}

Get an exam with groups and stats

Scope exams:read

Parameters

  • idpath · stringrequired
cURL
curl -X GET "https://serverless.grout.app/v1/exams/$ID" \
  -H "Authorization: Bearer $GROUT_API_KEY"
patch/exams/{id}

Update an exam

Scope exams:write

Parameters

  • idpath · stringrequired
cURL
curl -X PATCH "https://serverless.grout.app/v1/exams/$ID" \
  -H "Authorization: Bearer $GROUT_API_KEY"
delete/exams/{id}

Delete an exam

Scope exams:write

Parameters

  • idpath · stringrequired
cURL
curl -X DELETE "https://serverless.grout.app/v1/exams/$ID" \
  -H "Authorization: Bearer $GROUT_API_KEY"
post/exams/{id}/publish

Publish an exam

Scope exams:write

Parameters

  • idpath · stringrequired
cURL
curl -X POST "https://serverless.grout.app/v1/exams/$ID/publish" \
  -H "Authorization: Bearer $GROUT_API_KEY"
post/exams/{id}/close

Close an exam

Scope exams:write

Parameters

  • idpath · stringrequired
cURL
curl -X POST "https://serverless.grout.app/v1/exams/$ID/close" \
  -H "Authorization: Bearer $GROUT_API_KEY"
get/exams/{id}/assignments

Groups the exam is assigned to

Scope exams:read

Parameters

  • idpath · stringrequired
cURL
curl -X GET "https://serverless.grout.app/v1/exams/$ID/assignments" \
  -H "Authorization: Bearer $GROUT_API_KEY"
post/exams/{id}/assignments

Assign exam to groups (notifies students + guardians)

Scope exams:write

Parameters

  • idpath · stringrequired

Body

  • group_idsstring[]
cURL
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 · stringrequired
  • groupIdpath · stringrequired
cURL
curl -X DELETE "https://serverless.grout.app/v1/exams/$ID/assignments/$GROUPID" \
  -H "Authorization: Bearer $GROUT_API_KEY"
get/exams/{id}/attempts

Attempts (started/expiry/hidden-test release)

Scope submissions:read

Parameters

  • idpath · stringrequired
  • pagequery · integer
  • limitquery · integer
cURL
curl -X GET "https://serverless.grout.app/v1/exams/$ID/attempts" \
  -H "Authorization: Bearer $GROUT_API_KEY"
get/exams/{id}/analytics

Score analytics

Scope submissions:read

Parameters

  • idpath · stringrequired
cURL
curl -X GET "https://serverless.grout.app/v1/exams/$ID/analytics" \
  -H "Authorization: Bearer $GROUT_API_KEY"
get/exams/{id}/scores

All scores for an exam

Scope submissions:read

Parameters

  • idpath · stringrequired
cURL
curl -X GET "https://serverless.grout.app/v1/exams/$ID/scores" \
  -H "Authorization: Bearer $GROUT_API_KEY"
get/exams/{id}/export.csv

CSV export of submissions

Scope submissions:read

Parameters

  • idpath · stringrequired

Responds with text/csv.

cURL
curl -X GET "https://serverless.grout.app/v1/exams/$ID/export.csv" \
  -H "Authorization: Bearer $GROUT_API_KEY"