Skip to main content
PATCH
cURL
Step 5 of 6 in Evaluate an assignment. Call it twice: once with the answer, once with isFinal to start evaluation.

Rules

  • Send one of documents, link, or isFinal per request. An answer sent together with isFinal returns 400, and documents with link returns 400.
  • One answer sheet takes one kind of answer: files or one audio link. Do not mix them.
  • isFinal starts evaluation and moves status to 1 (In Progress). Sending it with no answer on the sheet returns 400 No documents/link found for this answer sheet.
  • A sheet that is already 2 (Completed) returns 400 Answer sheet is already extracted. Create a new sheet to grade the answer again.
  • Each path needs its trailing slash, or the PATCH is redirected and loses its body.

Answers as documents

  • Use PDF, JPEG, or PNG, sent as multipart/form-data. Most other types return 400 Invalid file type, but the Word .docx type passes the file-type check, so do not send one by accident.
  • Up to 20 MB per file, and up to 50 pages per PDF.
  • Send either one PDF or a set of images, never both. Images can arrive across several requests. Some mixed uploads are rejected with 400 Cannot mix PDF files with image files and others are accepted without an error, so keep the two apart in your own code.
  • Every file is checked for readability. A file that does not pass is rejected with 400 Blurred image, Please try to capture the image again. The same message is returned when the readability check itself cannot be completed, so if a clear file keeps failing, retry in a few minutes before re-taking the photo.
  • link must be an HTTPS URL. HTTP, localhost, and private network addresses are rejected.
  • The URL must be publicly reachable without a login. CrazyGoldFish checks it while your request runs, and follows redirects.
  • The URL must end in .mp3, with no query string after it. Signed or SAS-token URLs are rejected.
  • The recording must be within the maximum length allowed for your account. A longer one is rejected as you submit the link, and the message gives its length and the maximum.
  • The assignment’s model answer sheet must have a rubric. Without one, isFinal returns 400 Rubric not found for audio evaluation.
  • Only the first link is kept. A second link is still checked against every rule above, so an invalid one returns 400. A valid second link is accepted with 200 and then ignored, so it never replaces the first.
Send isFinal as the text true, either in multipart/form-data or as a JSON string. A JSON boolean is not accepted here, unlike the exam API.

Evaluation limits

Every isFinal call counts toward the limit, including calls that are then rejected. Wait for the limit to reset, then send isFinal again.

Next step

Get an evaluated assignment score

Poll until status is 2, or wait for the assignment_evaluation_student_answer_sheet_evaluation webhook.

Authorizations

Authorization
string
header
required

Access token from Get an access token.

Path Parameters

id
string<uuid>
required

The assignment id returned by Create an assignment. Use it exactly as returned: the lowercase form is the only one the nested paths accept.

Example:

"3c9e1f2a-7b4d-4a8e-9f1c-2d5e6a7b8c9d"

assignmentSheetId
string<uuid>
required

The answer sheet id returned by Create an assignment answer sheet.

Example:

"6e1d2c3b-4a5f-4e6d-8c7b-9a0f1e2d3c4b"

Body

multipart/form-data
documents
file[]

The student's answer as files: one PDF, or one or more JPEG or PNG images. Up to 20 MB per file, and up to 50 pages per PDF. Only one PDF per answer sheet, and a PDF cannot be mixed with images. You can upload images across several requests. Use instead of link.

Public HTTPS URL of an .mp3 recording of the student's answer. Use instead of documents. The URL must be reachable without a login, must end in .mp3 with no query string after it, and the recording must be within the maximum length CrazyGoldFish allows. Only the first link is kept per answer sheet. A later link is still checked against every rule above, so an invalid one returns 400; a valid one is accepted with 200 and then ignored. The assignment's model answer sheet must have a rubric.

Example:

"https://cdn.example.com/recordings/student-10432.mp3"

isFinal
enum<string>

Send the text true to start evaluation. Send it on its own, as the text true. A JSON boolean is not accepted.

Available options:
true,
false
Example:

"true"

studentId
string

Corrects the student ID on this answer sheet.

Maximum string length: 50
Example:

"STU-10432"

name
string

Corrects the student's name on this answer sheet.

Maximum string length: 200
Example:

"Aarav Sharma"

batchId
string

Corrects the batch ID on this answer sheet.

Maximum string length: 200
Example:

"BATCH-7A"

sessionId
string

Corrects the session ID on this answer sheet.

Maximum string length: 200
Example:

"2025-26"

teacherId
string

Corrects the teacher ID on this answer sheet.

Maximum string length: 50
Example:

"TEA-204"

Response

The answer was saved, or evaluation started. After isFinal, status is 1 (In Progress).

id
string<uuid>

ID of the answer sheet.

Example:

"6e1d2c3b-4a5f-4e6d-8c7b-9a0f1e2d3c4b"

status
enum<integer>

0 Open, 1 In Progress, 2 Completed, 3 Failed.

Available options:
0,
1,
2,
3
Example:

2

batchId
string | null
Example:

"BATCH-7A"

sessionId
string | null
Example:

"2025-26"

studentId
string
Example:

"STU-10432"

name
string | null
Example:

"Aarav Sharma"

teacherId
string | null
Example:

"TEA-204"

documents
object[]

The student's answer: uploaded files, or one audio link.