Back to Blog

WAEC API Sierra Leone

A WAEC API Sierra Leone is useful when your application needs Sierra Leone WASSCE questions as structured data rather than as documents students have to download and read manually.

For developers, the distinction matters. A PDF can show a question, but an API lets your software select, display, mark, analyse and reuse that question.

SdashAPI currently includes Sierra Leone in its multi-country WASSCE infrastructure, using the country code SL. SdashAPI

What does the API actually provide?

At its simplest, SdashAPI returns JSON containing fields such as:

{
  "id": 5102,
  "question": "Solve for x: 2x + 5 = 15",
  "section": null,
  "option": {
    "a": "2",
    "b": "5",
    "c": "10",
    "d": "20"
  },
  "answer": "b",
  "solution": "Subtract 5 from both sides: 2x = 10. Divide by 2: x = 5.",
  "image": null,
  "examtype": "WASSCE",
  "examyear": "2021",
  "university": null
}

That structure comes from the current SdashAPI WASSCE documentation. SdashAPI

For a developer, this means you already have separate properties for the question, options, answer, solution and year.

You can concentrate on what your application does with them.

Requesting Sierra Leone specifically

This is where a Sierra Leone application should differ from a generic WAEC app.

SdashAPI currently identifies Sierra Leone as:

Country: Sierra Leone
Code: SL
Exams: WAEC / WASSCE

Its documented country-filtering system works with the V4 question endpoint. SdashAPI

A Sierra Leone WASSCE Mathematics request follows this pattern:

curl -X GET \
  "https://sdashapi.com/api/v4/q?type=wassce&country=SL&subject=mathematics" \
  -H "AccessToken: YOUR_ACCESS_TOKEN"

So the important part of your request is:

type=wassce
country=SL
subject=mathematics

You're no longer asking simply for "WAEC Mathematics."

You're asking for WASSCE Mathematics associated with Sierra Leone.

Ask SdashAPI what's available instead of guessing

Suppose you're creating a subject page.

You could manually write 20 subjects into your source code.

But SdashAPI currently exposes:

GET https://sdashapi.com/api/countries/SL/subjects

For available years:

GET https://sdashapi.com/api/countries/SL/years

And examinations:

GET https://sdashapi.com/api/countries/SL/exams

These endpoints are documented specifically for country-level discovery. SdashAPI

That gives you a much cleaner application flow:

Sierra Leone
      ↓
Get Available Exams
      ↓
Get Available Subjects
      ↓
Get Available Years
      ↓
Student Makes Selection
      ↓
Fetch Questions

It also prevents you from showing students a subject/year combination for which your data provider currently has no matching questions.

A small Node.js example

Your backend could do something like this:

async function getSierraLeoneWassce(subject) {
  const params = new URLSearchParams({
    type: "wassce",
    country: "SL",
    subject
  });

  const response = await fetch(
    `https://sdashapi.com/api/v4/q?${params}`,
    {
      headers: {
        Accept: "application/json",
        AccessToken: process.env.SDASH_API_KEY
      }
    }
  );

  const result = await response.json();

  if (result.status !== 200) {
    throw new Error(result.message || "Unable to fetch questions");
  }

  return result.data;
}

The endpoint structure and AccessToken authentication here follow the current SdashAPI documentation. SdashAPI

For production apps, SdashAPI's JavaScript guide also recommends routing requests through your own backend rather than exposing the API key in frontend JavaScript. SdashAPI

Or use the official JavaScript/TypeScript SDK

There's another integration route that is easy to miss.

SdashAPI now documents an official Node.js/TypeScript SDK:

npm install @sdashapis/sdk

A basic implementation starts with:

import { SdashAPI } from "@sdashapis/sdk";

const api = new SdashAPI({
  apiKey: process.env.SDASH_API_KEY
});

The SDK exposes methods including getQuestions(), getSubjects(), getExams(), getYears() and reportQuestion(). SdashAPI

There's also an official Python SDK documented as:

pip3 install sdashapis-sdk

So a Sierra Leone EdTech product does not have to be written in JavaScript to use the question infrastructure. SdashAPI

What would a useful Sierra Leone product look like?

Don't stop at this:

Question
A
B
C
D
Next

That's technically a CBT app, but it doesn't offer students much beyond digitising a question booklet.

You could instead build:

WASSCE Sierra Leone

Mathematics
   ↓
Choose Year
   ↓
Practice Questions
   ↓
See Score
   ↓
Review Mistakes
   ↓
Read Solutions
   ↓
Practise Again

Then save performance over time:

MATHEMATICS

Attempt 1     52%
Attempt 2     64%
Attempt 3     71%
Attempt 4     78%

The question API supplies the content.

The improvement loop is your product.

There's more data available than question + answer

SdashAPI's API versions currently have different levels of detail.

V1 provides the core question data.

V2 adds metadata such as:

Topic
Subtopic
Difficulty
Skill
Tags
Passage

V3 adds richer explanations, including summary, detailed reasoning, steps, why the correct answer is correct and why alternatives are wrong.

V4 adds the richer intelligence layer and multi-country WASSCE functionality. SdashAPI

That means a Sierra Leone product could eventually move from:

Here are 20 Mathematics questions.

to:

Your performance is weakest in Algebra. Here are more questions from that area.

That's a more interesting use of a question bank.

Let students report bad questions

Question banks aren't magically perfect.

Typos happen. An answer may need correction. An image might be missing.

SdashAPI currently provides a reporting endpoint:

POST https://sdashapi.com/api/v1/report

For example:

{
  "question_id": 4821,
  "report_type": "wrong_answer",
  "message": "Please review the marked answer."
}

The documented report types include wrong answers, typos, missing images, incorrect explanations, duplicates, formatting issues, incorrect metadata and missing passages. SdashAPI

That's worth exposing in an education app as a small Report Question button.

Instead of students complaining in an app-store review, you get a question ID that can actually be investigated.

Don't promise every year just because the database is large

SdashAPI's current public coverage page reports 368,868+ questions overall. For WASSCE specifically, it reports 23 subjects, an overall 1988–2026 range, images and approximately 74% explanation coverage. Sierra Leone is one of the five supported WASSCE countries. SdashAPI

But those are overall WASSCE statistics.

They do not mean:

Every Sierra Leone subject
×
Every year from 1988–2026
=
Available

That's precisely why the country-specific endpoints are useful.

Use:

GET /api/countries/SL/subjects
GET /api/countries/SL/years

and build your interface around the data that's actually available. SdashAPI

API or your own database?

Both can make sense.

An API-first application looks like:

Student
   ↓
Your App
   ↓
Your Backend
   ↓
SdashAPI

This is convenient because you don't have to maintain the entire examination dataset yourself.

But perhaps you're building software for schools that must work with little or no internet.

Then you may prefer:

Licensed Question Dataset
          ↓
Your Own Database
          ↓
Local CBT Server
          ↓
Students

SdashAPI currently advertises bulk licensing in formats including JSON, CSV and SQL for teams that need the complete dataset offline. SdashAPI

Those are different licensing and technical models, so choose based on how your application actually needs to operate.

Build for Sierra Leone now without trapping yourself there

A nice thing about country-aware architecture is that you can launch in one market without rebuilding everything later.

Your internal model can be:

Country
   ↓
Exam
   ↓
Subject
   ↓
Year
   ↓
Question

Today:

SL → WASSCE → Mathematics

Later, where your product and dataset support it:

GH → WASSCE → Mathematics
LR → WASSCE → Mathematics
GM → WASSCE → Mathematics
NG → WASSCE → Mathematics

SdashAPI currently exposes SL, GH, LR, GM and NG as its five WASSCE country codes. SdashAPI

Start small

You don't need to build "the ultimate West African education platform" on day one.

Start with:

Sierra Leone
      ↓
WASSCE
      ↓
One Subject
      ↓
Past Questions
      ↓
Automatic Scoring
      ↓
Review

Then add timed mocks, progress history, explanations, topic practice and recommendations after the basic experience works.

SdashAPI currently provides free account creation and development access, so you can test requests before moving to a larger production setup. SdashAPI

Use the SdashAPI Documentation for the current API structure and SdashAPI Coverage before deciding exactly which Sierra Leone subjects and years your product will advertise.

A WAEC API Sierra Leone is most valuable when students never have to think about the API at all. They choose their WASSCE subject, practise, get marked, understand their mistakes and continue learning. The API should quietly handle the examination-data problem underneath that experience.

Avatar

How can we help?

We reply immediately

Hello! 👋 How can we help you today?