Rijksmuseum User Generated Content API

Rijksstudio sets curated by Rijksmuseum's online community.

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/rijksmuseum-user-generated-content-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 email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

rijksmuseum-user-generated-content-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Rijksmuseum Collection User Generated Content API
  version: 1.0.0
  description: "The Rijksmuseum Collection API exposes the Dutch national museum's collection\nof more than 800,000 object records (with public-domain web images for over\n600,000 of them) through a JSON / JSON-P / XML REST interface. Three\noperations are provided:\n\n* **Search the collection** — list paginated, language-localised result\n  pages with rich filters (maker, type, material, technique, century,\n  dominant colour, image availability, top-piece flag) using the same\n  filtering vocabulary as the museum's own advanced-search page.\n* **Get collection object details** — return the full record for a single\n  object (title, descriptions, principal maker biography, dating,\n  dimensions, materials, techniques, Iconclass classification, colours,\n  bilingual plaque text, acquisition history, exhibitions, web image).\n* **Get collection image tiles** — return a multi-level tile pyramid for an\n  object's web image so consumers can offer the same deep-zoom experience\n  used on rijksmuseum.nl.\n\nResponses are localised through the `culture` path parameter (`nl` for\nDutch, `en` for English). Every request must carry a `key` query parameter\nholding the caller's API key, which is issued instantly upon registering a\nfree Rijksstudio account.\n"
  termsOfService: https://www.rijksmuseum.nl/en/data/policy
  contact:
    name: Rijksmuseum Research Services
    url: https://www.rijksmuseum.nl/en/research/conduct-research/contact-form
  license:
    name: Public Domain (most object images) / CC-BY (modern works) — see Data Policy
    url: https://www.rijksmuseum.nl/en/data/policy
  x-generated-from: documentation
  x-source-url: https://data.rijksmuseum.nl/object-metadata/api/
  x-last-validated: '2026-05-29'
  x-api-evangelist-pipeline: opensource
servers:
- url: https://www.rijksmuseum.nl/api
  description: Production
security:
- ApiKeyQuery: []
tags:
- name: User Generated Content
  description: Rijksstudio sets curated by Rijksmuseum's online community.
paths:
  /{culture}/usersets:
    get:
      operationId: listUserSets
      summary: List Rijksstudio User Sets
      description: 'Returns a paginated list of Rijksstudio user sets. `page * pageSize`

        cannot exceed 10,000.

        '
      tags:
      - User Generated Content
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
      parameters:
      - $ref: '#/components/parameters/Culture'
      - $ref: '#/components/parameters/ApiKey'
      - $ref: '#/components/parameters/Format'
      - name: page
        in: query
        description: Result page number (0-based). `page * pageSize` cannot exceed 10,000.
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          example: 0
      - name: pageSize
        in: query
        description: Number of results per page.
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 10
          example: 10
      responses:
        '200':
          description: A paginated page of user-set summaries.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSetListResponse'
              examples:
                page2:
                  $ref: '#/components/examples/ListUserSetsPage2'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
  /{culture}/usersets/{setId}:
    get:
      operationId: getUserSet
      summary: Get Rijksstudio User Set Details
      description: 'Returns the full contents of a single Rijksstudio set, including the

        owner profile, set metadata, and the ordered list of set items

        (`setItems`) linking back to Collection API objects.

        '
      tags:
      - User Generated Content
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
      parameters:
      - $ref: '#/components/parameters/Culture'
      - $ref: '#/components/parameters/ApiKey'
      - $ref: '#/components/parameters/Format'
      - name: setId
        in: path
        required: true
        description: 'Composite set identifier of the form `{userId}-{slug}` (e.g.

          `1836065-meestermatches`).

          '
        schema:
          type: string
          example: 1836065-meestermatches
      - name: page
        in: query
        description: Result page number (0-based) for the embedded `setItems` list.
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          example: 0
      - name: pageSize
        in: query
        description: Items per page for the embedded `setItems` list.
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 25
          example: 25
      responses:
        '200':
          description: The user set with its items.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSetResponse'
              examples:
                meestermatches:
                  $ref: '#/components/examples/GetMeesterMatches'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  schemas:
    UserSetItem:
      type: object
      description: One item in a Rijksstudio user set, linking back to a collection object.
      properties:
        links:
          $ref: '#/components/schemas/UserSetItemLinks'
        id:
          type: string
          example: 8c6e3ec4-08d9-4547-b72a-36907c0a3823
        objectNumber:
          type: string
          example: SK-A-3148
        relation:
          type: string
          example: None
        relationDescription:
          type: string
          example: Held
        cropped:
          type: boolean
          example: false
        cropX:
          type: integer
          example: 0
        cropY:
          type: integer
          example: 0
        cropWidth:
          type: integer
          example: 0
        cropHeight:
          type: integer
          example: 0
        origWidth:
          type: integer
          example: 0
        origHeight:
          type: integer
          example: 0
        image:
          $ref: '#/components/schemas/UserSetItemImage'
    UserSetResponse:
      type: object
      description: Single Rijksstudio user set with its items.
      properties:
        elapsedMilliseconds:
          type: integer
          example: 505
        userSet:
          $ref: '#/components/schemas/UserSet'
    UserSetItemLinks:
      type: object
      properties:
        artobject:
          type: string
          format: uri
          example: https://www.rijksmuseum.nl/api/nl/collection/SK-A-3148
        web:
          type: string
          format: uri
          example: https://www.rijksmuseum.nl/nl/collection/SK-A-3148
    Error:
      type: object
      properties:
        statusCode:
          type: integer
          example: 401
        message:
          type: string
          example: Invalid API key.
    UserSetLinks:
      type: object
      properties:
        self:
          type: string
          format: uri
          example: https://www.rijksmuseum.nl/api/usersets/123-setname-3
        overview:
          type: string
          format: uri
          example: https://www.rijksmuseum.nl/api/usersets
        web:
          type: string
          format: uri
          example: https://www.rijksmuseum.nl/nl/mijn/verzamelingen/321--john/setname-3
    RijksstudioUser:
      type: object
      properties:
        id:
          type: integer
          example: 321
        name:
          type: string
          example: John
        lang:
          type: string
          example: nl
        avatarUrl:
          type: string
          format: uri
          nullable: true
        headerUrl:
          type: string
          format: uri
          nullable: true
        initials:
          type: string
          example: J
    UserSetSummary:
      type: object
      description: Lightweight summary of a Rijksstudio user set.
      properties:
        links:
          $ref: '#/components/schemas/UserSetLinks'
        id:
          type: string
          example: 123-setname-3
        count:
          type: integer
          example: 25
        type:
          type: string
          example: Default
        name:
          type: string
          example: setname (3)
        slug:
          type: string
          example: setname-3
        description:
          type: string
          nullable: true
        user:
          $ref: '#/components/schemas/RijksstudioUser'
        createdOn:
          type: string
          format: date-time
          example: '2012-11-02T12:28:21.9070376Z'
        updatedOn:
          type: string
          format: date-time
          example: '2013-04-10T10:50:21.7559145Z'
    UserSetItemImage:
      type: object
      properties:
        guid:
          type: string
          example: 6d40dc7d-e58c-4e13-812d-60cff190a3d5
        parentObjectNumber:
          type: string
          example: SK-A-3148
        cdnUrl:
          type: string
          format: uri
        cropX:
          type: integer
        cropY:
          type: integer
        width:
          type: integer
          example: 1824
        height:
          type: integer
          example: 2500
        offsetPercentageX:
          type: integer
          example: 50
        offsetPercentageY:
          type: integer
          example: 36
    UserSet:
      allOf:
      - $ref: '#/components/schemas/UserSetSummary'
      - type: object
        properties:
          setItems:
            type: array
            items:
              $ref: '#/components/schemas/UserSetItem'
    UserSetListResponse:
      type: object
      description: A paginated page of Rijksstudio user-set summaries.
      properties:
        count:
          type: integer
          description: Total number of user sets across all pages.
          example: 97957
        elapsedMilliseconds:
          type: integer
          example: 631
        userSets:
          type: array
          items:
            $ref: '#/components/schemas/UserSetSummary'
  responses:
    NotFound:
      description: The requested set could not be found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Daily quota or short-window rate limit exceeded.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    Format:
      name: format
      in: query
      required: false
      description: Response format. JSON is the default.
      schema:
        type: string
        enum:
        - json
        - jsonp
        - xml
        default: json
        example: json
    Culture:
      name: culture
      in: path
      required: true
      description: Locale for the response content (`nl` Dutch, `en` English).
      schema:
        type: string
        enum:
        - nl
        - en
        example: en
    ApiKey:
      name: key
      in: query
      required: true
      description: The caller's Rijksstudio API key.
      schema:
        type: string
        pattern: ^[A-Za-z0-9]+$
        example: 0fiuZxBwf
  examples:
    GetMeesterMatches:
      summary: Get the "meestermatches" user set
      value:
        elapsedMilliseconds: 505
        userSet:
          links:
            overview: https://www.rijksmuseum.nl/api/usersets
            web: https://www.rijksmuseum.nl/nl/mijn/verzamelingen/321--john/setname-3
          id: 123-setname-3
          count: 25
          type: Default
          name: setname (3)
          slug: setname-3
          description: null
          user:
            id: 321
            name: John
            lang: nl
            avatarUrl: null
            headerUrl: null
            initials: B
          setItems:
          - links:
              artobject: https://www.rijksmuseum.nl/api/nl/collection/SK-A-3148
              web: https://www.rijksmuseum.nl/nl/collection/SK-A-3148
            id: 8c6e3ec4-08d9-4547-b72a-36907c0a3823
            objectNumber: SK-A-3148
            relation: None
            relationDescription: Held
            cropped: false
            cropX: 0
            cropY: 0
            cropWidth: 0
            cropHeight: 0
            origWidth: 0
            origHeight: 0
            image:
              guid: 6d40dc7d-e58c-4e13-812d-60cff190a3d5
              parentObjectNumber: SK-A-3148
              cdnUrl: http://lh4.ggpht.com/X6E9IJ33ioVI1W7x0XgDedCmAu5NizMlLuX2f6gSgmpFqMxCCU1qOSCOqc2ORrLw-nHLtaph1zStxZFKKWqlnRU1IUw=s0
              cropX: 0
              cropY: 0
              width: 1824
              height: 2500
              offsetPercentageX: 50
              offsetPercentageY: 36
          createdOn: '2012-11-02T12:28:21.9070376Z'
          updatedOn: '2013-04-10T10:50:21.7559145Z'
    ListUserSetsPage2:
      summary: Second page of Rijksstudio user sets
      value:
        count: 97957
        elapsedMilliseconds: 631
        userSets:
        - links:
            self: https://www.rijksmuseum.nl/api/usersets/123-setname-3
            web: https://www.rijksmuseum.nl/nl/mijn/verzamelingen/321--john/setname-3
          id: 123-setname-3
          count: 25
          type: Default
          name: setname (3)
          slug: setname-3
          description: null
          user:
            id: 321
            name: John
            lang: nl
            avatarUrl: null
            headerUrl: null
            initials: B
          createdOn: '2012-11-02T12:28:21.9070376Z'
          updatedOn: '2013-04-10T10:50:21.7559145Z'
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: key
      description: 'Free API key issued on creating a Rijksstudio account at

        https://www.rijksmuseum.nl/en/rijksstudio. The key is available from the

        account''s advanced settings.

        '