API Details

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

Common Questions

Is the old Course and Time Roster XML going away when the Class Roster launches?
No. The Course and Time Roster XML will continue to be available and refreshed thru 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>

Where does the search/classes response data come from?
At the root level of a <class>, all elements prefixed with catalog are sourced from the Courses of Study. The course description element is special and is named <description>. All other child elements are refreshed from PeopleSoft data.

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.


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>, crseAttrs[]=<course-attribute>, instructMode[]=<instruction-mode>, q=<searchTerm>


  1. All available rosters, use method config/rosters
    1. Responses: XML or JSON
  2. All subjects in Fall 2014, use method config/subjects
    1. roster=FA14
    2. Responses: XML or JSON
  3. All academic groups in Fall 2014, use method config/acadGroups
    1. roster=FA14
    2. Responses: XML or JSON
  4. All Math classes in Fall 2014, use method search/classes
    1. roster=FA14
    2. subject=MATH
    3. Responses: XML or JSON
  5. All graduate, 6000 level Philosophy classes in Fall 2014, use method search/classes
    1. roster=FA14
    2. subject=PHIL
    3. acadCareer[]=GR
    4. classLevels[]=6000
    5. Responses: XML or JSON
  6. All AEM classes in Spring 2018 with a Sustainability Course Attribute "CU-SBY"
    1. roster=SP18
    2. subject=AEM
    3. crseAttrs[]=CU-SBY
    4. Responses: XML or JSON