Chulalongkorn University Curriculum API

Degree programs and fields of study

Operations 1

GET /course-studies List degree programs and fields of study #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/chulalongkorn-curriculum-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

chulalongkorn-curriculum-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: CU-REG Course Schedule Curriculum API
  version: 2026.8.21-1644-1a51328
  description: The read-only JSON API behind CU-REG Course Schedule, the public course, curriculum and class-timetable browser operated by the Office of the Registrar, Chulalongkorn University, at https://cas.reg.chula.ac.th/class/course-schedule.
  contact:
    name: Office of the Registrar, Chulalongkorn University
    url: https://www.reg.chula.ac.th/
  x-provenance:
    generated: '2026-09-01'
    method: probed
    source: https://cas.reg.chula.ac.th/class/api/
    authored_by: API Evangelist
    note: Endpoint names read from the application bundle at https://cas.reg.chula.ac.th/class/main-STPCQOCS.js (HTTP 200), then each one fetched. Schemas below are inferred from the 50-record response body actually returned by GET /class/api/course-studies (HTTP 200, 43,377 bytes), archived at examples/chulalongkorn-course-studies-example.json.
servers:
- url: https://cas.reg.chula.ac.th/class/api
  description: Production CU-REG Course Schedule backend
tags:
- name: Curriculum
  description: Degree programs and fields of study
paths:
  /course-studies:
    get:
      tags:
      - Curriculum
      operationId: listCourseStudies
      summary: List degree programs and fields of study
      description: 'Returns the registrar''s curriculum register: each degree program with its degree and major names in Thai and English, credit total, nominal and maximum years of study, and the academic-year/semester window in which the program is offered. Verified live and unauthenticated; the response observed on 2026-09-01 carried 50 records with no pagination envelope.'
      parameters:
      - name: lang
        in: query
        required: false
        schema:
          type: string
          enum:
          - en
          - th
        description: Language hint sent by the client. Accepted; the observed response returns both the Thai and the English name fields regardless of its value.
      responses:
        '200':
          description: Curriculum register.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/CourseStudy'
                required:
                - data
        '404':
          description: Returned by this service for an unmatched route, as an Express HTML error page rather than JSON. The client treats a 404 as an empty result set.
          content:
            text/html:
              schema:
                type: string
components:
  schemas:
    CourseStudy:
      type: object
      description: One degree program / field of study in the registrar's curriculum register.
      properties:
        id:
          type: string
          description: Program identifier.
        programsystem:
          type: string
        studyprogramsystem:
          type: string
          description: Study program system code
          e.g. S.: null
        calendar:
          type: string
          description: Academic calendar code.
        coursecodeno:
          type: string
        degree:
          type: string
          description: Degree code.
        majorcode:
          type: string
          description: Major code.
        noyearstudy:
          type: string
          description: Nominal years of study.
        minperiodstudy:
          type: integer
        maxperiodstudy:
          type: integer
        credittotal:
          type: integer
          description: Total credits required.
        plan1:
          type:
          - string
          - 'null'
          description: Plan designation
          in Thai.: null
        language1:
          type:
          - string
          - 'null'
        beginyear:
          type: string
          description: First academic year offered (Buddhist or Gregorian as stored).
        beginsemester:
          type: string
        lastyear:
          type: string
        lastsemester:
          type: string
        stopyear:
          type: string
          description: Last academic year offered; 9999 where open-ended.
        stopsemester:
          type: string
        international:
          type:
          - object
          - 'null'
          description: International-program flag. Serialized by the backend as a raw Node.js Buffer rather than a boolean — {"type":"Buffer","data":[48]} for "0". Recorded as observed; this is a leak of the storage layer into the contract, not a designed representation.
          properties:
            type:
              type: string
              example: Buffer
            data:
              type: array
              items:
                type: integer
        status:
          type:
          - string
          - 'null'
        conferanceno:
          type:
          - string
          - 'null'
        conferancedate:
          type:
          - string
          - 'null'
        effectivedate:
          type:
          - string
          - 'null'
        expiredate:
          type:
          - string
          - 'null'
        user_id:
          type:
          - string
          - 'null'
        updatedate:
          type:
          - string
          - 'null'
        created_date:
          type:
          - string
          - 'null'
        changestamp:
          type:
          - string
          - 'null'
        currid:
          type:
          - string
          - 'null'
        degree_thai:
          type: string
        degree_english:
          type: string
        major_thai:
          type: string
        major_english:
          type: string
      required:
      - id
      - degree_thai
      - degree_english
      - major_thai
      - major_english
x-client-declared-endpoints:
  note: Declared by the Angular client against the same base URL and observed returning HTTP 404 to an unauthenticated external request on 2026-09-01. Listed so the gap is recorded, not so it can be mistaken for a documented contract.
  probed: '2026-09-01'
  endpoints:
  - path: /course
    status: 404
  - path: /course-detail
    status: 404
  - path: /course-header
    status: 404
  - path: /course-group
    status: 404
  - path: /course-group-detail
    status: 404
  - path: /course-description
    status: 404
  - path: /class-day
    status: 404
  - path: /class-time
    status: 404
  - path: /exam-date
    status: 404
  - path: /faculty
    status: 404
  - path: /general-education
    status: 404
  - path: /instructor
    status: 404
  - path: /year-semester
    status: 404