GET - Provisional Mark Sheet
The API retrieves detailed provisional scores for a student’s exam. This includes:
- Exam-level metadata (exam name, subject, total marks, etc.).
- Section-wise summaries (marks distribution and instructions).
- Detailed breakdown of student answers, model answers, step-wise marking, and feedback.
This API helps educators review scores and provide feedback before finalizing and publishing results.
Scenarios:
-
Reviewing Provisional Scores Before Finalizing:
- A teacher reviews the provisional scores of a specific student before finalizing the results.
- The API provides:
- Exam-Level Metadata: Information like exam name, subject, and total marks.
- Section-Wise Summaries: Breakdown of marks distribution and instructions for each section.
- Detailed Breakdown: Student answers, model answers, step-wise marking, and feedback for each question.
- Outcome:
- The teacher reviews the provisional scores, adjusts as needed, and prepares to finalize the results for publication.
-
Providing Feedback on Provisional Scores:
- A teacher uses this API to review and give feedback on provisional scores for a specific exam.
- The teacher can access detailed performance information, including step-wise marking and feedback.
- Outcome:
- The teacher offers personalized feedback to students, helping them understand their mistakes and providing guidance for improvement before results are finalized.
GET
/
evaluation-platform
/
v1
/
exam
/
{examId}
/
answer-sheet
/
{ansSheetId}
/
provisional-scores
/
Retrieve provisional scores for an answer sheet
curl --request GET \
--url https://api-staging.crazygoldfish.com/evaluation-platform/v1/exam/{examId}/answer-sheet/{ansSheetId}/provisional-scores/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api-staging.crazygoldfish.com/evaluation-platform/v1/exam/{examId}/answer-sheet/{ansSheetId}/provisional-scores/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api-staging.crazygoldfish.com/evaluation-platform/v1/exam/{examId}/answer-sheet/{ansSheetId}/provisional-scores/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-staging.crazygoldfish.com/evaluation-platform/v1/exam/{examId}/answer-sheet/{ansSheetId}/provisional-scores/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api-staging.crazygoldfish.com/evaluation-platform/v1/exam/{examId}/answer-sheet/{ansSheetId}/provisional-scores/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api-staging.crazygoldfish.com/evaluation-platform/v1/exam/{examId}/answer-sheet/{ansSheetId}/provisional-scores/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-staging.crazygoldfish.com/evaluation-platform/v1/exam/{examId}/answer-sheet/{ansSheetId}/provisional-scores/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "success",
"provisionalPublishedDate": "2024-12-26 05:58:55",
"data": {
"id": "4340132f-50fa-4877-9ffa-e9b7ee59d51f",
"examName": "CBSE 10 – Mock Test",
"subjectName": "Science",
"totalMarks": 80,
"obtainedMarks": 45,
"questionMarkSumMismatch": false,
"modelAnswerMarkSumMismatch": false,
"overallDuration": "180",
"overallInstruction": "1. All questions would be compulsory. However, an internal choice of approximately 33% would be provided. 50% marks are to be allotted to competency-based questions. 2. Section A would have 16 simple/complex MCQs and 04 Assertion-Reasoning type questions carrying 1 mark each. 3. Section B would have 6 Short Answer (SA) type questions carrying 02 marks each. 4. Section C would have 7 Short Answer (SA) type questions carrying 03 marks each. 5. Section D would have 3 Long Answer (SA) type questions carrying 05 marks each. 6. Section E would have 3 source based/case based/passage based/integrated units of assessment (04 marks each) with sub-parts of the values of 1/2/3 marks.",
"sections": [
{
"id": "ef66afc6-d923-43c6-b2d2-e29814306214",
"sectionName": "SECTION A",
"duration": null,
"instruction": null,
"totalMarks": 20,
"obtainedMarks": 13,
"parentQuestions": [
{
"id": "fcb22595-c36a-4ddf-b9d3-00ba6d2ea466",
"text": "Identify the option that indicates the correct enzyme that is secreted in location i, ii and iii.",
"marks": 1,
"questionNumber": "Q1",
"diagramDescription": null,
"questionType": "MCQ",
"questions": [
{
"id": "226986d3-95e4-4ed7-aaa4-3e7054f9bc5b",
"text": "(a) (i)Lipase, (ii) trypsin (iii) pepsin (b) (i) amylase, (ii) pepsin, (iii) trypsin (c) (i) trypsin, (ii) amylase, (iii) carboxylase (d) (i) permease (ii) carboxylase (iii) oxidase",
"marks": 1,
"isApproved": false,
"questionNumber": "",
"supportingText": "MCQ",
"modelAnswer": {
"id": "57837640-c695-44a5-9667-9cfb8bafebf1",
"answerText": "",
"stepMarking": [
{
"marksplit": 1,
"step_wise_answer": "(b) (i) amylase, (ii) pepsin, (iii) trypsin",
"modelanswer_diagram_description": ""
}
]
},
"answer": [
{
"id": "f819bfd2-8aaa-42df-bd18-23cb989b2d16",
"answerText": "(b) (i) amylase , (ii) pepsin, (iii) Trypsin",
"marks": 1,
"isApproved": false,
"diagramDescription": null,
"aiFeedbacks": [
{
"feedback": "The student has provided the correct answer, demonstrating a clear understanding of the enzymes associated with the specified locations. Great job!",
"student_text": "(b) (i) amylase , (ii) pepsin, (iii) Trypsin",
"justification": "The student's answer matches the model answer exactly, indicating that they have correctly identified the enzymes for each location as per the question requirements.",
"marks_deducted": "0",
"room_for_improvement": "None, as the answer is correct and complete."
}
],
"teacherFeedback": "The student has provided the correct answer, demonstrating a clear understanding of the enzymes associated with the specified locations. Great job!"
}
]
}
]
}
]
}
]
}
}{
"error": {
"code": 400,
"message": {
"non_field_errors": [
"Provisional scores for this exam are not published yet"
]
}
}
}{
"detail": "Token has expired"
}{
"error": {
"code": 400,
"message": {
"non_field_errors": [
"Answer Sheet not found"
]
}
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Was this page helpful?
⌘I
Retrieve provisional scores for an answer sheet
curl --request GET \
--url https://api-staging.crazygoldfish.com/evaluation-platform/v1/exam/{examId}/answer-sheet/{ansSheetId}/provisional-scores/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api-staging.crazygoldfish.com/evaluation-platform/v1/exam/{examId}/answer-sheet/{ansSheetId}/provisional-scores/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api-staging.crazygoldfish.com/evaluation-platform/v1/exam/{examId}/answer-sheet/{ansSheetId}/provisional-scores/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-staging.crazygoldfish.com/evaluation-platform/v1/exam/{examId}/answer-sheet/{ansSheetId}/provisional-scores/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api-staging.crazygoldfish.com/evaluation-platform/v1/exam/{examId}/answer-sheet/{ansSheetId}/provisional-scores/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api-staging.crazygoldfish.com/evaluation-platform/v1/exam/{examId}/answer-sheet/{ansSheetId}/provisional-scores/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-staging.crazygoldfish.com/evaluation-platform/v1/exam/{examId}/answer-sheet/{ansSheetId}/provisional-scores/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "success",
"provisionalPublishedDate": "2024-12-26 05:58:55",
"data": {
"id": "4340132f-50fa-4877-9ffa-e9b7ee59d51f",
"examName": "CBSE 10 – Mock Test",
"subjectName": "Science",
"totalMarks": 80,
"obtainedMarks": 45,
"questionMarkSumMismatch": false,
"modelAnswerMarkSumMismatch": false,
"overallDuration": "180",
"overallInstruction": "1. All questions would be compulsory. However, an internal choice of approximately 33% would be provided. 50% marks are to be allotted to competency-based questions. 2. Section A would have 16 simple/complex MCQs and 04 Assertion-Reasoning type questions carrying 1 mark each. 3. Section B would have 6 Short Answer (SA) type questions carrying 02 marks each. 4. Section C would have 7 Short Answer (SA) type questions carrying 03 marks each. 5. Section D would have 3 Long Answer (SA) type questions carrying 05 marks each. 6. Section E would have 3 source based/case based/passage based/integrated units of assessment (04 marks each) with sub-parts of the values of 1/2/3 marks.",
"sections": [
{
"id": "ef66afc6-d923-43c6-b2d2-e29814306214",
"sectionName": "SECTION A",
"duration": null,
"instruction": null,
"totalMarks": 20,
"obtainedMarks": 13,
"parentQuestions": [
{
"id": "fcb22595-c36a-4ddf-b9d3-00ba6d2ea466",
"text": "Identify the option that indicates the correct enzyme that is secreted in location i, ii and iii.",
"marks": 1,
"questionNumber": "Q1",
"diagramDescription": null,
"questionType": "MCQ",
"questions": [
{
"id": "226986d3-95e4-4ed7-aaa4-3e7054f9bc5b",
"text": "(a) (i)Lipase, (ii) trypsin (iii) pepsin (b) (i) amylase, (ii) pepsin, (iii) trypsin (c) (i) trypsin, (ii) amylase, (iii) carboxylase (d) (i) permease (ii) carboxylase (iii) oxidase",
"marks": 1,
"isApproved": false,
"questionNumber": "",
"supportingText": "MCQ",
"modelAnswer": {
"id": "57837640-c695-44a5-9667-9cfb8bafebf1",
"answerText": "",
"stepMarking": [
{
"marksplit": 1,
"step_wise_answer": "(b) (i) amylase, (ii) pepsin, (iii) trypsin",
"modelanswer_diagram_description": ""
}
]
},
"answer": [
{
"id": "f819bfd2-8aaa-42df-bd18-23cb989b2d16",
"answerText": "(b) (i) amylase , (ii) pepsin, (iii) Trypsin",
"marks": 1,
"isApproved": false,
"diagramDescription": null,
"aiFeedbacks": [
{
"feedback": "The student has provided the correct answer, demonstrating a clear understanding of the enzymes associated with the specified locations. Great job!",
"student_text": "(b) (i) amylase , (ii) pepsin, (iii) Trypsin",
"justification": "The student's answer matches the model answer exactly, indicating that they have correctly identified the enzymes for each location as per the question requirements.",
"marks_deducted": "0",
"room_for_improvement": "None, as the answer is correct and complete."
}
],
"teacherFeedback": "The student has provided the correct answer, demonstrating a clear understanding of the enzymes associated with the specified locations. Great job!"
}
]
}
]
}
]
}
]
}
}{
"error": {
"code": 400,
"message": {
"non_field_errors": [
"Provisional scores for this exam are not published yet"
]
}
}
}{
"detail": "Token has expired"
}{
"error": {
"code": 400,
"message": {
"non_field_errors": [
"Answer Sheet not found"
]
}
}
}