Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/vufind-org/vufind/llms.txt

Use this file to discover all available pages before exploring further.

The record endpoint retrieves one or more bibliographic records by their unique identifiers. Use it when you already know the record ID — for example, from a previous search response — and need to fetch full or partial record data without performing a new search.

Endpoints

GET /api/v1/record
POST /api/v1/record
Both GET and POST are supported. A single request can retrieve multiple records simultaneously by passing an array of IDs. The maximum number of records per request is 100 by default (configurable via [API] maxLimit in searches.ini).
Access to this endpoint requires the access.api.Record permission. On default installations this is open to all requests. See the API overview for authentication and permission details.

Parameters

id
string | string[]
required
The unique identifier (or identifiers) of the record(s) to retrieve. Pass a single string for one record, or repeat the parameter as an array for multiple records.
  • Single record: ?id=12345
  • Multiple records: ?id[]=12345&id[]=67890
field[]
string[]
List of record fields to include in the response. If omitted, only the default fields are returned. See available record fields below for the complete list.Example: ?field[]=id&field[]=title&field[]=publishers&field[]=publicationDates
prettyPrint
boolean
default:"false"
When true, formats the JSON response with indentation.
callback
string
When provided, wraps the response in a JSONP callback with this function name.

Available record fields

The following fields can be requested via field[]. Fields marked as default are returned automatically when no field[] parameter is provided.
FieldTypeDefaultDescription
idstringyesRecord unique ID
titlestringyesTitle including any subtitle
authorsobjectyesDeduplicated authors grouped by role
formatsstring[]yesFormat types (e.g., Book, Article)
languagesstring[]yesLanguages of the record
seriesstring[]yesSeries names
subjectsarray of string[]yesSubject headings, least to most specific
urlsobject[]yesURLs contained in the record
accessRestrictionsstring[]noAccess restriction notes
awardsstring[]noAward notes
bibliographicLevelstringnoMonograph, Serial, Collection, etc.
bibliographyNotesstring[]noBibliography notes
buildingsstring[]noBuildings where the record is held
callNumbersstring[]noCall numbers
childRecordCountintegernoNumber of child records
cleanDoistringnoFirst valid DOI
cleanIsbnstringnoFirst valid ISBN
cleanIssnstringnoBase portion of the first listed ISSN
cleanOclcNumberstringnoFirst OCLC number
containerEndPagestringnoEnd page in the containing item
containerIssuestringnoIssue number of the containing item
containerReferencestringnoReference to the containing item
containerStartPagestringnoStart page in the containing item
containerTitlestringnoTitle of the containing item
containerVolumestringnoVolume of the containing item
corporateAuthorsstring[]noMain corporate authors
dedupIdsstring[]noIDs of deduplicated records
editionstringnoEdition statement
findingAidsstring[]noFinding aids
fullRecordstringnoFull metadata record (typically XML)
generalNotesstring[]noGeneral notes
geoLocationsstring[]noGeographic locations (points, bounding boxes)
hierarchicalPlaceNamesstring[]noHierarchical place names for display
hierarchyParentIdstring[]noParent record IDs (hierarchical records)
hierarchyParentTitlestring[]noParent record titles (hierarchical records)
hierarchyTopIdstring[]noHierarchy top record IDs
hierarchyTopTitlestring[]noHierarchy top record titles
humanReadablePublicationDatesstring[]noPublication dates in human-readable format
institutionsstring[]noInstitutions the record belongs to
isbnsstring[]noISBNs
isCollectionbooleannoWhether the record is a collection node
issnsstring[]noISSNs
lccnstring[]noLCCNs
newerTitlesstring[]noSuccessor titles
oclcstring[]noOCLC numbers
openUrlstringnoOpenURL
physicalDescriptionsstring[]noPhysical dimensions etc.
placesOfPublicationstring[]noPlaces of publication
playingTimesstring[]noPlaying times (durations)
previousTitlesstring[]noPredecessor titles
primaryAuthorsstring[]noPrimary authors
productionCreditsstring[]noProduction credits
publicationDatesstring[]noPublication dates
publishersstring[]noPublishers
rawDatastringnoAll data in the index fields
recordLinksobject[]noLinks to related records
recordPagestringnoLink to the record page in the UI
relationshipNotesstring[]noRelationship notes
secondaryAuthorsstring[]noSecondary authors
shortTitlestringnoTitle excluding subtitle
subjectsExtendedobject[]noSubject headings with type and source
subTitlestringnoSubtitle
summarystring[]noSummary
systemDetailsstring[]noTechnical details
targetAudienceNotesstring[]noTarget audience notes
titleSectionstringnoPart/section portion of the title
titleStatementstringnoStatement of responsibility
tocstring[]noTable of contents

Response structure

status
string
required
"OK" on success, "ERROR" on failure.
resultCount
integer
required
The number of records returned. This is the count of records found, which may be less than the number of IDs requested if some IDs are not found.
records
array
Array of record objects. Each object contains the fields requested via field[] (or the default fields if none were specified). Absent if no matching records were found or no fields were requested.
statusMessage
string
Human-readable error description. Present only when status is "ERROR".

Examples

curl "https://your-vufind-instance.example.org/api/v1/record?id=12345"
{
  "status": "OK",
  "resultCount": 1,
  "records": [
    {
      "id": "12345",
      "title": "Introduction to Geology",
      "authors": {
        "primary": { "Smith, John": [] }
      },
      "formats": ["Book"],
      "languages": ["English"],
      "series": [],
      "subjects": [
        ["Science", "Earth Sciences", "Geology"]
      ],
      "urls": []
    }
  ]
}

Error responses

ScenarioHTTP codestatusMessage
id parameter not provided400"Missing id"
More than maxLimit IDs provided400"Record limit (100) exceeded"
Record cannot be loaded400"Error loading record"
Permission denied403"Permission denied"
API key required but missing401(key mode message)
The id values to use here come from the id field in search results. Including field[]=id in your search requests ensures you always have the identifiers needed for subsequent record lookups.

Build docs developers (and LLMs) love