Skip to main content
Action Plans read the results of an exam you already evaluated and say what to do next. One plan is for the teacher and covers the whole class. The other is for a single student. Each plan takes two API calls: one to start it, one to collect it. This guide is for developers. For a non-technical overview, see Teacher Action Plan features and Student Action Plan features. Steps 1 and 2 run once per exam. Steps 3 and 4 run once per student.
Each call starts a background job. Wait until the job has finished before you show the plan. The wait_for helper below does this for you.

Set up

You need an access token. If you don’t have one, follow the Quickstart. You also need an exam whose answer sheets are evaluated. Action plans are built from the answers where a student scored less than the full marks, and from the feedback the evaluation left on those answers. See Get scores for review.
Both GET endpoints return 200 for every status, including Failed. Always branch on data.status.
A plan reports one of four statuses: That is why the helper above treats Partial as done. A student plan is a single request, so only a teacher plan reports Partial.

Step 1: Start the teacher action plan

Send the exam’s UUID. The job reads every answer sheet in the exam, groups the answers that lost marks by question number, and writes one action per question.
id is the exam ID you sent, not a new job ID. Keep using the exam ID.

Step 2: Get the teacher action plan

Poll the same exam ID until the job finishes.
While the job runs, action_plan is an empty object {}, not an empty array. action_type is Reinforcement, Remediation, or Extension.

Step 3: Start a student action plan

One call covers one student, so loop over the exam’s answer sheets. Get their IDs from List answer sheets.
The request field is ans_sheet_id. The GET path calls the same value answer_sheet_id.

Step 4: Get the student action plans

Poll each answer sheet ID. The plan comes back as an array with one item in it.
data.id is the plan’s own ID. No endpoint takes it, so keep using the answer sheet ID.

Good to know

Register a webhook for each event, then fetch the plan when the event arrives. See Async jobs and webhooks.Both events are sent for Completed, Partial, and Failed, and only to the API user who started the plan.

Action Plans API reference

Every field, response, and error.

Evaluate an exam

Create the exam and evaluate the answer sheets first.

Teacher Action Plan

What teachers see, without the code.

Student Action Plan

What students see, without the code.