Skip to main content
The Edpire API follows semantic versioning. Breaking changes increment the major version and are announced with at least 60 days notice before the migration deadline, with the old version kept alive for a further 60 days after it. See the API Versioning Policy. Non-breaking additions (new endpoints, new optional response fields, new webhook events) are shipped without a version bump.
API

AI feedback and the player in the assessment’s language

Fixed: the feedback that AI grading writes on an answer is now in the assessment’s language (English or French, as set in the builder), in submission results, webhooks and POST /assessments/{id}/check. Until now it followed the language of the student’s answer, so a blank or one-word answer could get feedback in another language, often Spanish. A question whose AI settings name a language keeps getting feedback in that language, and a question written in Arabic (its text and its AI instructions) gets feedback in Arabic.Also fixed: an assessment saved without a language now plays in the organisation’s default language, the one its author saw in the builder, instead of always in English. This changes meta.language in GET /embed/assessments and in the review payload, so the SDK player shows its buttons and messages in that language when you don’t pass locale. Assessments with a language set are not affected.Upgrade note: nothing to change in your code. Scores are not affected. If you want the player in one fixed language whatever the assessment says, pass locale.
SDK 0.9.3

Scrolling and dragging on a phone

Fixed in SDK 0.9.3: on a phone, a student can scroll the page when their finger starts on a word in a word bank. To drag a word, they press and hold it; until now a short pause before a swipe picked the word up instead of scrolling. Tapping a word works as before.Also fixed: while dragging, the page moves more slowly and only near the top and bottom edges, so the blanks can be seen going by. This also applies to the mouse. A long press on a word no longer opens the iPhone’s callout menu.Upgrade note: nothing to change in your code, and nothing breaks if you wait: install version 0.9.3 of @edpire/sdk, or change the version in your script URL.
SDK 0.9.2

Matching answers a mouse click

Fixed in SDK 0.9.2: on a computer, clicking a matching item now selects it and clicking an item on the other side pairs them. Until now only dragging worked with a mouse; touch was never affected.Also fixed: the AI answer’s counter says it counts words, and its field and the submit dialog have names for screen readers. French reads “vous” throughout what a student sees, and the line shown while AI grades no longer has a dash.Upgrade note: nothing to change in your code, and nothing breaks if you wait: install version 0.9.2 of @edpire/sdk, or change the version in your script URL.
SDK 0.9.1

The taking screen on a phone, and points that read right

Fixed in SDK 0.9.1: points follow their number (“1 pt”, “2 pts”, French “0,5 pt”, Arabic’s dual and plural), and the header’s total is no longer capitalised. “Powered by Edpire” no longer floats over the answers: it sits after the last question, small. On a phone, the header’s button says “Submit”, and the score banner after submitting takes two short rows instead of most of the screen. The submit dialog names the unfinished questions (“Exercise 1 · Question 2”, five at most), each a link that closes the dialog and scrolls to it.Also fixed: a typed blank now has a name for screen readers (“Your answer”, in English, French and Arabic); the full stop right after a blank or an inline choice stays on the blank’s line instead of wrapping alone; a placed word-bank choice no longer keeps an invisible ”×” once graded.Upgrade note: nothing to change in your code, and nothing breaks if you wait: install version 0.9.1 of @edpire/sdk, or change the version in your script tag’s URL to 0.9.1, when you want your learners to get these fixes.
API

Publish warns about empty choices

New: POST /assessments/{id}/publish returns one more count in warnings, questions_with_empty_option: questions with a multiple-choice option that has nothing in it, which learners would see as a blank choice they can pick. Like the other warnings it is advisory, and the assessment is published.For an organisation that requires every question to be complete, publishing an assessment with an empty choice now returns 422, as an empty question already did. No organisation has that rule on today.Same endpoint, one added field, nothing to change in your code.
SDK 0.9.0

Long exercise texts in the documents panel

New in SDK 0.9.0: an exercise’s reference text that is long (over 80 words, more than one picture or video, or a table over 6 rows) is now read in the documents panel beside the questions, under an “Exercise N” heading that links back to the exercise. In the exercise’s place, a line says the text is in the panel, with a link that opens it there; on a wide screen the panel also scrolls to that text when the learner reaches the exercise. Short texts stay above their questions, and an exercise text now reads at the same size as the questions (it showed twice as large on wide screens). On a narrow right-to-left screen, the documents tab opens from the right.Fixed in SDK 0.9.0: answering a question no longer redraws every question of the assessment, so long assessments stay responsive while the learner answers.Upgrade note: nothing to change in your code, and nothing breaks if you wait: install version 0.9.0 of @edpire/sdk, or change the version in your script tag’s URL to 0.9.0, when you want your learners to get the new layout.
SDK 0.8.3

No hydration error with a timer, and saving progress in the player

Fixed in SDK 0.8.3: on a server-rendered page (Next.js, Remix), an assessment with a time limit threw a React hydration error, because the countdown was worked out while rendering on the server and again in the browser. The countdown now appears once the page runs in the browser. To get the fix, install version 0.8.3 of @edpire/sdk, or change the version in your script tag’s URL to 0.8.3. Nothing breaks if you wait.New in SDK 0.8.3, all optional: AssessmentShell can restore answers saved earlier in an attempt (initialAnswers), report every change so you can save progress (onAnswersChange), show your saving state in its top bar (saveState), and greet a learner who comes back with the time left (resumed). SubmitResult.showVerdict: false shows the score without “passed” or “not passed”. See AssessmentShellProps.

The analytics pass rate uses the same pass mark as passed

Fixed: GET /assessments/{id}/analytics returned passing_score_percent: null and pass_rate: null for an assessment with no pass mark set, while passed on submissions and webhooks was computed at 50%. Both now use 50% when no pass mark is set, so the pass rate counts the same submissions that say passed: true. When a teacher chooses no pass mark at all (“None” in Edpire’s builder), analytics returns null for both, as before, and passed is still computed at 50%. Same fields, no version bump, nothing to change in your code.
SDK 0.8.2

Maths in KaTeX’s fonts, and maths grading

Fixed in SDK 0.8.2: maths in questions showed in the system’s fonts instead of KaTeX’s, because the SDK asked for its font files at an address that didn’t exist (404). Every SDK version up to 0.8.1 is affected. To get the fix, change the version in your script tag’s URL to 0.8.2, or install version 0.8.2 of @edpire/sdk from npm. Nothing breaks if you wait: only the fonts of formulas differ.Upgrade note: from 0.8.2 the npm build imports KaTeX’s stylesheet (katex/dist/katex.min.css) instead of inlining it, so your bundler serves the fonts from your own site. Next.js, Vite and webpack handle it as is; a Jest setup that renders the SDK’s components needs a moduleNameMapper for .css files. The script-tag build loads the fonts from jsDelivr.Fixed: a maths answer written exactly like an accepted answer could be graded wrong by POST /assessments/{id}/check or POST /assessments/{id}/submit while the server’s maths engine was still loading. It is now graded right. No SDK update needed.
SDK 0.8.1

AI grading that fails is pending, not zero

Fixed: when AI grading of a node failed in POST /assessments/{id}/check, the node scored 0 and the learner was told the answer was wrong. It now comes back with pending: true in its feedback entry and no score, the response carries a new ai_pending: true, and correct and score cover only the parts that were graded. Additive, no version bump. See Grade the question.Fixed: when AI grading of an answer did not come back in time, a finished attempt could still show a score, and the player said a teacher was reviewing open responses. POST /assessments/{id}/submit, the Embedded Player submit and GET /submissions/{id}/review now return ai_pending: true in that case, with awaiting_manual_grading: true and a provisional score. SDK 0.8.1 shows “Being marked” instead. Additive, no version bump.
SDK 0.8.0

Attempt history and review

Show each assessment as a card with the learner’s score, let them retry, and reopen any past attempt as the corrected paper. The recommended design is in Attempt History.Fixed: the written comment on an AI-graded answer was shown at submit and then lost: reopening the results, on edpire.com or through the API, dropped it. It is now kept everywhere an attempt is shown again, including reviews.Fixed: a word-bank blank filled with the wrong word was marked wrong without saying which word belonged there. The right word now shows beside it everywhere a correction is shown: right after submitting, on results pages, in reviews, and in POST /check when include_correct_answers is on. No SDK update needed.Fixed: attempts submitted through the SDK or POST /assessments/{id}/submit stored only the first answer of each question and no per-question marks. Attempts made from now on are stored in full. Earlier ones keep their scores but cannot be reviewed; the review endpoint says so with a 409. In GET /submissions/{id}, each question_results[].result of a new attempt now also carries nodeResults; every field it had before is unchanged.
API v1

First public release

REST APIWebhook events: submission.graded, assessment.published, assessment.content_updated, assessment.archived, assessment.updatedSDK (@edpire/sdk)