Skip to main content
The Worksheet Builder writes practice questions, answers, and explanations for a class, subject, and topic. It takes four API calls, and a teacher can review the draft after each one. This guide is for developers. For a non-technical overview, see Worksheet Builder features.
Each call starts a background job. Wait until the job’s status is Completed before the next call. 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.
While a job is starting, the API can briefly return 404, and explanations return 400 until they’re ready. wait_for keeps checking in both cases and stops only if the job failed.

Step 1: Start the worksheet

Send the board, grade, and subject, a topic, and how many questions you want. The three distributions are JSON strings.
Get BOARD_ID, GRADE_ID, and SUBJECT_ID from List boards, List grades, and List subjects. They don’t change, so you can store them.
A teacher can remove items, or add their own to additional_recommendations.

Step 2: Configure the questions

Send subject_matter and learning_standards back, with any edits. You get a plan for every question.
question_summary is trimmed here. In a real response, its counts add up to the number of questions.

Step 3: Generate the questions

Send the plan back, with any edits. You get the questions and the answer key.
If you edit the plan, the counts in each of the four lists must still add up to number_of_questions.
Questions are grouped by type. Only multiple-choice questions have options.

Step 4: Add explanations (optional)

Add a step-by-step explanation, key concepts, and common mistakes to every question.
Each question in explained["questions"] now has an explanations list.

Good to know

Register a webhook for each step, then fetch the result when the event arrives. See Async jobs and webhooks.

Worksheet API reference

Every field, response, and error.

List worksheets

Show a teacher’s worksheet history.