Utrecht University website screenshot

Utrecht University

Utrecht University (Universiteit Utrecht) is a public research university in Utrecht, Netherlands, founded in 1636 and a member of the League of European Research Universities. It is one of the few universities in this catalog whose largest machine-readable surface is its OWN engineering rather than a vendor's: Utrecht authors and operates Yoda, a GPL-3.0 iRODS-based research data management platform (github.com/UtrechtUniversity/yoda-ruleset), and runs it in production at portal.yoda.uu.nl. The Yoda HTTP API is real but not open — every call redirects to SolisID login unless it carries a session cookie or a Yoda data access token — so the OpenAPIs in this repo describe a live institution-operated API that no anonymous client can call. Alongside it the University Library runs a DSpace 9.0 institutional repository whose REST API and OAI-PMH interface are both openly readable at dspace.library.uu.nl, and IT Services operates a SAML 2.0 identity provider registered in the SURFconext federation. The research information system is NOT Utrecht's: research-portal.uu.nl is an Elsevier Pure tenancy (uu.elsevierpure.com), recorded here as a tenant relationship and not as Utrecht's contract. There is no central developer portal, no api.uu.nl, no public course-catalog or campus API, and no published API terms or rate limits; OSIRIS, the student administration system, returns 403 to unauthenticated clients.

Utrecht University publishes 20 APIs on the APIs.io network, including admin API, browse API, data_access_token API, and 17 more. Tagged areas include Education, Higher Education, University, Netherlands, and Europe.

The Utrecht University catalog on APIs.io includes 1 JSON-LD context and 2 Spectral governance rulesets.

Utrecht University’s developer surface includes authentication, GitHub presence, documentation, API reference, support, and 23 more developer resources.

47.4/100 developing ▬ flat Agent 22/100 agent aware self hosted · GPL-3.0 Full breakdown ↓
scored 2026-09-08 · rubric v0.20.0
AccessFreeSelf serve⚡ Free to try
2 APIs
EducationHigher EducationUniversityNetherlandsEuropeResearch DataResearch Data ManagementInstitutional RepositoryIdentity FederationOAI-PMHOpen AccessOpen ScienceLibraryOpen-Source

Kin Score

Kin Score Kin Score How this is scored →
scored 2026-09-08 · rubric v0.20.0
Regulatory Posture applies to this provider. Its tags matched the Education & Research regime, so Regulatory Posture carries 15 points of the composite. If this regime is wrong for your business, say so on your provider repo — the applicability map is public and we will correct it.
Open Source Surface applies to this provider. This product is open source and we read its repository directly, so Open Source Surface carries 10 points of the composite. It is scored from what the repository actually publishes — a security policy, a contribution guide, a release history, a code of conduct — read live from the provider rather than inferred from our own catalog pointers. This facet adds; nothing was taken away to make room for it. An open-source project is not excused from the commercial facets, because exemption would strip it of the points it does earn. If we have the wrong repository, or this product is not open source, say so on your provider repo and we will drop the facet rather than have you publish against it.
Create-or-Update Ergonomics applies to this provider. This API accepts writes, so it carries 10 points of the composite. It is scored from the published contracts themselves: whether a caller can create-or-update in one call, whether the write accepts a key the caller already holds, and whether the response says which branch ran. Without that, every write needs a search-and-branch in front of it, and the first time that check is skipped a duplicate record is created. Scored against the observed mean rather than raw — a provider at the catalog average is unchanged by this facet, not penalised by it.
The six quality facets above are damped to 65 points between them, because both conditional facets apply and carry 35 points together. That is why each facet's contribution is shown against a damped maximum: raising a quality facet moves the composite by 65% of its nominal weight, not 100%. The full arithmetic is at apis.io/rating/.
Improve this rating by publishing the missing artifacts — every area above can be raised, and the full rubric is at apis.io/rating/. Every facet and dimension name above is a link: it opens that measurement's own page — what it means, the exact checks that feed it, how the whole catalog distributes on it, and the providers at the top of it. This rating is computed from github.com/api-evangelist/utrecht: open an issue to ask a question, or submit a pull request to add artifacts. Submit an artifact on GitHub — free → Manage your own listing — the Influence plan, $499/mo →

APIs 24

Individual APIs this provider publishes, each with its own machine-readable definition.

Utrecht University Repository OAI-PMH

OAI-PMH 2.0 metadata harvesting interface for the Utrecht University Library institutional repository. Verified live 2026-08-30 on DSpace 9.0: Identify, ListMetadataFormats and ...

Utrecht University admin API

The admin API from Utrecht University — 1 operation(s) for admin.

Utrecht University browse API

The browse API from Utrecht University — 4 operation(s) for browse.

Utrecht University data_access_token API

The data_access_token API from Utrecht University — 4 operation(s) for data_access_token.

Utrecht University datarequest API

The datarequest API from Utrecht University — 34 operation(s) for datarequest.

Utrecht University folder API

The folder API from Utrecht University — 7 operation(s) for folder.

Utrecht University groups API

The groups API from Utrecht University — 15 operation(s) for groups.

Utrecht University meta API

The meta API from Utrecht University — 2 operation(s) for meta.

Utrecht University meta_form API

The meta_form API from Utrecht University — 2 operation(s) for meta_form.

Utrecht University notifications API

The notifications API from Utrecht University — 3 operation(s) for notifications.

Utrecht University provenance API

The provenance API from Utrecht University — 1 operation(s) for provenance.

Utrecht University publication_troubleshoot API

The publication_troubleshoot API from Utrecht University — 1 operation(s) for publication_troubleshoot.

Utrecht University research API

The research API from Utrecht University — 13 operation(s) for research.

Utrecht University revisions API

The revisions API from Utrecht University — 3 operation(s) for revisions.

Utrecht University schema API

The schema API from Utrecht University — 1 operation(s) for schema.

Utrecht University schema_transformation API

The schema_transformation API from Utrecht University — 1 operation(s) for schema_transformation.

Utrecht University settings API

The settings API from Utrecht University — 2 operation(s) for settings.

Utrecht University stats API

The stats API from Utrecht University — 4 operation(s) for stats.

Utrecht University vault API

The vault API from Utrecht University — 16 operation(s) for vault.

Utrecht University vault_archive API

The vault_archive API from Utrecht University — 3 operation(s) for vault_archive.

Utrecht University vault_deaccession API

The vault_deaccession API from Utrecht University — 4 operation(s) for vault_deaccession.

Utrecht University Repository REST API

The DSpace 9.0 HAL/JSON REST API behind the Utrecht University Repository. Openly readable without a key: the root at /server/api enumerates ~60 link relations, and /server/api/...

Utrecht University SAML 2.0 Identity Provider Metadata

Signed SAML 2.0 EntityDescriptor for Utrecht University's identity provider, served as XML at a stable URL and carried in SURFconext's national federation metadata. Machine-read...

Utrecht University Research Portal (Elsevier Pure tenancy)

Utrecht University's current research information system and public research portal, running on Elsevier Pure. Two machine doors were probed on 2026-08-30: the Pure Web Service ...

Scroll for all 24

Open Collections 21

Open, tool-agnostic API collections (OpenAPI-derived and Bruno).

API Collection

OPEN COLLECTION

Yoda core admin API

OPEN COLLECTION

Yoda core admin meta API

OPEN COLLECTION

Yoda core admin stats API

OPEN COLLECTION

Yoda core admin vault API

OPEN COLLECTION

Scroll for all 21

Pricing Plans 1

Published pricing tiers and plan structures.

Utrecht Plans Pricing

2 plans

PLANS

Rate Limits 1

Documented rate limits and quota policies.

Utrecht Rate Limits

1 limits

RATE LIMITS

FinOps 1

Cost, billing, and metering signals for API financial operations.

Semantic Vocabularies 1

JSON-LD contexts and semantic vocabularies used across these APIs.

Utrecht Context

19 classes · 3 properties

JSON-LD

Spectral Rules 2

Spectral governance rulesets for linting and validating these APIs.

Utrecht University API Rules

4 rules · 3 warnings 1 info

SPECTRAL

Utrecht University API Rules

8 rules · 1 errors 6 warnings 1 info

SPECTRAL

JSON Schema 2

Standalone JSON Schema definitions for this provider's data models.

Yoda API Error Result

3 properties

JSON SCHEMA

Yoda API Result

3 properties

JSON SCHEMA

JSON Structure 2

JSON Structure definitions describing this provider's data shapes.

Utrecht Yoda Error Structure

3 properties

JSON STRUCTURE

Utrecht Yoda Result Structure

3 properties

JSON STRUCTURE

Examples 2

Example request and response payloads for these APIs.

Security Posture 3

Authentication, domain security, vulnerability disclosure, and trust-center signals.

Utrecht Authentication

apiKey/http · 2 schemes

SECURITY

Utrecht Domain Security

TLSv1.3 · HSTS · DNSSEC · DMARC

SECURITY

Utrecht Vulnerability Disclosure

security.txt · contact published

SECURITY

Agentic Access 1

Recommended x-agentic-access execution contracts for AI agents.

Utrecht Agentic Access

121 operations · 121 acting · 4 human-in-the-loop

121 operations · 121 acting

AGENTIC

Resources

Documentation 2

Reference material describing how the API behaves

Agent Surfaces 1

MCP servers, agent skills, and machine-readable catalogs

Design & Contract 1

Pagination, idempotency, versioning, errors, and events

Build 2

SDKs, sample code, and the tooling you integrate with

Access & Security 5

Authentication, authorization, and security posture

Operate 3

Status, limits, changes, and where to get help

Commercial 5

Pricing, plans, and the legal terms of use

Company 2

The organization behind the API

Other 7

Properties that don't map to a standard resource type

Scroll for all 7

Source (apis.yml)

apis.yml Raw ↑
aid: utrecht
name: Utrecht University
description: 'Utrecht University (Universiteit Utrecht) is a public research university in Utrecht, Netherlands, founded in
  1636 and a member of the League of European Research Universities. It is one of the few universities in this catalog whose
  largest machine-readable surface is its OWN engineering rather than a vendor''s: Utrecht authors and operates Yoda, a GPL-3.0
  iRODS-based research data management platform (github.com/UtrechtUniversity/yoda-ruleset), and runs it in production at
  portal.yoda.uu.nl. The Yoda HTTP API is real but not open — every call redirects to SolisID login unless it carries a session
  cookie or a Yoda data access token — so the OpenAPIs in this repo describe a live institution-operated API that no anonymous
  client can call. Alongside it the University Library runs a DSpace 9.0 institutional repository whose REST API and OAI-PMH
  interface are both openly readable at dspace.library.uu.nl, and IT Services operates a SAML 2.0 identity provider registered
  in the SURFconext federation. The research information system is NOT Utrecht''s: research-portal.uu.nl is an Elsevier Pure
  tenancy (uu.elsevierpure.com), recorded here as a tenant relationship and not as Utrecht''s contract. There is no central
  developer portal, no api.uu.nl, no public course-catalog or campus API, and no published API terms or rate limits; OSIRIS,
  the student administration system, returns 403 to unauthenticated clients.'
type: Index
deliveryModel:
  model: self-hosted
  license: GPL-3.0
  open_source: true
  commercial: false
  callable_host: true
  label: Self-hosted · GPL-3.0 software the institution runs itself, no commercial offering
  confidence: high
  source:
  - license
  - openapi
  - probe
  generated: '2026-08-30'
  method: probed
  evidence: 'Yoda is GPL-3.0 and authored by Utrecht University; there is no commercial edition and no vendor sells it, so
    the prior open-core/commercial reading was wrong. callable_host corrected to true: portal.yoda.uu.nl/api answers (302
    to login) and dspace.library.uu.nl/server/api answers anonymously, both verified 2026-08-30.'
accessModel:
  pricing: free
  onboarding: self-serve
  trial: false
  try_now: true
  public: false
  label: Free · Self-serve signup
  confidence: medium
  probe_state: covered
  source:
  - plans
  - authentication
  - security
  generated: '2026-09-03'
  method: derived
position: Consuming
access: 3rd-Party
image: https://kinlane-images.s3.amazonaws.com/shared/apis-json/icons/utrecht.png
url: https://raw.githubusercontent.com/api-evangelist/utrecht/refs/heads/main/apis.yml
tags:
- Education
- Higher Education
- University
- Netherlands
- Europe
- Research Data
- Research Data Management
- Institutional Repository
- Identity Federation
- OAI-PMH
- Open Access
- Open Science
- Library
- Open-Source
tags_raw:
- Education
- Higher Education
- University
- Netherlands
- Europe
- Research Data
- Research Data Management
- Institutional Repository
- Identity Federation
- OAI-PMH
- Open Access
- Open Science
- Library
- Open Source
created: '2026-06-03'
modified: '2026-08-30'
specificationVersion: '0.23'
apis:
- aid: utrecht:repository-oai
  name: Utrecht University Repository OAI-PMH
  description: 'OAI-PMH 2.0 metadata harvesting interface for the Utrecht University Library institutional repository. Verified
    live 2026-08-30 on DSpace 9.0: Identify, ListMetadataFormats and ListRecords all answer, earliest datestamp 2001-01-03,
    16 metadata prefixes advertised including oai_dc, mods, mets, ore, rioxx and etdms. An OpenAIRE-profiled set is served
    separately at /oai/openaire.'
  humanURL: https://www.uu.nl/en/university-library/utrecht-university-repository
  baseURL: https://dspace.library.uu.nl/server/oai/request
  tags:
  - Library
  - Repository
  - OAI-PMH
  - Metadata
  - Open Access
  - Research
  properties:
  - type: Documentation
    url: https://www.uu.nl/en/university-library/utrecht-university-repository
  - type: OpenAIRE
    url: https://dspace.library.uu.nl/oai/openaire?verb=Identify
  x-operator: institution
  x-operator-evidence: dspace.library.uu.nl is under Utrecht's own registrable domain and the Identify response names repositoryName
    'Utrecht University Repository' with adminEmail repository@uu.nl. DSpace is community open-source software, not a commercial
    tenancy — Utrecht hosts and operates the instance. The DSpace REST/OAI contract itself is DSpace's, so no generic DSpace
    OpenAPI is saved under this slug.
- aid: utrecht:utrecht-admin-api
  name: Utrecht University admin API
  description: The admin API from Utrecht University — 1 operation(s) for admin.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags:
  - Admin
  tags_raw:
  - admin
  properties:
  - type: OpenAPI
    url: openapi/utrecht-admin-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-browse-api
  name: Utrecht University browse API
  description: The browse API from Utrecht University — 4 operation(s) for browse.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags:
  - Browse
  tags_raw:
  - browse
  properties:
  - type: OpenAPI
    url: openapi/utrecht-browse-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-data-access-token-api
  name: Utrecht University data_access_token API
  description: The data_access_token API from Utrecht University — 4 operation(s) for data_access_token.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags: []
  tags_raw:
  - data_access_token
  properties:
  - type: OpenAPI
    url: openapi/utrecht-data-access-token-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-datarequest-api
  name: Utrecht University datarequest API
  description: The datarequest API from Utrecht University — 34 operation(s) for datarequest.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags:
  - datarequest
  properties:
  - type: OpenAPI
    url: openapi/utrecht-datarequest-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-folder-api
  name: Utrecht University folder API
  description: The folder API from Utrecht University — 7 operation(s) for folder.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags:
  - Folder
  tags_raw:
  - folder
  properties:
  - type: OpenAPI
    url: openapi/utrecht-folder-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-groups-api
  name: Utrecht University groups API
  description: The groups API from Utrecht University — 15 operation(s) for groups.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags:
  - Group
  tags_raw:
  - groups
  properties:
  - type: OpenAPI
    url: openapi/utrecht-groups-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-meta-api
  name: Utrecht University meta API
  description: The meta API from Utrecht University — 2 operation(s) for meta.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags:
  - Meta
  tags_raw:
  - meta
  properties:
  - type: OpenAPI
    url: openapi/utrecht-meta-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-meta-form-api
  name: Utrecht University meta_form API
  description: The meta_form API from Utrecht University — 2 operation(s) for meta_form.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags: []
  tags_raw:
  - meta_form
  properties:
  - type: OpenAPI
    url: openapi/utrecht-meta-form-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-notifications-api
  name: Utrecht University notifications API
  description: The notifications API from Utrecht University — 3 operation(s) for notifications.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags:
  - Notification
  tags_raw:
  - notifications
  properties:
  - type: OpenAPI
    url: openapi/utrecht-notifications-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-provenance-api
  name: Utrecht University provenance API
  description: The provenance API from Utrecht University — 1 operation(s) for provenance.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags:
  - Provenance
  tags_raw:
  - provenance
  properties:
  - type: OpenAPI
    url: openapi/utrecht-provenance-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-publication-troubleshoot-api
  name: Utrecht University publication_troubleshoot API
  description: The publication_troubleshoot API from Utrecht University — 1 operation(s) for publication_troubleshoot.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags: []
  tags_raw:
  - publication_troubleshoot
  properties:
  - type: OpenAPI
    url: openapi/utrecht-publication-troubleshoot-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-research-api
  name: Utrecht University research API
  description: The research API from Utrecht University — 13 operation(s) for research.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags:
  - Research
  tags_raw:
  - research
  properties:
  - type: OpenAPI
    url: openapi/utrecht-research-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-revisions-api
  name: Utrecht University revisions API
  description: The revisions API from Utrecht University — 3 operation(s) for revisions.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags:
  - Revisions
  tags_raw:
  - revisions
  properties:
  - type: OpenAPI
    url: openapi/utrecht-revisions-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-schema-api
  name: Utrecht University schema API
  description: The schema API from Utrecht University — 1 operation(s) for schema.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags:
  - Schema
  tags_raw:
  - schema
  properties:
  - type: OpenAPI
    url: openapi/utrecht-schema-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-schema-transformation-api
  name: Utrecht University schema_transformation API
  description: The schema_transformation API from Utrecht University — 1 operation(s) for schema_transformation.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags:
  - Schema Transformation
  tags_raw:
  - schema_transformation
  properties:
  - type: OpenAPI
    url: openapi/utrecht-schema-transformation-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-settings-api
  name: Utrecht University settings API
  description: The settings API from Utrecht University — 2 operation(s) for settings.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags:
  - Settings
  tags_raw:
  - settings
  properties:
  - type: OpenAPI
    url: openapi/utrecht-settings-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-stats-api
  name: Utrecht University stats API
  description: The stats API from Utrecht University — 4 operation(s) for stats.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags:
  - Stats
  tags_raw:
  - stats
  properties:
  - type: OpenAPI
    url: openapi/utrecht-stats-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-vault-api
  name: Utrecht University vault API
  description: The vault API from Utrecht University — 16 operation(s) for vault.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags:
  - Vault
  tags_raw:
  - vault
  properties:
  - type: OpenAPI
    url: openapi/utrecht-vault-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-vault-archive-api
  name: Utrecht University vault_archive API
  description: The vault_archive API from Utrecht University — 3 operation(s) for vault_archive.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags: []
  tags_raw:
  - vault_archive
  properties:
  - type: OpenAPI
    url: openapi/utrecht-vault-archive-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:utrecht-vault-deaccession-api
  name: Utrecht University vault_deaccession API
  description: The vault_deaccession API from Utrecht University — 4 operation(s) for vault_deaccession.
  humanURL: https://utrechtuniversity.github.io/yoda/
  baseURL: https://portal.yoda.uu.nl/api
  tags: []
  tags_raw:
  - vault_deaccession
  properties:
  - type: OpenAPI
    url: openapi/utrecht-vault-deaccession-api-openapi.yml
  - type: Documentation
    url: https://utrechtuniversity.github.io/yoda/
  - type: GitHub
    url: https://github.com/UtrechtUniversity/yoda
  - type: SourceCode
    url: https://github.com/UtrechtUniversity/yoda-ruleset
  - type: JSONSchema
    url: json-schema/utrecht-yoda-result-schema.json
  - type: x-vocabulary
    url: vocabulary/utrecht-vocabulary.yml
  - type: x-json-ld
    url: json-ld/utrecht-context.jsonld
  - type: x-rules
    url: rules/utrecht-rules.yml
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
  x-operator: institution
  x-baseurl-note: 'The Yoda API is a POST-per-function router: GET https://portal.yoda.uu.nl/api returns 404 by design, while
    POST /api/<fn> answers and 302s to /user/login without a session cookie or data access token. Verified 2026-08-30. Do
    not ''repair'' this baseURL to a URL that merely returns 200 — the 404 is correct.'
- aid: utrecht:repository-rest
  name: Utrecht University Repository REST API
  x-operator: institution
  x-operator-evidence: Host dspace.library.uu.nl is Utrecht's own. The API root self-identifies as dspaceName 'Utrecht University
    Repository', dspaceVersion 'DSpace 9.0'. DSpace is community open-source software the University Library self-hosts; the
    running service is Utrecht's, the REST contract is the DSpace project's, so the deployment is recorded here and DSpace's
    generic OpenAPI is not saved under this slug.
  description: 'The DSpace 9.0 HAL/JSON REST API behind the Utrecht University Repository. Openly readable without a key:
    the root at /server/api enumerates ~60 link relations, and /server/api/discover/search/objects answers real queries and
    returns results. This is the largest anonymously-callable machine surface Utrecht operates.'
  humanURL: https://www.uu.nl/en/university-library/utrecht-university-repository
  baseURL: https://dspace.library.uu.nl/server/api
  tags:
  - Library
  - Repository
  - Institutional Repository
  - DSpace
  - Open Access
  - Research
  properties:
  - type: Documentation
    url: https://www.uu.nl/en/university-library/utrecht-university-repository
  - type: APIReference
    url: https://dspace.library.uu.nl/server/api
  - type: x-conformance
    url: conformance/utrecht-domain-standards.yml
- aid: utrecht:identity-federation
  name: Utrecht University SAML 2.0 Identity Provider Metadata
  x-operator: institution
  x-operator-evidence: login.uu.nl is Utrecht's own host and the entityID is https://login.uu.nl/nidp/saml2/metadata. Identity
    federation is institution-operated by definition — no vendor can assert an institution's entityID. The entry is registered
    in SURFconext, the Dutch R&E federation, which participates in eduGAIN.
  description: Signed SAML 2.0 EntityDescriptor for Utrecht University's identity provider, served as XML at a stable URL
    and carried in SURFconext's national federation metadata. Mac

# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/utrecht/refs/heads/main/apis.yml

Work with this as data

Every provider 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 providers

9 MCP tools reach this
  • find_providersBrowse and filter every provider in the catalog.
  • get_provider_artifactsEvery artifact this provider publishes, grouped by type.
  • get_provider_operationsEvery operation across all of their OpenAPIs — one call instead of parsing every spec.
  • get_provider_toolsEvery MCP tool they ship, with the operation each wraps.
  • get_provider_evidenceHow each part of their score was established. Free — the basis for a claim should not sit behind it.
  • get_provider_ratingPRO — composite, band, trend and facet scores.
  • 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 provider
curl "https://apis.io/api/v1/providers/utrecht"
All providers
curl "https://apis.io/api/v1/providers?limit=25"
Every operation they expose
curl "https://apis.io/api/v1/providers/utrecht/operations?limit=25"
How their score was established
curl "https://apis.io/api/v1/providers/utrecht/evidence"

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.