IIT Delhi Departmental Site Platform API

Undocumented JSON API behind the shared React/Express site platform IIT Delhi runs across departmental and unit subdomains. Anonymous reads were confirmed on 2026-08-30 across three deployments — convocation.iitd.ac.in serves /api/news and /api/contact, ird.iitd.ac.in serves /api/contact, /api/circulars and /api/announcements, and csc.iitd.ac.in serves /api/contact and /api/pages. Media collections and writes are gated behind the institute's own OAuth 2 server, which the API names in its own 401 body. IIT Delhi publishes no documentation, version marker, changelog or contract for this surface; the OpenAPI in this repo was reverse-described entirely from live probes and is marked as such.

Operations 6

GET /contact List departmental contact directory entries #
GET /news List announcements and news items #
GET /announcements List unit announcements #
GET /circulars List administrative circulars #
GET /pages List CMS page bodies #
GET /gallery List image gallery entries #

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/site-platform"
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

iit-delhi-site-platform-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: IIT Delhi Departmental Site Platform API
  version: '2026-08-30'
  summary: >-
    Undocumented but publicly readable JSON API backing the shared React/Express
    site platform IIT Delhi runs across its departmental and unit subdomains.
  description: |
    Indian Institute of Technology Delhi operates a shared web platform used by several
    of its departments and administrative units — the Convocation office
    (`convocation.iitd.ac.in`), the Industrial Research & Development Unit
    (`ird.iitd.ac.in`) and the Computer Services Centre (`csc.iitd.ac.in`) all serve a
    create-react-app front end backed by an Express JSON API mounted at `/api`.

    IIT Delhi publishes NO documentation, no version marker, no OpenAPI and no changelog
    for this surface. It is not advertised as a product; it is the private backend of
    public web sites, and its read endpoints happen to answer anonymous requests with
    `application/json`. This document was reconstructed ENTIRELY from live probes on
    2026-08-30 — every path, status code and schema below was observed, none was assumed.
    Endpoints not listed here either 404 on all three deployments or were not probed.

    Write operations and some media collections are gated behind the institute's own
    OAuth 2 server at `https://oauth.iitd.ac.in/`; the API says so itself in its 401 body
    (`"Authentication required. Please login via IITD OAuth."`). No scope vocabulary,
    token endpoint or client-registration document is published, so the authenticated
    half of this API is unreadable from outside.

    x-operator: institution — every host is under IIT Delhi's own registrable domain
    `iitd.ac.in`, the content is the institute's own, and no vendor identity appears in
    any response.
  contact:
    name: Computer Services Centre, IIT Delhi
    url: https://csc.iitd.ac.in/
  x-operator: institution
  x-provenance:
    generated: '2026-08-30'
    method: derived
    x-derivation: probed
    source:
      - https://convocation.iitd.ac.in/api/news
      - https://convocation.iitd.ac.in/api/contact
      - https://convocation.iitd.ac.in/api/gallery
      - https://ird.iitd.ac.in/api/contact
      - https://ird.iitd.ac.in/api/circulars
      - https://ird.iitd.ac.in/api/announcements
      - https://ird.iitd.ac.in/api/pages
      - https://csc.iitd.ac.in/api/contact
      - https://csc.iitd.ac.in/api/pages
    note: >-
      Reverse-described from observed anonymous responses. IIT Delhi did not publish this
      document and does not describe this API anywhere. Not a provider-authored contract.
servers:
  - url: https://convocation.iitd.ac.in/api
    description: Convocation office deployment (verified 2026-08-30)
  - url: https://ird.iitd.ac.in/api
    description: Industrial Research & Development Unit deployment (verified 2026-08-30)
  - url: https://csc.iitd.ac.in/api
    description: Computer Services Centre deployment (verified 2026-08-30)
tags:
  - name: Contact
    description: Departmental office contact directory entries.
  - name: News
    description: Announcements and news items published by the unit.
  - name: Circulars
    description: Numbered administrative circulars with attached documents.
  - name: Pages
    description: CMS page bodies rendered by the front end.
  - name: Media
    description: Image galleries. Gated behind IITD OAuth.
paths:
  /contact:
    get:
      operationId: listContacts
      tags: [Contact]
      summary: List departmental contact directory entries
      description: >-
        Verified 200 on all three deployments. Returns a flat array; an empty unit
        returns `[]` rather than 404.
      responses:
        '200':
          description: Array of contact entries
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Contact'
              examples:
                ird:
                  summary: Observed on ird.iitd.ac.in 2026-08-30
                  value:
                    - id: 1
                      title: Industrial Research & Development Unit
                      phone: (91) 011-2659 7194
                      email: arird@admin.iitd.ac.in
                      location: null
                      created_at: '2024-08-14T00:00:00.000Z'
                      updated_at: null
  /news:
    get:
      operationId: listNews
      tags: [News]
      summary: List announcements and news items
      description: >-
        Verified 200 on convocation.iitd.ac.in. 404 on the ird and csc deployments — the
        platform mounts routes per unit, so a path present on one host may be absent on
        another.
      responses:
        '200':
          description: Array of news / announcement records
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NewsItem'
        '404':
          description: Route not mounted on this deployment
  /announcements:
    get:
      operationId: listAnnouncements
      tags: [News]
      summary: List unit announcements
      description: Verified 200 on ird.iitd.ac.in, returning an empty array at probe time.
      responses:
        '200':
          description: Array of announcement records (may be empty)
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
              examples:
                empty:
                  summary: Observed on ird.iitd.ac.in 2026-08-30
                  value: []
        '404':
          description: Route not mounted on this deployment
  /circulars:
    get:
      operationId: listCirculars
      tags: [Circulars]
      summary: List administrative circulars
      description: >-
        Verified 200 on ird.iitd.ac.in, 49 records at probe time. Note the capitalised
        `Circular` and `Description` property names — the platform serialises database
        columns verbatim and its casing is not consistent across resources.
      responses:
        '200':
          description: Array of circular records
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Circular'
        '404':
          description: Route not mounted on this deployment
  /pages:
    get:
      operationId: listPages
      tags: [Pages]
      summary: List CMS page bodies
      description: >-
        Verified 200 on csc.iitd.ac.in. On ird.iitd.ac.in the same path returns HTTP 500
        with `{"error":"Failed to fetch cards"}` — an unhandled server fault surfaced to
        anonymous callers, observed 2026-08-30.
      responses:
        '200':
          description: Array of page records carrying HTML bodies
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Page'
        '500':
          description: Unhandled server fault
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerError'
  /gallery:
    get:
      operationId: listGallery
      tags: [Media]
      summary: List image gallery entries
      description: >-
        Verified 401 for anonymous callers on convocation.iitd.ac.in. The error body names
        IITD OAuth as the required authentication route and leaks session diagnostics.
      security:
        - iitdOAuthSession: []
      responses:
        '200':
          description: Array of gallery entries (not observable anonymously)
        '401':
          description: Authentication required via IITD OAuth
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthError'
components:
  securitySchemes:
    iitdOAuthSession:
      type: apiKey
      in: cookie
      name: connect.sid
      description: >-
        Session cookie issued after an interactive login against the institute OAuth 2
        server at https://oauth.iitd.ac.in/. That server publishes no OpenID Connect
        discovery document, no authorization or token endpoint documentation and no scope
        vocabulary — verified 404 on /.well-known/openid-configuration and
        /.well-known/oauth-authorization-server on 2026-08-30 — so the flow cannot be
        described further from public evidence.
  schemas:
    Contact:
      type: object
      title: Contact
      properties:
        id: { type: integer }
        title: { type: string, description: Office or role name }
        phone: { type: [string, 'null'] }
        email: { type: [string, 'null'], format: email }
        location: { type: [string, 'null'] }
        created_at: { type: [string, 'null'], format: date-time }
        updated_at: { type: [string, 'null'], format: date-time }
      required: [id, title]
    NewsItem:
      type: object
      title: NewsItem
      properties:
        announcement_id: { type: integer }
        convocation_id: { type: [integer, 'null'] }
        announcement_text: { type: string }
        announcement_date: { type: [string, 'null'], format: date-time }
        image_path: { type: [string, 'null'], description: Relative path under uploadsNews/ }
        link: { type: [string, 'null'] }
        pdf_path: { type: [string, 'null'] }
        created_at: { type: [string, 'null'], format: date-time }
        updated_at: { type: [string, 'null'], format: date-time }
      required: [announcement_id, announcement_text]
    Circular:
      type: object
      title: Circular
      properties:
        id: { type: integer }
        Circular: { type: string, description: Circular reference number and date }
        Description: { type: [string, 'null'] }
        file: { type: [string, 'null'], description: Relative path to the attached document }
        c_date: { type: [string, 'null'], format: date-time }
      required: [id, Circular]
    Page:
      type: object
      title: Page
      properties:
        id: { type: integer }
        page_details: { type: [string, 'null'], description: HTML body, unescaped }
      required: [id]
    AuthError:
      type: object
      title: AuthError
      properties:
        success: { type: boolean, const: false }
        error: { type: string }
        code: { type: string, examples: [NOT_AUTHENTICATED] }
        debug:
          type: object
          description: >-
            Session diagnostics returned to unauthenticated callers, including a session
            identifier. Exposing this to anonymous clients is a reportable finding.
      required: [success, error, code]
    ServerError:
      type: object
      title: ServerError
      properties:
        error: { type: string }
      required: [error]