Marking guide drafts

Draft the question type, maximum marks and marking guide for questions that are missing them.

  • Price1 credit (10p) per request
  • Typical time5 s to 60 s
  • Scopemarking:write
  • Runs asA background job
Try it

Run marking guide drafts in the sandbox

No key and nothing to pay. The sandbox returns a realistic example in a couple of seconds; no AI runs and no data is kept.

  1. Queued202 and a job id, straight away
  2. ProcessingPoll, stream or wait for a webhook
  3. SucceededResult and files on the job
Every AI request runs as a background job, so nothing times out.

Send questions without answers. Any of question_type, max_marks or marking_guide you leave out is drafted; what you supply is kept exactly. drafted_fields lists what was drafted. Drafts are suggestions for a person to check before marking with them: requires_review is always true.

Requires marking:write. Costs 1 credit per request. Send a unique Idempotency-Key; reuse it with the identical body when retrying. Returns 202 with a job: poll GET /jobs/{job_id}, stream GET /jobs/{job_id}/events, or use a signed webhook.

Marking guide drafts

POST/v1/marking/guides

Scope marking:write

Headers

Marking guide drafts: headers
FieldDetails
Idempotency-KeystringRequiredA unique key per new operation; reuse it with the identical body when retrying.
EduMark-VersionenumAPI version. Defaults to the latest.One of 2026-10-21

Request body

Marking guide drafts: request body
FieldDetails
questionsarray of GuideQuestionRequiredLeave out any of question_type, max_marks or marking_guide to have it drafted.1 to 50 items
idquestions[].idstringRequiredUp to 100 charactersPattern ^[A-Za-z0-9_.-]+$
question_textquestions[].question_textstringRequiredUp to 12,000 characters
question_typequestions[].question_typeenum, optionalOne of short_text, long_text, single_choice, numeric
max_marksquestions[].max_marksinteger, optional1 to 1,000
marking_guidequestions[].marking_guidestring, optionalLeave empty to have one drafted. A supplied guide is kept exactly.Up to 16,000 characters
optionsquestions[].optionsarray of QuestionOptionUp to 12 items
idquestions[].options[].idstringRequiredUp to 40 characters
labelquestions[].options[].labelstringRequiredUp to 2,000 characters
context_textstring, optionalThe brief, specification or level the questions belong to.Up to 60,000 characters
context_documentFileReference or DocumentInput, optionalThe brief or specification as a PDF, DOCX or TXT.
file_idcontext_document.file_idstringRequiredThe id returned by POST /v1/files, after POST /v1/files/{id}/complete reported ready.When sending FileReferencePattern ^file_[a-f0-9]{32}$
filenamecontext_document.filenamestringRequiredWhen sending DocumentInputUp to 200 characters
base64context_document.base64stringRequiredWhen sending DocumentInputUp to 27,962,028 characters
mime_typecontext_document.mime_typestring, optionalWhen sending DocumentInputUp to 150 characters

Responses

StatusMeaning
202Successful Response
400Request rejected. Inspect error.code and request_id; failed work is not billed.
401Request rejected. Inspect error.code and request_id; failed work is not billed.
402Request rejected. Inspect error.code and request_id; failed work is not billed.
403Request rejected. Inspect error.code and request_id; failed work is not billed.
404Request rejected. Inspect error.code and request_id; failed work is not billed.
409Request rejected. Inspect error.code and request_id; failed work is not billed.
410Request rejected. Inspect error.code and request_id; failed work is not billed.
413Request rejected. Inspect error.code and request_id; failed work is not billed.
415Request rejected. Inspect error.code and request_id; failed work is not billed.
422Validation Error
429Request rejected. Inspect error.code and request_id; failed work is not billed.
503Request rejected. Inspect error.code and request_id; failed work is not billed.