Quickstart
Make your first MirrorMingo Exam API call in five minutes.
1. Get an API key
- Sign in at mirrormingo.com and open Account → Developer.
- Click Create key, name it (e.g.
local-dev), and copy it. The key (mirrormingo_...) is shown once — store it in a secret manager, never in client-side code or git.
Test against the sandbox first (https://sandbox.api.mirrormingo.com/v1) —
sandbox keys are non-billable and return the same shapes as production.
2. Make a request
cURL
curl https://api.mirrormingo.com/v1/exam-prep/list?country=Nigeria \
-H "Authorization: Bearer $MIRRORMINGO_API_KEY"
TypeScript / Node
npm install @mirrormingo/sdk
import { MirrorMingo } from "@mirrormingo/sdk";
const mm = new MirrorMingo({ apiKey: process.env.MIRRORMINGO_API_KEY });
const exams = await mm.exams.list({ country: "Nigeria" });
console.log(exams.map((e) => e.exam_key));
Python
pip install mirrormingo
import os
from mirrormingo import ApiClient, Configuration
from mirrormingo.api.exams_api import ExamsApi
config = Configuration(
host="https://api.mirrormingo.com/v1",
access_token=os.environ["MIRRORMINGO_API_KEY"],
)
exams = ExamsApi(ApiClient(config)).list_exams(country="Nigeria")
print([e.exam_key for e in exams.exams])
3. Run a mock exam
const learnerId = "student-42"; // your app's stable learner reference
// 1. Find a verified past-question paper
const catalog = await mm.mockExams.listPapers("jamb");
const paperId = catalog.years[0].papers[0].paper_id;
// 2. Open a timed attempt (first 10 questions)
const attempt = await mm.mockExams.open("jamb", { paperId, questionLimit: 10, learnerId });
// 3. Submit answers, get scored feedback
const answers = Object.fromEntries(
attempt.questions.slice(0, 3).map((question) => [
question.answer_id ?? String(question.question_number),
"A",
]),
);
const result = await mm.mockExams.submit("jamb", {
attemptId: attempt.attempt_id,
answers,
learnerId,
});
console.log(result.feedback);
learnerId is optional, but production integrations should pass it consistently
for open, page, submit and history calls so each learner has separate attempts.
MirrorMingo stores it only as a hash-derived internal namespace.
Next
- Authentication — key rotation and security
- Integration guide — a full mock-exam UI flow
- Webhooks — get notified when an attempt is scored