Skip to main content
Version: 11.4.0

Migration from V3

This page helps you translate existing V3 (and V1) API calls to the V4 unified filter syntax.

Parameter mapping​

V3 parameterV4 equivalent
type=publication&type=dataset (V1 arrays)filter=type:publication|dataset
type=("publication" OR "dataset") (V3 expression)filter=type:publication|dataset
fromPublicationDate=2022&toPublicationDate=2023filter=from_publication_date:2022,to_publication_date:2023
logicalOperator=AND (top-level)Implicit: comma is AND, pipe is OR
includeStats=truefacets=type (or any fields you want)
sortBy=citationCount DESCsort=citation_count:desc
mainTitle=neural networkfilter=title.search:neural network
authorOrcid=0000-0002-...filter=authorships.author.orcid:0000-0002-...
authorFullName=Paolo Manghifilter=authorships.author.fullname:Paolo Manghi
relProjectFundingShortName=ECfilter=grants.funder_short_name:EC
hasProjectRel=truefilter=has_grant:true
relProjectId=...filter=grants.project_id:...
relProjectCode=101000360filter=grants.code:101000360
relOrganizationId=...filter=affiliations.organization_id:...
relCommunityId=...filter=communities.id:...
bestOpenAccessRightLabel=OPENfilter=best_oa.rights:Open Access
influenceClass=C1filter=impact.influence_class:C1
isPeerReviewed=truefilter=is_peer_reviewed:true
isGreen=truefilter=is_green:true
openAccessColor=goldfilter=oa_color:gold
countryCode=GRfilter=authorships.countries:GR
page=1&pageSize=10page=1&page_size=10
cursor=*cursor=* (same)

Key differences​

Filter parameter​

V3 uses 30+ individual query parameters. V4 collapses them into a single filter= parameter with field:value syntax. Multiple filters are comma-separated (AND logic), and pipe (|) is used for OR within a field.

Sort format​

V3: sortBy=citationCount DESC (space-separated, camelCase)

V4: sort=citation_count:desc (colon-separated, snake_case)

Page size​

V3: pageSize=10 (camelCase)

V4: page_size=10 (snake_case)

Aggregations​

V3 uses includeStats=true which returns a fixed set of statistics.

V4 replaces this with two flexible modes:

  • facets=type,best_oa.rights — records + chosen aggregations
  • group_by=type — aggregations only, no records

See Aggregations for details.

Sparse fieldsets​

V4 introduces select= for requesting only specific response fields. This was not available in V3.

See Sparse fieldsets for details.

Error handling​

CodeWhen
400Invalid filter syntax, unknown field, disallowed operator, mutual exclusion violation, pagination limit exceeded
404Research product not found (by-ID endpoint)
500Internal failure

Error response body:

{
"status": 400,
"message": "Unknown filter field: 'foo'"
}