DI-fusion Export API

Documented HTTP GET service that exports the publication list of one ULB scholar (identified by matricule or DAI) or of a group of scholars, in APA, BibTeX, RIS, CSV, xml-brief, xml-brief-ext or xml-full, with grouping, role filtering, markup and language options. No credential is required. Verified live on 2026-08-30 for xml-brief, apa/pdf, bibtex, ris and csv; xml-full returns 403 and xml-brief-ext returns 500.

Operations 2

GET /scholar Export the publication list of one scholar #
GET /group Export the publication list of a group of scholars #

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/difusion-export"
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

ulb-difusion-export-openapi.yml Raw ↑
openapi: 3.1.0
x-generated: '2026-08-30'
x-method: derived
x-source: >-
  Derived from DI-fusion – Download & API (Bibliothèques de l'ULB, rev. 03/2023, 15pp, HTTP 200,
  application/pdf, 374,444 bytes, retrieved 2026-08-30 from
  https://bib.ulb.be/medias/fichier/difusion-download-and-api_1678451163130-pdf?ID_FICHE=10054&INLINE=FALSE)
  and from live probes of https://difusion-svc.ulb.ac.be on 2026-08-30. ULB publishes no OpenAPI of
  its own; this description is API Evangelist's, not the institution's.
x-operator: institution
info:
  title: DI-fusion Export API
  version: '2023.03'
  summary: Publication-list export service for DI-fusion, the institutional research repository of the Université libre de Bruxelles.
  description: |
    DI-fusion is the institutional research repository of the Université libre de Bruxelles (ULB).
    Alongside its search interface it exposes a bespoke, ULB-engineered HTTP export service that
    renders the publication list of a single scholar or of a group of scholars in a choice of
    bibliographic reference formats (APA, BibTeX, RIS, CSV and three ULB XML flavours) and file
    types (PDF, RTF, BibTeX, CSV, RIS, XML).

    This is an INSTITUTION-OPERATED contract. The service runs on ULB's own registrable domain
    (`ulb.ac.be`), its responses are branded from `/data/difusion-services/conf/` on ULB's own
    servers, and the specification below is derived from ULB's own published documentation --
    "DI-fusion – Download & API", 15pp, originally 04/2014 and last revised 03/2023, published by
    the ULB Libraries at bib.ulb.be. It is not a vendor product running under ULB's name.

    PROBED BEHAVIOUR (2026-08-30). Every operation and parameter below was exercised against the
    live host. Findings that differ from the published documentation are recorded on the
    operations and in `errors/ulb-difusion-errors.yml`:
      * `reftype=xml-full` returns HTTP 403 from the Apache layer -- the richest documented format
        is not publicly reachable.
      * `reftype=xml-brief-ext`, added in the 03/2023 revision, returns HTTP 500 (Tomcat).
      * Omitting a mandatory parameter, or supplying an unknown `scholarID`, returns HTTP 500 with
        a Tomcat error page rather than a 4xx.
    ULB's own documentation opens with the remark "needs complete revisit !!" and leaves the
    Publication export, Search API, RSS feeds, Sitemap and OAI harvesting sections unwritten.
  contact:
    name: DI-fusion, Bibliothèques de l'ULB
    email: di-fusion@ulb.be
    url: https://bib.ulb.be/en/find-documents/di-fusion
  license:
    name: DI-fusion terms of use
    url: https://bib.ulb.be/en/find-documents/di-fusion/terms-of-use
  termsOfService: https://bib.ulb.be/en/find-documents/di-fusion/terms-of-use
externalDocs:
  description: DI-fusion – Download & API (ULB Libraries, rev. 03/2023, PDF)
  url: https://bib.ulb.be/medias/fichier/difusion-download-and-api_1678451163130-pdf?ID_FICHE=10054&INLINE=FALSE
servers:
  - url: https://difusion-svc.ulb.ac.be
    description: Production export service, operated by the Université libre de Bruxelles
tags:
  - name: Scholar
    description: Publication lists for one identified ULB scholar.
  - name: Group
    description: Publication lists for a group of ULB scholars.
paths:
  /scholar:
    get:
      tags: [ Scholar ]
      operationId: exportScholarPublications
      summary: Export the publication list of one scholar
      description: |
        Returns the publication list for a single scholar identified by ULB matricule or DAI
        (Digital Author Identifier, `http://difusion.ulb.ac.be/dai/{matricule}`). Verified live on
        2026-08-30 for `reftype` values xml-brief (text/xml), apa (application/pdf), bibtex
        (text/x-bibtex), ris and csv (text/plain).
      parameters:
        - $ref: '#/components/parameters/scholarID'
        - $ref: '#/components/parameters/scholarInst'
        - $ref: '#/components/parameters/query'
        - $ref: '#/components/parameters/reftype'
        - $ref: '#/components/parameters/filetype'
        - $ref: '#/components/parameters/groupByScholar'
        - $ref: '#/components/parameters/roles'
        - $ref: '#/components/parameters/markupScholar'
        - $ref: '#/components/parameters/language'
      responses:
        '200':
          description: Publication list in the requested reference format and file type.
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/PublicationList'
            application/pdf:
              schema: { type: string, format: binary }
            text/x-bibtex:
              schema: { type: string }
            text/plain:
              schema: { type: string }
        '403':
          description: |
            Forbidden. Returned by the Apache front end for `reftype=xml-full`, which the published
            documentation describes but which is not publicly reachable. Body is an Apache HTML
            error page, not XML.
          content:
            text/html:
              schema: { type: string }
        '500':
          description: |
            Internal server error. Returned by the Tomcat back end for a missing mandatory
            parameter, an unknown `scholarID`, or `reftype=xml-brief-ext`. The service does not
            emit 4xx for client error.
          content:
            text/html:
              schema: { type: string }
  /group:
    get:
      tags: [ Group ]
      operationId: exportGroupPublications
      summary: Export the publication list of a group of scholars
      description: |
        Returns the publication list for a group of ULB scholars, identified either by a valid
        `groupID` or by the deprecated `scholarIDs` list. The two are mutually exclusive. ULB
        publishes no directory of valid group identifiers, so this operation could not be
        exercised with a live identifier during the 2026-08-30 probe; without one it returns
        HTTP 500.
      parameters:
        - $ref: '#/components/parameters/groupID'
        - $ref: '#/components/parameters/scholarIDs'
        - $ref: '#/components/parameters/query'
        - $ref: '#/components/parameters/reftype'
        - $ref: '#/components/parameters/filetype'
        - $ref: '#/components/parameters/groupByGroup'
        - $ref: '#/components/parameters/roles'
        - $ref: '#/components/parameters/markupGroup'
        - $ref: '#/components/parameters/language'
      responses:
        '200':
          description: Publication list in the requested reference format and file type.
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/PublicationList'
            application/pdf:
              schema: { type: string, format: binary }
            text/x-bibtex:
              schema: { type: string }
            text/plain:
              schema: { type: string }
        '500':
          description: Internal server error, including when no valid group identifier is supplied.
          content:
            text/html:
              schema: { type: string }
components:
  parameters:
    scholarID:
      name: scholarID
      in: query
      required: true
      description: Unique identifier of a scholar — an ULB matricule or a DAI.
      schema: { type: string }
      example: '19262'
    scholarInst:
      name: scholarInst
      in: query
      required: true
      description: Identifier of an institution taking part in DI-fusion. Case insensitive.
      schema:
        type: string
        enum: [ ULB, UMons ]
      example: ULB
    groupID:
      name: groupID
      in: query
      required: false
      description: Unique identifier of a group of scholars. Mutually exclusive with `scholarIDs`; one of the two is mandatory.
      schema: { type: string }
    scholarIDs:
      name: scholarIDs
      in: query
      required: false
      deprecated: true
      description: Comma-separated list of scholar identifiers. Marked obsolete in ULB's documentation. Mutually exclusive with `groupID`.
      schema: { type: string }
    query:
      name: query
      in: query
      required: false
      description: Any valid Apache Solr query, Solr-encoded (a literal `:` must be escaped as `\:`). Combined with the selection on the scholar's DAI.
      schema: { type: string }
    reftype:
      name: reftype
      in: query
      required: false
      description: |
        Bibliographic reference format of the resulting publication list. `xml-full` returns
        HTTP 403 and `xml-brief-ext` returns HTTP 500 on the live service (probed 2026-08-30).
      schema:
        type: string
        enum: [ apa, bibtex, ris, csv, xml-brief, xml-brief-ext, xml-full ]
        default: xml-brief
    filetype:
      name: filetype
      in: query
      required: false
      description: File type of the resulting file. Valid combinations with `reftype` are listed in `vocabulary/ulb-difusion-vocabulary.yml`.
      schema:
        type: string
        enum: [ pdf, rtf, bibtex, csv, ris, xml ]
    groupByScholar:
      name: groupBy
      in: query
      required: false
      description: Grouping applied to the publication list. A secondary grouping on descending year of publication is implicit except for `year`.
      schema:
        type: string
        enum: [ genrecvulb, genredifusion, genrefnrs1, genrefnrs2, genrefnrs3, year ]
        default: genrecvulb
    groupByGroup:
      name: groupBy
      in: query
      required: false
      description: Grouping applied to the publication list. The F.R.S.-FNRS groupings are documented for the scholar operation only.
      schema:
        type: string
        enum: [ genrecvulb, genredifusion, year ]
        default: genrecvulb
    roles:
      name: roles
      in: query
      required: false
      description: |
        Any combination of the role letters to be considered — a (author), e (editor), p (promotor),
        m (jury member), d (jury president).
      schema:
        type: string
        pattern: '^[aepmd]{1,5}$'
        default: aepmd
    markupScholar:
      name: markup
      in: query
      required: false
      description: |
        Any combination of the markup letters — a (abstract), b (scholar's name in bold),
        h (grouping headers), l (full-text links), o (ORCID iD under the title), c (counts),
        s (continuous sequence numbering), t (per-group numbering). `b` and `o` are available on
        this operation only. Which letters take effect depends on the reftype/filetype pair.
      schema:
        type: string
        pattern: '^[abhlocst]{1,8}$'
    markupGroup:
      name: markup
      in: query
      required: false
      description: Any combination of a, h, l, c, s, t. The `b` and `o` options are not available on the group operation.
      schema:
        type: string
        pattern: '^[ahlcst]{1,6}$'
    language:
      name: language
      in: query
      required: false
      description: Language of the headers, footers and grouping labels in the resulting file.
      schema:
        type: string
        enum: [ fr, en ]
        default: fr
  schemas:
    PublicationList:
      type: object
      title: publist
      description: |
        Root of an xml-brief response. Rendered as XML; the shape below describes the element tree
        captured in `examples/ulb-difusion-scholar-xml-brief.xml`.
      properties:
        header:
          type: object
          properties:
            logoInst: { type: string, description: Server-side path to the institution logo used in rendered output. }
            logoApplication: { type: string, description: Server-side path to the DI-fusion logo used in rendered output. }
            title: { type: string, example: 'Liste de publications de 19262' }
            subtitle: { type: string }
            FullName: { type: string, description: Resolved display name of the scholar. }
        body:
          type: object
          description: Contains either `doc` elements directly or `grouplevel1`/`grouplevel2` wrappers when a grouping is requested.
          properties:
            grouplevel1:
              type: array
              items: { $ref: '#/components/schemas/GroupLevel' }
            doc:
              type: array
              items: { $ref: '#/components/schemas/Publication' }
    GroupLevel:
      type: object
      description: A grouping wrapper. `title` carries the label in the requested language; `count` is present when markup=c.
      properties:
        title: { type: string }
        count: { type: integer }
        grouplevel2:
          type: array
          items: { $ref: '#/components/schemas/GroupLevel' }
        doc:
          type: array
          items: { $ref: '#/components/schemas/Publication' }
    Publication:
      type: object
      description: One publication, expressed as `arr name="..."` element lists in the XML rendering.
      properties:
        seqno: { type: integer, description: Present when sequence numbering is requested (markup=s or t). }
        genre:
          type: array
          items: { type: string, description: DI-fusion publication type URI. }
          example: [ 'info:ulb-repo/semantics/conferencePoster' ]
        genrecvulb:
          type: array
          items: { type: string, description: Publication type as known in the ULB CV vocabulary. }
        author:
          type: array
          items: { type: string }
        pubdate:
          type: array
          items: { type: string, description: Publication date, ISO-like `YYYY-MM-DD`. }
        title:
          type: array
          items: { type: string }
        apa:
          type: array
          items: { type: string, description: The APA-formatted reference. }
        startpage:
          type: array
          items: { type: string, format: uri, description: 'Handle System URL of the record''s DI-fusion detail page, e.g. http://hdl.handle.net/2013/ULB-DIPOT:oai:dipot.ulb.ac.be:2013/151029' }
        abstract:
          type: array
          items: { type: string }
          description: Present only when markup=a.
        ftlink_unrestrictedaccess:
          type: array
          items: { type: string, format: uri }
          description: Open-access full-text URLs. Present only when markup=l.
        ftlink_restrictedaccess:
          type: array
          items: { type: string, format: uri }
          description: Intranet or embargoed full-text URLs. Present only when markup=l.
        ftlink_closedaccess:
          type: array
          items: { type: string, format: uri }
          description: Closed-access full-text URLs. Present only when markup=l.