Skip to content

Integrations API

Installation-scoped integrations API for external CMS consumers such as WordPress and Drupal plugins.

Installation-scoped integrations API for external CMS consumers such as WordPress and Drupal plugins.

Version: 2026-04-22

Raw OpenAPI JSON: /openapi/integrations-api.json

MethodPathSummary
GET/integrations/v1/healthIntegrations API health check
GET/integrations/v1/installationResolve current installation
GET/integrations/v1/publicationsList publications for integrations consumers
GET/integrations/v1/worksList works for integrations consumers
GET/integrations/v1/projectsList projects for integrations consumers
GET/integrations/v1/peopleList people for integrations consumers
GET/integrations/v1/verify/{originId}Read verification token for one origin

Integrations API health check Authentication: Public Tags: Integrations

No parameters.

No request body.

Content type: application/json

{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"ok"
]
},
"version": {
"type": "string",
"enum": [
"2026-04-22"
]
}
},
"required": [
"status",
"version"
]
}

Resolve current installation Authentication: API key (X-API-Key) Tags: Integrations

No parameters.

No request body.

Content type: application/json

{
"type": "object",
"properties": {
"installation": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"workspace_id": {
"type": "string"
},
"platform": {
"type": "string",
"enum": [
"wordpress",
"drupal"
]
},
"status": {
"type": "string",
"enum": [
"draft",
"pending_verification",
"active",
"disabled",
"revoked",
"archived"
]
},
"display_name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"created_at": {
"type": "integer"
},
"updated_at": {
"type": "integer"
},
"origins": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"origin": {
"type": "string"
},
"verification_status": {
"type": "string",
"enum": [
"pending",
"verified",
"failed",
"revoked"
]
},
"verified_at": {
"type": [
"integer",
"null"
]
},
"last_verification_error": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"origin",
"verification_status"
]
}
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"id",
"workspace_id",
"platform",
"status",
"display_name",
"created_at",
"updated_at",
"origins",
"scopes"
]
}
},
"required": [
"installation"
]
}

Content type: application/json

{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"code": {
"type": "string"
},
"details": {
"oneOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"required": [
"error",
"code"
],
"additionalProperties": false
}

403 - Credential inactive, expired, or origin rejected.

Section titled “403 - Credential inactive, expired, or origin rejected.”

Content type: application/json

{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"code": {
"type": "string"
},
"details": {
"oneOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"required": [
"error",
"code"
],
"additionalProperties": false
}

List publications for integrations consumers Read-only publication listing for installation-authenticated consumers with the publications.read scope. Authentication: API key (X-API-Key) Tags: Integrations

NameInTypeRequiredDescription
pagequeryintegerno
per_pagequeryintegerno
qquerystringno
sortquerystringno
dirquerystringno
publication_typequerystringno
publication_yearqueryintegerno
min_cited_byqueryintegerno

No request body.

200 - Filtered publications visible to the integrations consumer.

Section titled “200 - Filtered publications visible to the integrations consumer.”

Content type: application/json

{
"type": "object",
"properties": {
"publications": {
"type": "array",
"items": {
"type": "object",
"properties": {
"doi": {
"type": "string"
},
"author_match_state": {
"type": "string",
"enum": [
"needs_attention",
"complete"
]
},
"title": {
"oneOf": [
{
"type": "string"
},
{
"type": "object",
"additionalProperties": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"doi_url": {
"type": "string",
"format": "uri"
},
"publication_date": {
"type": [
"string",
"null"
]
},
"publication_year": {
"type": [
"integer",
"null"
]
},
"publication_type": {
"type": [
"string",
"null"
]
},
"cited_by_count": {
"type": [
"integer",
"null"
]
},
"last_fetched_at": {
"type": "integer"
}
},
"required": [
"doi",
"author_match_state",
"title",
"doi_url",
"publication_date",
"publication_year",
"publication_type",
"cited_by_count",
"last_fetched_at"
]
}
},
"page": {
"type": "integer"
},
"per_page": {
"type": "integer"
},
"total": {
"type": "integer"
},
"pages": {
"type": "integer"
},
"sort": {
"type": "string",
"enum": [
"last_fetched_at",
"publication_date",
"cited_by_count"
]
},
"dir": {
"type": "string",
"enum": [
"asc",
"desc"
]
},
"q": {
"type": "string"
},
"publication_type": {
"type": [
"string",
"null"
]
},
"publication_year": {
"type": [
"integer",
"null"
]
},
"min_cited_by": {
"type": [
"integer",
"null"
]
}
},
"required": [
"publications",
"page",
"per_page",
"total",
"pages",
"sort",
"dir",
"q"
]
}

Content type: application/json

{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"code": {
"type": "string"
},
"details": {
"oneOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"required": [
"error",
"code"
],
"additionalProperties": false
}

Content type: application/json

{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"code": {
"type": "string"
},
"details": {
"oneOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"required": [
"error",
"code"
],
"additionalProperties": false
}

403 - Credential inactive, origin rejected, or required scope not granted.

Section titled “403 - Credential inactive, origin rejected, or required scope not granted.”

Content type: application/json

{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"code": {
"type": "string"
},
"details": {
"oneOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"required": [
"error",
"code"
],
"additionalProperties": false
}

List works for integrations consumers Read-only works listing for installation-authenticated consumers with the works.read scope. Authentication: API key (X-API-Key) Tags: Integrations

NameInTypeRequiredDescription
pagequeryintegerno
per_pagequeryintegerno
qquerystringno
sortquerystringno
dirquerystringno
work_typequerystringno
publication_yearqueryintegerno

No request body.

200 - Filtered works visible to the integrations consumer.

Section titled “200 - Filtered works visible to the integrations consumer.”

Content type: application/json

{
"type": "object",
"properties": {
"works": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"work_type": {
"type": [
"string",
"null"
]
},
"publication_date": {
"type": [
"string",
"null"
]
},
"publication_year": {
"type": [
"integer",
"null"
]
},
"created_at": {
"type": "integer"
},
"href": {
"type": "string",
"format": "uri"
}
},
"required": [
"id",
"title",
"work_type",
"publication_date",
"publication_year",
"created_at",
"href"
]
}
},
"page": {
"type": "integer"
},
"per_page": {
"type": "integer"
},
"total": {
"type": "integer"
},
"pages": {
"type": "integer"
},
"sort": {
"type": "string",
"enum": [
"created_at",
"publication_date",
"publication_year"
]
},
"dir": {
"type": "string",
"enum": [
"asc",
"desc"
]
},
"q": {
"type": "string"
},
"work_type": {
"type": [
"string",
"null"
]
},
"publication_year": {
"type": [
"integer",
"null"
]
}
},
"required": [
"works",
"page",
"per_page",
"total",
"pages",
"sort",
"dir",
"q"
]
}

Content type: application/json

{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"code": {
"type": "string"
},
"details": {
"oneOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"required": [
"error",
"code"
],
"additionalProperties": false
}

Content type: application/json

{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"code": {
"type": "string"
},
"details": {
"oneOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"required": [
"error",
"code"
],
"additionalProperties": false
}

403 - Credential inactive, origin rejected, or required scope not granted.

Section titled “403 - Credential inactive, origin rejected, or required scope not granted.”

Content type: application/json

{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"code": {
"type": "string"
},
"details": {
"oneOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"required": [
"error",
"code"
],
"additionalProperties": false
}

List projects for integrations consumers Read-only project listing for installation-authenticated consumers with the projects.read scope. Authentication: API key (X-API-Key) Tags: Integrations

NameInTypeRequiredDescription
pagequeryintegerno
per_pagequeryintegerno
qquerystringno
sortquerystringno
dirquerystringno
funding_currencyquerystringno

No request body.

200 - Filtered projects visible to the integrations consumer.

Section titled “200 - Filtered projects visible to the integrations consumer.”

Content type: application/json

{
"type": "object",
"properties": {
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"programme": {
"type": "string"
},
"title": {
"type": "string"
},
"abstract": {
"type": [
"string",
"null"
]
},
"start_date": {
"type": [
"string",
"null"
]
},
"end_date": {
"type": [
"string",
"null"
]
},
"cesam_funding_amount": {
"type": [
"number",
"null"
]
},
"cesam_funding_currency": {
"type": "string",
"enum": [
"EUR",
"USD"
]
},
"total_funding_amount": {
"type": [
"number",
"null"
]
},
"total_funding_currency": {
"type": "string",
"enum": [
"EUR",
"USD"
]
},
"funding_entities": {
"type": "array",
"items": {}
},
"proponent_institution": {
"type": [
"string",
"null"
]
},
"project_logo": {
"oneOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
]
},
"funding_partner_images": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
}
},
"created_at": {
"type": "integer"
},
"href": {
"type": "string",
"format": "uri"
}
},
"required": [
"id",
"programme",
"title",
"abstract",
"start_date",
"end_date",
"cesam_funding_amount",
"cesam_funding_currency",
"total_funding_amount",
"total_funding_currency",
"funding_entities",
"proponent_institution",
"project_logo",
"funding_partner_images",
"created_at",
"href"
]
}
},
"page": {
"type": "integer"
},
"per_page": {
"type": "integer"
},
"total": {
"type": "integer"
},
"pages": {
"type": "integer"
},
"sort": {
"type": "string",
"enum": [
"created_at",
"start_date",
"end_date"
]
},
"dir": {
"type": "string",
"enum": [
"asc",
"desc"
]
},
"q": {
"type": "string"
},
"funding_currency": {
"type": [
"string",
"null"
],
"enum": [
"EUR",
"USD",
null
]
}
},
"required": [
"projects",
"page",
"per_page",
"total",
"pages",
"sort",
"dir",
"q"
]
}

Content type: application/json

{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"code": {
"type": "string"
},
"details": {
"oneOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"required": [
"error",
"code"
],
"additionalProperties": false
}

Content type: application/json

{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"code": {
"type": "string"
},
"details": {
"oneOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"required": [
"error",
"code"
],
"additionalProperties": false
}

403 - Credential inactive, origin rejected, or required scope not granted.

Section titled “403 - Credential inactive, origin rejected, or required scope not granted.”

Content type: application/json

{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"code": {
"type": "string"
},
"details": {
"oneOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"required": [
"error",
"code"
],
"additionalProperties": false
}

List people for integrations consumers Read-only people listing for installation-authenticated consumers with the people.read scope. Authentication: API key (X-API-Key) Tags: Integrations

NameInTypeRequiredDescription
pagequeryintegerno
per_pagequeryintegerno
qquerystringno

No request body.

200 - Filtered people visible to the integrations consumer.

Section titled “200 - Filtered people visible to the integrations consumer.”

Content type: application/json

{
"type": "object",
"properties": {
"people": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"oneOf": [
{
"type": "string"
},
{
"type": "object",
"additionalProperties": {
"type": "string"
}
}
]
},
"photo_url": {
"type": [
"string",
"null"
]
},
"slug": {
"type": [
"string",
"null"
]
},
"people_type": {
"type": [
"string",
"null"
]
}
},
"required": [
"name",
"photo_url",
"slug",
"people_type"
]
}
},
"page": {
"type": "integer"
},
"per_page": {
"type": "integer"
},
"total": {
"type": "integer"
},
"pages": {
"type": "integer"
},
"q": {
"type": "string"
}
},
"required": [
"people",
"page",
"per_page",
"total",
"pages",
"q"
]
}

Content type: application/json

{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"code": {
"type": "string"
},
"details": {
"oneOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"required": [
"error",
"code"
],
"additionalProperties": false
}

Content type: application/json

{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"code": {
"type": "string"
},
"details": {
"oneOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"required": [
"error",
"code"
],
"additionalProperties": false
}

403 - Credential inactive, origin rejected, or required scope not granted.

Section titled “403 - Credential inactive, origin rejected, or required scope not granted.”

Content type: application/json

{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"code": {
"type": "string"
},
"details": {
"oneOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"required": [
"error",
"code"
],
"additionalProperties": false
}

Read verification token for one origin Plain-text verification endpoint that origin owners mirror from their own site during manual challenge verification. Authentication: Public Tags: Integrations

NameInTypeRequiredDescription
originIdpathstringyesStable integration origin identifier.

No request body.

Content type: text/plain

{
"type": "string",
"description": "Plain-text verification token served from the origin-specific proof endpoint."
}

400 - Missing or malformed origin identifier.

Section titled “400 - Missing or malformed origin identifier.”

Content type: text/plain

{
"type": "string"
}

404 - Origin not found or no verification token available.

Section titled “404 - Origin not found or no verification token available.”

Content type: text/plain

{
"type": "string"
}