Developers / REST / v1

Directory API

Read-only JSON over HTTPS. No key, no sign-up, CORS enabled, so you can call it from a browser, a bot or a script.

GET

Overview

Base URL
https://cuet.sayed.app/api/v1
Format
JSON, UTF-8
Auth
None
CORS
Access-Control-Allow-Origin: *
Rate limit
60 requests / minute / IP
Caching
Responses are cached up to 24 h

GET/api/v1/students/{id}

One student by their 7-digit ID.

id*pathStudent ID, e.g. 2504001
Example/api/v1/students/2504001→ { data: Student }

GET/api/v1/batches

Every batch with its session and per-department student counts.

Example/api/v1/batches→ { data: Batch[], meta: { students, batches } }

GET/api/v1/batches/{batch}/{dept}

Full class list for one department in one batch, ordered by ID.

batch*pathTwo-digit batch, e.g. 25
dept*pathDepartment slug, e.g. cse
Example/api/v1/batches/25/cse→ { data: Student[], meta: { batch, session, department, count } }

GET/api/v1/departments

Departments with codes, slugs and the batches they have.

Example/api/v1/departments→ { data: Department[] }

Student object

idstring 7-digit student ID
namestring Name as published
departmentobject { code, slug, short, name }, from the ID; code 12 is MSE up to batch 22
batchstring Two-digit batch, e.g. "25"
sessionstring Academic session, e.g. "2025-26"
class_rollnumber Last three digits of the ID
admission_rollstring | null Admission test roll
admission_meritstring | null Merit position as published; may contain quota notes like "T-5"
urlstring Profile page on this site
{
  "data": {
    "id": "2504001",
    "name": "TASNIM FARIHA",
    "department": {
      "code": "04",
      "slug": "cse",
      "short": "CSE",
      "name": "Computer Science & Engineering"
    },
    "batch": "25",
    "session": "2025-26",
    "class_roll": 1,
    "admission_roll": "24367",
    "admission_merit": "119",
    "url": "https://cuet.sayed.app/2504001"
  }
}

Errors

Errors use HTTP status codes and a body like {"error":{"code":"not_found","message":"…"}}.

400invalid_id · invalid_query · invalid_batch · invalid_deptA parameter is missing or malformed
404not_foundNo such student, class or endpoint
429rate_limitedOver 60 requests per minute from one IP

Usage terms

Personal and non-commercial use is free, no acknowledgment needed.

Commercial use or integrating the data into another system requires acknowledgment, e.g. a visible credit with a link to cuet.sayed.app. See the terms.

Please cache responses rather than re-fetching the same data. For a full export, emailhello@sayed.page from an@cuet.ac.bd or @student.cuet.ac.bd address instead of crawling the API.

The data is compiled from public sources and may contain mistakes; it is not an official CUET record.