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. '