Exam Maker – Fully Automated Mock Exam Generator API

ExamMaker revolutionizes the way educators and students prepare for exams. With just a few clicks, it can transform content from multiple PDF sources into a

Input

Send these Fields as input. A Field not listed here is refused.

exam_title

Exam Title

  • Type: string
  • Required: yes
  • Length in characters: 1 to 30000

bio

Document

An https URL or an upload id.

  • Type: string
  • Required: yes
  • Length in characters: at least 1

num_MC_questions

Number of Multiple Choice Questions

  • Type: number
  • Required: yes

num_FTB_questions

Number of Fill in The Blank Questions

  • Type: number
  • Required: yes

num_TF_questions

Number of True or False Questions

  • Type: number
  • Required: yes

language

Language

  • Type: string
  • Required: yes
  • Length in characters: 1 to 30000

split_exam

Separate exam and answers

  • Type: string
  • Required: yes
  • Allowed values: True, False

added1

Additional PDF Material (Optional)

An https URL or an upload id.

  • Type: string
  • Required: no

added2

Additional PDF Material (Optional)

An https URL or an upload id.

  • Type: string
  • Required: no

Run it

One call presses the Widget and answers the run once its status is succeeded or failed, however long it takes. The key is read from ABYSS_API_KEY. Install the library with npm install abysshub or pip install abysshub; cURL sends the Fields as a form.

JavaScript

// index.mjs
import Abyss, { file } from "abysshub";

const abyss = new Abyss();

const run = await abyss.run("widget_281", {
  exam_title: "Biology Exam",
  bio: file("report.pdf"),
  num_MC_questions: 5,
  num_FTB_questions: 5,
  num_TF_questions: 5,
  language: "English",
  split_exam: "False",
});

for (const path of await run.save("output")) {
  console.log(path);
}

Python

from abysshub import Abyss, file

abyss = Abyss()

run = abyss.run("widget_281", {
    "exam_title": "Biology Exam",
    "bio": file("report.pdf"),
    "num_MC_questions": 5,
    "num_FTB_questions": 5,
    "num_TF_questions": 5,
    "language": "English",
    "split_exam": "False",
})

for path in run.save("output"):
    print(path)

cURL

curl https://api.abysshub.com/v1/widgets/widget_281/runs \
  -H "Authorization: Bearer $ABYSS_API_KEY" \
  -F 'exam_title=Biology Exam' \
  -F bio=@report.pdf \
  -F num_MC_questions=5 \
  -F num_FTB_questions=5 \
  -F num_TF_questions=5 \
  -F language=English \
  -F split_exam=False

A succeeded run carries its result and its output_files. Their URLs are signed for each read: re-read the run, never store a URL. A run still queued or running in the answer (after an hour, or when the API is busy) is read again at its Location with ?wait=true.

More

Keys, files, errors and limits: API access.