Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The LibKey API is a powerful tool designed for developers to quickly leverage the linking power of LibKey in a variety of applications. This guide is a quick start to get you going and some advice on best practices for implementation, but for additional details we recommend you also look at the Article DOI/PMID Lookup Endpoint Reference Guide as well.

Overview

In short, the interaction between your application and the LibKey API is a RESTful interaction featuring a simple GET request to the API with three key pieces of information:

  • DOI/PMID (for identifying the article you are interested in learning about)

  • Library ID (for identifying for which library the links are intended)

  • API Key (unique to the library ID)

  • (optional) an “include” statement which allows you to receive journal-level information as well

...

In return, you get:

  • bestIntegratorLink for a simple point of interaction defining the best way to get to content for that particular organization.

  • OA Status - for defining if the article is OpenAccess. You might use this to display some sort of “open access” icon in your interface, for example.

  • Article in context link (browzineWebLink) if you would like to provide a link to see the article in its originally published context within the BrowZine interface (all LibKey subscribers have access to BrowZine web as well which is needed for this link to appear/work).

  • Detailed breakdown of all available links (with the “best” one already pre-calculated in the aforementioned “bestIntegratorLink” value)

  • (If using the optional include) Information about the journal including a link to the journal in BrowZine and link to the cover image asset for inclusion in your interface as well as the SJR value of the journal.

The User Experience

So what happens when a user clicks a LibKey.io link that the API returns for “Download PDF” or “Article Link?” These are the content links designed to get the user directly to the content in an authorized way via their institution. While all LibKey links have a similar syntax they wind up forwarding to completely different URL’s based on the outcome of the LibKey link calculations. The most common user workflow however looks like this:

Click the LibKey Link → Organization’s SSO → Content

Thus if an organization’s SSO already has an activate session LibKey links have the potential (when they indicated “Download PDF” to be literally “one click to content!”

Examples

Tip

If you haven’t done so already, contact support@thirdiron.com to confirm your Library_ID and API_KEY which you need to try the following examples.

To setup a query, using your API Key use this kind of structure for DOIs:

https://public-api.thirdiron.com/public/v1/libraries/{Library_ID}/articles/doi/{DOI}?access_token={API_KEY}

… and this kind of structure for PMIDs:

https://public-api.thirdiron.com/public/v1/libraries/{Library_ID}/articles/pmid/{PMID}?access_token={API_KEY}

These queries will yield similar JSON results like this using this open access example which you can use, substituting your own API Key:

https://public-api.thirdiron.com/public/v1/libraries/{Library_ID}/articles/doi/10.1186/s12862-023-02104-2?access_token={API_KEY}

You should JSON that looks something like this:

Code Block
{
  "data": {
    "id": 558922648,
    "type": "articles",
    "title": "Genotyping by sequencing for estimating relative abundances of diatom taxa in mock communities",
    "date": "2023-02-06",
    "authors": "Çiftçi, Ozan; Wagemaker, Cornelis A. M.; Mertens, Adrienne; van Bodegom, Peter; Pirovano, Walter; Gravendeel, Barbara",
    "inPress": false,
    "abandoned": false,
    "doi": "10.1186/s12862-023-02104-2",
    "linkResolverOpenUrl": "http://um9mh3ku7s.search.serialssolutions.com/?genre=article&aulast=%C3%87ift%C3%A7i&issn=2730-7182&title=BMC%20Ecology%20and%20Evolution&atitle=Genotyping%20by%20sequencing%20for%20estimating%20relative%20abundances%20of%20diatom%20taxa%20in%20mock%20communities&volume=23&issue=1&spage=4&epage=&date=2023&doi=10.1186%2Fs12862-023-02104-2&sid=LibKey",
    "pmid": "36747145",
    "openAccess": true,
    "unpaywallUsable": true,
    "fullTextFile": "https://libkey.io/libraries/222/articles/558922648/full-text-file?utm_source=api_1515",
    "contentLocation": "https://libkey.io/libraries/222/articles/558922648/content-location?utm_source=api_1515",
    "availableThroughBrowzine": true,
    "startPage": "4",
    "endPage": "",
    "browzineWebLink": "https://browzine.com/libraries/222/journals/435996/issues/490378844?showArticleInContext=doi:10.1186%2Fs12862-023-02104-2&utm_source=api_1515",
    "bestIntegratorLink": {
      "bestLink": "https://libkey.io/libraries/222/articles/558922648/full-text-file?utm_source=api_1515",
      "linkType": "fullTextFile",
      "recommendedLinkText": "Download PDF"
    }
  }
}

There is a lot of information there which you might consider utilizing and that which is covered in detail in the reference guide here but to get you started we recommend that all integrators utilize the last element called “bestIntegratorLink”.

This will include the “bestLink” which is defined as the best URL to full text available for the requested Library ID. The API will automatically produce this best Link based on a cascading waterfall of options along with some “recommended” link text. You may choose to alter this text for local use.

Below is a table defining the different link types, recommended text and the order in which they are presented as the “bestLink”. (e.g. If fullTextFile is available, then this will be presented but if it is not and contentLocation is available, then contentLocation will appear as the linkType).

Priority Order Number

linkType

recommendedLinkText

retractionNoticeUrl

A notification that the article has been retracted

Retracted Article

expressionOfConcernNoticeUrl

A notification that the article has an expression of concern on it

Expression of Concern

fullTextFile

A link to the PDF file

Download PDF

contentLocation

A link to the landing page for this article

View Article

linkResolverOpenUrl

A link to the library’s Link Resolver URL for this article

Access Options

Optional Include to get Journal Information

You can optionally do an include (e.g. “include=journal”) to get journal information including the cover image for the journal. For the above example you would tweak the call to look like this:

https://public-api.thirdiron.com/public/v1/libraries/{Library_ID}/articles/doi/10.1186/s12859-023-05326-9?include=journal&access_token={API_KEY}

Now, you can see the response looks like this:

Code Block
{
  "data": {
    "id": 573087326,
    "type": "articles",
    "title": "Reducing Boolean networks with backward equivalence",
    "date": "2023-05-23",
    "authors": "Argyris, Georgios A.; Lluch Lafuente, Alberto; Tribastone, Mirco; Tschaikowski, Max; Vandin, Andrea",
    "inPress": false,
    "abandoned": false,
    "doi": "10.1186/s12859-023-05326-9",
    "ILLURL": "{ILL LINK WOULD APPEAR HERE IF CONFIGURED AT YOUR LIBRARY}",
    "pmid": "37221494",
    "openAccess": true,
    "unpaywallUsable": true,
    "fullTextFile": "https://libkey.io/libraries/222/articles/573087326/full-text-file?utm_source=api_29",
    "contentLocation": "https://libkey.io/libraries/222/articles/573087326/content-location?utm_source=api_29",
    "availableThroughBrowzine": true,
    "startPage": "212",
    "endPage": "",
    "browzineWebLink": "https://browzine.com/libraries/222/journals/74/issues/520079562?showArticleInContext=doi:10.1186%2Fs12859-023-05326-9&utm_source=api_29",
    "relationships": {
      "journal": {
        "links": {
          "related": "/public/v1/libraries/222/journals/74"
        }
      },
      "issue": {
        "links": {
          "related": "/public/v1/libraries/222/issues/520079562"
        }
      }
    },
    "abstract": "Boolean Networks (BNs) are a popular dynamical model in biology where the state of each component is represented by a variable taking binary values that express, for instance, activation/deactivation or high/low concentrations. Unfortunately, these models suffer from the state space explosion, i.e., there are exponentially many states in the number of BN variables, which hampers their analysis.\nWe present Boolean Backward Equivalence (BBE), a novel reduction technique for BNs which collapses system variables that, if initialized with same value, maintain matching values in all states. A large-scale validation on 86 models from two online model repositories reveals that BBE is effective, since it is able to reduce more than 90% of the models. Furthermore, on such models we also show that BBE brings notable analysis speed-ups, both in terms of state space generation and steady-state analysis. In several cases, BBE allowed the analysis of models that were originally intractable due to the complexity. On two selected case studies, we show how one can tune the reduction power of BBE using model-specific information to preserve all dynamics of interest, and selectively exclude behavior that does not have biological relevance.\nBBE complements existing reduction methods, preserving properties that other reduction methods fail to reproduce, and vice versa. BBE drops all and only the dynamics, including attractors, originating from states where BBE-equivalent variables have been initialized with different activation values The remaining part of the dynamics is preserved exactly, including the length of the preserved attractors, and their reachability from given initial conditions, without adding any spurious behaviours. Given that BBE is a model-to-model reduction technique, it can be combined with further reduction methods for BNs."
  },
  "included": [
    {
      "id": 74,
      "type": "journals",
      "title": "BMC Bioinformatics",
      "issn": "14712105",
      "sjrValue": 1.1,
      "coverImageUrl": "https://s3.amazonaws.com/thirdiron-assets/images/covers/1471-2105.png",
      "browzineEnabled": true,
      "browzineWebLink": "https://browzine.com/libraries/222/journals/74?utm_source=api_29"
    }
  ]
}

Importantly are these two elements for implementation consideration:

Property

Type

Description

Optional

sjrValue

number

The SJR (Scimago Journal Rank) value of the journal. Utilize to display this value in your interface to show the general prestige of this journal.

No

coverImageUrl

URL

The link to the cover image. Use this element to feature a representative cover image of the title in your interface.

No

Info

More questions? We are here to help!

Please drop us a line at support@thirdiron.com to start the conversation and thanks for your interest in LibKey!