API Details

The API enables access to the most recent Class Roster data.

Common Questions

Is the old Course and Time Roster XML still available?
Yes. The Course and Time Roster XML is available and refreshed through Fall 2015.

Are descriptions available for any course?
No. Course descriptions and additional Courses of Study information are only being made available for classes visible on the roster.

How can I link to the current search or a subject page?
Class Roster provides fixed inbound URLs for this purpose. To link to the current roster for your subject code, use /browse/inbound/subject/<subjectCode> . To target a search form to the current roster, use /search/inbound/?q=<searchTerm>

What is the source of the response from the search/classes method?
For all rosters prior to Fall 2025: at the root level of a class element, all properties prefixed with "catalog" are sourced from the legacy Courses of Study repository. The course description element is special and is named "description".
For Fall 2025 and later rosters: all elements are refreshed from the new catalog source. Elements prefixed with "catalog", which previously came from the legacy repository, will still be present, even if empty, for compatibility purposes. Note that the deprecated elements may eventually be removed from output.
All search/classes results contain a top-level meta object. Results for pre-Fall 2025 rosters contain a catalogDttm element indicating the last refresh date of the Courses of Study data; that element is not relevant to, and intentionally absent from, all later rosters.

What is the enrollGroup element?
The <enrollGroup> element in the search/classes method response is a Class Roster construct to simplify the complex nature of enrollment options. An enrollGroup matches to an "Enrollment Information" box on the web. To maintain data integrity, each class section can have 1 or more meeting pattern. Each meeting pattern can have 1 or more instructor. Select class sections may be repeated across in several enrollGroup elements if permitted.

Are there API usage limits?
API usage should be limited to no more than 1 request per second.

Is "Schedule Print" respected for the API?
Yes. Schedule print is respected on the API just as on the browsable web version.

Methods

The current API version is 2.0. All methods are GET only with XML and JSON response formats available. The URL for each method is constructed as https://<HOST>/api/<VERSION>/<method>.<responseFormat>?parameters

config/rosters - Available rosters.
No parameters

config/acadCareers - Available academic careers for a roster.
Requires roster=<slug>

config/acadGroups - Available academic groups for a roster.
Requires roster=<slug>

config/classLevels - Available class levels for a roster.
Requires roster=<slug>

config/subjects - Available subjects for roster.
Requires roster=<slug>

search/classes - Scheduled classes, including Course of Study details.
Requires roster=<slug> and subject=<subject>
Optionally acadGroup[]=<academic-group>, acadCareer[]=<academic-career>, classLevels[]=<class-levels>, explStudies[]=<exploratory-studies-codes>, distrReqs[]=<distribution-requirements-codes>, instructMode[]=<instruction-mode>, q=<searchTerm>
Specify multiple explStudies and distrReqs values by repeating the term. Within each category, only one code in the list needs to be matched in order to return the class, though you may require that all be matched by specifying explStudies-type=all or distrReqs-type=all.

Examples

  1. All available rosters (method config/rosters)
    1. Responses: XML or JSON
  2. All subjects in Fall 2025 (method config/subjects)
    1. roster=FA25
    2. Responses: XML or JSON
  3. All academic groups in Fall 2025 (method config/acadGroups)
    1. roster=FA25
    2. Responses: XML or JSON
  4. All mathematics (MATH) classes in Fall 2025 (method search/classes)
    1. roster=FA25
    2. subject=MATH
    3. Responses: XML or JSON
  5. All graduate, 6000 level philosophy (PHIL) classes in Fall 2025 (method search/classes)
    1. roster=FA25
    2. subject=PHIL
    3. acadCareer[]=GR
    4. classLevels[]=6000
    5. Responses: XML or JSON
  6. All AEM classes in Fall 2025 with the exploratory studies code "CU-CUL" (method search/classes)
    1. roster=FA25
    2. subject=AEM
    3. explStudies[]=CU-CUL
    4. Responses: XML or JSON
  7. All undergraduate PHIL classes in Fall 2025 with all distribution requirements codes specified (method search/classes)
    1. roster=FA25
    2. subject=AEM
    3. acadCareer[]=UG
    4. distrReqs[]=HST-AS
    5. distrReqs[]=HA-AG
    6. distrReqs-type=all
    7. Responses: XML or JSON