Skip to main content
Version: Next

SKG-IF API

The SKG-IF API exposes the OpenAIRE Graph through the Scholarly Knowledge Graph Interoperability Framework — an RDA Working Group standard that lets scholarly knowledge graphs describe their content in a common, machine-readable way.

If you already consume SKG-IF data from another provider, this endpoint lets you query OpenAIRE with the same model and the same client code. If you only need OpenAIRE's own data model, use the Graph API instead — it offers more filters and richer per-entity metadata.

Base URL

https://api.openaire.eu/graph/skg-if/v1

You can access the Swagger documentation at Swagger UI.

Specification

The SKG-IF standard is maintained by the RDA Working Group of the same name, independently of OpenAIRE:

Use those to understand what a field means; use these pages for what OpenAIRE actually serves.

Entities

Each entity below links to its definition in the specification.

EntitySearch endpointSingle entity
Research productsGET /skg-if/v1/productsGET /skg-if/v1/products/{id}
OrganisationsGET /skg-if/v1/organisationsGET /skg-if/v1/organisations/{id}
PersonsGET /skg-if/v1/personsGET /skg-if/v1/persons/{id}
Data sourcesGET /skg-if/v1/datasourcesGET /skg-if/v1/datasources/{id}
GrantsGET /skg-if/v1/grantsGET /skg-if/v1/grants/{id}
note

The specification also defines Venue and Topic entities. OpenAIRE does not expose them as standalone endpoints — venues and topics appear embedded inside research products, identified by on-the-fly identifiers.

Quick start

Get research literature:

/skg-if/v1/products?filter=product_type:literature

Retrieve a single research product by its local identifier:

/skg-if/v1/products/doi_dedup___::a55b42c0d32a4a24cf99e621623d110e

Parameters

ParameterTypeDefaultDescription
filterstringRequired. Comma-separated key:value predicates (see filtering)
pagestring1Page number, or * to start cursor paging (see paging)
page_sizeint10Results per page, range 1–100

Response format

Every response is a JSON-LD document with three top-level members:

{
"@context": [
"https://w3id.org/skg-if/context/1.1.0/skg-if.json",
"https://w3id.org/skg-if/context/1.0.0/skg-if-api.json",
{ "@base": "https://api.openaire.eu/graph/" }
],
"meta": {
"local_identifier": "https://api.openaire.eu/graph/skg-if/v1/products?filter=product_type:literature&page=1",
"entity_type": "search_result_page",
"prev_page": null,
"next_page": { "local_identifier": "...&page=2", "entity_type": "search_result_page" },
"part_of": {
"local_identifier": "https://api.openaire.eu/graph/skg-if/v1/products?filter=product_type:literature",
"entity_type": "search_result",
"total_items": 238603805
}
},
"@graph": [
...
]
}
  • @context — the SKG-IF JSON-LD contexts, plus an @base that resolves relative identifiers into full URLs.
  • meta — pagination: links to the previous and next page, and a part_of object carrying total_items, the total number of matching entities.
  • @graph — the array of matching entities.

A single-entity request (/products/{id}) returns the same envelope with exactly one member in @graph.

Local identifiers

Every entity carries a local_identifier. Entities backed by a real OpenAIRE record use a path that resolves, via @base, to a dereferenceable URL:

"local_identifier": "https://api.openaire.eu/graph/skg-if/v1/products/doi_dedup___::a55b42c0d32a4a24cf99e621623d110e"

You can pass the final path segment straight back to the single-entity endpoint.

On-the-fly identifiers

Some entities — venues and topics, for example — have no persistent identifier of their own in the Graph. Following the SKG-IF specification, these receive a generated identifier in the form:

otf___<session-timestamp>___<entity-type>-<counter>

These identifiers are stable only within a single response. They are not dereferenceable, and they change between requests, so do not store them or use them as keys.

Product types

SKG-IF uses its own vocabulary for product types. The OpenAIRE equivalents are accepted as well and translated internally:

SKG-IF valueOpenAIRE equivalent
literaturepublication
research datadataset
research softwaresoftware
otherother

Differences from the specification

The implementation departs from a strict reading of the SKG-IF spec in two ways, both intended to make the API easier to consume:

  • Embedded rather than referenced entities. Where the specification defines a plain string reference — contributions[].by, for instance — OpenAIRE returns the full object inline, with names and identifiers included. This saves a follow-up request per reference.
  • Not every specified filter is available. A filter defined by the spec but not backed by the OpenAIRE index is rejected with 422, rather than silently ignored. See Filtering for what each endpoint supports.

Learn more