Studentsdash
Developers

Studentsdash API v1

Use our REST API to fetch study materials, quizzes, and categories in your website, React Native app, or any HTTP client.

Need an API key?
To request an API key for your app or integration, contact Studentsdash support at info@studentsdash.com.ng.
Base URL: https://studentsdash.com.ng/api/v1
Format: JSON (except file downloads)
Auth required: All endpoints require a valid API key

Authentication

Send your API key with every request using one of these methods:

Authorization header (recommended)

Authorization: Bearer sd_your_api_key_here

X-API-Key header

X-API-Key: sd_your_api_key_here

JavaScript fetch example

const API_KEY = 'sd_your_key'; const res = await fetch('https://studentsdash.com.ng/api/v1/materials?page=1', { headers: { 'Authorization': `Bearer ${API_KEY}` } }); const json = await res.json();

React Native example

const response = await fetch('https://studentsdash.com.ng/api/v1/quizzes', { headers: { 'Authorization': 'Bearer ' + API_KEY, 'Accept': 'application/json', }, }); const { data } = await response.json();

Materials

GET /materials

List published materials with pagination and filters.

ParamDescription
pagePage number (default 1)
per_pageItems per page, max 50 (default 12)
categoryFilter by category slug
uni / university_idFilter by University ID (includes general-university materials)
fac / faculty_idFilter by Faculty ID (includes general-faculty materials)
dept / department_idFilter by Department ID (includes general-department materials)
levelFilter by Level name (e.g. 100) or ID
semesterFilter by Semester name or ID
typefree or paid
sortnewest, oldest, downloads, az, za
featured1 for featured only
include_images1 to include inline content photos (content_images) and post gallery (gallery_urls)
include_gallery1 to include post gallery only (without inline content photos)
GET /materials/{slug}

Get full details for one material. Pass access_code query param to check paid download access.

ParamDescription
access_codeOptional purchase code for paid materials
include_images1 — keep photos in description HTML and return content_images + gallery_urls
include_gallery1 — return gallery_urls only (post gallery, not inline content photos)

By default, inline photos inside the description are stripped from the HTML. Thumbnail/cover image is always available as thumbnail_url.

// Full material with all photos GET https://studentsdash.com.ng/api/v1/materials/past-questions?include_images=1 // Response includes: { "description": "<p>...<img src=\"https://.../uploads/materials/photo.jpg\">...</p>", "content_images": [ { "url": "https://.../uploads/materials/photo.jpg", "alt": "Diagram" } ], "gallery_urls": [ "https://.../uploads/materials/gallery-1.jpg" ], "thumbnail_url": "https://.../uploads/materials/cover.jpg" }
GET /materials/{slug}/download

Download the material file. Free materials work with API key only. Paid materials require ?access_code=XXXX or X-Access-Code header.

// Free material fetch('https://studentsdash.com.ng/api/v1/materials/past-questions/download', { headers: { 'Authorization': 'Bearer ' + API_KEY } }); // Paid material fetch('https://studentsdash.com.ng/api/v1/materials/paid-pack/download?access_code=ABCD-1234', { headers: { 'Authorization': 'Bearer ' + API_KEY } });

PDFs

GET /pdfs

List all published PDFs, documents (.doc, .docx), spreadsheets (.xls, .xlsx, .csv), presentation slides (.ppt, .pptx), XML, and text files with pagination, search, sorting, and academic hierarchy filters.

ParamDescription
pagePage number (default 1)
per_pageItems per page, max 50 (default 12)
qFilter by search term (searches title, description, and tags)
uni / university_idFilter by University ID (includes general-university documents)
fac / faculty_idFilter by Faculty ID (includes general-faculty documents)
dept / department_idFilter by Department ID (includes general-department documents)
levelFilter by Level name or ID
semesterFilter by Semester name or ID
sortnewest, oldest, downloads, az, za (default: newest)

Example Response

{ "success": true, "data": [ { "id": 42, "title": "MTH 101 General Mathematics Lecture Notes", "slug": "mth-101-lecture-notes", "description": "Comprehensive guide to differential calculus and algebra for science students.", "is_free": true, "price": 0.0, "currency": "NGN", "currency_symbol": "₦", "file_type": "pdf", "file_size": "2.4 MB", "is_featured": true, "author": "Dr. Abel", "tags": ["math", "calculus", "notes"], "view_count": 125, "download_count": 89, "thumbnail_url": "https://studentsdash.com.ng/uploads/materials/cover.jpg", "web_url": "https://studentsdash.com.ng/material/mth-101-lecture-notes", "api_url": "https://studentsdash.com.ng/api/v1/pdfs/mth-101-lecture-notes", "download_api_url": "https://studentsdash.com.ng/api/v1/pdfs/mth-101-lecture-notes/download", "requires_access_code": false, "has_file": true, "is_general_university": false, "is_general_faculty": true, "is_general_department": false, "uni_abbrs": "UNIZIK, UNILAG", "fac_names": "Physical Sciences", "dept_names": "Computer Science, Mathematics", "fac_abbrs": "PHY", "dept_abbrs": "CSC, MAT", "universities": null, "faculties": null, "departments": null } ], "meta": { "page": 1, "per_page": 12, "total": 1, "total_pages": 1 } }
GET /pdfs/{slug}

Get full details for one PDF file. Response includes targeting attributes like is_general_university, is_general_faculty, is_general_department, and aggregated lists of universities, faculties, and departments.

Example Response

{ "success": true, "data": { "id": 42, "title": "MTH 101 General Mathematics Lecture Notes", "slug": "mth-101-lecture-notes", "description": "Comprehensive guide to differential calculus and algebra for science students.", "is_free": true, "price": 0.0, "currency": "NGN", "currency_symbol": "₦", "file_type": "pdf", "file_size": "2.4 MB", "is_featured": true, "author": "Dr. Abel", "tags": ["math", "calculus", "notes"], "view_count": 125, "download_count": 89, "thumbnail_url": "https://studentsdash.com.ng/uploads/materials/cover.jpg", "web_url": "https://studentsdash.com.ng/material/mth-101-lecture-notes", "api_url": "https://studentsdash.com.ng/api/v1/pdfs/mth-101-lecture-notes", "download_api_url": "https://studentsdash.com.ng/api/v1/pdfs/mth-101-lecture-notes/download", "requires_access_code": false, "has_file": true, "is_general_university": false, "is_general_faculty": true, "is_general_department": false, "uni_abbrs": "UNIZIK, UNILAG", "fac_names": "Physical Sciences", "dept_names": "Computer Science, Mathematics", "fac_abbrs": "PHY", "dept_abbrs": "CSC, MAT", "universities": [ { "id": 1, "name": "Nnamdi Azikiwe University", "abbreviation": "UNIZIK", "slug": "unizik" } ], "faculties": [ { "id": 3, "name": "Physical Sciences", "abbreviation": "PHY", "slug": "physical-sciences" } ], "departments": [ { "id": 8, "name": "Computer Science", "abbreviation": "CSC", "slug": "computer-science" }, { "id": 9, "name": "Mathematics", "abbreviation": "MAT", "slug": "mathematics" } ], "can_download": true } }
GET /pdfs/{slug}/download

Download the PDF file. Paid files require access_code query parameter or header.

// Download a free PDF file via fetch fetch('https://studentsdash.com.ng/api/v1/pdfs/mth-101-lecture-notes/download', { headers: { 'Authorization': 'Bearer ' + API_KEY } }) .then(res => res.blob()) .then(blob => { // Use blob to download or open the file });

Universities & Levels

GET /universities

List all universities with their IDs, names, abbreviations, slugs, and API URLs for faculties/departments.

GET /universities/{id}/faculties

List all faculties belonging to a specific university ID.

GET /universities/{id}/departments

List all departments belonging to all faculties of a specific university ID.

GET /faculties/{id}/departments

List all departments belonging to a specific faculty ID.

GET /departments/{id}/levels

List all levels belonging to a specific department ID.

Categories

GET /categories

List all active categories with material counts.

GET /categories/{slug}

Get category details and its materials. Supports page and per_page.

Quizzes

GET /quizzes

List all published quizzes.

GET /quizzes/{slug}

Get quiz details (no answers).

GET /quizzes/{slug}/questions

Get randomized questions for taking a quiz. Correct answers are not included.

POST /quizzes/{slug}/submit

Submit quiz answers and receive score + corrections.

POST https://studentsdash.com.ng/api/v1/quizzes/jamb-math/submit Content-Type: application/json Authorization: Bearer sd_... { "user_name": "John", "user_phone": "08012345678", "answers": [ { "id": 12, "answer": 2 }, { "id": 15, "answer": 0 } ] }

Access codes (paid materials)

POST /access/verify-code

Verify a purchase access code before downloading a paid material.

{ "code": "ABCD-1234-5678", "slug": "material-slug" }

Returns download_api_url with the access code included.

Search

GET /search?q=math

Search materials and quizzes by keyword.

Response format

Successful responses:

{ "success": true, "data": [ ... ], "meta": { "page": 1, "per_page": 12, "total": 48, "total_pages": 4 } }

Error responses:

{ "success": false, "error": "Invalid API key." }

HTTP status codes

CodeMeaning
200Success
401Missing or invalid API key
403Access code required for paid download
404Resource not found
405Method not allowed
503API temporarily disabled
To request an API key for your app or integration, contact Studentsdash support at info@studentsdash.com.ng.