University of York Digital Collections IIIF APIs

The University of York serves its digitised material through two IIIF specifications on its own host: IIIF Image API 3.0 at compliance level 2 (the served info.json declares "profile": "level2", "type": "ImageService3" and its own extraFeatures, extraFormats and extraQualities), and IIIF Presentation API 3.0 manifests and canvases. Identifiers are ARKs under the University's Name Assigning Authority Number 36941. Keyless and CORS open. The IIIF Collection endpoint is not deployed, so there is no machine-readable entry point that enumerates the collections — a harvester has to start from the search API.

Operations 4

GET /iiif/3/ark:/{naan}/{collectionId}/objects/{objectId}/info.json IIIF Image API 3.0 image information #
GET /iiif/3/ark:/{naan}/{collectionId}/objects/{objectId}/{region}/{size}/{rotation}/{quality}.{format} IIIF Image API 3.0 image request #
GET /ark:/{naan}/{objectId}/presentation/3/manifest IIIF Presentation API 3.0 Manifest #
GET /ark:/{naan}/{objectId}/presentation/3/canvas/{canvasId} IIIF Presentation API 3.0 Canvas #

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/digital-collections-iiif"
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-york-digital-collections-iiif-openapi.yml Raw ↑
# authorship: generated by API Evangelist from live probes of the operator's own endpoints.
# The document is ours; the facts in it were measured, not claimed. `method: probed` below
# records HOW it was obtained; this header records WHO wrote it. An unmarked artifact would
# be credited to the institution as though they published it, and they did not.
openapi: 3.1.0
info:
  title: University of York Digital Collections IIIF APIs
  version: '3.0'
  summary: IIIF Image API 3.0 (level 2) and IIIF Presentation API 3.0 served by the University of York over its digitised collections.
  description: >-
    The University of York serves its digitised archive, library and cultural-heritage material
    through two IIIF specifications on its own registrable domain (york.ac.uk), keyless and
    CORS-open:

      * IIIF Image API 3.0, compliance level 2, at /iiif/3/{identifier} — the identifier is an
        ARK path under the University's NAAN 36941.
      * IIIF Presentation API 3.0, at /ark:/{naan}/{objectId}/presentation/3/manifest and
        .../canvas/{canvasId}.

    This description was written from LIVE PROBES on 2026-08-30. The Image API surface below is not
    an assumption from the specification: the served info.json declares
    `"profile": "level2"`, `"type": "ImageService3"` and its own extraFeatures, extraFormats and
    extraQualities, and those are what is recorded here. The University publishes no OpenAPI and no
    developer documentation for these endpoints.

    OPERATOR: institution. IIIF is an open specification, the deployment is on the University's own
    host, and the content, identifiers and manifests are the University's own. What is NOT recorded
    here is any vendor product contract.

    KNOWN LIMITS, observed: an unknown Image API identifier returns HTTP 403 with an S3
    `<Error><Code>AccessDenied</Code>` XML body rather than a IIIF 404; a malformed image request
    returns 400 text/plain; the IIIF Collection endpoint (/presentation/3/collection) returns 403
    and appears not to be deployed. An /api/annotations/{manifest}/{canvas} route referenced by the
    site's JavaScript returns the site's HTML 404 shell and is NOT deployed — it is deliberately
    excluded from this document.
  contact:
    name: University of York Digital Collections
    url: https://discover.york.ac.uk/about/
  license:
    name: Not stated by the operator
x-operator: institution
x-provenance:
  method: probed
  generated: '2026-08-30'
  source:
    - https://discover.york.ac.uk/iiif/3/ark:/36941/common/objects/uoy-logo/info.json
    - https://discover.york.ac.uk/iiif/3/ark:/36941/13192/objects/13309/info.json
    - https://discover.york.ac.uk/iiif/3/ark:/36941/common/objects/uoy-logo/full/max/0/default.jpg
    - https://discover.york.ac.uk/ark:/36941/9952973300001381/presentation/3/manifest
    - https://discover.york.ac.uk/ark:/36941/796351/presentation/3/canvas/802563
servers:
  - url: https://discover.york.ac.uk
    description: University of York Digital Collections (production)
tags:
  - name: IIIF Image
    description: IIIF Image API 3.0, compliance level 2.
  - name: IIIF Presentation
    description: IIIF Presentation API 3.0 manifests and canvases.
paths:
  '/iiif/3/ark:/{naan}/{collectionId}/objects/{objectId}/info.json':
    get:
      summary: IIIF Image API 3.0 image information
      description: >-
        Returns the ImageService3 description for one image. Confirmed live with
        naan=36941, collectionId=common, objectId=uoy-logo and with
        collectionId=13192, objectId=13309.
      operationId: getImageInfo
      tags: [IIIF Image]
      security: []
      parameters:
        - { $ref: '#/components/parameters/Naan' }
        - { $ref: '#/components/parameters/CollectionId' }
        - { $ref: '#/components/parameters/ObjectId' }
      responses:
        '200':
          description: IIIF Image API 3.0 image information document.
          content:
            application/ld+json:
              schema: { $ref: '#/components/schemas/ImageService3' }
        '403':
          description: Unknown identifier. Returns an S3 AccessDenied XML body, not a IIIF error.
          content:
            application/xml:
              schema: { $ref: '#/components/schemas/S3Error' }
  '/iiif/3/ark:/{naan}/{collectionId}/objects/{objectId}/{region}/{size}/{rotation}/{quality}.{format}':
    get:
      summary: IIIF Image API 3.0 image request
      description: >-
        Standard IIIF Image API 3.0 image request. Confirmed live with
        region=full, size=max, rotation=0, quality=default, format=jpg.
      operationId: getImage
      tags: [IIIF Image]
      security: []
      parameters:
        - { $ref: '#/components/parameters/Naan' }
        - { $ref: '#/components/parameters/CollectionId' }
        - { $ref: '#/components/parameters/ObjectId' }
        - name: region
          in: path
          required: true
          description: 'IIIF region: full | square | x,y,w,h | pct:x,y,w,h.'
          schema: { type: string }
          example: full
        - name: size
          in: path
          required: true
          description: 'IIIF size: max | w, | ,h | pct:n | w,h | ^ and ! variants (sizeUpscaling and sizeByDistortedWh are declared as extraFeatures).'
          schema: { type: string }
          example: max
        - name: rotation
          in: path
          required: true
          description: Degrees clockwise, optionally prefixed with ! for mirroring. rotationArbitrary and mirroring are declared as extraFeatures.
          schema: { type: string }
          example: '0'
        - name: quality
          in: path
          required: true
          schema: { type: string, enum: [default, color, gray, bitonal] }
          example: default
        - name: format
          in: path
          required: true
          schema: { type: string, enum: [jpg, png, gif, tif, webp] }
          example: jpg
      responses:
        '200':
          description: The requested image.
          content:
            image/jpeg: { schema: { type: string, format: binary } }
            image/png: { schema: { type: string, format: binary } }
            image/webp: { schema: { type: string, format: binary } }
        '400':
          description: Malformed image request parameters. Returns text/plain.
          content:
            text/plain: { schema: { type: string } }
        '403':
          description: Unknown identifier.
          content:
            application/xml:
              schema: { $ref: '#/components/schemas/S3Error' }
  '/ark:/{naan}/{objectId}/presentation/3/manifest':
    get:
      summary: IIIF Presentation API 3.0 Manifest
      description: >-
        Returns a IIIF Presentation 3.0 Manifest for one object. Confirmed live with
        naan=36941, objectId=9952973300001381 ("Little Red Riding Hood", 7 canvases) and
        objectId=796351.
      operationId: getManifest
      tags: [IIIF Presentation]
      security: []
      parameters:
        - { $ref: '#/components/parameters/Naan' }
        - { $ref: '#/components/parameters/ObjectId' }
      responses:
        '200':
          description: IIIF Presentation API 3.0 Manifest.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Manifest' }
        '302':
          description: >-
            Observed when the manifest path is requested under /iiif/3/. The Location header is a
            relative value that is not a resolvable URL; use the /ark:/ form above.
  '/ark:/{naan}/{objectId}/presentation/3/canvas/{canvasId}':
    get:
      summary: IIIF Presentation API 3.0 Canvas
      description: Returns a single Canvas from an object's manifest. Confirmed live with objectId=796351, canvasId=802563.
      operationId: getCanvas
      tags: [IIIF Presentation]
      security: []
      parameters:
        - { $ref: '#/components/parameters/Naan' }
        - { $ref: '#/components/parameters/ObjectId' }
        - name: canvasId
          in: path
          required: true
          schema: { type: string }
          example: '802563'
      responses:
        '200':
          description: IIIF Presentation API 3.0 Canvas.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Canvas' }
components:
  securitySchemes: {}
  parameters:
    Naan:
      name: naan
      in: path
      required: true
      description: ARK Name Assigning Authority Number. The University of York's is 36941.
      schema: { type: string, default: '36941' }
      example: '36941'
    CollectionId:
      name: collectionId
      in: path
      required: true
      description: 'ARK collection segment. Observed values include numeric object-group ids and the literal "common" for site assets.'
      schema: { type: string }
      example: common
    ObjectId:
      name: objectId
      in: path
      required: true
      schema: { type: string }
      example: uoy-logo
  schemas:
    S3Error:
      type: object
      description: Object-store error surfaced verbatim for unknown identifiers.
      properties:
        Code: { type: string, example: AccessDenied }
        Message: { type: string, example: Access Denied }
    ImageService3:
      type: object
      description: IIIF Image API 3.0 image information document, as served.
      required: ['@context', id, type, protocol, profile, width, height]
      properties:
        '@context': { type: string, const: 'http://iiif.io/api/image/3/context.json' }
        id: { type: string, format: uri }
        type: { type: string, const: ImageService3 }
        protocol: { type: string, const: 'http://iiif.io/api/image' }
        profile: { type: string, example: level2 }
        width: { type: integer, example: 500 }
        height: { type: integer, example: 164 }
        sizes:
          type: array
          items:
            type: object
            properties:
              width: { type: integer }
              height: { type: integer }
        tiles:
          type: array
          items:
            type: object
            properties:
              width: { type: integer, example: 256 }
              height: { type: integer, example: 256 }
              scaleFactors: { type: array, items: { type: integer } }
        extraFeatures:
          type: array
          items: { type: string }
          example: [canonicalLinkHeader, mirroring, profileLinkHeader, rotationArbitrary, sizeByDistortedWh, sizeByForcedWh, sizeByWhListed, sizeUpscaling]
        extraFormats:
          type: array
          items: { type: string }
          example: [gif, tif, webp]
        extraQualities:
          type: array
          items: { type: string }
          example: [color, gray, bitonal]
    Manifest:
      type: object
      description: IIIF Presentation API 3.0 Manifest, with the properties observed on this deployment.
      required: ['@context', id, type, label, items]
      properties:
        '@context': { type: string, const: 'http://iiif.io/api/presentation/3/context.json' }
        id: { type: string, format: uri }
        type: { type: string, const: Manifest }
        label: { $ref: '#/components/schemas/LanguageMap' }
        summary: { $ref: '#/components/schemas/LanguageMap' }
        behavior: { type: array, items: { type: string } }
        thumbnail: { type: array, items: { type: object } }
        items:
          type: array
          description: Canvases.
          items: { $ref: '#/components/schemas/Canvas' }
    Canvas:
      type: object
      description: IIIF Presentation API 3.0 Canvas.
      properties:
        id: { type: string, format: uri }
        type: { type: string, const: Canvas }
        label: { $ref: '#/components/schemas/LanguageMap' }
        height: { type: integer }
        width: { type: integer }
        items: { type: array, items: { type: object } }
    LanguageMap:
      type: object
      description: IIIF language map — BCP 47 language tag (or "none") to an array of strings.
      additionalProperties:
        type: array
        items: { type: string }
      example:
        en: [Little Red Riding Hood]
security: []