Delft University of Technology Datasets API

Published datasets (called "articles" on the Figshare-compatible v2 surface).

Business capability
Scholarly Output & Publication Management BC-4780.40

Operations 6

GET /v2/articles List published datasets #
POST /v2/articles/search Search published datasets #
GET /v2/articles/{uuid} Get one published dataset #
GET /v2/articles/{uuid}/files List the files attached to a dataset #
GET /v2/articles/{uuid}/versions List the published versions of a dataset #
GET /v3/datasets List published datasets (djehuty v3) #

Documentation

Specifications

Schemas & Data

Other Resources

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/tu-delft-datasets-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

tu-delft-datasets-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: 4TU.ResearchData Datasets API
  version: v2+v3
  summary: Public read API for the 4TU.ResearchData repository operated by TU Delft Library.
  description: 'Public, unauthenticated read interface to the 4TU.ResearchData repository at https://data.4tu.nl, the science/engineering/design research data repository of the 4TU.Federation. The service runs on `djehuty`, open-source repository software written by 4TU.ResearchData and Nikhef — it is NOT a Figshare, Elsevier Pure, Dataverse or DSpace tenancy. The `/v2` surface is deliberately backward compatible with the Figshare v2 API shape (differences: `uuid` supersedes `id`, and usage errors return precise HTTP codes rather than always 400); `/v3` is djehuty''s own surface. Endpoints under `/v2/account/` and parts of `/v3` require a personal API token.

    OPERATOR NOTE: data.4tu.nl resolves to 131.180.169.22, inside the RIPE `DUNET` inetnum registered to Technische Universiteit Delft, and re3data records TU Delft Library as the hosting institution for the 4TU.Federation consortium (with TU Eindhoven, University of Twente and Wageningen University as the other partners). It is therefore institution-operated infrastructure that is co-owned by a four-university consortium, not a vendor platform.'
  contact:
    name: 4TU.ResearchData
    email: researchdata@4tu.nl
    url: https://data.4tu.nl/info/about-4turesearchdata/contact
  license:
    name: EUPL-1.2 (djehuty software)
    url: https://github.com/4TUResearchData/djehuty/blob/main/LICENSE
  termsOfService: https://data.4tu.nl/info/about-4turesearchdata/policies-guidelines
servers:
- url: https://data.4tu.nl
  description: 4TU.ResearchData production (TU Delft Library operated)
tags:
- name: Datasets
  description: Published datasets (called "articles" on the Figshare-compatible v2 surface).
paths:
  /v2/articles:
    get:
      tags:
      - Datasets
      operationId: listArticles
      summary: List published datasets
      description: Returns a page of publicly published datasets, newest first by default.
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 1000
          default: 10
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
      - name: order
        in: query
        required: false
        schema:
          type: string
          examples:
          - published_date
      - name: order_direction
        in: query
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
      - name: institution
        in: query
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: A list of dataset summaries.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DatasetSummary'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/articles/search:
    post:
      tags:
      - Datasets
      operationId: searchArticles
      summary: Search published datasets
      description: 'Full-text and faceted search over published datasets. A GET against this path returns 405 with the body `Acceptable methods: [''POST'']`.'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                search_for:
                  type: string
                limit:
                  type: integer
                offset:
                  type: integer
                order:
                  type: string
                order_direction:
                  type: string
                  enum:
                  - asc
                  - desc
      responses:
        '200':
          description: Matching dataset summaries.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DatasetSummary'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
  /v2/articles/{uuid}:
    get:
      tags:
      - Datasets
      operationId: getArticle
      summary: Get one published dataset
      parameters:
      - $ref: '#/components/parameters/Uuid'
      responses:
        '200':
          description: The full dataset record, including files, authors, funding and license.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dataset'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/articles/{uuid}/files:
    get:
      tags:
      - Datasets
      operationId: listArticleFiles
      summary: List the files attached to a dataset
      parameters:
      - $ref: '#/components/parameters/Uuid'
      responses:
        '200':
          description: Files, with size and both supplied and computed MD5 checksums.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/File'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/articles/{uuid}/versions:
    get:
      tags:
      - Datasets
      operationId: listArticleVersions
      summary: List the published versions of a dataset
      parameters:
      - $ref: '#/components/parameters/Uuid'
      responses:
        '200':
          description: Version numbers with their canonical API URLs.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    version:
                      type: integer
                    url:
                      type: string
                      format: uri
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/datasets:
    get:
      tags:
      - Datasets
      operationId: listDatasets
      summary: List published datasets (djehuty v3)
      description: djehuty's own dataset listing. Same record shape as /v2/articles; note that the `url` field in each record still points back at the /v2 path.
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: integer
      - name: offset
        in: query
        required: false
        schema:
          type: integer
      - name: order
        in: query
        required: false
        schema:
          type: string
      - name: order_direction
        in: query
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
      responses:
        '200':
          description: A list of dataset summaries.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DatasetSummary'
components:
  schemas:
    DatasetSummary:
      type: object
      properties:
        id:
          type:
          - integer
          - 'null'
          description: Legacy Figshare numeric id; null on djehuty-native records.
        uuid:
          type: string
          format: uuid
        title:
          type: string
        doi:
          type: string
          description: DataCite DOI under the 10.4121 prefix.
        handle:
          type:
          - string
          - 'null'
        url:
          type: string
          format: uri
        published_date:
          type:
          - string
          - 'null'
        thumb:
          type:
          - string
          - 'null'
        defined_type:
          type:
          - integer
          - 'null'
        defined_type_name:
          type:
          - string
          - 'null'
        group_id:
          type:
          - integer
          - 'null'
        url_private_api:
          type: string
          format: uri
        url_public_api:
          type: string
          format: uri
        url_private_html:
          type: string
          format: uri
        url_public_html:
          type: string
          format: uri
        timeline:
          type: object
        resource_title:
          type:
          - string
          - 'null'
        resource_doi:
          type:
          - string
          - 'null'
    File:
      type: object
      properties:
        id:
          type:
          - integer
          - 'null'
        uuid:
          type: string
          format: uuid
        name:
          type: string
        size:
          type: integer
        is_link_only:
          type: boolean
        is_incomplete:
          type: boolean
        download_url:
          type: string
          format: uri
        supplied_md5:
          type:
          - string
          - 'null'
        computed_md5:
          type:
          - string
          - 'null'
    License:
      type: object
      properties:
        value:
          type: integer
        name:
          type: string
        url:
          type: string
          format: uri
        type:
          type: string
          enum:
          - data
          - software
    Error:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
    Author:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        full_name:
          type: string
        orcid_id:
          type:
          - string
          - 'null'
          description: ORCID iD, where the depositor supplied one.
        is_active:
          type: boolean
        url_name:
          type:
          - string
          - 'null'
    Category:
      type: object
      properties:
        id:
          type: integer
        uuid:
          type: string
          format: uuid
        title:
          type: string
        parent_id:
          type:
          - integer
          - 'null'
        parent_uuid:
          type:
          - string
          - 'null'
        path:
          type: string
        source_id:
          type:
          - integer
          - 'null'
        taxonomy_id:
          type:
          - integer
          - 'null'
    Dataset:
      allOf:
      - $ref: '#/components/schemas/DatasetSummary'
      - type: object
        properties:
          files:
            type: array
            items:
              $ref: '#/components/schemas/File'
          authors:
            type: array
            items:
              $ref: '#/components/schemas/Author'
          custom_fields:
            type: array
          description:
            type: string
          funding:
            type:
            - string
            - 'null'
          funding_list:
            type: array
          version:
            type: integer
          status:
            type: string
          size:
            type: integer
          created_date:
            type:
            - string
            - 'null'
          modified_date:
            type:
            - string
            - 'null'
          is_public:
            type: boolean
          is_confidential:
            type: boolean
          is_metadata_record:
            type: boolean
          license:
            $ref: '#/components/schemas/License'
          tags:
            type: array
            items:
              type: string
          categories:
            type: array
            items:
              $ref: '#/components/schemas/Category'
          references:
            type: array
            items:
              type: string
          citation:
            type: string
          is_embargoed:
            type: boolean
          embargo_date:
            type:
            - string
            - 'null'
          embargo_type:
            type:
            - string
            - 'null'
          figshare_url:
            type: string
            format: uri
  responses:
    MethodNotAllowed:
      description: The HTTP method is not permitted on this path.
      content:
        text/plain:
          schema:
            type: string
          examples:
            postOnly:
              value: 'Acceptable methods: [''POST'']'
    NotFound:
      description: The resource does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            notFound:
              value:
                message: This resource does not exist.
  parameters:
    Uuid:
      name: uuid
      in: path
      required: true
      description: The dataset or collection UUID. On this repository `uuid` supersedes the Figshare numeric `id`.
      schema:
        type: string
        format: uuid
  securitySchemes:
    tokenAuth:
      type: http
      scheme: token
      description: '`Authorization: token YOUR_TOKEN_HERE`. Tokens are issued from the depositor dashboard after logging in; there is no OAuth 2.0 flow and no published scope vocabulary.'
x-artifact:
  generated: '2026-08-19'
  method: derived
  source: Derived from live unauthenticated probes of https://data.4tu.nl on 2026-08-19 (every path, parameter, status code and field name in this document was observed in a real response), cross-read against the djehuty API documentation at https://raw.githubusercontent.com/4TUResearchData/djehuty/main/docs/api.md and https://djehuty.4tu.nl/. 4TU.ResearchData publishes no OpenAPI of its own; the djehuty repository tree contains no openapi/swagger file (checked via the GitHub trees API, 575 entries). This is API Evangelist's derivation, not a 4TU artifact.
  x-operator: institution
  x-operator-evidence: data.4tu.nl -> 131.180.169.22, RIPE inetnum 131.180.0.0/16 netname DUNET, org-name "Technische Universiteit Delft". re3data r3d100010216 lists TU Delft Library as a hosting institution alongside the 4TU.Federation.