Design Museum Gent API
Home
Developers
Policy
Github
Swagger
Home
Developers
Policy
Github
Swagger
  • Overview
  • DCAT
  • Overview
  • Object
  • Objects
  • Exhibition
  • Exhibitions
  • Agent
  • Agents
  • Concept
  • Concepts
  • Colors
  • Types
  • Nationalities
  • Materials

Objects

Info

The objects collection endpoint provides paginated access to all objects in the Design Museum Gent collection. For full metadata on a single object, use the object endpoint.

endpoint:

GET https://data.designmuseumgent.be/v2/id/objects

Parameters

ParameterTypeDefaultDescription
pageinteger1Page number
itemsPerPageinteger10Number of objects per page (max 100)
fullRecordbooleanfalseReturn full CIDOC-CRM records instead of lightweight stubs
modifiedSincedate—Only return records modified on or after this date. Format: YYYY-MM-DD
qstring—Full text search on titles, descriptions and object number
hasImagesbooleanfalseOnly return objects that have a IIIF manifest
hasPartsbooleanfalseOnly return koepelrecords — objects that are composed of a set of member objects
isPartOfbooleanfalseOnly return set members — objects that belong to a koepelrecord
onDisplayboolean—Tri-state. Omit for all objects, true for objects currently on display, false for objects not on display. See below.
languagestring—Only return objects with a title in the specified language. Supported: NLD, FRA, ENG
typestring—Filter by object type label. Comma-separated for multiple (AND). Use /v2/id/types to discover available values
materialstring—Filter by material label. Comma-separated for multiple (AND). Use /v2/id/materials to discover available values
colorstring—Filter by base color. Comma-separated for multiple (AND). Use /v2/id/colors to discover available values
cssColorstring—Filter by named color tone. Comma-separated for multiple (AND)
colorsbooleanfalseInclude color data in full records. Requires fullRecord=true
hasColorsbooleanfalseOnly return objects processed by the color tagger
agentstring—Filter by agent PID or full URI. Returns objects where the agent is designer or producer
datestring—Filter by production date range using EDTF interval notation. Format: YYYY/YYYY
dateFrominteger—Only return objects produced from this year onwards
dateTointeger—Only return objects produced up to and including this year
conceptstring—Filter by concept PID or URI — exact match, expands to include narrower concepts
conceptSearchstring—Filter by concept label — searches the thesaurus and expands to narrower concepts
koepelsstring—Set to exclude to hide koepelrecords from results. Useful for image-based browsing where koepelrecords typically have no image
sortBystringobjectNumberField to sort by. Supported: objectNumber, modified, titleNL, titleFR, titleEN, dateBegin, dateEnd
sortOrderstringascSort direction. asc or desc

What this collection contains

Every response is filtered to healthy, canonical records. Two rules are applied before any of your filters:

  1. Health — records that failed validation against the source system are excluded.
  2. Canonicity — a record whose persistent URI redirects elsewhere (because it was merged into another record, renumbered, or withdrawn) is excluded from this collection.

Excluded records remain fully resolvable at /v2/id/object/{PID}, where they return 301 Moved Permanently with a Location header, or 410 Gone. This is deliberate: persistent URIs keep working for anyone who already holds one, while the collection only ever lists records that are current.

For site builders

If you are building a site or index on top of this collection, you do not need to filter out merged or withdrawn objects yourself — every member of hydra:member is a current, canonical record. hydra:totalItems reflects the same filtered set.


Filter reference

Full text search — ?q=

Supports natural language search syntax across Dutch, French and English titles, descriptions and object numbers. Titles and object numbers are weighted higher than descriptions.

GET https://data.designmuseumgent.be/v2/id/objects?q=roze+glas&hasImages=true
GET https://data.designmuseumgent.be/v2/id/objects?q="opaalglas"&fullRecord=true
GET https://data.designmuseumgent.be/v2/id/objects?q=glas+OR+keramiek

On display — ?onDisplay=

This parameter has three states, not two:

ValueResult
omittedAll objects, regardless of display status
true (or 1)Only objects currently in the collection presentation
false (or 0)Only objects not currently in the collection presentation

Warning

onDisplay=false is not the same as omitting the parameter. It actively selects the objects that are not on display, which is a much smaller and different set than "everything".

# objects in the collection presentation
GET https://data.designmuseumgent.be/v2/id/objects?onDisplay=true

# objects in storage — not the same as omitting the parameter
GET https://data.designmuseumgent.be/v2/id/objects?onDisplay=false

Objects on display also carry crm:P55_has_current_location in their full record, pointing at the collection presentation place URI.

By agent — ?agent=

Returns all objects where the specified agent appears as designer (crm:P94i_was_created_by) or producer (crm:P108i_was_produced_by). Accepts PID or full URI:

GET https://data.designmuseumgent.be/v2/id/objects?agent=DMG-A-00162
GET https://data.designmuseumgent.be/v2/id/objects?agent=DMG-A-00162&hasImages=true&fullRecord=true

By production date — ?date=, ?dateFrom=, ?dateTo=

Filters by production or creation date using overlap logic — an object is returned when its production period overlaps the requested range. EDTF uncertainty markers are stripped before storing.

GET https://data.designmuseumgent.be/v2/id/objects?date=1950/1969
GET https://data.designmuseumgent.be/v2/id/objects?dateFrom=1950&dateTo=1969
GET https://data.designmuseumgent.be/v2/id/objects?dateFrom=1900
GET https://data.designmuseumgent.be/v2/id/objects?date=1920/1940&agent=DMG-A-00162

Info

Objects with no recorded production or creation date are excluded from date-filtered results.

By color — ?color=, ?cssColor=

Colors are extracted from digital images using background removal, KMeans clustering and LAB color distance matching.

Available base colors: red orange yellow green blue purple pink brown grey black white

GET https://data.designmuseumgent.be/v2/id/objects?color=pink
GET https://data.designmuseumgent.be/v2/id/objects?color=pink,grey
GET https://data.designmuseumgent.be/v2/id/objects?cssColor=Old+rose
GET https://data.designmuseumgent.be/v2/id/objects?hasColors=true&colors=true&fullRecord=true

Info

The values accepted by ?cssColor= are names from the extended Wikipedia/xkcd color lists, not CSS keywords. Use /v2/id/colors to discover valid values — that endpoint also returns a renderable hex for each one.

By type and material

GET https://data.designmuseumgent.be/v2/id/objects?type=vaas
GET https://data.designmuseumgent.be/v2/id/objects?type=vaas,bord
GET https://data.designmuseumgent.be/v2/id/objects?material=glas+%28materiaal%29
GET https://data.designmuseumgent.be/v2/id/objects?type=vaas&material=glas+%28materiaal%29&onDisplay=true

By concept — ?concept=, ?conceptSearch=

Both parameters automatically expand to include narrower concepts from the thesaurus hierarchy via recursive CTE.

# exact match by PID
GET https://data.designmuseumgent.be/v2/id/objects?concept=530000049

# search by label — expands to narrower concepts
GET https://data.designmuseumgent.be/v2/id/objects?conceptSearch=stoel
GET https://data.designmuseumgent.be/v2/id/objects?conceptSearch=glas&hasImages=true

Concepts are matched across object types, materials, techniques and sub-collections.

Object hierarchy — ?hasParts=, ?isPartOf=

?hasParts=true returns koepelrecords — objects that are administratively composed of a set of member objects (e.g. a cutlery service, a series). On these records the response includes crm:P106_is_composed_of listing all members.

?isPartOf=true returns the individual set members. On these records the response includes crm:P46i_forms_part_of pointing to the parent koepelrecord.

Note that crm:P46_has_component on any object expresses something different — the named physical parts (fysiekeOnderdelen) that physically constitute the object, such as individual ceramic forms or a wooden box. These are always present when recorded, regardless of koepelrecord status.

GET https://data.designmuseumgent.be/v2/id/objects?hasParts=true
GET https://data.designmuseumgent.be/v2/id/objects?isPartOf=true

Excluding koepelrecords — ?koepels=exclude

By default the collection includes koepelrecords alongside individual objects. Pass koepels=exclude to hide them — useful for image-based browsing interfaces where koepelrecords typically carry no IIIF image of their own.

GET https://data.designmuseumgent.be/v2/id/objects?koepels=exclude
GET https://data.designmuseumgent.be/v2/id/objects?koepels=exclude&hasImages=true&fullRecord=true

Tips

To browse only koepelrecords, use ?hasParts=true instead. To browse only the individual members of sets, use ?isPartOf=true.

Sorting — ?sortBy=, ?sortOrder=

By default results are sorted by objectNumber ascending. Use sortBy and sortOrder to change this.

sortBy valueSorts onNotes
objectNumberObject numberDefault
modifiedLast modification dateUse with sortOrder=desc to get recently updated objects first
titleNLDutch titleObjects without a Dutch title appear last
titleFRFrench titleObjects without a French title appear last
titleENEnglish titleObjects without an English title appear last
dateBeginStart of production date rangeObjects with no recorded date appear last
dateEndEnd of production date rangeObjects with no recorded date appear last
# most recently modified first
GET https://data.designmuseumgent.be/v2/id/objects?sortBy=modified&sortOrder=desc

# alphabetical by Dutch title
GET https://data.designmuseumgent.be/v2/id/objects?sortBy=titleNL&hasImages=true

# oldest objects first
GET https://data.designmuseumgent.be/v2/id/objects?sortBy=dateBegin&sortOrder=asc

# most recently modified, full records
GET https://data.designmuseumgent.be/v2/id/objects?sortBy=modified&sortOrder=desc&fullRecord=true&itemsPerPage=25

Info

Sorting is not applied on ?agent= queries — those results are returned in object number order from the RPC.

Language — ?language=

Returns only objects with a title in the specified language. Useful for identifying translation gaps:

GET https://data.designmuseumgent.be/v2/id/objects?language=FRA
GET https://data.designmuseumgent.be/v2/id/objects?language=ENG&itemsPerPage=1

Incremental harvesting — ?modifiedSince=

GET https://data.designmuseumgent.be/v2/id/objects?modifiedSince=2026-05-01&fullRecord=true&itemsPerPage=50

Active filters are preserved in all Hydra pagination links. An invalid date format returns 400 Bad Request.

Incremental sync does not report removals

?modifiedSince= returns records that changed on or after the given date. It cannot tell you that a record has left the collection — an object that was merged or withdrawn simply stops appearing, without any signal.

If you maintain a local mirror, periodically reconcile against a full pass rather than relying on incremental sync alone. A record that has disappeared from this collection can be checked individually at /v2/id/object/{PID}, which will return 301 or 410 and tell you what happened to it.


Response format

Data is returned as a Hydra Collection with CIDOC-CRM members.

CodeDescription
200Successful request
400Invalid modifiedSince date format
500Server error

Pagination — hydra:view

All active filters are preserved in pagination links. An RFC 8288 Link header is also included on every response.

Harvesting the full collection

async function harvest(url) {
    const res = await fetch(url)
    const data = await res.json()

    // process data["hydra:member"]

    if (data["hydra:view"]["hydra:next"]) {
        await new Promise(r => setTimeout(r, 250)) // polite delay
        await harvest(data["hydra:view"]["hydra:next"])
    }
}

harvest('https://data.designmuseumgent.be/v2/id/objects?fullRecord=true&itemsPerPage=50')

Members — hydra:member

Lightweight stub (default)

FieldDescription
@idInternal DMG URI — resolvable to full record
@typeAlways crm:E22_Human-Made_Object
rdfs:labelDutch title
crm:P129i_is_subject_ofIIIF manifest link if available

Full record (?fullRecord=true)

Each member contains the complete CIDOC-CRM JSON-LD record — identical in structure to the single object endpoint. Includes production and creation events, acquisition, materials, dimensions, physical parts with their own dimensions, set composition, sub-collection membership, exhibitions, color data and IIIF images.

Performance

Full records return significantly larger payloads. Keep itemsPerPage at 50 or lower to avoid timeouts.


Example response (lightweight)

{
  "@context": {
    "crm": "http://www.cidoc-crm.org/cidoc-crm/",
    "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
    "hydra": "http://www.w3.org/ns/hydra/core#",
    "owl": "https://www.w3.org/2002/07/owl#"
  },
  "@id": "https://data.designmuseumgent.be/v2/id/objects",
  "@type": "hydra:Collection",
  "hydra:totalItems": 8423,
  "hydra:view": {
    "@id": "https://data.designmuseumgent.be/v2/id/objects?page=1&itemsPerPage=10",
    "@type": "hydra:PartialCollectionView",
    "hydra:first": "https://data.designmuseumgent.be/v2/id/objects?page=1&itemsPerPage=10",
    "hydra:last": "https://data.designmuseumgent.be/v2/id/objects?page=843&itemsPerPage=10",
    "hydra:next": "https://data.designmuseumgent.be/v2/id/objects?page=2&itemsPerPage=10"
  },
  "hydra:member": [
    {
      "@id": "https://data.designmuseumgent.be/v2/id/object/1987-1105",
      "@type": "crm:E22_Human-Made_Object",
      "rdfs:label": "Beeldje van een vis in opaalglas",
      "crm:P129i_is_subject_of": {
        "@id": "https://api.collectie.gent/iiif/presentation/v2/manifest/dmg:1987-1105",
        "@type": "crm:E73_Information_Object"
      }
    },
    {
      "@id": "https://data.designmuseumgent.be/v2/id/object/2016-0017",
      "@type": "crm:E22_Human-Made_Object",
      "rdfs:label": "Artefacts of a New History",
      "crm:P129i_is_subject_of": {
        "@id": "https://api.collectie.gent/iiif/presentation/v2/manifest/dmg:2016-0017",
        "@type": "crm:E73_Information_Object"
      }
    }
  ]
}
Last Updated:: 9/11/26, 7:10 AM
Contributors: Olivier.VanD'huynslager
Prev
Object
Next
Exhibition