University of Toronto Reference Data API

Sessions, divisions, campuses and other search facets.

Operations 3

GET /reference-data Retrieve every search facet the Timetable Builder UI offers #
GET /current-session List the sessions currently open in the timetable #
GET /getMatchingDivisions Type-ahead lookup of academic divisions #

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/university-of-toronto-reference-data-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

university-of-toronto-reference-data-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: University of Toronto Timetable Builder Reference Data API
  version: '2026-08-19'
  x-operator: institution
  x-provenance:
    generated: '2026-08-19'
    method: derived
    source: Derived by API Evangelist from live, unauthenticated probes of https://api.easi.utoronto.ca/ttb on 2026-08-19 and from the operation constants declared in the official Timetable Builder client bundle at https://ttb.utoronto.ca/main.934e36b03104594f.js. The University of Toronto does not publish an OpenAPI description for this API; this document is a third-party observation, not a University of Toronto artifact.
  description: 'Unofficial, observation-derived description of the public JSON API behind the University of Toronto Timetable Builder (https://ttb.utoronto.ca), operated by Enterprise Applications and Solutions Integration (EASI) within U of T Information Technology Services. The host api.easi.utoronto.ca is under the University''s own registrable domain (utoronto.ca), which makes this one of the few genuinely institution-operated programmable surfaces at U of T.

    The API serves course, section, meeting-time, instructor, enrolment-control and building data for the University''s academic timetable across all three campuses (St. George, Mississauga, Scarborough) and all divisions. No API key, token or other credential is required. The service sets Access-Control-Allow-Origin: https://ttb.utoronto.ca, so browser callers from other origins are blocked while server-to-server callers are not.

    NOT AN OFFICIAL CONTRACT. The University publishes no developer portal, no terms of use for this API, no rate-limit statement and no versioning policy. Treat every shape here as observed behaviour that the University may change without notice.'
  contact:
    name: University of Toronto — Enterprise Applications and Solutions Integration (EASI)
    url: https://easi.its.utoronto.ca/
  termsOfService: https://www.utoronto.ca/privacy
servers:
- url: https://api.easi.utoronto.ca/ttb
  description: Production Timetable Builder API (probed live 2026-08-19)
tags:
- name: Reference Data
  description: Sessions, divisions, campuses and other search facets.
paths:
  /reference-data:
    get:
      tags:
      - Reference Data
      operationId: getReferenceData
      summary: Retrieve every search facet the Timetable Builder UI offers
      description: 'Returns the current sessions, divisions, campuses, degree requirements, course levels, delivery modes, day and time preferences, credit weights and sort directions. Verified live 2026-08-19: HTTP 200, application/json, ~11.7 KB.'
      responses:
        '200':
          description: Reference data envelope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReferenceDataEnvelope'
              examples:
                live:
                  summary: Live capture, lists trimmed
                  externalValue: ../examples/ttb-reference-data-response.json
        '404':
          $ref: '#/components/responses/GatewayNotFound'
  /current-session:
    get:
      tags:
      - Reference Data
      operationId: getCurrentSession
      summary: List the sessions currently open in the timetable
      description: 'Returns the session options (for example "Summer 2026", value 20265) that a course search may be scoped to. Verified live 2026-08-19: HTTP 200, application/json.'
      responses:
        '200':
          description: Session option list.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OptionListEnvelope'
              examples:
                live:
                  externalValue: ../examples/ttb-current-session-response.json
        '404':
          $ref: '#/components/responses/GatewayNotFound'
  /getMatchingDivisions:
    get:
      tags:
      - Reference Data
      operationId: getMatchingDivisions
      summary: Type-ahead lookup of academic divisions
      description: Returns divisions whose name matches the supplied query, as option objects carrying the division code in `value` (for example APSC for the Faculty of Applied Science & Engineering). Verified live 2026-08-19 with query=arts.
      parameters:
      - name: query
        in: query
        required: true
        description: Free-text fragment matched against division names.
        schema:
          type: string
        example: arts
      responses:
        '200':
          description: Matching divisions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OptionListEnvelope'
              examples:
                live:
                  externalValue: ../examples/ttb-matching-divisions-response.json
        '404':
          $ref: '#/components/responses/GatewayNotFound'
components:
  schemas:
    GatewayError:
      type: object
      description: Edge-level error emitted by the api.easi.utoronto.ca gateway before the TTB service is reached.
      properties:
        statusCode:
          type: integer
          example: 404
        message:
          type: string
          example: Resource not found
    OptionListEnvelope:
      type: object
      properties:
        payload:
          type: array
          items:
            $ref: '#/components/schemas/Option'
        status:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationStatus'
    Option:
      type: object
      description: A selectable facet value used by the Timetable Builder UI.
      properties:
        label:
          type: string
          example: Summer 2026
        value:
          type: string
          example: '20265'
        selected:
          type: boolean
        header:
          type: boolean
          description: True when the option is a non-selectable group heading.
        group:
          type:
          - string
          - 'null'
          example: Summer-20265
        metadata:
          type: object
          properties:
            name:
              type:
              - string
              - 'null'
            type:
              type:
              - string
              - 'null'
    ApplicationStatus:
      type: object
      description: Business-level status returned inside the response body. Observed value 4404 = no results. The University publishes no catalogue of these codes; see errors/ for what has been observed.
      properties:
        code:
          type: integer
          example: 4404
        message:
          type: string
          example: No results found. Please try modifying your search criteria.
    ReferenceDataEnvelope:
      type: object
      properties:
        payload:
          type: object
          properties:
            currentSessions:
              type: array
              items:
                $ref: '#/components/schemas/Option'
            divisions:
              type: array
              items:
                $ref: '#/components/schemas/Option'
            campuses:
              type: array
              items:
                $ref: '#/components/schemas/Option'
            requirements:
              type: array
              items:
                $ref: '#/components/schemas/Option'
            courseLevels:
              type: array
              items:
                $ref: '#/components/schemas/Option'
            temporaryDeliveryModes:
              type: array
              items:
                $ref: '#/components/schemas/Option'
            deliveryModes:
              type: array
              items:
                $ref: '#/components/schemas/Option'
            dayPreferences:
              type: array
              items:
                $ref: '#/components/schemas/Option'
            timePreferences:
              type: array
              items:
                $ref: '#/components/schemas/Option'
            creditWeights:
              type: array
              items:
                $ref: '#/components/schemas/Option'
            directions:
              type: object
              additionalProperties:
                type: string
        status:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationStatus'
  responses:
    GatewayNotFound:
      description: The gateway did not match a route.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GatewayError'
          examples:
            live:
              externalValue: ../examples/ttb-gateway-404-response.json