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 marks of each evaluated answer sheet, and from the answers that lost marks together with the feedback the evaluation left on them. 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. Both kinds of plan can report it.

Step 1: Start the teacher action plan

Send the exam’s UUID. The job reads every answer sheet in the exam, whatever the class size, and writes four things: a class overview, one action per question the class lost marks on, the learning outcomes the paper assesses, and what each score group of students needs. It usually takes one to three minutes.
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.
This example is shortened: a real plan has one action_plan entry per question the class lost marks on, and one student_groups entry per score group that has students. See Get a teacher action plan for every field.While the job runs, action_plan, learning_outcomes and student_groups are empty lists and overview is an empty object. 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.

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 an enabled webhook of the API user who started the plan. They carry an X-Webhook-Signature header you can verify. See Verify the signature.

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.