edutap.ai developers
Exam Feedback and Weakness Reports

Exam Feedback Integration Guide

Submit exam responses to receive AI feedback and weakness reports

Getting Started

Once a learner finishes an exam and it has been scored, send their responses to receive per-question AI feedback and a weakness report for that attempt.

Writing and Speaking are submitted through separate APIs.

Overview

Step 1: Submit responsesWriting as JSON, Speaking with audio files
Step 2: Writing feedbackAudio is transcribed first. Takes a few minutes
Step 3: Retrieve resultsUse the job_id from the submission response

Sending One Attempt

A single learner's attempt is submitted by section.

StepAPIContent
1POST /api/v1/courses/exam-gradings/writingWriting, 12 questions with their responses
2POST /api/v1/courses/exam-gradings/speakingSpeaking, 11 questions with their responses
3GET /api/v1/courses/exam-gradings/{job_id}Retrieve the result for each question

One job is created per item in items.

You send the scores, we write the feedback

Both the question score and the section score are required. We do not re-score the response; we display what you send. The feedback names what the response did well and what to fix, against the ETS scoring guides.

FieldRangeNotes
items[].score0 - 5Question score. Build a Sentence is 0 or 1
section_score1.0 - 6.0Section score, in steps of 0.5

Both are required. A request without them is rejected.

Weakness Reports

Once every question in a section has been graded, the weakness report for that attempt is created automatically. No separate request is needed.

SectionQuestionsReport is created
Writing12when all 12 questions are graded
Speaking11when all 11 questions are graded

No report is created if questions are missing. Send every question of an attempt.

When the same weakness is flagged again in a later attempt, its cumulative count is shown alongside it.

What the diagnosis is built from

Every time a question is graded, a tag records which criterion the response fell short on. Tags come from a fixed list per question type.

Question typeWeakness tags
Build a Sentence어순 오류 / 문법 표지 오류 / 어휘 선택 / 미응답
Write an Email과제 수행 / 내용 전개 / 문장 구조 / 어휘 선택 / 격식과 표현 관습 / 문법 정확성 / 철자와 표기
Academic Discussion과제 수행 / 근거와 예시 / 내용 전개 / 문장 구조 / 어휘 선택 / 문법 정확성
Listen and Repeat재현 정확도 / 내용어 누락 / 문법 표지 오류 / 어순 오류 / 발화 완결성 / 발화 분량
Take an Interview질문 대응 / 내용 전개 / 문장 연결 / 발화 속도와 휴지 / 문법 정확성 / 어휘 선택

Speaking responses are also analysed as audio. Four delivery axes are scored 0 to 5, and any axis at or below 2 is added to the weaknesses.

AxisWhat it looks at
발음 정확도Whether words come out recognisably
강세와 리듬Whether content words carry stress and the speech flows
억양Whether pitch moves within a sentence
발화 속도와 휴지Whether pace is even and pauses are purposeful (Take an Interview only)

Ranking follows frequency

Tags are counted across the attempt and the five most frequent are kept. A criterion that keeps coming up is the biggest thing costing points that attempt. The number on screen is that rank, and rank 1 is what to fix first.

RankWeaknessQuestions affected
1철자와 표기7 of 12 questions
2문장 구조5 questions
3어휘 선택4 questions

Each weakness has two parts. The diagnosis says what is going wrong and why, with an example drawn from the learner's own answer. The tip gives one thing they can practise alone: what to do, how, and how much.

The summary names only the single biggest factor rather than repeating the list below it, in 100 characters or fewer.

Checking whether it is ready

The weakness_report field in the grading result response tells you whether that section's diagnosis exists yet. It turns READY once every question in the section is graded.

ValueMeaning
PENDINGSome questions in the section are still ungraded
READYThe diagnosis exists and can be fetched

Writing and Speaking are counted separately. Finishing all 12 Writing questions leaves Speaking at PENDING until its own questions are graded.

The Server Counts Attempts

There is no need to send an attempt number. When a report is created, the server counts the learner's existing reports to assign one.

Sentexam_idAttempt assigned
FirstI100000760_11
SecondI100000769_12
ThirdI100000771_13

Resending the Same Exam

The same exam_id, user_id and problem_id combination is treated as one grading, and it keeps the attempt number it was first given.

Next Steps