Answer Sheets

Initiate an answer sheet upload

Step 1 of 2. Returns a presigned URL to upload one student's scanned answer sheet to.

  1. Call this with the test and the student.
  2. PUT the PDF to upload_url with Content-Type: application/pdf.
  3. Call POST /v1/answer-sheets/confirm-upload with the upload_ref.

Identifying the student

Send either student_id (an Acadine student you already have) or student (your own reference). With student, the first upload for a student_ref creates the student on the test's course; later uploads for the same ref reuse them, and student_name / batch_ref are then ignored rather than applied as updates.

Students created this way have no email address and cannot sign in — they exist so their sheets can be evaluated. Add an email in the Acadine dashboard if they need access.

Only for tests whose answers are on paper. A CBT test is answered on screen, so it has nothing to upload and is rejected.

post/v1/answer-sheets/initiate-upload

Request

  • Base URL: https://api.acadine.ai (the document declares no server; this is the origin it was published from)
  • URL: https://api.acadine.ai/v1/answer-sheets/initiate-upload
  • Auth: API key in header X-API-Key

Request body

test_idstring required

The test this answer sheet is for.

student_idstring nullable

An existing Acadine student id. Provide this or student, not both.

Example request

{
  "test_id": "TST_2f8a91c4",
  "student_id": "USR_9d21f0ab",
  "student": {
    "student_ref": "a7f3-9c21",
    "student_name": "Ravi Kumar",
    "batch_ref": "JEE-2026-A"
  }
}

Response

Successful Response

upload_refstring required

Pass this to confirm-upload once the PDF has been uploaded.

student_idstring required

The Acadine student this sheet will be recorded against — newly created if this was the first upload for that student_ref. Store it to address the same student directly next time.

upload_urlstring required

Presigned URL to PUT the answer sheet PDF to.

expires_atstring date-time required

After this, call initiate-upload again for a fresh URL.

Example response

{
  "upload_ref": "ASU_2msnplIgOEXImjfvuihUqhIqNJO",
  "student_id": "USR_9d21f0ab"
}

Changes

No recorded changes to this operation across all 1 revision of this API.