Documentation

Everything you need to integrate

Introduction

The JAMB API API gives you programmatic access to a bank of JAMB CBT past questions in clean JSON. Every request is authenticated with an API key generated from your dashboard, and billed against your wallet balance.

Base URL:

https://allcbtapi.com/api/v1

Authentication

Pass your API key in the X-API-Key request header on every call. You can also pass it as a query parameter named api_key if headers aren't convenient in your environment.

curl "https://allcbtapi.com/api/v1/questions" \
  -H "X-API-Key: jamb_your_key_here"

Generate and revoke keys any time from Dashboard → API Keys.

Endpoints

MethodEndpointDescription
GET/questionsRetrieve questions, filterable by subject, year, category and limit
GET/subjectsList all available subjects
GET/yearsList all available exam years

Parameters — GET /questions

ParameterTypeDescription
subjectstringSubject slug, e.g. physics. See /subjects for the full list.
yearintegerExam year, e.g. 2023
categorystringQuestion category slug (optional)
limitintegerNumber of questions to return (default 10, max 50)
randombooleantrue to shuffle results

Response format

{
  "status": "success",
  "count": 1,
  "data": [
    {
      "id": 101,
      "subject": "Physics",
      "year": 2023,
      "question": "A body of mass 2kg accelerates at 4m/s\u00b2. Find the force.",
      "options": { "A": "4N", "B": "8N", "C": "16N", "D": "2N" },
      "correct_answer": "B",
      "explanation": "Using F = ma, F = 2 x 4 = 8N."
    }
  ]
}

Error codes

CodeMeaning
401Missing or invalid API key
403API key revoked or account suspended
402Insufficient wallet balance
422Invalid or missing parameters
429Too many requests — rate limit exceeded
500Server error — please retry
{
  "status": "error",
  "message": "Insufficient wallet balance. Please top up your account."
}

Usage & limits

Each successful request deducts your plan's per-request rate from your wallet balance and is logged to your Usage dashboard in real time. Free-tier keys are limited to 60 requests per minute; paid plans get higher throughput.