ELM — Edinburgh Language Models API

OpenAI-compatible generative-AI gateway built and run by EDINA at the University of Edinburgh, described by its own metadata as delivering generative AI to UK tertiary education. /api/v1/models and /api/v1/chat/completions both answer 401 with an OpenAI-shaped error envelope without a bearer token, which is what establishes the routes and the auth scheme; /health returns 200. No public self-service registration and no published OpenAPI (/openapi.json returns the SPA shell). This is the clearest case in the profile of Edinburgh acting as an API producer rather than a buyer.

Business capability
Artificial Intelligence Management BC-610.60

Operations 2

GET /models List the models available to the caller #
POST /chat/completions Create a chat completion #

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/elm-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-edinburgh-elm-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Edinburgh Language Models ELM API
  description: ELM is the University of Edinburgh's own generative-AI access platform, described by its own metadata as "an online platform that delivers generative AI to UK tertiary education." It exposes an OpenAI-compatible HTTP API at https://elm.edina.ac.uk/api/v1 secured with a bearer token.
  version: '1'
  contact:
    name: EDINA, University of Edinburgh
    url: https://information-services.ed.ac.uk/computing/comms-and-collab/elm
  x-operator: institution
  x-operator-evidence: 'edina.ac.uk Domain Owner: University of Edinburgh (Nominet whois); Registered For: EDINA National Data Centre'
  x-access: gated
  x-provenance:
    method: probed
    generated: '2026-08-19'
    source: https://elm.edina.ac.uk/api/v1/models
servers:
- url: https://elm.edina.ac.uk/api/v1
  description: ELM OpenAI-compatible API (probed — 401 without a bearer token)
- url: https://elm.edina.ac.uk
  description: ELM platform root, for the unauthenticated health check
tags:
- name: ELM
  description: Edinburgh Language Models generative-AI gateway
paths:
  /models:
    get:
      tags:
      - ELM
      operationId: listModels
      summary: List the models available to the caller
      description: OpenAI-compatible model listing. Observed 401 without a bearer token; the authenticated response body was not observed and is deliberately not described.
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Model list. NOT OBSERVED — no authenticated probe was made, so no schema is asserted here. Expect the OpenAI /v1/models shape by convention only.
        '401':
          description: Missing or invalid Authorization header (observed)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: 401
                  type: invalid_request_error
                  message: Missing or invalid Authorization header
  /chat/completions:
    post:
      tags:
      - ELM
      operationId: createChatCompletion
      summary: Create a chat completion
      description: OpenAI-compatible chat completion endpoint. Observed 401 without a bearer token when posted a minimal JSON body. Request and response schemas are not asserted because they were not observed.
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: Shape not observed. OpenAI chat-completion convention (model, messages) is assumed by the platform's compatibility claim, not verified here.
      responses:
        '200':
          description: Chat completion. NOT OBSERVED — no schema asserted.
        '401':
          description: Missing or invalid Authorization header (observed)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Error:
      type: object
      description: OpenAI-compatible error envelope (observed verbatim)
      properties:
        error:
          type: object
          properties:
            code:
              type: integer
              example: 401
            type:
              type: string
              example: invalid_request_error
            message:
              type: string
              example: Missing or invalid Authorization header
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer token issued to University of Edinburgh accounts. There is no public self-service registration; /api redirects (302) to https://elm.edina.ac.uk/login.